diff --git a/lib/index.js b/lib/index.js index d46b9af..b45a36f 100644 --- a/lib/index.js +++ b/lib/index.js @@ -25,7 +25,7 @@ var Ale=Object.create;var FM=Object.defineProperty;var tle=Object.getOwnProperty `+Object.keys(i).map(e=>`${e}: ${i[e]}`).join(`\r `)+`\r \r -`+o)}function ll(n,t,o,i,e,a){if(n.listenerCount("wsClientError")){let A=new Error(e);Error.captureStackTrace(A,ll),n.emit("wsClientError",A,o,t)}else iu(o,i,e,a)}});var uV=ee((scA,CV)=>{"use strict";CV.exports=a0e;function a0e(n,t){for(var o=new Array(arguments.length-1),i=0,e=2,a=!0;e{"use strict";var Mm=QV;Mm.length=function(t){var o=t.length;if(!o)return 0;for(var i=0;--o%4>1&&t.charAt(o)==="=";)++i;return Math.ceil(t.length*3)/4-i};var vd=new Array(64),fV=new Array(123);for(Dn=0;Dn<64;)fV[vd[Dn]=Dn<26?Dn+65:Dn<52?Dn+71:Dn<62?Dn-4:Dn-59|43]=Dn++;var Dn;Mm.encode=function(t,o,i){for(var e=null,a=[],A=0,r=0,s;o>2],s=(g&3)<<4,r=1;break;case 1:a[A++]=vd[s|g>>4],s=(g&15)<<2,r=2;break;case 2:a[A++]=vd[s|g>>6],a[A++]=vd[g&63],r=0;break}A>8191&&((e||(e=[])).push(String.fromCharCode.apply(String,a)),A=0)}return r&&(a[A++]=vd[s],a[A++]=61,r===1&&(a[A++]=61)),e?(A&&e.push(String.fromCharCode.apply(String,a.slice(0,A))),e.join("")):String.fromCharCode.apply(String,a.slice(0,A))};var BV="invalid encoding";Mm.decode=function(t,o,i){for(var e=i,a=0,A,r=0;r1)break;if((s=fV[s])===void 0)throw Error(BV);switch(a){case 0:A=s,a=1;break;case 1:o[i++]=A<<2|(s&48)>>4,A=s,a=2;break;case 2:o[i++]=(A&15)<<4|(s&60)>>2,A=s,a=3;break;case 3:o[i++]=(A&3)<<6|s,a=0;break}}if(a===1)throw Error(BV);return i-e};Mm.test=function(t){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t)}});var SV=ee((ccA,mV)=>{"use strict";mV.exports=_m;function _m(){this._listeners=Object.create(null)}_m.prototype.on=function(t,o,i){return(this._listeners[t]||(this._listeners[t]=[])).push({fn:o,ctx:i||this}),this};_m.prototype.off=function(t,o){if(t===void 0)this._listeners=Object.create(null);else if(o===void 0)this._listeners[t]=[];else{var i=this._listeners[t];if(!i)return this;for(var e=0;e{"use strict";_V.exports=wV(wV);function wV(n){return typeof Float32Array<"u"?(function(){var t=new Float32Array([-0]),o=new Uint8Array(t.buffer),i=o[3]===128;function e(s,g,c){t[0]=s,g[c]=o[0],g[c+1]=o[1],g[c+2]=o[2],g[c+3]=o[3]}function a(s,g,c){t[0]=s,g[c]=o[3],g[c+1]=o[2],g[c+2]=o[1],g[c+3]=o[0]}n.writeFloatLE=i?e:a,n.writeFloatBE=i?a:e;function A(s,g){return o[0]=s[g],o[1]=s[g+1],o[2]=s[g+2],o[3]=s[g+3],t[0]}function r(s,g){return o[3]=s[g],o[2]=s[g+1],o[1]=s[g+2],o[0]=s[g+3],t[0]}n.readFloatLE=i?A:r,n.readFloatBE=i?r:A})():(function(){function t(i,e,a,A){var r=e<0?1:0;if(r&&(e=-e),e===0)i(1/e>0?0:2147483648,a,A);else if(isNaN(e))i(2143289344,a,A);else if(e>34028234663852886e22)i((r<<31|2139095040)>>>0,a,A);else if(e<11754943508222875e-54)i((r<<31|Math.round(e/1401298464324817e-60))>>>0,a,A);else{var s=Math.floor(Math.log(e)/Math.LN2),g=Math.round(e*Math.pow(2,-s)*8388608)&8388607;i((r<<31|s+127<<23|g)>>>0,a,A)}}n.writeFloatLE=t.bind(null,DV),n.writeFloatBE=t.bind(null,OV);function o(i,e,a){var A=i(e,a),r=(A>>31)*2+1,s=A>>>23&255,g=A&8388607;return s===255?g?NaN:r*(1/0):s===0?r*1401298464324817e-60*g:r*Math.pow(2,s-150)*(g+8388608)}n.readFloatLE=o.bind(null,bV),n.readFloatBE=o.bind(null,MV)})(),typeof Float64Array<"u"?(function(){var t=new Float64Array([-0]),o=new Uint8Array(t.buffer),i=o[7]===128;function e(s,g,c){t[0]=s,g[c]=o[0],g[c+1]=o[1],g[c+2]=o[2],g[c+3]=o[3],g[c+4]=o[4],g[c+5]=o[5],g[c+6]=o[6],g[c+7]=o[7]}function a(s,g,c){t[0]=s,g[c]=o[7],g[c+1]=o[6],g[c+2]=o[5],g[c+3]=o[4],g[c+4]=o[3],g[c+5]=o[2],g[c+6]=o[1],g[c+7]=o[0]}n.writeDoubleLE=i?e:a,n.writeDoubleBE=i?a:e;function A(s,g){return o[0]=s[g],o[1]=s[g+1],o[2]=s[g+2],o[3]=s[g+3],o[4]=s[g+4],o[5]=s[g+5],o[6]=s[g+6],o[7]=s[g+7],t[0]}function r(s,g){return o[7]=s[g],o[6]=s[g+1],o[5]=s[g+2],o[4]=s[g+3],o[3]=s[g+4],o[2]=s[g+5],o[1]=s[g+6],o[0]=s[g+7],t[0]}n.readDoubleLE=i?A:r,n.readDoubleBE=i?r:A})():(function(){function t(i,e,a,A,r,s){var g=A<0?1:0;if(g&&(A=-A),A===0)i(0,r,s+e),i(1/A>0?0:2147483648,r,s+a);else if(isNaN(A))i(0,r,s+e),i(2146959360,r,s+a);else if(A>17976931348623157e292)i(0,r,s+e),i((g<<31|2146435072)>>>0,r,s+a);else{var c;if(A<22250738585072014e-324)c=A/5e-324,i(c>>>0,r,s+e),i((g<<31|c/4294967296)>>>0,r,s+a);else{var I=Math.floor(Math.log(A)/Math.LN2);I===1024&&(I=1023),c=A*Math.pow(2,-I),i(c*4503599627370496>>>0,r,s+e),i((g<<31|I+1023<<20|c*1048576&1048575)>>>0,r,s+a)}}}n.writeDoubleLE=t.bind(null,DV,0,4),n.writeDoubleBE=t.bind(null,OV,4,0);function o(i,e,a,A,r){var s=i(A,r+e),g=i(A,r+a),c=(g>>31)*2+1,I=g>>>20&2047,d=4294967296*(g&1048575)+s;return I===2047?d?NaN:c*(1/0):I===0?c*5e-324*d:c*Math.pow(2,I-1075)*(d+4503599627370496)}n.readDoubleLE=o.bind(null,bV,0,4),n.readDoubleBE=o.bind(null,MV,4,0)})(),n}function DV(n,t,o){t[o]=n&255,t[o+1]=n>>>8&255,t[o+2]=n>>>16&255,t[o+3]=n>>>24}function OV(n,t,o){t[o]=n>>>24,t[o+1]=n>>>16&255,t[o+2]=n>>>8&255,t[o+3]=n&255}function bV(n,t){return(n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24)>>>0}function MV(n,t){return(n[t]<<24|n[t+1]<<16|n[t+2]<<8|n[t+3])>>>0}});var RV=ee(NV=>{"use strict";var iR=NV,aR=65533;iR.length=function(t){for(var o=0,i=0,e=0;e=192&&r<224?(g=(r&31)<<6|t[o++]&63,a[A++]=g>=128?g:aR):r>=224&&r<240?(c=(r&15)<<12|(t[o++]&63)<<6|t[o++]&63,a[A++]=c>=2048?c:aR):r>=240&&(s=(r&7)<<18|(t[o++]&63)<<12|(t[o++]&63)<<6|t[o++]&63,s<65536||s>1114111?a[A++]=aR:(s-=65536,a[A++]=55296+(s>>10),a[A++]=56320+(s&1023))),A>8191&&((e||(e=[])).push(String.fromCharCode.apply(String,a.slice(0,A))),A=0);return e?(A&&e.push(String.fromCharCode.apply(String,a.slice(0,A))),e.join("")):String.fromCharCode.apply(String,a.slice(0,A))};iR.write=function(t,o,i){for(var e=i,a,A,r=0;r>6|192,o[i++]=a&63|128):(a&64512)===55296&&((A=t.charCodeAt(r+1))&64512)===56320?(a=65536+((a&1023)<<10)+(A&1023),++r,o[i++]=a>>18|240,o[i++]=a>>12&63|128,o[i++]=a>>6&63|128,o[i++]=a&63|128):(o[i++]=a>>12|224,o[i++]=a>>6&63|128,o[i++]=a&63|128);return i-e}});var vV=ee((pcA,kV)=>{"use strict";kV.exports=i0e;function i0e(n,t,o){var i=o||8192,e=i>>>1,a=null,A=i;return function(s){if(s<1||s>e)return n(s);A+s>i&&(a=n(i),A=0);var g=t.call(a,A,A+=s);return A&7&&(A=(A|7)+1),g}}});var GV=ee((dcA,PV)=>{"use strict";PV.exports=sa;var ou=bc();function sa(n,t){this.lo=n>>>0,this.hi=t>>>0}var pl=sa.zero=new sa(0,0);pl.toNumber=function(){return 0};pl.zzEncode=pl.zzDecode=function(){return this};pl.length=function(){return 1};var o0e=sa.zeroHash="\0\0\0\0\0\0\0\0";sa.fromNumber=function(t){if(t===0)return pl;var o=t<0;o&&(t=-t);var i=t>>>0,e=(t-i)/4294967296>>>0;return o&&(e=~e>>>0,i=~i>>>0,++i>4294967295&&(i=0,++e>4294967295&&(e=0))),new sa(i,e)};sa.from=function(t){if(typeof t=="number")return sa.fromNumber(t);if(ou.isString(t))if(ou.Long)t=ou.Long.fromString(t);else return sa.fromNumber(parseInt(t,10));return t.low||t.high?new sa(t.low>>>0,t.high>>>0):pl};sa.prototype.toNumber=function(t){if(!t&&this.hi>>>31){var o=~this.lo+1>>>0,i=~this.hi>>>0;return o||(i=i+1>>>0),-(o+i*4294967296)}return this.lo+this.hi*4294967296};sa.prototype.toLong=function(t){return ou.Long?new ou.Long(this.lo|0,this.hi|0,!!t):{low:this.lo|0,high:this.hi|0,unsigned:!!t}};var Oc=String.prototype.charCodeAt;sa.fromHash=function(t){return t===o0e?pl:new sa((Oc.call(t,0)|Oc.call(t,1)<<8|Oc.call(t,2)<<16|Oc.call(t,3)<<24)>>>0,(Oc.call(t,4)|Oc.call(t,5)<<8|Oc.call(t,6)<<16|Oc.call(t,7)<<24)>>>0)};sa.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)};sa.prototype.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this};sa.prototype.zzDecode=function(){var t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this};sa.prototype.length=function(){var t=this.lo,o=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return i===0?o===0?t<16384?t<128?1:2:t<2097152?3:4:o<16384?o<128?5:6:o<2097152?7:8:i<128?9:10}});var FV=ee((nu,oR)=>{(function(n,t){function o(i){return i.default||i}typeof define=="function"&&define.amd?define([],function(){var i={};return t(i),o(i)}):typeof nu=="object"?(t(nu),typeof oR=="object"&&(oR.exports=o(nu))):(function(){var i={};t(i),n.Long=o(i)})()})(typeof globalThis<"u"?globalThis:typeof self<"u"?self:nu,function(n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function o(F,N,k){this.low=F|0,this.high=N|0,this.unsigned=!!k}o.prototype.__isLong__,Object.defineProperty(o.prototype,"__isLong__",{value:!0});function i(F){return(F&&F.__isLong__)===!0}function e(F){var N=Math.clz32(F&-F);return F?31-N:N}o.isLong=i;var a={},A={};function r(F,N){var k,J,$;return N?(F>>>=0,($=0<=F&&F<256)&&(J=A[F],J)?J:(k=g(F,0,!0),$&&(A[F]=k),k)):(F|=0,($=-128<=F&&F<128)&&(J=a[F],J)?J:(k=g(F,F<0?-1:0,!1),$&&(a[F]=k),k))}o.fromInt=r;function s(F,N){if(isNaN(F))return N?R:T;if(N){if(F<0)return R;if(F>=y)return q}else{if(F<=-m)return x;if(F+1>=m)return z}return F<0?s(-F,N).neg():g(F%Q|0,F/Q|0,N)}o.fromNumber=s;function g(F,N,k){return new o(F,N,k)}o.fromBits=g;var c=Math.pow;function I(F,N,k){if(F.length===0)throw Error("empty string");if(typeof N=="number"?(k=N,N=!1):N=!!N,F==="NaN"||F==="Infinity"||F==="+Infinity"||F==="-Infinity")return N?R:T;if(k=k||10,k<2||360)throw Error("interior hyphen");if(J===0)return I(F.substring(1),N,k).neg();for(var $=s(c(k,8)),ie=T,pe=0;pe>>0:this.low},G.toNumber=function(){return this.unsigned?(this.high>>>0)*Q+(this.low>>>0):this.high*Q+(this.low>>>0)},G.toString=function(N){if(N=N||10,N<2||36>>0,ke=Qe.toString(N);if(pe=Te,pe.isZero())return ke+se;for(;ke.length<6;)ke="0"+ke;se=""+ke+se}},G.getHighBits=function(){return this.high},G.getHighBitsUnsigned=function(){return this.high>>>0},G.getLowBits=function(){return this.low},G.getLowBitsUnsigned=function(){return this.low>>>0},G.getNumBitsAbs=function(){if(this.isNegative())return this.eq(x)?64:this.neg().getNumBitsAbs();for(var N=this.high!=0?this.high:this.low,k=31;k>0&&(N&1<>21;return N?this.unsigned?!1:N===-1&&!(this.low===0&&this.high===-2097152):!0},G.isZero=function(){return this.high===0&&this.low===0},G.eqz=G.isZero,G.isNegative=function(){return!this.unsigned&&this.high<0},G.isPositive=function(){return this.unsigned||this.high>=0},G.isOdd=function(){return(this.low&1)===1},G.isEven=function(){return(this.low&1)===0},G.equals=function(N){return i(N)||(N=d(N)),this.unsigned!==N.unsigned&&this.high>>>31===1&&N.high>>>31===1?!1:this.high===N.high&&this.low===N.low},G.eq=G.equals,G.notEquals=function(N){return!this.eq(N)},G.neq=G.notEquals,G.ne=G.notEquals,G.lessThan=function(N){return this.comp(N)<0},G.lt=G.lessThan,G.lessThanOrEqual=function(N){return this.comp(N)<=0},G.lte=G.lessThanOrEqual,G.le=G.lessThanOrEqual,G.greaterThan=function(N){return this.comp(N)>0},G.gt=G.greaterThan,G.greaterThanOrEqual=function(N){return this.comp(N)>=0},G.gte=G.greaterThanOrEqual,G.ge=G.greaterThanOrEqual,G.compare=function(N){if(i(N)||(N=d(N)),this.eq(N))return 0;var k=this.isNegative(),J=N.isNegative();return k&&!J?-1:!k&&J?1:this.unsigned?N.high>>>0>this.high>>>0||N.high===this.high&&N.low>>>0>this.low>>>0?-1:1:this.sub(N).isNegative()?-1:1},G.comp=G.compare,G.negate=function(){return!this.unsigned&&this.eq(x)?x:this.not().add(K)},G.neg=G.negate,G.add=function(N){i(N)||(N=d(N));var k=this.high>>>16,J=this.high&65535,$=this.low>>>16,ie=this.low&65535,pe=N.high>>>16,se=N.high&65535,Te=N.low>>>16,Qe=N.low&65535,ke=0,Ne=0,We=0,ve=0;return ve+=ie+Qe,We+=ve>>>16,ve&=65535,We+=$+Te,Ne+=We>>>16,We&=65535,Ne+=J+se,ke+=Ne>>>16,Ne&=65535,ke+=k+pe,ke&=65535,g(We<<16|ve,ke<<16|Ne,this.unsigned)},G.subtract=function(N){return i(N)||(N=d(N)),this.add(N.neg())},G.sub=G.subtract,G.multiply=function(N){if(this.isZero())return this;if(i(N)||(N=d(N)),t){var k=t.mul(this.low,this.high,N.low,N.high);return g(k,t.get_high(),this.unsigned)}if(N.isZero())return this.unsigned?R:T;if(this.eq(x))return N.isOdd()?x:T;if(N.eq(x))return this.isOdd()?x:T;if(this.isNegative())return N.isNegative()?this.neg().mul(N.neg()):this.neg().mul(N).neg();if(N.isNegative())return this.mul(N.neg()).neg();if(this.lt(_)&&N.lt(_))return s(this.toNumber()*N.toNumber(),this.unsigned);var J=this.high>>>16,$=this.high&65535,ie=this.low>>>16,pe=this.low&65535,se=N.high>>>16,Te=N.high&65535,Qe=N.low>>>16,ke=N.low&65535,Ne=0,We=0,ve=0,aA=0;return aA+=pe*ke,ve+=aA>>>16,aA&=65535,ve+=ie*ke,We+=ve>>>16,ve&=65535,ve+=pe*Qe,We+=ve>>>16,ve&=65535,We+=$*ke,Ne+=We>>>16,We&=65535,We+=ie*Qe,Ne+=We>>>16,We&=65535,We+=pe*Te,Ne+=We>>>16,We&=65535,Ne+=J*ke+$*Qe+ie*Te+pe*se,Ne&=65535,g(ve<<16|aA,Ne<<16|We,this.unsigned)},G.mul=G.multiply,G.divide=function(N){if(i(N)||(N=d(N)),N.isZero())throw Error("division by zero");if(t){if(!this.unsigned&&this.high===-2147483648&&N.low===-1&&N.high===-1)return this;var k=(this.unsigned?t.div_u:t.div_s)(this.low,this.high,N.low,N.high);return g(k,t.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?R:T;var J,$,ie;if(this.unsigned){if(N.unsigned||(N=N.toUnsigned()),N.gt(this))return R;if(N.gt(this.shru(1)))return L;ie=R}else{if(this.eq(x)){if(N.eq(K)||N.eq(U))return x;if(N.eq(x))return K;var pe=this.shr(1);return J=pe.div(N).shl(1),J.eq(T)?N.isNegative()?K:U:($=this.sub(N.mul(J)),ie=J.add($.div(N)),ie)}else if(N.eq(x))return this.unsigned?R:T;if(this.isNegative())return N.isNegative()?this.neg().div(N.neg()):this.neg().div(N).neg();if(N.isNegative())return this.div(N.neg()).neg();ie=T}for($=this;$.gte(N);){J=Math.max(1,Math.floor($.toNumber()/N.toNumber()));for(var se=Math.ceil(Math.log(J)/Math.LN2),Te=se<=48?1:c(2,se-48),Qe=s(J),ke=Qe.mul(N);ke.isNegative()||ke.gt($);)J-=Te,Qe=s(J,this.unsigned),ke=Qe.mul(N);Qe.isZero()&&(Qe=K),ie=ie.add(Qe),$=$.sub(ke)}return ie},G.div=G.divide,G.modulo=function(N){if(i(N)||(N=d(N)),t){var k=(this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,N.low,N.high);return g(k,t.get_high(),this.unsigned)}return this.sub(this.div(N).mul(N))},G.mod=G.modulo,G.rem=G.modulo,G.not=function(){return g(~this.low,~this.high,this.unsigned)},G.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},G.clz=G.countLeadingZeros,G.countTrailingZeros=function(){return this.low?e(this.low):e(this.high)+32},G.ctz=G.countTrailingZeros,G.and=function(N){return i(N)||(N=d(N)),g(this.low&N.low,this.high&N.high,this.unsigned)},G.or=function(N){return i(N)||(N=d(N)),g(this.low|N.low,this.high|N.high,this.unsigned)},G.xor=function(N){return i(N)||(N=d(N)),g(this.low^N.low,this.high^N.high,this.unsigned)},G.shiftLeft=function(N){return i(N)&&(N=N.toInt()),(N&=63)===0?this:N<32?g(this.low<>>32-N,this.unsigned):g(0,this.low<>>N|this.high<<32-N,this.high>>N,this.unsigned):g(this.high>>N-32,this.high>=0?0:-1,this.unsigned)},G.shr=G.shiftRight,G.shiftRightUnsigned=function(N){return i(N)&&(N=N.toInt()),(N&=63)===0?this:N<32?g(this.low>>>N|this.high<<32-N,this.high>>>N,this.unsigned):N===32?g(this.high,0,this.unsigned):g(this.high>>>N-32,0,this.unsigned)},G.shru=G.shiftRightUnsigned,G.shr_u=G.shiftRightUnsigned,G.rotateLeft=function(N){var k;return i(N)&&(N=N.toInt()),(N&=63)===0?this:N===32?g(this.high,this.low,this.unsigned):N<32?(k=32-N,g(this.low<>>k,this.high<>>k,this.unsigned)):(N-=32,k=32-N,g(this.high<>>k,this.low<>>k,this.unsigned))},G.rotl=G.rotateLeft,G.rotateRight=function(N){var k;return i(N)&&(N=N.toInt()),(N&=63)===0?this:N===32?g(this.high,this.low,this.unsigned):N<32?(k=32-N,g(this.high<>>N,this.low<>>N,this.unsigned)):(N-=32,k=32-N,g(this.low<>>N,this.high<>>N,this.unsigned))},G.rotr=G.rotateRight,G.toSigned=function(){return this.unsigned?g(this.low,this.high,!1):this},G.toUnsigned=function(){return this.unsigned?this:g(this.low,this.high,!0)},G.toBytes=function(N){return N?this.toBytesLE():this.toBytesBE()},G.toBytesLE=function(){var N=this.high,k=this.low;return[k&255,k>>>8&255,k>>>16&255,k>>>24,N&255,N>>>8&255,N>>>16&255,N>>>24]},G.toBytesBE=function(){var N=this.high,k=this.low;return[N>>>24,N>>>16&255,N>>>8&255,N&255,k>>>24,k>>>16&255,k>>>8&255,k&255]},o.fromBytes=function(N,k,J){return J?o.fromBytesLE(N,k):o.fromBytesBE(N,k)},o.fromBytesLE=function(N,k){return new o(N[0]|N[1]<<8|N[2]<<16|N[3]<<24,N[4]|N[5]<<8|N[6]<<16|N[7]<<24,k)},o.fromBytesBE=function(N,k){return new o(N[4]<<24|N[5]<<16|N[6]<<8|N[7],N[0]<<24|N[1]<<16|N[2]<<8|N[3],k)},typeof BigInt=="function"&&(o.fromBigInt=function(N,k){var J=Number(BigInt.asIntN(32,N)),$=Number(BigInt.asIntN(32,N>>BigInt(32)));return g(J,$,k)},o.fromValue=function(N,k){return typeof N=="bigint"?o.fromBigInt(N,k):d(N,k)},G.toBigInt=function(){var N=BigInt(this.low>>>0),k=BigInt(this.unsigned?this.high>>>0:this.high);return k<{"use strict";var BA=nR;BA.asPromise=uV();BA.base64=yV();BA.EventEmitter=SV();BA.float=TV();BA.utf8=RV();BA.pool=vV();BA.LongBits=GV();function LV(n){return n==="__proto__"||n==="prototype"||n==="constructor"}BA.isUnsafeProperty=LV;BA.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node);BA.global=BA.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||nR;BA.emptyArray=Object.freeze?Object.freeze([]):[];BA.emptyObject=Object.freeze?Object.freeze({}):{};BA.isInteger=Number.isInteger||function(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t};BA.isString=function(t){return typeof t=="string"||t instanceof String};BA.isObject=function(t){return t&&typeof t=="object"};BA.isset=BA.isSet=function(t,o){var i=t[o];return i!=null&&Object.hasOwnProperty.call(t,o)?typeof i!="object"||(Array.isArray(i)?i.length:Object.keys(i).length)>0:!1};BA.Buffer=(function(){try{var n=BA.global.Buffer;return n.prototype.utf8Write?n:null}catch{return null}})();BA._Buffer_from=null;BA._Buffer_allocUnsafe=null;BA.newBuffer=function(t){return typeof t=="number"?BA.Buffer?BA._Buffer_allocUnsafe(t):new BA.Array(t):BA.Buffer?BA._Buffer_from(t):typeof Uint8Array>"u"?t:new Uint8Array(t)};BA.Array=typeof Uint8Array<"u"?Uint8Array:Array;BA.Long=BA.global.dcodeIO&&BA.global.dcodeIO.Long||BA.global.Long||(function(){try{var n=FV();return n&&n.isLong?n:null}catch{return null}})();BA.key2Re=/^true|false|0|1$/;BA.key32Re=/^-?(?:0|[1-9][0-9]*)$/;BA.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;BA.longToHash=function(t){return t?BA.LongBits.from(t).toHash():BA.LongBits.zeroHash};BA.longFromHash=function(t,o){var i=BA.LongBits.fromHash(t);return BA.Long?BA.Long.fromBits(i.lo,i.hi,o):i.toNumber(!!o)};function UV(n){var t=typeof arguments[arguments.length-1]=="boolean",o=t?arguments.length-1:arguments.length;t=t&&arguments[arguments.length-1];for(var i=1;i-1;--a)if(o[e[a]]===1&&this[e[a]]!==void 0&&this[e[a]]!==null)return e[a]}};BA.oneOfSetter=function(t){return function(o){for(var i=0;i{"use strict";jV.exports=ft;var Ko=bc(),sR,Tm=Ko.LongBits,KV=Ko.base64,xV=Ko.utf8;function su(n,t,o){this.fn=n,this.len=t,this.next=void 0,this.val=o}function cR(){}function n0e(n){this.head=n.head,this.tail=n.tail,this.len=n.len,this.next=n.states}function ft(){this.len=0,this.head=new su(cR,0,0),this.tail=this.head,this.states=null}var YV=function(){return Ko.Buffer?function(){return(ft.create=function(){return new sR})()}:function(){return new ft}};ft.create=YV();ft.alloc=function(t){return new Ko.Array(t)};Ko.Array!==Array&&(ft.alloc=Ko.pool(ft.alloc,Ko.Array.prototype.subarray));ft.prototype._push=function(t,o,i){return this.tail=this.tail.next=new su(t,o,i),this.len+=o,this};function IR(n,t,o){t[o]=n&255}function s0e(n,t,o){for(;n>127;)t[o++]=n&127|128,n>>>=7;t[o]=n}function lR(n,t){this.len=n,this.next=void 0,this.val=t}lR.prototype=Object.create(su.prototype);lR.prototype.fn=s0e;ft.prototype.uint32=function(t){return this.len+=(this.tail=this.tail.next=new lR((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this};ft.prototype.int32=function(t){return(t|=0)<0?this._push(pR,10,Tm.fromNumber(t)):this.uint32(t)};ft.prototype.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)};function pR(n,t,o){for(var i=n.lo,e=n.hi;e;)t[o++]=i&127|128,i=(i>>>7|e<<25)>>>0,e>>>=7;for(;i>127;)t[o++]=i&127|128,i=i>>>7;t[o++]=i}ft.prototype.uint64=function(t){var o=Tm.from(t);return this._push(pR,o.length(),o)};ft.prototype.int64=ft.prototype.uint64;ft.prototype.sint64=function(t){var o=Tm.from(t).zzEncode();return this._push(pR,o.length(),o)};ft.prototype.bool=function(t){return this._push(IR,1,t?1:0)};function gR(n,t,o){t[o]=n&255,t[o+1]=n>>>8&255,t[o+2]=n>>>16&255,t[o+3]=n>>>24}ft.prototype.fixed32=function(t){return this._push(gR,4,t>>>0)};ft.prototype.sfixed32=ft.prototype.fixed32;ft.prototype.fixed64=function(t){var o=Tm.from(t);return this._push(gR,4,o.lo)._push(gR,4,o.hi)};ft.prototype.sfixed64=ft.prototype.fixed64;ft.prototype.float=function(t){return this._push(Ko.float.writeFloatLE,4,t)};ft.prototype.double=function(t){return this._push(Ko.float.writeDoubleLE,8,t)};var g0e=Ko.Array.prototype.set?function(t,o,i){o.set(t,i)}:function(t,o,i){for(var e=0;e>>0;if(!o)return this._push(IR,1,0);if(Ko.isString(t)){var i=ft.alloc(o=KV.length(t));KV.decode(t,i,0),t=i}return this.uint32(o)._push(g0e,o,t)};ft.prototype.string=function(t){var o=xV.length(t);return o?this.uint32(o)._push(xV.write,o,t):this._push(IR,1,0)};ft.prototype.fork=function(){return this.states=new n0e(this),this.head=this.tail=new su(cR,0,0),this.len=0,this};ft.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new su(cR,0,0),this.len=0),this};ft.prototype.ldelim=function(){var t=this.head,o=this.tail,i=this.len;return this.reset().uint32(i),i&&(this.tail.next=t.next,this.tail=o,this.len+=i),this};ft.prototype.finish=function(){for(var t=this.head.next,o=this.constructor.alloc(this.len),i=0;t;)t.fn(t.val,o,i),i+=t.len,t=t.next;return o};ft._configure=function(n){sR=n,ft.create=YV(),sR._configure()}});var zV=ee((CcA,qV)=>{"use strict";qV.exports=Cs;var JV=dR();(Cs.prototype=Object.create(JV.prototype)).constructor=Cs;var Mc=bc();function Cs(){JV.call(this)}Cs._configure=function(){Cs.alloc=Mc._Buffer_allocUnsafe,Cs.writeBytesBuffer=Mc.Buffer&&Mc.Buffer.prototype instanceof Uint8Array&&Mc.Buffer.prototype.set.name==="set"?function(t,o,i){o.set(t,i)}:function(t,o,i){if(t.copy)t.copy(o,i,0,t.length);else for(var e=0;e>>0;return this.uint32(o),o&&this._push(Cs.writeBytesBuffer,o,t),this};function c0e(n,t,o){n.length<40?Mc.utf8.write(n,t,o):t.utf8Write?t.utf8Write(n,o):t.write(n,o)}Cs.prototype.string=function(t){var o=Mc.Buffer.byteLength(t);return this.uint32(o),o&&this._push(c0e,o,t),this};Cs._configure()});var CR=ee((ucA,$V)=>{"use strict";$V.exports=gr;var xo=bc(),ER,ZV=xo.LongBits,I0e=xo.utf8;function On(n,t){return RangeError("index out of range: "+n.pos+" + "+(t||1)+" > "+n.len)}function gr(n){this.buf=n,this.pos=0,this.len=n.length}var VV=typeof Uint8Array<"u"?function(t){if(t instanceof Uint8Array||Array.isArray(t))return new gr(t);throw Error("illegal buffer")}:function(t){if(Array.isArray(t))return new gr(t);throw Error("illegal buffer")},XV=function(){return xo.Buffer?function(o){return(gr.create=function(e){return xo.Buffer.isBuffer(e)?new ER(e):VV(e)})(o)}:VV};gr.create=XV();gr.prototype._slice=xo.Array.prototype.subarray||xo.Array.prototype.slice;gr.prototype.uint32=(function(){var t=4294967295;return function(){if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,On(this,10);return t}})();gr.prototype.int32=function(){return this.uint32()|0};gr.prototype.sint32=function(){var t=this.uint32();return t>>>1^-(t&1)|0};function hR(){var n=new ZV(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(n.lo=(n.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n;if(n.lo=(n.lo|(this.buf[this.pos]&127)<<28)>>>0,n.hi=(n.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return n;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw On(this);if(n.lo=(n.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}return n.lo=(n.lo|(this.buf[this.pos++]&127)<>>0,n}if(this.len-this.pos>4){for(;t<5;++t)if(n.hi=(n.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}else for(;t<5;++t){if(this.pos>=this.len)throw On(this);if(n.hi=(n.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}throw Error("invalid varint encoding")}gr.prototype.bool=function(){return this.uint32()!==0};function Nm(n,t){return(n[t-4]|n[t-3]<<8|n[t-2]<<16|n[t-1]<<24)>>>0}gr.prototype.fixed32=function(){if(this.pos+4>this.len)throw On(this,4);return Nm(this.buf,this.pos+=4)};gr.prototype.sfixed32=function(){if(this.pos+4>this.len)throw On(this,4);return Nm(this.buf,this.pos+=4)|0};function WV(){if(this.pos+8>this.len)throw On(this,8);return new ZV(Nm(this.buf,this.pos+=4),Nm(this.buf,this.pos+=4))}gr.prototype.float=function(){if(this.pos+4>this.len)throw On(this,4);var t=xo.float.readFloatLE(this.buf,this.pos);return this.pos+=4,t};gr.prototype.double=function(){if(this.pos+8>this.len)throw On(this,4);var t=xo.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,t};gr.prototype.bytes=function(){var t=this.uint32(),o=this.pos,i=this.pos+t;if(i>this.len)throw On(this,t);if(this.pos+=t,Array.isArray(this.buf))return this.buf.slice(o,i);if(o===i){var e=xo.Buffer;return e?e.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,o,i)};gr.prototype.string=function(){var t=this.bytes();return I0e.read(t,0,t.length)};gr.prototype.skip=function(t){if(typeof t=="number"){if(this.pos+t>this.len)throw On(this,t);this.pos+=t}else do if(this.pos>=this.len)throw On(this);while(this.buf[this.pos++]&128);return this};gr.recursionLimit=xo.recursionLimit;gr.prototype.skipType=function(n,t){if(t===void 0&&(t=0),t>gr.recursionLimit)throw Error("maximum nesting depth exceeded");switch(n){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(n=this.uint32()&7)!==4;)this.skipType(n,t+1);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+n+" at offset "+this.pos)}return this};gr._configure=function(n){ER=n,gr.create=XV(),ER._configure();var t=xo.Long?"toLong":"toNumber";xo.merge(gr.prototype,{int64:function(){return hR.call(this)[t](!1)},uint64:function(){return hR.call(this)[t](!0)},sint64:function(){return hR.call(this).zzDecode()[t](!1)},fixed64:function(){return WV.call(this)[t](!0)},sfixed64:function(){return WV.call(this)[t](!1)}})}});var rW=ee((BcA,tW)=>{"use strict";tW.exports=dl;var AW=CR();(dl.prototype=Object.create(AW.prototype)).constructor=dl;var eW=bc();function dl(n){AW.call(this,n)}dl._configure=function(){eW.Buffer&&(dl.prototype._slice=eW.Buffer.prototype.slice)};dl.prototype.string=function(){var t=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+t,this.len))};dl._configure()});var iW=ee((fcA,aW)=>{"use strict";aW.exports=gu;var uR=bc();(gu.prototype=Object.create(uR.EventEmitter.prototype)).constructor=gu;function gu(n,t,o){if(typeof n!="function")throw TypeError("rpcImpl must be a function");uR.EventEmitter.call(this),this.rpcImpl=n,this.requestDelimited=!!t,this.responseDelimited=!!o}gu.prototype.rpcCall=function n(t,o,i,e,a){if(!e)throw TypeError("request must be specified");var A=this;if(!a)return uR.asPromise(n,A,t,o,i,e);if(!A.rpcImpl){setTimeout(function(){a(Error("already ended"))},0);return}try{return A.rpcImpl(t,o[A.requestDelimited?"encodeDelimited":"encode"](e).finish(),function(s,g){if(s)return A.emit("error",s,t),a(s);if(g===null){A.end(!0);return}if(!(g instanceof i))try{g=i[A.responseDelimited?"decodeDelimited":"decode"](g)}catch(c){return A.emit("error",c,t),a(c)}return A.emit("data",g,t),a(null,g)})}catch(r){A.emit("error",r,t),setTimeout(function(){a(r)},0);return}};gu.prototype.end=function(t){return this.rpcImpl&&(t||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}});var nW=ee(oW=>{"use strict";var l0e=oW;l0e.Service=iW()});var gW=ee((ycA,sW)=>{"use strict";sW.exports=Object.create(null)});var lW=ee(IW=>{"use strict";var Hi=IW;Hi.build="minimal";Hi.Writer=dR();Hi.BufferWriter=zV();Hi.Reader=CR();Hi.BufferReader=rW();Hi.util=bc();Hi.rpc=nW();Hi.roots=gW();Hi.configure=cW;function cW(){Hi.util._configure(),Hi.Writer._configure(Hi.BufferWriter),Hi.Reader._configure(Hi.BufferReader)}cW()});var Rm=ee((ScA,pW)=>{"use strict";pW.exports=lW()});var c5=ee(ot=>{"use strict";var Pu=Symbol.for("react.element"),Dve=Symbol.for("react.portal"),Ove=Symbol.for("react.fragment"),bve=Symbol.for("react.strict_mode"),Mve=Symbol.for("react.profiler"),_ve=Symbol.for("react.provider"),Tve=Symbol.for("react.context"),Nve=Symbol.for("react.forward_ref"),Rve=Symbol.for("react.suspense"),kve=Symbol.for("react.memo"),vve=Symbol.for("react.lazy"),$6=Symbol.iterator;function Pve(n){return n===null||typeof n!="object"?null:(n=$6&&n[$6]||n["@@iterator"],typeof n=="function"?n:null)}var t5={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},r5=Object.assign,a5={};function Jd(n,t,o){this.props=n,this.context=t,this.refs=a5,this.updater=o||t5}Jd.prototype.isReactComponent={};Jd.prototype.setState=function(n,t){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,t,"setState")};Jd.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function i5(){}i5.prototype=Jd.prototype;function TP(n,t,o){this.props=n,this.context=t,this.refs=a5,this.updater=o||t5}var NP=TP.prototype=new i5;NP.constructor=TP;r5(NP,Jd.prototype);NP.isPureReactComponent=!0;var e5=Array.isArray,o5=Object.prototype.hasOwnProperty,RP={current:null},n5={key:!0,ref:!0,__self:!0,__source:!0};function s5(n,t,o){var i,e={},a=null,A=null;if(t!=null)for(i in t.ref!==void 0&&(A=t.ref),t.key!==void 0&&(a=""+t.key),t)o5.call(t,i)&&!n5.hasOwnProperty(i)&&(e[i]=t[i]);var r=arguments.length-2;if(r===1)e.children=o;else if(1{"use strict";process.env.NODE_ENV!=="production"&&(function(){"use strict";typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var n="18.3.1",t=Symbol.for("react.element"),o=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),e=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),r=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),c=Symbol.for("react.suspense_list"),I=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),B=Symbol.for("react.offscreen"),f=Symbol.iterator,Q="@@iterator";function y(H){if(H===null||typeof H!="object")return null;var te=f&&H[f]||H[Q];return typeof te=="function"?te:null}var m={current:null},_={transition:null},T={current:null,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1},R={current:null},K={},L=null;function U(H){L=H}K.setExtraStackFrame=function(H){L=H},K.getCurrentStack=null,K.getStackAddendum=function(){var H="";L&&(H+=L);var te=K.getCurrentStack;return te&&(H+=te()||""),H};var z=!1,q=!1,x=!1,G=!1,V=!1,F={ReactCurrentDispatcher:m,ReactCurrentBatchConfig:_,ReactCurrentOwner:R};F.ReactDebugCurrentFrame=K,F.ReactCurrentActQueue=T;function N(H){{for(var te=arguments.length,he=new Array(te>1?te-1:0),Se=1;Se1?te-1:0),Se=1;Se1){for(var Vt=Array(Gt),Wt=0;Wt1){for(var ir=Array(Wt),_r=0;_r is not supported and will be removed in a future major release. Did you mean to render instead?")),te.Provider},set:function(CA){te.Provider=CA}},_currentValue:{get:function(){return te._currentValue},set:function(CA){te._currentValue=CA}},_currentValue2:{get:function(){return te._currentValue2},set:function(CA){te._currentValue2=CA}},_threadCount:{get:function(){return te._threadCount},set:function(CA){te._threadCount=CA}},Consumer:{get:function(){return he||(he=!0,k("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?")),te.Consumer}},displayName:{get:function(){return te.displayName},set:function(CA){ze||(N("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.",CA),ze=!0)}}}),te.Consumer=TA}return te._currentRenderer=null,te._currentRenderer2=null,te}var Ee=-1,me=0,Je=1,IA=2;function yA(H){if(H._status===Ee){var te=H._result,he=te();if(he.then(function(TA){if(H._status===me||H._status===Ee){var CA=H;CA._status=Je,CA._result=TA}},function(TA){if(H._status===me||H._status===Ee){var CA=H;CA._status=IA,CA._result=TA}}),H._status===Ee){var Se=H;Se._status=me,Se._result=he}}if(H._status===Je){var ze=H._result;return ze===void 0&&k(`lazy: Expected the result of a dynamic import() call. Instead received: %s +`+o)}function ll(n,t,o,i,e,a){if(n.listenerCount("wsClientError")){let A=new Error(e);Error.captureStackTrace(A,ll),n.emit("wsClientError",A,o,t)}else iu(o,i,e,a)}});var uV=ee((scA,CV)=>{"use strict";CV.exports=a0e;function a0e(n,t){for(var o=new Array(arguments.length-1),i=0,e=2,a=!0;e{"use strict";var Mm=QV;Mm.length=function(t){var o=t.length;if(!o)return 0;for(var i=0;--o%4>1&&t.charAt(o)==="=";)++i;return Math.ceil(t.length*3)/4-i};var vd=new Array(64),fV=new Array(123);for(Dn=0;Dn<64;)fV[vd[Dn]=Dn<26?Dn+65:Dn<52?Dn+71:Dn<62?Dn-4:Dn-59|43]=Dn++;var Dn;Mm.encode=function(t,o,i){for(var e=null,a=[],A=0,r=0,s;o>2],s=(g&3)<<4,r=1;break;case 1:a[A++]=vd[s|g>>4],s=(g&15)<<2,r=2;break;case 2:a[A++]=vd[s|g>>6],a[A++]=vd[g&63],r=0;break}A>8191&&((e||(e=[])).push(String.fromCharCode.apply(String,a)),A=0)}return r&&(a[A++]=vd[s],a[A++]=61,r===1&&(a[A++]=61)),e?(A&&e.push(String.fromCharCode.apply(String,a.slice(0,A))),e.join("")):String.fromCharCode.apply(String,a.slice(0,A))};var BV="invalid encoding";Mm.decode=function(t,o,i){for(var e=i,a=0,A,r=0;r1)break;if((s=fV[s])===void 0)throw Error(BV);switch(a){case 0:A=s,a=1;break;case 1:o[i++]=A<<2|(s&48)>>4,A=s,a=2;break;case 2:o[i++]=(A&15)<<4|(s&60)>>2,A=s,a=3;break;case 3:o[i++]=(A&3)<<6|s,a=0;break}}if(a===1)throw Error(BV);return i-e};Mm.test=function(t){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t)}});var SV=ee((ccA,mV)=>{"use strict";mV.exports=_m;function _m(){this._listeners=Object.create(null)}_m.prototype.on=function(t,o,i){return(this._listeners[t]||(this._listeners[t]=[])).push({fn:o,ctx:i||this}),this};_m.prototype.off=function(t,o){if(t===void 0)this._listeners=Object.create(null);else if(o===void 0)this._listeners[t]=[];else{var i=this._listeners[t];if(!i)return this;for(var e=0;e{"use strict";_V.exports=wV(wV);function wV(n){return typeof Float32Array<"u"?(function(){var t=new Float32Array([-0]),o=new Uint8Array(t.buffer),i=o[3]===128;function e(s,g,c){t[0]=s,g[c]=o[0],g[c+1]=o[1],g[c+2]=o[2],g[c+3]=o[3]}function a(s,g,c){t[0]=s,g[c]=o[3],g[c+1]=o[2],g[c+2]=o[1],g[c+3]=o[0]}n.writeFloatLE=i?e:a,n.writeFloatBE=i?a:e;function A(s,g){return o[0]=s[g],o[1]=s[g+1],o[2]=s[g+2],o[3]=s[g+3],t[0]}function r(s,g){return o[3]=s[g],o[2]=s[g+1],o[1]=s[g+2],o[0]=s[g+3],t[0]}n.readFloatLE=i?A:r,n.readFloatBE=i?r:A})():(function(){function t(i,e,a,A){var r=e<0?1:0;if(r&&(e=-e),e===0)i(1/e>0?0:2147483648,a,A);else if(isNaN(e))i(2143289344,a,A);else if(e>34028234663852886e22)i((r<<31|2139095040)>>>0,a,A);else if(e<11754943508222875e-54)i((r<<31|Math.round(e/1401298464324817e-60))>>>0,a,A);else{var s=Math.floor(Math.log(e)/Math.LN2),g=Math.round(e*Math.pow(2,-s)*8388608)&8388607;i((r<<31|s+127<<23|g)>>>0,a,A)}}n.writeFloatLE=t.bind(null,DV),n.writeFloatBE=t.bind(null,OV);function o(i,e,a){var A=i(e,a),r=(A>>31)*2+1,s=A>>>23&255,g=A&8388607;return s===255?g?NaN:r*(1/0):s===0?r*1401298464324817e-60*g:r*Math.pow(2,s-150)*(g+8388608)}n.readFloatLE=o.bind(null,bV),n.readFloatBE=o.bind(null,MV)})(),typeof Float64Array<"u"?(function(){var t=new Float64Array([-0]),o=new Uint8Array(t.buffer),i=o[7]===128;function e(s,g,c){t[0]=s,g[c]=o[0],g[c+1]=o[1],g[c+2]=o[2],g[c+3]=o[3],g[c+4]=o[4],g[c+5]=o[5],g[c+6]=o[6],g[c+7]=o[7]}function a(s,g,c){t[0]=s,g[c]=o[7],g[c+1]=o[6],g[c+2]=o[5],g[c+3]=o[4],g[c+4]=o[3],g[c+5]=o[2],g[c+6]=o[1],g[c+7]=o[0]}n.writeDoubleLE=i?e:a,n.writeDoubleBE=i?a:e;function A(s,g){return o[0]=s[g],o[1]=s[g+1],o[2]=s[g+2],o[3]=s[g+3],o[4]=s[g+4],o[5]=s[g+5],o[6]=s[g+6],o[7]=s[g+7],t[0]}function r(s,g){return o[7]=s[g],o[6]=s[g+1],o[5]=s[g+2],o[4]=s[g+3],o[3]=s[g+4],o[2]=s[g+5],o[1]=s[g+6],o[0]=s[g+7],t[0]}n.readDoubleLE=i?A:r,n.readDoubleBE=i?r:A})():(function(){function t(i,e,a,A,r,s){var g=A<0?1:0;if(g&&(A=-A),A===0)i(0,r,s+e),i(1/A>0?0:2147483648,r,s+a);else if(isNaN(A))i(0,r,s+e),i(2146959360,r,s+a);else if(A>17976931348623157e292)i(0,r,s+e),i((g<<31|2146435072)>>>0,r,s+a);else{var c;if(A<22250738585072014e-324)c=A/5e-324,i(c>>>0,r,s+e),i((g<<31|c/4294967296)>>>0,r,s+a);else{var I=Math.floor(Math.log(A)/Math.LN2);I===1024&&(I=1023),c=A*Math.pow(2,-I),i(c*4503599627370496>>>0,r,s+e),i((g<<31|I+1023<<20|c*1048576&1048575)>>>0,r,s+a)}}}n.writeDoubleLE=t.bind(null,DV,0,4),n.writeDoubleBE=t.bind(null,OV,4,0);function o(i,e,a,A,r){var s=i(A,r+e),g=i(A,r+a),c=(g>>31)*2+1,I=g>>>20&2047,d=4294967296*(g&1048575)+s;return I===2047?d?NaN:c*(1/0):I===0?c*5e-324*d:c*Math.pow(2,I-1075)*(d+4503599627370496)}n.readDoubleLE=o.bind(null,bV,0,4),n.readDoubleBE=o.bind(null,MV,4,0)})(),n}function DV(n,t,o){t[o]=n&255,t[o+1]=n>>>8&255,t[o+2]=n>>>16&255,t[o+3]=n>>>24}function OV(n,t,o){t[o]=n>>>24,t[o+1]=n>>>16&255,t[o+2]=n>>>8&255,t[o+3]=n&255}function bV(n,t){return(n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24)>>>0}function MV(n,t){return(n[t]<<24|n[t+1]<<16|n[t+2]<<8|n[t+3])>>>0}});var RV=ee(NV=>{"use strict";var iR=NV,aR=65533;iR.length=function(t){for(var o=0,i=0,e=0;e=192&&r<224?(g=(r&31)<<6|t[o++]&63,a[A++]=g>=128?g:aR):r>=224&&r<240?(c=(r&15)<<12|(t[o++]&63)<<6|t[o++]&63,a[A++]=c>=2048?c:aR):r>=240&&(s=(r&7)<<18|(t[o++]&63)<<12|(t[o++]&63)<<6|t[o++]&63,s<65536||s>1114111?a[A++]=aR:(s-=65536,a[A++]=55296+(s>>10),a[A++]=56320+(s&1023))),A>8191&&((e||(e=[])).push(String.fromCharCode.apply(String,a.slice(0,A))),A=0);return e?(A&&e.push(String.fromCharCode.apply(String,a.slice(0,A))),e.join("")):String.fromCharCode.apply(String,a.slice(0,A))};iR.write=function(t,o,i){for(var e=i,a,A,r=0;r>6|192,o[i++]=a&63|128):(a&64512)===55296&&((A=t.charCodeAt(r+1))&64512)===56320?(a=65536+((a&1023)<<10)+(A&1023),++r,o[i++]=a>>18|240,o[i++]=a>>12&63|128,o[i++]=a>>6&63|128,o[i++]=a&63|128):(o[i++]=a>>12|224,o[i++]=a>>6&63|128,o[i++]=a&63|128);return i-e}});var vV=ee((pcA,kV)=>{"use strict";kV.exports=i0e;function i0e(n,t,o){var i=o||8192,e=i>>>1,a=null,A=i;return function(s){if(s<1||s>e)return n(s);A+s>i&&(a=n(i),A=0);var g=t.call(a,A,A+=s);return A&7&&(A=(A|7)+1),g}}});var GV=ee((dcA,PV)=>{"use strict";PV.exports=sa;var ou=bc();function sa(n,t){this.lo=n>>>0,this.hi=t>>>0}var pl=sa.zero=new sa(0,0);pl.toNumber=function(){return 0};pl.zzEncode=pl.zzDecode=function(){return this};pl.length=function(){return 1};var o0e=sa.zeroHash="\0\0\0\0\0\0\0\0";sa.fromNumber=function(t){if(t===0)return pl;var o=t<0;o&&(t=-t);var i=t>>>0,e=(t-i)/4294967296>>>0;return o&&(e=~e>>>0,i=~i>>>0,++i>4294967295&&(i=0,++e>4294967295&&(e=0))),new sa(i,e)};sa.from=function(t){if(typeof t=="number")return sa.fromNumber(t);if(ou.isString(t))if(ou.Long)t=ou.Long.fromString(t);else return sa.fromNumber(parseInt(t,10));return t.low||t.high?new sa(t.low>>>0,t.high>>>0):pl};sa.prototype.toNumber=function(t){if(!t&&this.hi>>>31){var o=~this.lo+1>>>0,i=~this.hi>>>0;return o||(i=i+1>>>0),-(o+i*4294967296)}return this.lo+this.hi*4294967296};sa.prototype.toLong=function(t){return ou.Long?new ou.Long(this.lo|0,this.hi|0,!!t):{low:this.lo|0,high:this.hi|0,unsigned:!!t}};var Oc=String.prototype.charCodeAt;sa.fromHash=function(t){return t===o0e?pl:new sa((Oc.call(t,0)|Oc.call(t,1)<<8|Oc.call(t,2)<<16|Oc.call(t,3)<<24)>>>0,(Oc.call(t,4)|Oc.call(t,5)<<8|Oc.call(t,6)<<16|Oc.call(t,7)<<24)>>>0)};sa.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)};sa.prototype.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this};sa.prototype.zzDecode=function(){var t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this};sa.prototype.length=function(){var t=this.lo,o=(this.lo>>>28|this.hi<<4)>>>0,i=this.hi>>>24;return i===0?o===0?t<16384?t<128?1:2:t<2097152?3:4:o<16384?o<128?5:6:o<2097152?7:8:i<128?9:10}});var FV=ee((nu,oR)=>{(function(n,t){function o(i){return i.default||i}typeof define=="function"&&define.amd?define([],function(){var i={};return t(i),o(i)}):typeof nu=="object"?(t(nu),typeof oR=="object"&&(oR.exports=o(nu))):(function(){var i={};t(i),n.Long=o(i)})()})(typeof globalThis<"u"?globalThis:typeof self<"u"?self:nu,function(n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function o(F,N,k){this.low=F|0,this.high=N|0,this.unsigned=!!k}o.prototype.__isLong__,Object.defineProperty(o.prototype,"__isLong__",{value:!0});function i(F){return(F&&F.__isLong__)===!0}function e(F){var N=Math.clz32(F&-F);return F?31-N:N}o.isLong=i;var a={},A={};function r(F,N){var k,J,$;return N?(F>>>=0,($=0<=F&&F<256)&&(J=A[F],J)?J:(k=g(F,0,!0),$&&(A[F]=k),k)):(F|=0,($=-128<=F&&F<128)&&(J=a[F],J)?J:(k=g(F,F<0?-1:0,!1),$&&(a[F]=k),k))}o.fromInt=r;function s(F,N){if(isNaN(F))return N?R:T;if(N){if(F<0)return R;if(F>=y)return q}else{if(F<=-m)return x;if(F+1>=m)return z}return F<0?s(-F,N).neg():g(F%Q|0,F/Q|0,N)}o.fromNumber=s;function g(F,N,k){return new o(F,N,k)}o.fromBits=g;var c=Math.pow;function I(F,N,k){if(F.length===0)throw Error("empty string");if(typeof N=="number"?(k=N,N=!1):N=!!N,F==="NaN"||F==="Infinity"||F==="+Infinity"||F==="-Infinity")return N?R:T;if(k=k||10,k<2||360)throw Error("interior hyphen");if(J===0)return I(F.substring(1),N,k).neg();for(var $=s(c(k,8)),ie=T,pe=0;pe>>0:this.low},G.toNumber=function(){return this.unsigned?(this.high>>>0)*Q+(this.low>>>0):this.high*Q+(this.low>>>0)},G.toString=function(N){if(N=N||10,N<2||36>>0,ke=fe.toString(N);if(pe=Me,pe.isZero())return ke+se;for(;ke.length<6;)ke="0"+ke;se=""+ke+se}},G.getHighBits=function(){return this.high},G.getHighBitsUnsigned=function(){return this.high>>>0},G.getLowBits=function(){return this.low},G.getLowBitsUnsigned=function(){return this.low>>>0},G.getNumBitsAbs=function(){if(this.isNegative())return this.eq(x)?64:this.neg().getNumBitsAbs();for(var N=this.high!=0?this.high:this.low,k=31;k>0&&(N&1<>21;return N?this.unsigned?!1:N===-1&&!(this.low===0&&this.high===-2097152):!0},G.isZero=function(){return this.high===0&&this.low===0},G.eqz=G.isZero,G.isNegative=function(){return!this.unsigned&&this.high<0},G.isPositive=function(){return this.unsigned||this.high>=0},G.isOdd=function(){return(this.low&1)===1},G.isEven=function(){return(this.low&1)===0},G.equals=function(N){return i(N)||(N=d(N)),this.unsigned!==N.unsigned&&this.high>>>31===1&&N.high>>>31===1?!1:this.high===N.high&&this.low===N.low},G.eq=G.equals,G.notEquals=function(N){return!this.eq(N)},G.neq=G.notEquals,G.ne=G.notEquals,G.lessThan=function(N){return this.comp(N)<0},G.lt=G.lessThan,G.lessThanOrEqual=function(N){return this.comp(N)<=0},G.lte=G.lessThanOrEqual,G.le=G.lessThanOrEqual,G.greaterThan=function(N){return this.comp(N)>0},G.gt=G.greaterThan,G.greaterThanOrEqual=function(N){return this.comp(N)>=0},G.gte=G.greaterThanOrEqual,G.ge=G.greaterThanOrEqual,G.compare=function(N){if(i(N)||(N=d(N)),this.eq(N))return 0;var k=this.isNegative(),J=N.isNegative();return k&&!J?-1:!k&&J?1:this.unsigned?N.high>>>0>this.high>>>0||N.high===this.high&&N.low>>>0>this.low>>>0?-1:1:this.sub(N).isNegative()?-1:1},G.comp=G.compare,G.negate=function(){return!this.unsigned&&this.eq(x)?x:this.not().add(K)},G.neg=G.negate,G.add=function(N){i(N)||(N=d(N));var k=this.high>>>16,J=this.high&65535,$=this.low>>>16,ie=this.low&65535,pe=N.high>>>16,se=N.high&65535,Me=N.low>>>16,fe=N.low&65535,ke=0,Ne=0,We=0,ve=0;return ve+=ie+fe,We+=ve>>>16,ve&=65535,We+=$+Me,Ne+=We>>>16,We&=65535,Ne+=J+se,ke+=Ne>>>16,Ne&=65535,ke+=k+pe,ke&=65535,g(We<<16|ve,ke<<16|Ne,this.unsigned)},G.subtract=function(N){return i(N)||(N=d(N)),this.add(N.neg())},G.sub=G.subtract,G.multiply=function(N){if(this.isZero())return this;if(i(N)||(N=d(N)),t){var k=t.mul(this.low,this.high,N.low,N.high);return g(k,t.get_high(),this.unsigned)}if(N.isZero())return this.unsigned?R:T;if(this.eq(x))return N.isOdd()?x:T;if(N.eq(x))return this.isOdd()?x:T;if(this.isNegative())return N.isNegative()?this.neg().mul(N.neg()):this.neg().mul(N).neg();if(N.isNegative())return this.mul(N.neg()).neg();if(this.lt(_)&&N.lt(_))return s(this.toNumber()*N.toNumber(),this.unsigned);var J=this.high>>>16,$=this.high&65535,ie=this.low>>>16,pe=this.low&65535,se=N.high>>>16,Me=N.high&65535,fe=N.low>>>16,ke=N.low&65535,Ne=0,We=0,ve=0,aA=0;return aA+=pe*ke,ve+=aA>>>16,aA&=65535,ve+=ie*ke,We+=ve>>>16,ve&=65535,ve+=pe*fe,We+=ve>>>16,ve&=65535,We+=$*ke,Ne+=We>>>16,We&=65535,We+=ie*fe,Ne+=We>>>16,We&=65535,We+=pe*Me,Ne+=We>>>16,We&=65535,Ne+=J*ke+$*fe+ie*Me+pe*se,Ne&=65535,g(ve<<16|aA,Ne<<16|We,this.unsigned)},G.mul=G.multiply,G.divide=function(N){if(i(N)||(N=d(N)),N.isZero())throw Error("division by zero");if(t){if(!this.unsigned&&this.high===-2147483648&&N.low===-1&&N.high===-1)return this;var k=(this.unsigned?t.div_u:t.div_s)(this.low,this.high,N.low,N.high);return g(k,t.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?R:T;var J,$,ie;if(this.unsigned){if(N.unsigned||(N=N.toUnsigned()),N.gt(this))return R;if(N.gt(this.shru(1)))return L;ie=R}else{if(this.eq(x)){if(N.eq(K)||N.eq(U))return x;if(N.eq(x))return K;var pe=this.shr(1);return J=pe.div(N).shl(1),J.eq(T)?N.isNegative()?K:U:($=this.sub(N.mul(J)),ie=J.add($.div(N)),ie)}else if(N.eq(x))return this.unsigned?R:T;if(this.isNegative())return N.isNegative()?this.neg().div(N.neg()):this.neg().div(N).neg();if(N.isNegative())return this.div(N.neg()).neg();ie=T}for($=this;$.gte(N);){J=Math.max(1,Math.floor($.toNumber()/N.toNumber()));for(var se=Math.ceil(Math.log(J)/Math.LN2),Me=se<=48?1:c(2,se-48),fe=s(J),ke=fe.mul(N);ke.isNegative()||ke.gt($);)J-=Me,fe=s(J,this.unsigned),ke=fe.mul(N);fe.isZero()&&(fe=K),ie=ie.add(fe),$=$.sub(ke)}return ie},G.div=G.divide,G.modulo=function(N){if(i(N)||(N=d(N)),t){var k=(this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,N.low,N.high);return g(k,t.get_high(),this.unsigned)}return this.sub(this.div(N).mul(N))},G.mod=G.modulo,G.rem=G.modulo,G.not=function(){return g(~this.low,~this.high,this.unsigned)},G.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},G.clz=G.countLeadingZeros,G.countTrailingZeros=function(){return this.low?e(this.low):e(this.high)+32},G.ctz=G.countTrailingZeros,G.and=function(N){return i(N)||(N=d(N)),g(this.low&N.low,this.high&N.high,this.unsigned)},G.or=function(N){return i(N)||(N=d(N)),g(this.low|N.low,this.high|N.high,this.unsigned)},G.xor=function(N){return i(N)||(N=d(N)),g(this.low^N.low,this.high^N.high,this.unsigned)},G.shiftLeft=function(N){return i(N)&&(N=N.toInt()),(N&=63)===0?this:N<32?g(this.low<>>32-N,this.unsigned):g(0,this.low<>>N|this.high<<32-N,this.high>>N,this.unsigned):g(this.high>>N-32,this.high>=0?0:-1,this.unsigned)},G.shr=G.shiftRight,G.shiftRightUnsigned=function(N){return i(N)&&(N=N.toInt()),(N&=63)===0?this:N<32?g(this.low>>>N|this.high<<32-N,this.high>>>N,this.unsigned):N===32?g(this.high,0,this.unsigned):g(this.high>>>N-32,0,this.unsigned)},G.shru=G.shiftRightUnsigned,G.shr_u=G.shiftRightUnsigned,G.rotateLeft=function(N){var k;return i(N)&&(N=N.toInt()),(N&=63)===0?this:N===32?g(this.high,this.low,this.unsigned):N<32?(k=32-N,g(this.low<>>k,this.high<>>k,this.unsigned)):(N-=32,k=32-N,g(this.high<>>k,this.low<>>k,this.unsigned))},G.rotl=G.rotateLeft,G.rotateRight=function(N){var k;return i(N)&&(N=N.toInt()),(N&=63)===0?this:N===32?g(this.high,this.low,this.unsigned):N<32?(k=32-N,g(this.high<>>N,this.low<>>N,this.unsigned)):(N-=32,k=32-N,g(this.low<>>N,this.high<>>N,this.unsigned))},G.rotr=G.rotateRight,G.toSigned=function(){return this.unsigned?g(this.low,this.high,!1):this},G.toUnsigned=function(){return this.unsigned?this:g(this.low,this.high,!0)},G.toBytes=function(N){return N?this.toBytesLE():this.toBytesBE()},G.toBytesLE=function(){var N=this.high,k=this.low;return[k&255,k>>>8&255,k>>>16&255,k>>>24,N&255,N>>>8&255,N>>>16&255,N>>>24]},G.toBytesBE=function(){var N=this.high,k=this.low;return[N>>>24,N>>>16&255,N>>>8&255,N&255,k>>>24,k>>>16&255,k>>>8&255,k&255]},o.fromBytes=function(N,k,J){return J?o.fromBytesLE(N,k):o.fromBytesBE(N,k)},o.fromBytesLE=function(N,k){return new o(N[0]|N[1]<<8|N[2]<<16|N[3]<<24,N[4]|N[5]<<8|N[6]<<16|N[7]<<24,k)},o.fromBytesBE=function(N,k){return new o(N[4]<<24|N[5]<<16|N[6]<<8|N[7],N[0]<<24|N[1]<<16|N[2]<<8|N[3],k)},typeof BigInt=="function"&&(o.fromBigInt=function(N,k){var J=Number(BigInt.asIntN(32,N)),$=Number(BigInt.asIntN(32,N>>BigInt(32)));return g(J,$,k)},o.fromValue=function(N,k){return typeof N=="bigint"?o.fromBigInt(N,k):d(N,k)},G.toBigInt=function(){var N=BigInt(this.low>>>0),k=BigInt(this.unsigned?this.high>>>0:this.high);return k<{"use strict";var BA=nR;BA.asPromise=uV();BA.base64=yV();BA.EventEmitter=SV();BA.float=TV();BA.utf8=RV();BA.pool=vV();BA.LongBits=GV();function LV(n){return n==="__proto__"||n==="prototype"||n==="constructor"}BA.isUnsafeProperty=LV;BA.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node);BA.global=BA.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||nR;BA.emptyArray=Object.freeze?Object.freeze([]):[];BA.emptyObject=Object.freeze?Object.freeze({}):{};BA.isInteger=Number.isInteger||function(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t};BA.isString=function(t){return typeof t=="string"||t instanceof String};BA.isObject=function(t){return t&&typeof t=="object"};BA.isset=BA.isSet=function(t,o){var i=t[o];return i!=null&&Object.hasOwnProperty.call(t,o)?typeof i!="object"||(Array.isArray(i)?i.length:Object.keys(i).length)>0:!1};BA.Buffer=(function(){try{var n=BA.global.Buffer;return n.prototype.utf8Write?n:null}catch{return null}})();BA._Buffer_from=null;BA._Buffer_allocUnsafe=null;BA.newBuffer=function(t){return typeof t=="number"?BA.Buffer?BA._Buffer_allocUnsafe(t):new BA.Array(t):BA.Buffer?BA._Buffer_from(t):typeof Uint8Array>"u"?t:new Uint8Array(t)};BA.Array=typeof Uint8Array<"u"?Uint8Array:Array;BA.Long=BA.global.dcodeIO&&BA.global.dcodeIO.Long||BA.global.Long||(function(){try{var n=FV();return n&&n.isLong?n:null}catch{return null}})();BA.key2Re=/^true|false|0|1$/;BA.key32Re=/^-?(?:0|[1-9][0-9]*)$/;BA.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;BA.longToHash=function(t){return t?BA.LongBits.from(t).toHash():BA.LongBits.zeroHash};BA.longFromHash=function(t,o){var i=BA.LongBits.fromHash(t);return BA.Long?BA.Long.fromBits(i.lo,i.hi,o):i.toNumber(!!o)};function UV(n){var t=typeof arguments[arguments.length-1]=="boolean",o=t?arguments.length-1:arguments.length;t=t&&arguments[arguments.length-1];for(var i=1;i-1;--a)if(o[e[a]]===1&&this[e[a]]!==void 0&&this[e[a]]!==null)return e[a]}};BA.oneOfSetter=function(t){return function(o){for(var i=0;i{"use strict";jV.exports=ft;var Ko=bc(),sR,Tm=Ko.LongBits,KV=Ko.base64,xV=Ko.utf8;function su(n,t,o){this.fn=n,this.len=t,this.next=void 0,this.val=o}function cR(){}function n0e(n){this.head=n.head,this.tail=n.tail,this.len=n.len,this.next=n.states}function ft(){this.len=0,this.head=new su(cR,0,0),this.tail=this.head,this.states=null}var YV=function(){return Ko.Buffer?function(){return(ft.create=function(){return new sR})()}:function(){return new ft}};ft.create=YV();ft.alloc=function(t){return new Ko.Array(t)};Ko.Array!==Array&&(ft.alloc=Ko.pool(ft.alloc,Ko.Array.prototype.subarray));ft.prototype._push=function(t,o,i){return this.tail=this.tail.next=new su(t,o,i),this.len+=o,this};function IR(n,t,o){t[o]=n&255}function s0e(n,t,o){for(;n>127;)t[o++]=n&127|128,n>>>=7;t[o]=n}function lR(n,t){this.len=n,this.next=void 0,this.val=t}lR.prototype=Object.create(su.prototype);lR.prototype.fn=s0e;ft.prototype.uint32=function(t){return this.len+=(this.tail=this.tail.next=new lR((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this};ft.prototype.int32=function(t){return(t|=0)<0?this._push(pR,10,Tm.fromNumber(t)):this.uint32(t)};ft.prototype.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)};function pR(n,t,o){for(var i=n.lo,e=n.hi;e;)t[o++]=i&127|128,i=(i>>>7|e<<25)>>>0,e>>>=7;for(;i>127;)t[o++]=i&127|128,i=i>>>7;t[o++]=i}ft.prototype.uint64=function(t){var o=Tm.from(t);return this._push(pR,o.length(),o)};ft.prototype.int64=ft.prototype.uint64;ft.prototype.sint64=function(t){var o=Tm.from(t).zzEncode();return this._push(pR,o.length(),o)};ft.prototype.bool=function(t){return this._push(IR,1,t?1:0)};function gR(n,t,o){t[o]=n&255,t[o+1]=n>>>8&255,t[o+2]=n>>>16&255,t[o+3]=n>>>24}ft.prototype.fixed32=function(t){return this._push(gR,4,t>>>0)};ft.prototype.sfixed32=ft.prototype.fixed32;ft.prototype.fixed64=function(t){var o=Tm.from(t);return this._push(gR,4,o.lo)._push(gR,4,o.hi)};ft.prototype.sfixed64=ft.prototype.fixed64;ft.prototype.float=function(t){return this._push(Ko.float.writeFloatLE,4,t)};ft.prototype.double=function(t){return this._push(Ko.float.writeDoubleLE,8,t)};var g0e=Ko.Array.prototype.set?function(t,o,i){o.set(t,i)}:function(t,o,i){for(var e=0;e>>0;if(!o)return this._push(IR,1,0);if(Ko.isString(t)){var i=ft.alloc(o=KV.length(t));KV.decode(t,i,0),t=i}return this.uint32(o)._push(g0e,o,t)};ft.prototype.string=function(t){var o=xV.length(t);return o?this.uint32(o)._push(xV.write,o,t):this._push(IR,1,0)};ft.prototype.fork=function(){return this.states=new n0e(this),this.head=this.tail=new su(cR,0,0),this.len=0,this};ft.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new su(cR,0,0),this.len=0),this};ft.prototype.ldelim=function(){var t=this.head,o=this.tail,i=this.len;return this.reset().uint32(i),i&&(this.tail.next=t.next,this.tail=o,this.len+=i),this};ft.prototype.finish=function(){for(var t=this.head.next,o=this.constructor.alloc(this.len),i=0;t;)t.fn(t.val,o,i),i+=t.len,t=t.next;return o};ft._configure=function(n){sR=n,ft.create=YV(),sR._configure()}});var zV=ee((CcA,qV)=>{"use strict";qV.exports=Cs;var JV=dR();(Cs.prototype=Object.create(JV.prototype)).constructor=Cs;var Mc=bc();function Cs(){JV.call(this)}Cs._configure=function(){Cs.alloc=Mc._Buffer_allocUnsafe,Cs.writeBytesBuffer=Mc.Buffer&&Mc.Buffer.prototype instanceof Uint8Array&&Mc.Buffer.prototype.set.name==="set"?function(t,o,i){o.set(t,i)}:function(t,o,i){if(t.copy)t.copy(o,i,0,t.length);else for(var e=0;e>>0;return this.uint32(o),o&&this._push(Cs.writeBytesBuffer,o,t),this};function c0e(n,t,o){n.length<40?Mc.utf8.write(n,t,o):t.utf8Write?t.utf8Write(n,o):t.write(n,o)}Cs.prototype.string=function(t){var o=Mc.Buffer.byteLength(t);return this.uint32(o),o&&this._push(c0e,o,t),this};Cs._configure()});var CR=ee((ucA,$V)=>{"use strict";$V.exports=gr;var xo=bc(),ER,ZV=xo.LongBits,I0e=xo.utf8;function On(n,t){return RangeError("index out of range: "+n.pos+" + "+(t||1)+" > "+n.len)}function gr(n){this.buf=n,this.pos=0,this.len=n.length}var VV=typeof Uint8Array<"u"?function(t){if(t instanceof Uint8Array||Array.isArray(t))return new gr(t);throw Error("illegal buffer")}:function(t){if(Array.isArray(t))return new gr(t);throw Error("illegal buffer")},XV=function(){return xo.Buffer?function(o){return(gr.create=function(e){return xo.Buffer.isBuffer(e)?new ER(e):VV(e)})(o)}:VV};gr.create=XV();gr.prototype._slice=xo.Array.prototype.subarray||xo.Array.prototype.slice;gr.prototype.uint32=(function(){var t=4294967295;return function(){if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,On(this,10);return t}})();gr.prototype.int32=function(){return this.uint32()|0};gr.prototype.sint32=function(){var t=this.uint32();return t>>>1^-(t&1)|0};function hR(){var n=new ZV(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(n.lo=(n.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n;if(n.lo=(n.lo|(this.buf[this.pos]&127)<<28)>>>0,n.hi=(n.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return n;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw On(this);if(n.lo=(n.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}return n.lo=(n.lo|(this.buf[this.pos++]&127)<>>0,n}if(this.len-this.pos>4){for(;t<5;++t)if(n.hi=(n.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}else for(;t<5;++t){if(this.pos>=this.len)throw On(this);if(n.hi=(n.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return n}throw Error("invalid varint encoding")}gr.prototype.bool=function(){return this.uint32()!==0};function Nm(n,t){return(n[t-4]|n[t-3]<<8|n[t-2]<<16|n[t-1]<<24)>>>0}gr.prototype.fixed32=function(){if(this.pos+4>this.len)throw On(this,4);return Nm(this.buf,this.pos+=4)};gr.prototype.sfixed32=function(){if(this.pos+4>this.len)throw On(this,4);return Nm(this.buf,this.pos+=4)|0};function WV(){if(this.pos+8>this.len)throw On(this,8);return new ZV(Nm(this.buf,this.pos+=4),Nm(this.buf,this.pos+=4))}gr.prototype.float=function(){if(this.pos+4>this.len)throw On(this,4);var t=xo.float.readFloatLE(this.buf,this.pos);return this.pos+=4,t};gr.prototype.double=function(){if(this.pos+8>this.len)throw On(this,4);var t=xo.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,t};gr.prototype.bytes=function(){var t=this.uint32(),o=this.pos,i=this.pos+t;if(i>this.len)throw On(this,t);if(this.pos+=t,Array.isArray(this.buf))return this.buf.slice(o,i);if(o===i){var e=xo.Buffer;return e?e.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,o,i)};gr.prototype.string=function(){var t=this.bytes();return I0e.read(t,0,t.length)};gr.prototype.skip=function(t){if(typeof t=="number"){if(this.pos+t>this.len)throw On(this,t);this.pos+=t}else do if(this.pos>=this.len)throw On(this);while(this.buf[this.pos++]&128);return this};gr.recursionLimit=xo.recursionLimit;gr.prototype.skipType=function(n,t){if(t===void 0&&(t=0),t>gr.recursionLimit)throw Error("maximum nesting depth exceeded");switch(n){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(n=this.uint32()&7)!==4;)this.skipType(n,t+1);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+n+" at offset "+this.pos)}return this};gr._configure=function(n){ER=n,gr.create=XV(),ER._configure();var t=xo.Long?"toLong":"toNumber";xo.merge(gr.prototype,{int64:function(){return hR.call(this)[t](!1)},uint64:function(){return hR.call(this)[t](!0)},sint64:function(){return hR.call(this).zzDecode()[t](!1)},fixed64:function(){return WV.call(this)[t](!0)},sfixed64:function(){return WV.call(this)[t](!1)}})}});var rW=ee((BcA,tW)=>{"use strict";tW.exports=dl;var AW=CR();(dl.prototype=Object.create(AW.prototype)).constructor=dl;var eW=bc();function dl(n){AW.call(this,n)}dl._configure=function(){eW.Buffer&&(dl.prototype._slice=eW.Buffer.prototype.slice)};dl.prototype.string=function(){var t=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+t,this.len))};dl._configure()});var iW=ee((fcA,aW)=>{"use strict";aW.exports=gu;var uR=bc();(gu.prototype=Object.create(uR.EventEmitter.prototype)).constructor=gu;function gu(n,t,o){if(typeof n!="function")throw TypeError("rpcImpl must be a function");uR.EventEmitter.call(this),this.rpcImpl=n,this.requestDelimited=!!t,this.responseDelimited=!!o}gu.prototype.rpcCall=function n(t,o,i,e,a){if(!e)throw TypeError("request must be specified");var A=this;if(!a)return uR.asPromise(n,A,t,o,i,e);if(!A.rpcImpl){setTimeout(function(){a(Error("already ended"))},0);return}try{return A.rpcImpl(t,o[A.requestDelimited?"encodeDelimited":"encode"](e).finish(),function(s,g){if(s)return A.emit("error",s,t),a(s);if(g===null){A.end(!0);return}if(!(g instanceof i))try{g=i[A.responseDelimited?"decodeDelimited":"decode"](g)}catch(c){return A.emit("error",c,t),a(c)}return A.emit("data",g,t),a(null,g)})}catch(r){A.emit("error",r,t),setTimeout(function(){a(r)},0);return}};gu.prototype.end=function(t){return this.rpcImpl&&(t||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}});var nW=ee(oW=>{"use strict";var l0e=oW;l0e.Service=iW()});var gW=ee((ycA,sW)=>{"use strict";sW.exports=Object.create(null)});var lW=ee(IW=>{"use strict";var Hi=IW;Hi.build="minimal";Hi.Writer=dR();Hi.BufferWriter=zV();Hi.Reader=CR();Hi.BufferReader=rW();Hi.util=bc();Hi.rpc=nW();Hi.roots=gW();Hi.configure=cW;function cW(){Hi.util._configure(),Hi.Writer._configure(Hi.BufferWriter),Hi.Reader._configure(Hi.BufferReader)}cW()});var Rm=ee((ScA,pW)=>{"use strict";pW.exports=lW()});var c5=ee(ot=>{"use strict";var Pu=Symbol.for("react.element"),Dve=Symbol.for("react.portal"),Ove=Symbol.for("react.fragment"),bve=Symbol.for("react.strict_mode"),Mve=Symbol.for("react.profiler"),_ve=Symbol.for("react.provider"),Tve=Symbol.for("react.context"),Nve=Symbol.for("react.forward_ref"),Rve=Symbol.for("react.suspense"),kve=Symbol.for("react.memo"),vve=Symbol.for("react.lazy"),$6=Symbol.iterator;function Pve(n){return n===null||typeof n!="object"?null:(n=$6&&n[$6]||n["@@iterator"],typeof n=="function"?n:null)}var t5={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},r5=Object.assign,a5={};function Jd(n,t,o){this.props=n,this.context=t,this.refs=a5,this.updater=o||t5}Jd.prototype.isReactComponent={};Jd.prototype.setState=function(n,t){if(typeof n!="object"&&typeof n!="function"&&n!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,n,t,"setState")};Jd.prototype.forceUpdate=function(n){this.updater.enqueueForceUpdate(this,n,"forceUpdate")};function i5(){}i5.prototype=Jd.prototype;function TP(n,t,o){this.props=n,this.context=t,this.refs=a5,this.updater=o||t5}var NP=TP.prototype=new i5;NP.constructor=TP;r5(NP,Jd.prototype);NP.isPureReactComponent=!0;var e5=Array.isArray,o5=Object.prototype.hasOwnProperty,RP={current:null},n5={key:!0,ref:!0,__self:!0,__source:!0};function s5(n,t,o){var i,e={},a=null,A=null;if(t!=null)for(i in t.ref!==void 0&&(A=t.ref),t.key!==void 0&&(a=""+t.key),t)o5.call(t,i)&&!n5.hasOwnProperty(i)&&(e[i]=t[i]);var r=arguments.length-2;if(r===1)e.children=o;else if(1{"use strict";process.env.NODE_ENV!=="production"&&(function(){"use strict";typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var n="18.3.1",t=Symbol.for("react.element"),o=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),e=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),A=Symbol.for("react.provider"),r=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),c=Symbol.for("react.suspense_list"),I=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),B=Symbol.for("react.offscreen"),f=Symbol.iterator,Q="@@iterator";function y(H){if(H===null||typeof H!="object")return null;var te=f&&H[f]||H[Q];return typeof te=="function"?te:null}var m={current:null},_={transition:null},T={current:null,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1},R={current:null},K={},L=null;function U(H){L=H}K.setExtraStackFrame=function(H){L=H},K.getCurrentStack=null,K.getStackAddendum=function(){var H="";L&&(H+=L);var te=K.getCurrentStack;return te&&(H+=te()||""),H};var z=!1,q=!1,x=!1,G=!1,V=!1,F={ReactCurrentDispatcher:m,ReactCurrentBatchConfig:_,ReactCurrentOwner:R};F.ReactDebugCurrentFrame=K,F.ReactCurrentActQueue=T;function N(H){{for(var te=arguments.length,he=new Array(te>1?te-1:0),Se=1;Se1?te-1:0),Se=1;Se1){for(var Vt=Array(Gt),Wt=0;Wt1){for(var ir=Array(Wt),_r=0;_r is not supported and will be removed in a future major release. Did you mean to render instead?")),te.Provider},set:function(CA){te.Provider=CA}},_currentValue:{get:function(){return te._currentValue},set:function(CA){te._currentValue=CA}},_currentValue2:{get:function(){return te._currentValue2},set:function(CA){te._currentValue2=CA}},_threadCount:{get:function(){return te._threadCount},set:function(CA){te._threadCount=CA}},Consumer:{get:function(){return he||(he=!0,k("Rendering is not supported and will be removed in a future major release. Did you mean to render instead?")),te.Consumer}},displayName:{get:function(){return te.displayName},set:function(CA){ze||(N("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.",CA),ze=!0)}}}),te.Consumer=TA}return te._currentRenderer=null,te._currentRenderer2=null,te}var Ee=-1,me=0,Je=1,IA=2;function yA(H){if(H._status===Ee){var te=H._result,he=te();if(he.then(function(TA){if(H._status===me||H._status===Ee){var CA=H;CA._status=Je,CA._result=TA}},function(TA){if(H._status===me||H._status===Ee){var CA=H;CA._status=IA,CA._result=TA}}),H._status===Ee){var Se=H;Se._status=me,Se._result=he}}if(H._status===Je){var ze=H._result;return ze===void 0&&k(`lazy: Expected the result of a dynamic import() call. Instead received: %s Your code should look like: const MyComponent = lazy(() => import('./MyComponent')) @@ -47,15 +47,15 @@ Check the render method of \``+H+"`."}return""}function UIe(H){if(H!==void 0){va Check your code at `+te+":"+he+"."}return""}function HIe(H){return H!=null?UIe(H.__source):""}var RK={};function KIe(H){var te=NK();if(!te){var he=typeof H=="string"?H:H.displayName||H.name;he&&(te=` -Check the top-level render call using <`+he+">.")}return te}function kK(H,te){if(!(!H._store||H._store.validated||H.key!=null)){H._store.validated=!0;var he=KIe(te);if(!RK[he]){RK[he]=!0;var Se="";H&&H._owner&&H._owner!==R.current&&(Se=" It was passed a child from "+Be(H._owner.type)+"."),mp(H),k('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',he,Se),mp(null)}}}function vK(H,te){if(typeof H=="object"){if(je(H))for(var he=0;he",ze=" Did you accidentally export a JSX literal instead of a component?"):CA=typeof H,k("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",CA,ze)}var xA=ye.apply(this,arguments);if(xA==null)return xA;if(Se)for(var pt=2;pt10&&N("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."),Se._updatedFibers.clear()}}}var LK=!1,cQ=null;function qIe(H){if(cQ===null)try{var te=("require"+Math.random()).slice(0,7),he=TS&&TS[te];cQ=he.call(TS,"timers").setImmediate}catch{cQ=function(ze){LK===!1&&(LK=!0,typeof MessageChannel>"u"&&k("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var TA=new MessageChannel;TA.port1.onmessage=ze,TA.port2.postMessage(void 0)}}return cQ(H)}var Sp=0,UK=!1;function HK(H){{var te=Sp;Sp++,T.current===null&&(T.current=[]);var he=T.isBatchingLegacy,Se;try{if(T.isBatchingLegacy=!0,Se=H(),!he&&T.didScheduleLegacyUpdate){var ze=T.current;ze!==null&&(T.didScheduleLegacyUpdate=!1,PM(ze))}}catch(ir){throw IQ(te),ir}finally{T.isBatchingLegacy=he}if(Se!==null&&typeof Se=="object"&&typeof Se.then=="function"){var TA=Se,CA=!1,xA={then:function(ir,_r){CA=!0,TA.then(function(Ca){IQ(te),Sp===0?kM(Ca,ir,_r):ir(Ca)},function(Ca){IQ(te),_r(Ca)})}};return!UK&&typeof Promise<"u"&&Promise.resolve().then(function(){}).then(function(){CA||(UK=!0,k("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),xA}else{var pt=Se;if(IQ(te),Sp===0){var Gt=T.current;Gt!==null&&(PM(Gt),T.current=null);var Vt={then:function(ir,_r){T.current===null?(T.current=[],kM(pt,ir,_r)):ir(pt)}};return Vt}else{var Wt={then:function(ir,_r){ir(pt)}};return Wt}}}}function IQ(H){H!==Sp-1&&k("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),Sp=H}function kM(H,te,he){{var Se=T.current;if(Se!==null)try{PM(Se),qIe(function(){Se.length===0?(T.current=null,te(H)):kM(H,te,he)})}catch(ze){he(ze)}else te(H)}}var vM=!1;function PM(H){if(!vM){vM=!0;var te=0;try{for(;te{"use strict";process.env.NODE_ENV==="production"?vP.exports=c5():vP.exports=I5()});var Nl=ee((lfA,B9)=>{"use strict";var Lw=$e("crypto"),j2e=$e("assert");function zo(n){if(!(n instanceof Buffer))throw TypeError(`Expected Buffer instead of: ${n.constructor.name}`);return n}function J2e(n,t,o){zo(n),zo(t),zo(o);let i=Lw.createCipheriv("aes-256-cbc",n,o);return Buffer.concat([i.update(t),i.final()])}function q2e(n,t,o){zo(n),zo(t),zo(o);let i=Lw.createDecipheriv("aes-256-cbc",n,o);return Buffer.concat([i.update(t),i.final()])}function ih(n,t){zo(n),zo(t);let o=Lw.createHmac("sha256",n);return o.update(t),Buffer.from(o.digest())}function z2e(n){zo(n);let t=Lw.createHash("sha512");return t.update(n),t.digest()}function V2e(n,t,o,i){if(zo(n),zo(t),zo(o),t.byteLength!=32)throw new Error("Got salt of incorrect length");i=i||3,j2e(i>=1&&i<=3);let e=ih(t,n),a=new Uint8Array(o.byteLength+1+32);a.set(o,32),a[a.length-1]=1;let A=[ih(e,Buffer.from(a.slice(32)))];return i>1&&(a.set(A[A.length-1]),a[a.length-1]=2,A.push(ih(e,Buffer.from(a)))),i>2&&(a.set(A[A.length-1]),a[a.length-1]=3,A.push(ih(e,Buffer.from(a)))),A}function W2e(n,t,o,i){let e=ih(t,n).slice(0,i);if(o.length!==i||e.length!==i)throw new Error("Bad MAC length");if(!o.equals(e))throw new Error("Bad MAC")}B9.exports={deriveSecrets:V2e,decrypt:q2e,encrypt:J2e,hash:z2e,calculateMAC:ih,verifyMAC:W2e}});var R9=ee(kg=>{"use strict";Object.defineProperty(kg,"__esModule",{value:!0});var pfA=new Uint8Array(16),O9=new Uint8Array(32);O9[0]=9;function dA(n){var t,o=new Float64Array(16);if(n)for(t=0;t>24&255,n[t+1]=o>>16&255,n[t+2]=o>>8&255,n[t+3]=o&255,n[t+4]=i>>24&255,n[t+5]=i>>16&255,n[t+6]=i>>8&255,n[t+7]=i&255}function AUe(n,t,o,i,e){var a,A=0;for(a=0;a>>8)-1}function b9(n,t,o,i){return AUe(n,t,o,i,32)}function Hc(n,t){var o;for(o=0;o<16;o++)n[o]=t[o]|0}function gF(n){var t,o,i=1;for(t=0;t<16;t++)o=n[t]+i+65535,i=Math.floor(o/65536),n[t]=o-i*65536;n[0]+=i-1+37*(i-1)}function oh(n,t,o){for(var i,e=~(o-1),a=0;a<16;a++)i=e&(n[a]^t[a]),n[a]^=i,t[a]^=i}function sh(n,t){var o,i,e,a=dA(),A=dA();for(o=0;o<16;o++)A[o]=t[o];for(gF(A),gF(A),gF(A),i=0;i<2;i++){for(a[0]=A[0]-65517,o=1;o<15;o++)a[o]=A[o]-65535-(a[o-1]>>16&1),a[o-1]&=65535;a[15]=A[15]-32767-(a[14]>>16&1),e=a[15]>>16&1,a[14]&=65535,oh(A,a,1-e)}for(o=0;o<16;o++)n[2*o]=A[o]&255,n[2*o+1]=A[o]>>8}function m9(n,t){var o=new Uint8Array(32),i=new Uint8Array(32);return sh(o,n),sh(i,t),b9(o,0,i,0)}function M9(n){var t=new Uint8Array(32);return sh(t,n),t[0]&1}function dF(n,t){var o;for(o=0;o<16;o++)n[o]=t[2*o]+(t[2*o+1]<<8);n[15]&=32767}function Rn(n,t,o){for(var i=0;i<16;i++)n[i]=t[i]+o[i]}function vn(n,t,o){for(var i=0;i<16;i++)n[i]=t[i]-o[i]}function It(n,t,o){var i,e,a=0,A=0,r=0,s=0,g=0,c=0,I=0,d=0,B=0,f=0,Q=0,y=0,m=0,_=0,T=0,R=0,K=0,L=0,U=0,z=0,q=0,x=0,G=0,V=0,F=0,N=0,k=0,J=0,$=0,ie=0,pe=0,se=o[0],Te=o[1],Qe=o[2],ke=o[3],Ne=o[4],We=o[5],ve=o[6],aA=o[7],fe=o[8],Ie=o[9],Xe=o[10],je=o[11],Oe=o[12],EA=o[13],hA=o[14],iA=o[15];i=t[0],a+=i*se,A+=i*Te,r+=i*Qe,s+=i*ke,g+=i*Ne,c+=i*We,I+=i*ve,d+=i*aA,B+=i*fe,f+=i*Ie,Q+=i*Xe,y+=i*je,m+=i*Oe,_+=i*EA,T+=i*hA,R+=i*iA,i=t[1],A+=i*se,r+=i*Te,s+=i*Qe,g+=i*ke,c+=i*Ne,I+=i*We,d+=i*ve,B+=i*aA,f+=i*fe,Q+=i*Ie,y+=i*Xe,m+=i*je,_+=i*Oe,T+=i*EA,R+=i*hA,K+=i*iA,i=t[2],r+=i*se,s+=i*Te,g+=i*Qe,c+=i*ke,I+=i*Ne,d+=i*We,B+=i*ve,f+=i*aA,Q+=i*fe,y+=i*Ie,m+=i*Xe,_+=i*je,T+=i*Oe,R+=i*EA,K+=i*hA,L+=i*iA,i=t[3],s+=i*se,g+=i*Te,c+=i*Qe,I+=i*ke,d+=i*Ne,B+=i*We,f+=i*ve,Q+=i*aA,y+=i*fe,m+=i*Ie,_+=i*Xe,T+=i*je,R+=i*Oe,K+=i*EA,L+=i*hA,U+=i*iA,i=t[4],g+=i*se,c+=i*Te,I+=i*Qe,d+=i*ke,B+=i*Ne,f+=i*We,Q+=i*ve,y+=i*aA,m+=i*fe,_+=i*Ie,T+=i*Xe,R+=i*je,K+=i*Oe,L+=i*EA,U+=i*hA,z+=i*iA,i=t[5],c+=i*se,I+=i*Te,d+=i*Qe,B+=i*ke,f+=i*Ne,Q+=i*We,y+=i*ve,m+=i*aA,_+=i*fe,T+=i*Ie,R+=i*Xe,K+=i*je,L+=i*Oe,U+=i*EA,z+=i*hA,q+=i*iA,i=t[6],I+=i*se,d+=i*Te,B+=i*Qe,f+=i*ke,Q+=i*Ne,y+=i*We,m+=i*ve,_+=i*aA,T+=i*fe,R+=i*Ie,K+=i*Xe,L+=i*je,U+=i*Oe,z+=i*EA,q+=i*hA,x+=i*iA,i=t[7],d+=i*se,B+=i*Te,f+=i*Qe,Q+=i*ke,y+=i*Ne,m+=i*We,_+=i*ve,T+=i*aA,R+=i*fe,K+=i*Ie,L+=i*Xe,U+=i*je,z+=i*Oe,q+=i*EA,x+=i*hA,G+=i*iA,i=t[8],B+=i*se,f+=i*Te,Q+=i*Qe,y+=i*ke,m+=i*Ne,_+=i*We,T+=i*ve,R+=i*aA,K+=i*fe,L+=i*Ie,U+=i*Xe,z+=i*je,q+=i*Oe,x+=i*EA,G+=i*hA,V+=i*iA,i=t[9],f+=i*se,Q+=i*Te,y+=i*Qe,m+=i*ke,_+=i*Ne,T+=i*We,R+=i*ve,K+=i*aA,L+=i*fe,U+=i*Ie,z+=i*Xe,q+=i*je,x+=i*Oe,G+=i*EA,V+=i*hA,F+=i*iA,i=t[10],Q+=i*se,y+=i*Te,m+=i*Qe,_+=i*ke,T+=i*Ne,R+=i*We,K+=i*ve,L+=i*aA,U+=i*fe,z+=i*Ie,q+=i*Xe,x+=i*je,G+=i*Oe,V+=i*EA,F+=i*hA,N+=i*iA,i=t[11],y+=i*se,m+=i*Te,_+=i*Qe,T+=i*ke,R+=i*Ne,K+=i*We,L+=i*ve,U+=i*aA,z+=i*fe,q+=i*Ie,x+=i*Xe,G+=i*je,V+=i*Oe,F+=i*EA,N+=i*hA,k+=i*iA,i=t[12],m+=i*se,_+=i*Te,T+=i*Qe,R+=i*ke,K+=i*Ne,L+=i*We,U+=i*ve,z+=i*aA,q+=i*fe,x+=i*Ie,G+=i*Xe,V+=i*je,F+=i*Oe,N+=i*EA,k+=i*hA,J+=i*iA,i=t[13],_+=i*se,T+=i*Te,R+=i*Qe,K+=i*ke,L+=i*Ne,U+=i*We,z+=i*ve,q+=i*aA,x+=i*fe,G+=i*Ie,V+=i*Xe,F+=i*je,N+=i*Oe,k+=i*EA,J+=i*hA,$+=i*iA,i=t[14],T+=i*se,R+=i*Te,K+=i*Qe,L+=i*ke,U+=i*Ne,z+=i*We,q+=i*ve,x+=i*aA,G+=i*fe,V+=i*Ie,F+=i*Xe,N+=i*je,k+=i*Oe,J+=i*EA,$+=i*hA,ie+=i*iA,i=t[15],R+=i*se,K+=i*Te,L+=i*Qe,U+=i*ke,z+=i*Ne,q+=i*We,x+=i*ve,G+=i*aA,V+=i*fe,F+=i*Ie,N+=i*Xe,k+=i*je,J+=i*Oe,$+=i*EA,ie+=i*hA,pe+=i*iA,a+=38*K,A+=38*L,r+=38*U,s+=38*z,g+=38*q,c+=38*x,I+=38*G,d+=38*V,B+=38*F,f+=38*N,Q+=38*k,y+=38*J,m+=38*$,_+=38*ie,T+=38*pe,e=1,i=a+e+65535,e=Math.floor(i/65536),a=i-e*65536,i=A+e+65535,e=Math.floor(i/65536),A=i-e*65536,i=r+e+65535,e=Math.floor(i/65536),r=i-e*65536,i=s+e+65535,e=Math.floor(i/65536),s=i-e*65536,i=g+e+65535,e=Math.floor(i/65536),g=i-e*65536,i=c+e+65535,e=Math.floor(i/65536),c=i-e*65536,i=I+e+65535,e=Math.floor(i/65536),I=i-e*65536,i=d+e+65535,e=Math.floor(i/65536),d=i-e*65536,i=B+e+65535,e=Math.floor(i/65536),B=i-e*65536,i=f+e+65535,e=Math.floor(i/65536),f=i-e*65536,i=Q+e+65535,e=Math.floor(i/65536),Q=i-e*65536,i=y+e+65535,e=Math.floor(i/65536),y=i-e*65536,i=m+e+65535,e=Math.floor(i/65536),m=i-e*65536,i=_+e+65535,e=Math.floor(i/65536),_=i-e*65536,i=T+e+65535,e=Math.floor(i/65536),T=i-e*65536,i=R+e+65535,e=Math.floor(i/65536),R=i-e*65536,a+=e-1+37*(e-1),e=1,i=a+e+65535,e=Math.floor(i/65536),a=i-e*65536,i=A+e+65535,e=Math.floor(i/65536),A=i-e*65536,i=r+e+65535,e=Math.floor(i/65536),r=i-e*65536,i=s+e+65535,e=Math.floor(i/65536),s=i-e*65536,i=g+e+65535,e=Math.floor(i/65536),g=i-e*65536,i=c+e+65535,e=Math.floor(i/65536),c=i-e*65536,i=I+e+65535,e=Math.floor(i/65536),I=i-e*65536,i=d+e+65535,e=Math.floor(i/65536),d=i-e*65536,i=B+e+65535,e=Math.floor(i/65536),B=i-e*65536,i=f+e+65535,e=Math.floor(i/65536),f=i-e*65536,i=Q+e+65535,e=Math.floor(i/65536),Q=i-e*65536,i=y+e+65535,e=Math.floor(i/65536),y=i-e*65536,i=m+e+65535,e=Math.floor(i/65536),m=i-e*65536,i=_+e+65535,e=Math.floor(i/65536),_=i-e*65536,i=T+e+65535,e=Math.floor(i/65536),T=i-e*65536,i=R+e+65535,e=Math.floor(i/65536),R=i-e*65536,a+=e-1+37*(e-1),n[0]=a,n[1]=A,n[2]=r,n[3]=s,n[4]=g,n[5]=c,n[6]=I,n[7]=d,n[8]=B,n[9]=f,n[10]=Q,n[11]=y,n[12]=m,n[13]=_,n[14]=T,n[15]=R}function kn(n,t){It(n,t,t)}function hF(n,t){var o=dA(),i;for(i=0;i<16;i++)o[i]=t[i];for(i=253;i>=0;i--)kn(o,o),i!==2&&i!==4&&It(o,o,t);for(i=0;i<16;i++)n[i]=o[i]}function tUe(n,t){var o=dA(),i;for(i=0;i<16;i++)o[i]=t[i];for(i=250;i>=0;i--)kn(o,o),i!==1&&It(o,o,t);for(i=0;i<16;i++)n[i]=o[i]}function _9(n,t,o){var i=new Uint8Array(32),e=new Float64Array(80),a,A,r=dA(),s=dA(),g=dA(),c=dA(),I=dA(),d=dA();for(A=0;A<31;A++)i[A]=t[A];for(i[31]=t[31]&127|64,i[0]&=248,dF(e,o),A=0;A<16;A++)s[A]=e[A],c[A]=r[A]=g[A]=0;for(r[0]=c[0]=1,A=254;A>=0;--A)a=i[A>>>3]>>>(A&7)&1,oh(r,s,a),oh(g,c,a),Rn(I,r,g),vn(r,r,g),Rn(g,s,c),vn(s,s,c),kn(c,I),kn(d,r),It(r,g,r),It(g,s,I),Rn(I,r,g),vn(r,r,g),kn(s,r),vn(g,c,d),It(r,g,Z2e),Rn(r,r,c),It(g,g,r),It(r,c,d),It(c,s,e),kn(s,I),oh(r,s,a),oh(g,c,a);for(A=0;A<16;A++)e[A+16]=r[A],e[A+32]=g[A],e[A+48]=s[A],e[A+64]=c[A];var B=e.subarray(32),f=e.subarray(16);return hF(B,B),It(f,f,B),sh(n,f),0}function rUe(n,t){return _9(n,t,O9)}var S9=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function w9(n,t,o,i){for(var e=new Int32Array(16),a=new Int32Array(16),A,r,s,g,c,I,d,B,f,Q,y,m,_,T,R,K,L,U,z,q,x,G,V,F,N,k,J=n[0],$=n[1],ie=n[2],pe=n[3],se=n[4],Te=n[5],Qe=n[6],ke=n[7],Ne=t[0],We=t[1],ve=t[2],aA=t[3],fe=t[4],Ie=t[5],Xe=t[6],je=t[7],Oe=0;i>=128;){for(z=0;z<16;z++)q=8*z+Oe,e[z]=o[q+0]<<24|o[q+1]<<16|o[q+2]<<8|o[q+3],a[z]=o[q+4]<<24|o[q+5]<<16|o[q+6]<<8|o[q+7];for(z=0;z<80;z++)if(A=J,r=$,s=ie,g=pe,c=se,I=Te,d=Qe,B=ke,f=Ne,Q=We,y=ve,m=aA,_=fe,T=Ie,R=Xe,K=je,x=ke,G=je,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=(se>>>14|fe<<18)^(se>>>18|fe<<14)^(fe>>>9|se<<23),G=(fe>>>14|se<<18)^(fe>>>18|se<<14)^(se>>>9|fe<<23),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=se&Te^~se&Qe,G=fe&Ie^~fe&Xe,V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=S9[z*2],G=S9[z*2+1],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=e[z%16],G=a[z%16],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,L=N&65535|k<<16,U=V&65535|F<<16,x=L,G=U,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=(J>>>28|Ne<<4)^(Ne>>>2|J<<30)^(Ne>>>7|J<<25),G=(Ne>>>28|J<<4)^(J>>>2|Ne<<30)^(J>>>7|Ne<<25),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=J&$^J&ie^$&ie,G=Ne&We^Ne&ve^We&ve,V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,B=N&65535|k<<16,K=V&65535|F<<16,x=g,G=m,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=L,G=U,V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,g=N&65535|k<<16,m=V&65535|F<<16,$=A,ie=r,pe=s,se=g,Te=c,Qe=I,ke=d,J=B,We=f,ve=Q,aA=y,fe=m,Ie=_,Xe=T,je=R,Ne=K,z%16===15)for(q=0;q<16;q++)x=e[q],G=a[q],V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=e[(q+9)%16],G=a[(q+9)%16],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,L=e[(q+1)%16],U=a[(q+1)%16],x=(L>>>1|U<<31)^(L>>>8|U<<24)^L>>>7,G=(U>>>1|L<<31)^(U>>>8|L<<24)^(U>>>7|L<<25),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,L=e[(q+14)%16],U=a[(q+14)%16],x=(L>>>19|U<<13)^(U>>>29|L<<3)^L>>>6,G=(U>>>19|L<<13)^(L>>>29|U<<3)^(U>>>6|L<<26),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,e[q]=N&65535|k<<16,a[q]=V&65535|F<<16;x=J,G=Ne,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[0],G=t[0],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[0]=J=N&65535|k<<16,t[0]=Ne=V&65535|F<<16,x=$,G=We,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[1],G=t[1],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[1]=$=N&65535|k<<16,t[1]=We=V&65535|F<<16,x=ie,G=ve,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[2],G=t[2],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[2]=ie=N&65535|k<<16,t[2]=ve=V&65535|F<<16,x=pe,G=aA,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[3],G=t[3],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[3]=pe=N&65535|k<<16,t[3]=aA=V&65535|F<<16,x=se,G=fe,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[4],G=t[4],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[4]=se=N&65535|k<<16,t[4]=fe=V&65535|F<<16,x=Te,G=Ie,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[5],G=t[5],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[5]=Te=N&65535|k<<16,t[5]=Ie=V&65535|F<<16,x=Qe,G=Xe,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[6],G=t[6],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[6]=Qe=N&65535|k<<16,t[6]=Xe=V&65535|F<<16,x=ke,G=je,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[7],G=t[7],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[7]=ke=N&65535|k<<16,t[7]=je=V&65535|F<<16,Oe+=128,i-=128}return i}function hB(n,t,o){var i=new Int32Array(8),e=new Int32Array(8),a=new Uint8Array(256),A,r=o;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,e[0]=4089235720,e[1]=2227873595,e[2]=4271175723,e[3]=1595750129,e[4]=2917565137,e[5]=725511199,e[6]=4215389547,e[7]=327033209,w9(i,e,t,o),o%=128,A=0;A=0;--e)i=o[e/8|0]>>(e&7)&1,D9(n,t,i),lF(t,n),lF(n,n),D9(n,t,i)}function Hw(n,t){var o=[dA(),dA(),dA(),dA()];Hc(o[0],f9),Hc(o[1],Q9),Hc(o[2],nh),It(o[3],f9,Q9),T9(n,o,t)}var cF=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function EF(n,t){var o,i,e,a;for(i=63;i>=32;--i){for(o=0,e=i-32,a=i-12;e>8,t[e]-=o*256;t[e]+=o,t[i]=0}for(o=0,e=0;e<32;e++)t[e]+=o-(t[31]>>4)*cF[e],o=t[e]>>8,t[e]&=255;for(e=0;e<32;e++)t[e]-=o*cF[e];for(i=0;i<32;i++)t[i+1]+=t[i]>>8,n[i]=t[i]&255}function EB(n){var t=new Float64Array(64),o;for(o=0;o<64;o++)t[o]=n[o];for(o=0;o<64;o++)n[o]=0;EF(n,t)}function aUe(n,t,o,i){var e=new Uint8Array(64),a=new Uint8Array(64),A,r,s=new Float64Array(64),g=[dA(),dA(),dA(),dA()];for(A=0;A>7&&vn(n[0],IF,n[0]),It(n[3],n[0],n[1]),0)}function nUe(n,t,o,i){var e,a,A=new Uint8Array(32),r=new Uint8Array(64),s=[dA(),dA(),dA(),dA()],g=[dA(),dA(),dA(),dA()];if(a=-1,o<64||oUe(g,i))return-1;for(e=0;e=0}kg.verify=pUe;function dUe(n){if(Kc(n),n.length!==32)throw new Error("wrong seed length");for(var t=new Uint8Array(32),o=new Uint8Array(32),i=0;i<32;i++)t[i]=n[i];return rUe(o,t),t[0]&=248,t[31]&=127,t[31]|=64,o[31]&=127,{public:o,private:t}}kg.generateKeyPair=dUe;kg.default={}});var xc=ee(ch=>{"use strict";var CB=R9(),gh=$e("crypto"),CF=Buffer.from([48,42,48,5,6,3,43,101,110,3,33,0]),uF=Buffer.from([48,46,2,1,0,48,5,6,3,43,101,110,4,34,4,32]),hUe=Buffer.from([5]),BF=function(n){return Buffer.concat([hUe,n])};function k9(n){if(n===void 0)throw new Error("Undefined private key");if(!(n instanceof Buffer))throw new Error(`Invalid private key type: ${n.constructor.name}`);if(n.byteLength!=32)throw new Error(`Incorrect private key length: ${n.byteLength}`)}function v9(n){if(!(n instanceof Buffer))throw new Error(`Invalid public key type: ${n.constructor.name}`);if(n===void 0||(n.byteLength!=33||n[0]!=5)&&n.byteLength!=32)throw new Error("Invalid public key");return n.byteLength==33?n.slice(1):(console.error("WARNING: Expected pubkey of length 33, please report the ST and client that generated the pubkey"),n)}function EUe(n){let t=new Uint8Array(n);return t[0]|=6,t[31]|=128,t[31]&=-65,t}ch.getPublicFromPrivateKey=function(n){let t=EUe(n),o=CB.generateKeyPair(t);return BF(Buffer.from(o.public))};ch.generateKeyPair=function(){try{let{publicKey:n,privateKey:t}=gh.generateKeyPairSync("x25519",{publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}}),o=n.slice(CF.length,CF.length+32),i=t.slice(uF.length,uF.length+32);return{pubKey:BF(o),privKey:i}}catch{let t=CB.generateKeyPair(gh.randomBytes(32));return{privKey:Buffer.from(t.private),pubKey:BF(Buffer.from(t.public))}}};ch.calculateAgreement=function(n,t){if(n=v9(n),k9(t),!n||n.byteLength!=32)throw new Error("Invalid public key");if(typeof gh.diffieHellman=="function"){let o=gh.createPrivateKey({key:Buffer.concat([uF,t]),format:"der",type:"pkcs8"}),i=gh.createPublicKey({key:Buffer.concat([CF,n]),format:"der",type:"spki"});return gh.diffieHellman({privateKey:o,publicKey:i})}else{let o=CB.sharedKey(t,n);return Buffer.from(o)}};ch.calculateSignature=function(n,t){if(k9(n),!t)throw new Error("Invalid message");return Buffer.from(CB.sign(n,t))};ch.verifySignature=function(n,t,o,i){if(n=v9(n),!n||n.byteLength!=32)throw new Error("Invalid public key");if(!t)throw new Error("Invalid message");if(!o||o.byteLength!=64)throw new Error("Invalid signature");return i?!0:CB.verify(n,t,o)}});var G9=ee(uB=>{var Kw=xc(),CUe=$e("crypto");function P9(n){return typeof n=="number"&&n%1===0&&n>=0}uB.generateIdentityKeyPair=Kw.generateKeyPair;uB.generateRegistrationId=function(){var n=Uint16Array.from(CUe.randomBytes(2))[0];return n&16383};uB.generateSignedPreKey=function(n,t){if(!(n.privKey instanceof Buffer)||n.privKey.byteLength!=32||!(n.pubKey instanceof Buffer)||n.pubKey.byteLength!=33)throw new TypeError("Invalid argument for identityKeyPair");if(!P9(t))throw new TypeError("Invalid argument for signedKeyId: "+t);let o=Kw.generateKeyPair(),i=Kw.calculateSignature(n.privKey,o.pubKey);return{keyId:t,keyPair:o,signature:i}};uB.generatePreKey=function(n){if(!P9(n))throw new TypeError("Invalid argument for keyId: "+n);let t=Kw.generateKeyPair();return{keyId:n,keyPair:t}}});var QF=ee((CfA,F9)=>{var fF=class n{static from(t){if(typeof t!="string"||!t.match(/.*\.\d+/))throw new Error("Invalid address encoding");let o=t.split(".");return new this(o[0],parseInt(o[1]))}constructor(t,o){if(typeof t!="string")throw new TypeError("id required for addr");if(t.indexOf(".")!==-1)throw new TypeError("encoded addr detected");if(this.id=t,typeof o!="number")throw new TypeError("number required for deviceId");this.deviceId=o}toString(){return`${this.id}.${this.deviceId}`}is(t){return t instanceof n?t.id===this.id&&t.deviceId===this.deviceId:!1}};F9.exports=fF});var yF=ee((ufA,L9)=>{var uUe={OURS:1,THEIRS:2};L9.exports=uUe});var mF=ee((BfA,U9)=>{var BUe={SENDING:1,RECEIVING:2};U9.exports=BUe});var Jw=ee((ffA,K9)=>{var fUe=yF(),QUe=40,H9="v1";function Yw(n){if(!Buffer.isBuffer(n))throw new TypeError("Buffer required")}var jw=class{constructor(){this._chains={}}toString(){return``}inspect(){return this.toString()}addChain(t,o){Yw(t);let i=t.toString("base64");if(this._chains.hasOwnProperty(i))throw new Error("Overwrite attempt");this._chains[i]=o}getChain(t){return Yw(t),this._chains[t.toString("base64")]}deleteChain(t){Yw(t);let o=t.toString("base64");if(!this._chains.hasOwnProperty(o))throw new ReferenceError("Not Found");delete this._chains[o]}*chains(){for(let[t,o]of Object.entries(this._chains))yield[Buffer.from(t,"base64"),o]}serialize(){let t={registrationId:this.registrationId,currentRatchet:{ephemeralKeyPair:{pubKey:this.currentRatchet.ephemeralKeyPair.pubKey.toString("base64"),privKey:this.currentRatchet.ephemeralKeyPair.privKey.toString("base64")},lastRemoteEphemeralKey:this.currentRatchet.lastRemoteEphemeralKey.toString("base64"),previousCounter:this.currentRatchet.previousCounter,rootKey:this.currentRatchet.rootKey.toString("base64")},indexInfo:{baseKey:this.indexInfo.baseKey.toString("base64"),baseKeyType:this.indexInfo.baseKeyType,closed:this.indexInfo.closed,used:this.indexInfo.used,created:this.indexInfo.created,remoteIdentityKey:this.indexInfo.remoteIdentityKey.toString("base64")},_chains:this._serialize_chains(this._chains)};return this.pendingPreKey&&(t.pendingPreKey=Object.assign({},this.pendingPreKey),t.pendingPreKey.baseKey=this.pendingPreKey.baseKey.toString("base64")),t}static deserialize(t){let o=new this;return o.registrationId=t.registrationId,o.currentRatchet={ephemeralKeyPair:{pubKey:Buffer.from(t.currentRatchet.ephemeralKeyPair.pubKey,"base64"),privKey:Buffer.from(t.currentRatchet.ephemeralKeyPair.privKey,"base64")},lastRemoteEphemeralKey:Buffer.from(t.currentRatchet.lastRemoteEphemeralKey,"base64"),previousCounter:t.currentRatchet.previousCounter,rootKey:Buffer.from(t.currentRatchet.rootKey,"base64")},o.indexInfo={baseKey:Buffer.from(t.indexInfo.baseKey,"base64"),baseKeyType:t.indexInfo.baseKeyType,closed:t.indexInfo.closed,used:t.indexInfo.used,created:t.indexInfo.created,remoteIdentityKey:Buffer.from(t.indexInfo.remoteIdentityKey,"base64")},o._chains=this._deserialize_chains(t._chains),t.pendingPreKey&&(o.pendingPreKey=Object.assign({},t.pendingPreKey),o.pendingPreKey.baseKey=Buffer.from(t.pendingPreKey.baseKey,"base64")),o}_serialize_chains(t){let o={};for(let i of Object.keys(t)){let e=t[i],a={};for(let[A,r]of Object.entries(e.messageKeys))a[A]=r.toString("base64");o[i]={chainKey:{counter:e.chainKey.counter,key:e.chainKey.key&&e.chainKey.key.toString("base64")},chainType:e.chainType,messageKeys:a}}return o}static _deserialize_chains(t){let o={};for(let i of Object.keys(t)){let e=t[i],a={};for(let[A,r]of Object.entries(e.messageKeys))a[A]=Buffer.from(r,"base64");o[i]={chainKey:{counter:e.chainKey.counter,key:e.chainKey.key&&Buffer.from(e.chainKey.key,"base64")},chainType:e.chainType,messageKeys:a}}return o}},xw=[{version:"v1",migrate:function(t){let o=t._sessions;if(t.registrationId)for(let i in o)o[i].registrationId||(o[i].registrationId=t.registrationId);else for(let i in o)o[i].indexInfo.closed===-1&&console.error("V1 session storage migration error: registrationId",t.registrationId,"for open session version",t.version)}}],SF=class{static createEntry(){return new jw}static migrate(t){let o=t.version===void 0;for(let i=0;i{let i=t.indexInfo.used||0,e=o.indexInfo.used||0;return i===e?0:iQUe;){let t,o;for(let[i,e]of Object.entries(this.sessions))e.indexInfo.closed!==-1&&(!o||e.indexInfo.closed{Os.SignalError=class extends Error{};Os.UntrustedIdentityKeyError=class extends Os.SignalError{constructor(t,o){super(),this.name="UntrustedIdentityKeyError",this.addr=t,this.identityKey=o}};Os.SessionError=class extends Os.SignalError{constructor(t){super(t),this.name="SessionError"}};Os.MessageCounterError=class extends Os.SessionError{constructor(t){super(t),this.name="MessageCounterError"}};Os.PreKeyError=class extends Os.SessionError{constructor(t){super(t),this.name="PreKeyError"}}});var wF=ee((OfA,Y9)=>{"use strict";var zw=new Map,x9=1e4;async function yUe(n,t){let o=0;for(;;){let i=Math.min(n.length,x9);for(let e=o;e=x9?(n.splice(0,i),o=0):o=i;else break}t()}Y9.exports=function(n,t){t.name||(Object.defineProperty(t,"name",{writable:!0}),typeof n=="string"?t.name=n:console.warn("Unhandled bucket type (for naming):",typeof n,n));let o;zw.has(n)||(zw.set(n,[]),o=!0);let i=zw.get(n),e=new Promise((a,A)=>i.push({awaitable:t,resolve:a,reject:A}));return o&&yUe(i,()=>zw.delete(n)),e}});var OF=ee((bfA,z9)=>{"use strict";var j9=yF(),mUe=mF(),J9=Jw(),q9=Nl(),Yc=xc(),Vw=qw(),SUe=wF(),DF=class{constructor(t,o){this.addr=o,this.storage=t}async initOutgoing(t){let o=this.addr.toString();return await SUe(o,async()=>{if(!await this.storage.isTrustedIdentity(this.addr.id,t.identityKey))throw new Vw.UntrustedIdentityKeyError(this.addr.id,t.identityKey);Yc.verifySignature(t.identityKey,t.signedPreKey.publicKey,t.signedPreKey.signature,!0);let i=Yc.generateKeyPair(),e=t.preKey&&t.preKey.publicKey,a=await this.initSession(!0,i,void 0,t.identityKey,e,t.signedPreKey.publicKey,t.registrationId);a.pendingPreKey={signedKeyId:t.signedPreKey.keyId,baseKey:i.pubKey},t.preKey&&(a.pendingPreKey.preKeyId=t.preKey.keyId);let A=await this.storage.loadSession(o);if(!A)A=new J9;else{let r=A.getOpenSession();r&&A.closeSession(r)}A.setSession(a),await this.storage.storeSession(o,A)})}async initIncoming(t,o){let i=this.addr.toString();if(!await this.storage.isTrustedIdentity(i,o.identityKey))throw new Vw.UntrustedIdentityKeyError(this.addr.id,o.identityKey);if(t.getSession(o.baseKey))return;let e=await this.storage.loadPreKey(o.preKeyId);if(o.preKeyId&&!e)throw new Vw.PreKeyError("Invalid PreKey ID");let a=await this.storage.loadSignedPreKey(o.signedPreKeyId);if(!a)throw new Vw.PreKeyError("Missing SignedPreKey");let A=t.getOpenSession();return A&&(console.warn("Closing open session in favor of incoming prekey bundle"),t.closeSession(A)),t.setSession(await this.initSession(!1,e,a,o.identityKey,o.baseKey,void 0,o.registrationId)),o.preKeyId}async initSession(t,o,i,e,a,A,r){if(t){if(i)throw new Error("Invalid call to initSession");i=o}else{if(A)throw new Error("Invalid call to initSession");A=a}let s;!o||!a?s=new Uint8Array(128):s=new Uint8Array(160);for(var g=0;g<32;g++)s[g]=255;let c=await this.storage.getOurIdentity(),I=Yc.calculateAgreement(A,c.privKey),d=Yc.calculateAgreement(e,i.privKey),B=Yc.calculateAgreement(A,i.privKey);if(t?(s.set(new Uint8Array(I),32),s.set(new Uint8Array(d),64)):(s.set(new Uint8Array(I),64),s.set(new Uint8Array(d),32)),s.set(new Uint8Array(B),96),o&&a){let y=Yc.calculateAgreement(a,o.privKey);s.set(new Uint8Array(y),128)}let f=q9.deriveSecrets(Buffer.from(s),Buffer.alloc(32),Buffer.from("WhisperText")),Q=J9.createEntry();return Q.registrationId=r,Q.currentRatchet={rootKey:f[0],ephemeralKeyPair:t?Yc.generateKeyPair():i,lastRemoteEphemeralKey:A,previousCounter:0},Q.indexInfo={created:Date.now(),used:Date.now(),remoteIdentityKey:e,baseKey:t?o.pubKey:a,baseKeyType:t?j9.OURS:j9.THEIRS,closed:-1},t&&this.calculateSendingRatchet(Q,A),Q}calculateSendingRatchet(t,o){let i=t.currentRatchet,e=Yc.calculateAgreement(o,i.ephemeralKeyPair.privKey),a=q9.deriveSecrets(e,i.rootKey,Buffer.from("WhisperRatchet"));t.addChain(i.ephemeralKeyPair.pubKey,{messageKeys:{},chainKey:{counter:-1,key:a[1]},chainType:mUe.SENDING}),i.rootKey=a[0]}};z9.exports=DF});var W9=ee((MfA,V9)=>{"use strict";var jc=Rm(),Vo=jc.Reader,bF=jc.Writer,nA=jc.util,Pn=jc.roots.default||(jc.roots.default={});Pn.textsecure=(function(){var n={};return n.WhisperMessage=(function(){function t(o){if(o)for(var i=Object.keys(o),e=0;e>>3){case 1:A.ephemeralKey=i.bytes();break;case 2:A.counter=i.uint32();break;case 3:A.previousCounter=i.uint32();break;case 4:A.ciphertext=i.bytes();break;default:i.skipType(r&7);break}}return A},t.decodeDelimited=function(i){return i instanceof Vo||(i=new Vo(i)),this.decode(i,i.uint32())},t.verify=function(i){return typeof i!="object"||i===null?"object expected":i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&!(i.ephemeralKey&&typeof i.ephemeralKey.length=="number"||nA.isString(i.ephemeralKey))?"ephemeralKey: buffer expected":i.counter!=null&&i.hasOwnProperty("counter")&&!nA.isInteger(i.counter)?"counter: integer expected":i.previousCounter!=null&&i.hasOwnProperty("previousCounter")&&!nA.isInteger(i.previousCounter)?"previousCounter: integer expected":i.ciphertext!=null&&i.hasOwnProperty("ciphertext")&&!(i.ciphertext&&typeof i.ciphertext.length=="number"||nA.isString(i.ciphertext))?"ciphertext: buffer expected":null},t.fromObject=function(i){if(i instanceof Pn.textsecure.WhisperMessage)return i;var e=new Pn.textsecure.WhisperMessage;return i.ephemeralKey!=null&&(typeof i.ephemeralKey=="string"?nA.base64.decode(i.ephemeralKey,e.ephemeralKey=nA.newBuffer(nA.base64.length(i.ephemeralKey)),0):i.ephemeralKey.length&&(e.ephemeralKey=i.ephemeralKey)),i.counter!=null&&(e.counter=i.counter>>>0),i.previousCounter!=null&&(e.previousCounter=i.previousCounter>>>0),i.ciphertext!=null&&(typeof i.ciphertext=="string"?nA.base64.decode(i.ciphertext,e.ciphertext=nA.newBuffer(nA.base64.length(i.ciphertext)),0):i.ciphertext.length&&(e.ciphertext=i.ciphertext)),e},t.toObject=function(i,e){e||(e={});var a={};return e.defaults&&(e.bytes===String?a.ephemeralKey="":(a.ephemeralKey=[],e.bytes!==Array&&(a.ephemeralKey=nA.newBuffer(a.ephemeralKey))),a.counter=0,a.previousCounter=0,e.bytes===String?a.ciphertext="":(a.ciphertext=[],e.bytes!==Array&&(a.ciphertext=nA.newBuffer(a.ciphertext)))),i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&(a.ephemeralKey=e.bytes===String?nA.base64.encode(i.ephemeralKey,0,i.ephemeralKey.length):e.bytes===Array?Array.prototype.slice.call(i.ephemeralKey):i.ephemeralKey),i.counter!=null&&i.hasOwnProperty("counter")&&(a.counter=i.counter),i.previousCounter!=null&&i.hasOwnProperty("previousCounter")&&(a.previousCounter=i.previousCounter),i.ciphertext!=null&&i.hasOwnProperty("ciphertext")&&(a.ciphertext=e.bytes===String?nA.base64.encode(i.ciphertext,0,i.ciphertext.length):e.bytes===Array?Array.prototype.slice.call(i.ciphertext):i.ciphertext),a},t.prototype.toJSON=function(){return this.constructor.toObject(this,jc.util.toJSONOptions)},t})(),n.PreKeyWhisperMessage=(function(){function t(o){if(o)for(var i=Object.keys(o),e=0;e>>3){case 5:A.registrationId=i.uint32();break;case 1:A.preKeyId=i.uint32();break;case 6:A.signedPreKeyId=i.uint32();break;case 2:A.baseKey=i.bytes();break;case 3:A.identityKey=i.bytes();break;case 4:A.message=i.bytes();break;default:i.skipType(r&7);break}}return A},t.decodeDelimited=function(i){return i instanceof Vo||(i=new Vo(i)),this.decode(i,i.uint32())},t.verify=function(i){return typeof i!="object"||i===null?"object expected":i.registrationId!=null&&i.hasOwnProperty("registrationId")&&!nA.isInteger(i.registrationId)?"registrationId: integer expected":i.preKeyId!=null&&i.hasOwnProperty("preKeyId")&&!nA.isInteger(i.preKeyId)?"preKeyId: integer expected":i.signedPreKeyId!=null&&i.hasOwnProperty("signedPreKeyId")&&!nA.isInteger(i.signedPreKeyId)?"signedPreKeyId: integer expected":i.baseKey!=null&&i.hasOwnProperty("baseKey")&&!(i.baseKey&&typeof i.baseKey.length=="number"||nA.isString(i.baseKey))?"baseKey: buffer expected":i.identityKey!=null&&i.hasOwnProperty("identityKey")&&!(i.identityKey&&typeof i.identityKey.length=="number"||nA.isString(i.identityKey))?"identityKey: buffer expected":i.message!=null&&i.hasOwnProperty("message")&&!(i.message&&typeof i.message.length=="number"||nA.isString(i.message))?"message: buffer expected":null},t.fromObject=function(i){if(i instanceof Pn.textsecure.PreKeyWhisperMessage)return i;var e=new Pn.textsecure.PreKeyWhisperMessage;return i.registrationId!=null&&(e.registrationId=i.registrationId>>>0),i.preKeyId!=null&&(e.preKeyId=i.preKeyId>>>0),i.signedPreKeyId!=null&&(e.signedPreKeyId=i.signedPreKeyId>>>0),i.baseKey!=null&&(typeof i.baseKey=="string"?nA.base64.decode(i.baseKey,e.baseKey=nA.newBuffer(nA.base64.length(i.baseKey)),0):i.baseKey.length&&(e.baseKey=i.baseKey)),i.identityKey!=null&&(typeof i.identityKey=="string"?nA.base64.decode(i.identityKey,e.identityKey=nA.newBuffer(nA.base64.length(i.identityKey)),0):i.identityKey.length&&(e.identityKey=i.identityKey)),i.message!=null&&(typeof i.message=="string"?nA.base64.decode(i.message,e.message=nA.newBuffer(nA.base64.length(i.message)),0):i.message.length&&(e.message=i.message)),e},t.toObject=function(i,e){e||(e={});var a={};return e.defaults&&(a.preKeyId=0,e.bytes===String?a.baseKey="":(a.baseKey=[],e.bytes!==Array&&(a.baseKey=nA.newBuffer(a.baseKey))),e.bytes===String?a.identityKey="":(a.identityKey=[],e.bytes!==Array&&(a.identityKey=nA.newBuffer(a.identityKey))),e.bytes===String?a.message="":(a.message=[],e.bytes!==Array&&(a.message=nA.newBuffer(a.message))),a.registrationId=0,a.signedPreKeyId=0),i.preKeyId!=null&&i.hasOwnProperty("preKeyId")&&(a.preKeyId=i.preKeyId),i.baseKey!=null&&i.hasOwnProperty("baseKey")&&(a.baseKey=e.bytes===String?nA.base64.encode(i.baseKey,0,i.baseKey.length):e.bytes===Array?Array.prototype.slice.call(i.baseKey):i.baseKey),i.identityKey!=null&&i.hasOwnProperty("identityKey")&&(a.identityKey=e.bytes===String?nA.base64.encode(i.identityKey,0,i.identityKey.length):e.bytes===Array?Array.prototype.slice.call(i.identityKey):i.identityKey),i.message!=null&&i.hasOwnProperty("message")&&(a.message=e.bytes===String?nA.base64.encode(i.message,0,i.message.length):e.bytes===Array?Array.prototype.slice.call(i.message):i.message),i.registrationId!=null&&i.hasOwnProperty("registrationId")&&(a.registrationId=i.registrationId),i.signedPreKeyId!=null&&i.hasOwnProperty("signedPreKeyId")&&(a.signedPreKeyId=i.signedPreKeyId),a},t.prototype.toJSON=function(){return this.constructor.toObject(this,jc.util.toJSONOptions)},t})(),n.KeyExchangeMessage=(function(){function t(o){if(o)for(var i=Object.keys(o),e=0;e>>3){case 1:A.id=i.uint32();break;case 2:A.baseKey=i.bytes();break;case 3:A.ephemeralKey=i.bytes();break;case 4:A.identityKey=i.bytes();break;case 5:A.baseKeySignature=i.bytes();break;default:i.skipType(r&7);break}}return A},t.decodeDelimited=function(i){return i instanceof Vo||(i=new Vo(i)),this.decode(i,i.uint32())},t.verify=function(i){return typeof i!="object"||i===null?"object expected":i.id!=null&&i.hasOwnProperty("id")&&!nA.isInteger(i.id)?"id: integer expected":i.baseKey!=null&&i.hasOwnProperty("baseKey")&&!(i.baseKey&&typeof i.baseKey.length=="number"||nA.isString(i.baseKey))?"baseKey: buffer expected":i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&!(i.ephemeralKey&&typeof i.ephemeralKey.length=="number"||nA.isString(i.ephemeralKey))?"ephemeralKey: buffer expected":i.identityKey!=null&&i.hasOwnProperty("identityKey")&&!(i.identityKey&&typeof i.identityKey.length=="number"||nA.isString(i.identityKey))?"identityKey: buffer expected":i.baseKeySignature!=null&&i.hasOwnProperty("baseKeySignature")&&!(i.baseKeySignature&&typeof i.baseKeySignature.length=="number"||nA.isString(i.baseKeySignature))?"baseKeySignature: buffer expected":null},t.fromObject=function(i){if(i instanceof Pn.textsecure.KeyExchangeMessage)return i;var e=new Pn.textsecure.KeyExchangeMessage;return i.id!=null&&(e.id=i.id>>>0),i.baseKey!=null&&(typeof i.baseKey=="string"?nA.base64.decode(i.baseKey,e.baseKey=nA.newBuffer(nA.base64.length(i.baseKey)),0):i.baseKey.length&&(e.baseKey=i.baseKey)),i.ephemeralKey!=null&&(typeof i.ephemeralKey=="string"?nA.base64.decode(i.ephemeralKey,e.ephemeralKey=nA.newBuffer(nA.base64.length(i.ephemeralKey)),0):i.ephemeralKey.length&&(e.ephemeralKey=i.ephemeralKey)),i.identityKey!=null&&(typeof i.identityKey=="string"?nA.base64.decode(i.identityKey,e.identityKey=nA.newBuffer(nA.base64.length(i.identityKey)),0):i.identityKey.length&&(e.identityKey=i.identityKey)),i.baseKeySignature!=null&&(typeof i.baseKeySignature=="string"?nA.base64.decode(i.baseKeySignature,e.baseKeySignature=nA.newBuffer(nA.base64.length(i.baseKeySignature)),0):i.baseKeySignature.length&&(e.baseKeySignature=i.baseKeySignature)),e},t.toObject=function(i,e){e||(e={});var a={};return e.defaults&&(a.id=0,e.bytes===String?a.baseKey="":(a.baseKey=[],e.bytes!==Array&&(a.baseKey=nA.newBuffer(a.baseKey))),e.bytes===String?a.ephemeralKey="":(a.ephemeralKey=[],e.bytes!==Array&&(a.ephemeralKey=nA.newBuffer(a.ephemeralKey))),e.bytes===String?a.identityKey="":(a.identityKey=[],e.bytes!==Array&&(a.identityKey=nA.newBuffer(a.identityKey))),e.bytes===String?a.baseKeySignature="":(a.baseKeySignature=[],e.bytes!==Array&&(a.baseKeySignature=nA.newBuffer(a.baseKeySignature)))),i.id!=null&&i.hasOwnProperty("id")&&(a.id=i.id),i.baseKey!=null&&i.hasOwnProperty("baseKey")&&(a.baseKey=e.bytes===String?nA.base64.encode(i.baseKey,0,i.baseKey.length):e.bytes===Array?Array.prototype.slice.call(i.baseKey):i.baseKey),i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&(a.ephemeralKey=e.bytes===String?nA.base64.encode(i.ephemeralKey,0,i.ephemeralKey.length):e.bytes===Array?Array.prototype.slice.call(i.ephemeralKey):i.ephemeralKey),i.identityKey!=null&&i.hasOwnProperty("identityKey")&&(a.identityKey=e.bytes===String?nA.base64.encode(i.identityKey,0,i.identityKey.length):e.bytes===Array?Array.prototype.slice.call(i.identityKey):i.identityKey),i.baseKeySignature!=null&&i.hasOwnProperty("baseKeySignature")&&(a.baseKeySignature=e.bytes===String?nA.base64.encode(i.baseKeySignature,0,i.baseKeySignature.length):e.bytes===Array?Array.prototype.slice.call(i.baseKeySignature):i.baseKeySignature),a},t.prototype.toJSON=function(){return this.constructor.toObject(this,jc.util.toJSONOptions)},t})(),n})();V9.exports=Pn});var MF=ee((_fA,Z9)=>{"use strict";var{textsecure:{WhisperMessage:wUe,PreKeyWhisperMessage:DUe}}=W9();Z9.exports={WhisperMessage:wUe,PreKeyWhisperMessage:DUe}});var AX=ee((TfA,eX)=>{var Ww=mF(),OUe=QF(),bUe=OF(),X9=Jw(),vg=Nl(),$9=xc(),bs=qw(),Ih=MF(),MUe=wF(),Jc=3;function Zw(n){if(!(n instanceof Buffer))throw TypeError(`Expected Buffer instead of: ${n.constructor.name}`);return n}var _F=class{constructor(t,o){if(!(o instanceof OUe))throw new TypeError("protocolAddress must be a ProtocolAddress");this.addr=o,this.storage=t}_encodeTupleByte(t,o){if(t>15||o>15)throw TypeError("Numbers must be 4 bits or less");return t<<4|o}_decodeTupleByte(t){return[t>>4,t&15]}toString(){return``}async getRecord(){let t=await this.storage.loadSession(this.addr.toString());if(t&&!(t instanceof X9))throw new TypeError("SessionRecord type expected from loadSession");return t}async storeRecord(t){t.removeOldSessions(),await this.storage.storeSession(this.addr.toString(),t)}async queueJob(t){return await MUe(this.addr.toString(),t)}async encrypt(t){Zw(t);let o=await this.storage.getOurIdentity();return await this.queueJob(async()=>{let i=await this.getRecord();if(!i)throw new bs.SessionError("No sessions");let e=i.getOpenSession();if(!e)throw new bs.SessionError("No open session");let a=e.indexInfo.remoteIdentityKey;if(!await this.storage.isTrustedIdentity(this.addr.id,a))throw new bs.UntrustedIdentityKeyError(this.addr.id,a);let A=e.getChain(e.currentRatchet.ephemeralKeyPair.pubKey);if(A.chainType===Ww.RECEIVING)throw new Error("Tried to encrypt on a receiving chain");this.fillMessageKeys(A,A.chainKey.counter+1);let r=vg.deriveSecrets(A.messageKeys[A.chainKey.counter],Buffer.alloc(32),Buffer.from("WhisperMessageKeys"));delete A.messageKeys[A.chainKey.counter];let s=Ih.WhisperMessage.create();s.ephemeralKey=e.currentRatchet.ephemeralKeyPair.pubKey,s.counter=A.chainKey.counter,s.previousCounter=e.currentRatchet.previousCounter,s.ciphertext=vg.encrypt(r[0],t,r[2].slice(0,16));let g=Ih.WhisperMessage.encode(s).finish(),c=Buffer.alloc(g.byteLength+66+1);c.set(o.pubKey),c.set(e.indexInfo.remoteIdentityKey,33),c[66]=this._encodeTupleByte(Jc,Jc),c.set(g,67);let I=vg.calculateMAC(r[1],c),d=Buffer.alloc(g.byteLength+9);d[0]=this._encodeTupleByte(Jc,Jc),d.set(g,1),d.set(I.slice(0,8),g.byteLength+1),await this.storeRecord(i);let B,f;if(e.pendingPreKey){B=3;let Q=Ih.PreKeyWhisperMessage.create({identityKey:o.pubKey,registrationId:await this.storage.getOurRegistrationId(),baseKey:e.pendingPreKey.baseKey,signedPreKeyId:e.pendingPreKey.signedKeyId,message:d});e.pendingPreKey.preKeyId&&(Q.preKeyId=e.pendingPreKey.preKeyId),f=Buffer.concat([Buffer.from([this._encodeTupleByte(Jc,Jc)]),Buffer.from(Ih.PreKeyWhisperMessage.encode(Q).finish())])}else B=1,f=d;return{type:B,body:f,registrationId:e.registrationId}})}async decryptWithSessions(t,o){if(!o.length)throw new bs.SessionError("No sessions available");let i=[];for(let e of o){let a;try{return a=await this.doDecryptWhisperMessage(t,e),e.indexInfo.used=Date.now(),{session:e,plaintext:a}}catch(A){i.push(A)}}console.error("Failed to decrypt message with any known session...");for(let e of i)console.error("Session error:"+e,e.stack);throw new bs.SessionError("No matching sessions found for message")}async decryptWhisperMessage(t){return Zw(t),await this.queueJob(async()=>{let o=await this.getRecord();if(!o)throw new bs.SessionError("No session record");let i=await this.decryptWithSessions(t,o.getSessions()),e=i.session.indexInfo.remoteIdentityKey;if(!await this.storage.isTrustedIdentity(this.addr.id,e))throw new bs.UntrustedIdentityKeyError(this.addr.id,e);return o.isClosed(i.session)&&console.warn("Decrypted message with closed session."),await this.storeRecord(o),i.plaintext})}async decryptPreKeyWhisperMessage(t){Zw(t);let o=this._decodeTupleByte(t[0]);if(o[1]>3||o[0]<3)throw new Error("Incompatible version number on PreKeyWhisperMessage");return await this.queueJob(async()=>{let i=await this.getRecord(),e=Ih.PreKeyWhisperMessage.decode(t.slice(1));if(!i){if(e.registrationId==null)throw new Error("No registrationId");i=new X9}let A=await new bUe(this.storage,this.addr).initIncoming(i,e),r=i.getSession(e.baseKey),s=await this.doDecryptWhisperMessage(e.message,r);return await this.storeRecord(i),A&&await this.storage.removePreKey(A),s})}async doDecryptWhisperMessage(t,o){if(Zw(t),!o)throw new TypeError("session required");let i=this._decodeTupleByte(t[0]);if(i[1]>3||i[0]<3)throw new Error("Incompatible version number on WhisperMessage");let e=t.slice(1,-8),a=Ih.WhisperMessage.decode(e);this.maybeStepRatchet(o,a.ephemeralKey,a.previousCounter);let A=o.getChain(a.ephemeralKey);if(A.chainType===Ww.SENDING)throw new Error("Tried to decrypt on a sending chain");if(this.fillMessageKeys(A,a.counter),!A.messageKeys.hasOwnProperty(a.counter))throw new bs.MessageCounterError("Key used already or never filled");let r=A.messageKeys[a.counter];delete A.messageKeys[a.counter];let s=vg.deriveSecrets(r,Buffer.alloc(32),Buffer.from("WhisperMessageKeys")),g=await this.storage.getOurIdentity(),c=Buffer.alloc(e.byteLength+66+1);c.set(o.indexInfo.remoteIdentityKey),c.set(g.pubKey,33),c[66]=this._encodeTupleByte(Jc,Jc),c.set(e,67),vg.verifyMAC(c,s[1],t.slice(-8),8);let I=vg.decrypt(s[0],a.ciphertext,s[2].slice(0,16));return delete o.pendingPreKey,I}fillMessageKeys(t,o){if(t.chainKey.counter>=o)return;if(o-t.chainKey.counter>2e3)throw new bs.SessionError("Over 2000 messages into the future!");if(t.chainKey.key===void 0)throw new bs.SessionError("Chain closed");let i=t.chainKey.key;return t.messageKeys[t.chainKey.counter+1]=vg.calculateMAC(i,Buffer.from([1])),t.chainKey.key=vg.calculateMAC(i,Buffer.from([2])),t.chainKey.counter+=1,this.fillMessageKeys(t,o)}maybeStepRatchet(t,o,i){if(t.getChain(o))return;let e=t.currentRatchet,a=t.getChain(e.lastRemoteEphemeralKey);a&&(this.fillMessageKeys(a,i),delete a.chainKey.key),this.calculateRatchet(t,o,!1);let A=t.getChain(e.ephemeralKeyPair.pubKey);A&&(e.previousCounter=A.chainKey.counter,t.deleteChain(e.ephemeralKeyPair.pubKey)),e.ephemeralKeyPair=$9.generateKeyPair(),this.calculateRatchet(t,o,!0),e.lastRemoteEphemeralKey=o}calculateRatchet(t,o,i){let e=t.currentRatchet,a=$9.calculateAgreement(o,e.ephemeralKeyPair.privKey),A=vg.deriveSecrets(a,e.rootKey,Buffer.from("WhisperRatchet"),2),r=i?e.ephemeralKeyPair.pubKey:o;t.addChain(r,{messageKeys:{},chainKey:{counter:-1,key:A[1]},chainType:i?Ww.SENDING:Ww.RECEIVING}),e.rootKey=A[0]}async hasOpenSession(){return await this.queueJob(async()=>{let t=await this.getRecord();return t?t.haveOpenSession():!1})}async closeOpenSession(){return await this.queueJob(async()=>{let t=await this.getRecord();if(t){let o=t.getOpenSession();o&&(t.closeSession(o),await this.storeRecord(t))}})}};eX.exports=_F});var tX=ee(Pg=>{"use strict";Pg.crypto=Nl();Pg.curve=xc();Pg.keyhelper=G9();Pg.ProtocolAddress=QF();Pg.SessionBuilder=OF();Pg.SessionCipher=AX();Pg.SessionRecord=Jw();Object.assign(Pg,qw())});var NF=ee((PfA,nX)=>{"use strict";nX.exports=function(...n){try{return JSON.stringify(...n)}catch(t){return"[Cannot display object: "+t.message+"]"}}});var RF=ee((sX,gX)=>{"use strict";var PUe=NF();gX.exports=class extends Error{constructor(n){let t=n.filter(o=>o!=="").map(o=>typeof o=="string"?o:o instanceof Error?o.message:PUe(o));super(t.join(" ")||"Unknown error"),typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,sX.assert)}}});var Rl=ee((FfA,cX)=>{"use strict";var GUe=RF();cX.exports=function(n,...t){if(!n)throw t.length===1&&t[0]instanceof Error?t[0]:new GUe(t)}});var QB=ee((LfA,lX)=>{"use strict";var kF=Rl(),IX={};lX.exports=function(n,t,o){if(t===!1||t===null||t===void 0)return n;o=o||{},typeof o=="string"&&(o={separator:o});let i=Array.isArray(t);kF(!i||!o.separator,"Separator option is not valid for array-based chain");let e=i?t:t.split(o.separator||"."),a=n;for(let A=0;A{"use strict";var pX={};di=dX.exports={array:Array.prototype,buffer:Buffer&&Buffer.prototype,date:Date.prototype,error:Error.prototype,generic:Object.prototype,map:Map.prototype,promise:Promise.prototype,regex:RegExp.prototype,set:Set.prototype,weakMap:WeakMap.prototype,weakSet:WeakSet.prototype};pX.typeMap=new Map([["[object Error]",di.error],["[object Map]",di.map],["[object Promise]",di.promise],["[object Set]",di.set],["[object WeakMap]",di.weakMap],["[object WeakSet]",di.weakSet]]);di.getInternalProto=function(n){if(Array.isArray(n))return di.array;if(Buffer&&n instanceof Buffer)return di.buffer;if(n instanceof Date)return di.date;if(n instanceof RegExp)return di.regex;if(n instanceof Error)return di.error;let t=Object.prototype.toString.call(n);return pX.typeMap.get(t)||di.generic}});var $w=ee(hX=>{"use strict";hX.keys=function(n,t={}){return t.symbols!==!1?Reflect.ownKeys(n):Object.getOwnPropertyNames(n)}});var eD=ee((HfA,EX)=>{"use strict";var FUe=QB(),po=vF(),LUe=$w(),Fg={needsProtoHack:new Set([po.set,po.map,po.weakSet,po.weakMap])};EX.exports=Fg.clone=function(n,t={},o=null){if(typeof n!="object"||n===null)return n;let i=Fg.clone,e=o;if(t.shallow){if(t.shallow!==!0)return Fg.cloneWithShallow(n,t);i=s=>s}else if(e){let s=e.get(n);if(s)return s}else e=new Map;let a=po.getInternalProto(n);if(a===po.buffer)return Buffer&&Buffer.from(n);if(a===po.date)return new Date(n.getTime());if(a===po.regex)return new RegExp(n);let A=Fg.base(n,a,t);if(A===n)return n;if(e&&e.set(n,A),a===po.set)for(let s of n)A.add(i(s,t,e));else if(a===po.map)for(let[s,g]of n)A.set(s,i(g,t,e));let r=LUe.keys(n,t);for(let s of r){if(s==="__proto__")continue;if(a===po.array&&s==="length"){A.length=n.length;continue}let g=Object.getOwnPropertyDescriptor(n,s);g?g.get||g.set?Object.defineProperty(A,s,g):g.enumerable?A[s]=i(n[s],t,e):Object.defineProperty(A,s,{enumerable:!1,writable:!0,configurable:!0,value:i(n[s],t,e)}):Object.defineProperty(A,s,{enumerable:!0,writable:!0,configurable:!0,value:i(n[s],t,e)})}return A};Fg.cloneWithShallow=function(n,t){let o=t.shallow;t=Object.assign({},t),t.shallow=!1;let i=new Map;for(let e of o){let a=FUe(n,e);(typeof a=="object"||typeof a=="function")&&i.set(a,a)}return Fg.clone(n,t,i)};Fg.base=function(n,t,o){if(o.prototype===!1)return Fg.needsProtoHack.has(t)?new t.constructor:t===po.array?[]:{};let i=Object.getPrototypeOf(n);if(i&&i.isImmutable)return n;if(t===po.array){let e=[];return i!==t&&Object.setPrototypeOf(e,i),e}if(Fg.needsProtoHack.has(t)){let e=new i.constructor;return i!==t&&Object.setPrototypeOf(e,i),e}return Object.create(i)}});var GF=ee((KfA,BX)=>{"use strict";var PF=Rl(),CX=eD(),UUe=$w(),uX={};BX.exports=uX.merge=function(n,t,o){if(PF(n&&typeof n=="object","Invalid target value: must be an object"),PF(t==null||typeof t=="object","Invalid source value: must be null, undefined, or an object"),!t)return n;if(o=Object.assign({nullOverride:!0,mergeArrays:!0},o),Array.isArray(t)){PF(Array.isArray(n),"Cannot merge array onto an object"),o.mergeArrays||(n.length=0);for(let e=0;e{"use strict";var AD=Rl(),QX=eD(),yX=GF(),fX=QB(),tD={};mX.exports=function(n,t,o={}){if(AD(n&&typeof n=="object","Invalid defaults value: must be an object"),AD(!t||t===!0||typeof t=="object","Invalid source value: must be true, falsy or an object"),AD(typeof o=="object","Invalid options: must be an object"),!t)return null;if(o.shallow)return tD.applyToDefaultsWithShallow(n,t,o);let i=QX(n);if(t===!0)return i;let e=o.nullOverride!==void 0?o.nullOverride:!1;return yX(i,t,{nullOverride:e,mergeArrays:!1})};tD.applyToDefaultsWithShallow=function(n,t,o){let i=o.shallow;AD(Array.isArray(i),"Invalid keys");let e=new Map,a=t===!0?null:new Set;for(let s of i){s=Array.isArray(s)?s:s.split(".");let g=fX(n,s);g&&typeof g=="object"?e.set(g,a&&fX(t,s)||g):a&&a.add(s)}let A=QX(n,{},e);if(!a)return A;for(let s of a)tD.reachCopy(A,t,s);let r=o.nullOverride!==void 0?o.nullOverride:!1;return yX(A,t,{nullOverride:r,mergeArrays:!1})};tD.reachCopy=function(n,t,o){for(let a of o){if(!(a in t))return;let A=t[a];if(typeof A!="object"||A===null)return;t=A}let i=t,e=n;for(let a=0;a{"use strict";var FF={};wX.exports=FF.Bench=class{constructor(){this.ts=0,this.reset()}reset(){this.ts=FF.Bench.now()}elapsed(){return FF.Bench.now()-this.ts}static now(){let n=process.hrtime();return n[0]*1e3+n[1]/1e6}}});var LF=ee((JfA,OX)=>{"use strict";OX.exports=function(){}});var MX=ee((qfA,bX)=>{"use strict";var HUe=LF();bX.exports=function(){return new Promise(HUe)}});var UF=ee((zfA,_X)=>{"use strict";var Ms=vF(),ai={mismatched:null};_X.exports=function(n,t,o){return o=Object.assign({prototype:!0},o),!!ai.isDeepEqual(n,t,o,[])};ai.isDeepEqual=function(n,t,o,i){if(n===t)return n!==0||1/n===1/t;let e=typeof n;if(e!==typeof t||n===null||t===null)return!1;if(e==="function"){if(!o.deepFunction||n.toString()!==t.toString())return!1}else if(e!=="object")return n!==n&&t!==t;let a=ai.getSharedType(n,t,!!o.prototype);switch(a){case Ms.buffer:return Buffer&&Buffer.prototype.equals.call(n,t);case Ms.promise:return n===t;case Ms.regex:return n.toString()===t.toString();case ai.mismatched:return!1}for(let A=i.length-1;A>=0;--A)if(i[A].isSame(n,t))return!0;i.push(new ai.SeenEntry(n,t));try{return!!ai.isDeepEqualObj(a,n,t,o,i)}finally{i.pop()}};ai.getSharedType=function(n,t,o){if(o)return Object.getPrototypeOf(n)!==Object.getPrototypeOf(t)?ai.mismatched:Ms.getInternalProto(n);let i=Ms.getInternalProto(n);return i!==Ms.getInternalProto(t)?ai.mismatched:i};ai.valueOf=function(n){let t=n.valueOf;if(t===void 0)return n;try{return t.call(n)}catch(o){return o}};ai.hasOwnEnumerableProperty=function(n,t){return Object.prototype.propertyIsEnumerable.call(n,t)};ai.isSetSimpleEqual=function(n,t){for(let o of Set.prototype.values.call(n))if(!Set.prototype.has.call(t,o))return!1;return!0};ai.isDeepEqualObj=function(n,t,o,i,e){let{isDeepEqual:a,valueOf:A,hasOwnEnumerableProperty:r}=ai,{keys:s,getOwnPropertySymbols:g}=Object;if(n===Ms.array)if(i.part){for(let f of t)for(let Q of o)if(a(f,Q,i,e))return!0}else{if(t.length!==o.length)return!1;for(let f=0;f{"use strict";TX.exports=function(n){return n.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g,"\\$&")}});var RX=ee((ZfA,NX)=>{"use strict";var rD=Rl(),KUe=UF(),xUe=HF(),YUe=$w(),ho={};NX.exports=function(n,t,o={}){return typeof t!="object"&&(t=[t]),rD(!Array.isArray(t)||t.length,"Values array cannot be empty"),typeof n=="string"?ho.string(n,t,o):Array.isArray(n)?ho.array(n,t,o):(rD(typeof n=="object","Reference must be string or an object"),ho.object(n,t,o))};ho.array=function(n,t,o){if(Array.isArray(t)||(t=[t]),!n.length||o.only&&o.once&&n.length!==t.length)return!1;let i,e=new Map;for(let A of t)if(!o.deep||!A||typeof A!="object"){let r=e.get(A);r?++r.allowed:e.set(A,{allowed:1,hits:0})}else{i=i||ho.compare(o);let r=!1;for(let[s,g]of e.entries())if(i(s,A)){++g.allowed,r=!0;break}r||e.set(A,{allowed:1,hits:0})}let a=0;for(let A of n){let r;if(!o.deep||!A||typeof A!="object")r=e.get(A);else{i=i||ho.compare(o);for(let[s,g]of e.entries())if(i(s,A)){r=g;break}}if(r&&(++r.hits,++a,o.once&&r.hits>r.allowed))return!1}if(o.only&&a!==n.length)return!1;for(let A of e.values())if(A.hits!==A.allowed&&A.hitst.propertyIsEnumerable(s)),a=[...Object.keys(t),...e],A=ho.compare(o),r=new Set(a);for(let s of i){if(!r.has(s)){if(o.only)return!1;continue}if(!A(t[s],n[s]))return!1;r.delete(s)}return r.size?o.part?r.sizes!=="");let i=new Map,e=[];for(let s of t)if(rD(typeof s=="string","Cannot compare string reference to non-string value"),s){let g=i.get(s);g?++g.allowed:(i.set(s,{allowed:1,hits:0}),e.push(xUe(s)))}else if(o.once||o.only)return!1;if(!e.length)return!0;let a=new RegExp(`(${e.join("|")})`,"g"),A=n.replace(a,(s,g)=>(++i.get(g).hits,""));if(o.only&&A)return!1;let r=!1;for(let s of i.values())if(s.hits&&(r=!0),s.hits!==s.allowed&&(s.hitsKUe(e,a,i)};ho.shallow=function(n,t){return n===t}});var vX=ee((XfA,kX)=>{"use strict";var jUe=Rl();kX.exports=function(n){return jUe(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/.test(n),"Bad attribute value ("+n+")"),n.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')}});var GX=ee(($fA,PX)=>{"use strict";var zc={};PX.exports=function(n){if(!n)return"";let t="";for(let o=0;o=256?"&#"+n+";":`&#x${n.toString(16).padStart(2,"0")};`)};zc.isSafe=function(n){return zc.safeCharCodes.has(n)};zc.namedHtml=new Map([[38,"&"],[60,"<"],[62,">"],[34,"""],[160," "],[162,"¢"],[163,"£"],[164,"¤"],[169,"©"],[174,"®"]]);zc.safeCharCodes=(function(){let n=new Set;for(let t=32;t<123;++t)(t>=97||t>=65&&t<=90||t>=48&&t<=57||t===32||t===46||t===44||t===45||t===58||t===95)&&n.add(t);return n})()});var LX=ee((eQA,FX)=>{"use strict";var aD={};FX.exports=function(n){return n?n.replace(/[<>&\u2028\u2029]/g,aD.escape):""};aD.escape=function(n){return aD.replacements.get(n)};aD.replacements=new Map([["<","\\u003c"],[">","\\u003e"],["&","\\u0026"],["\u2028","\\u2028"],["\u2029","\\u2029"]])});var KX=ee((AQA,HX)=>{"use strict";var UX={};HX.exports=UX.flatten=function(n,t){let o=t||[];for(let i of n)Array.isArray(i)?UX.flatten(i,o):o.push(i);return o}});var jX=ee((tQA,YX)=>{"use strict";var xX={};YX.exports=function(n,t,o={}){if(!n||!t)return o.first?null:[];let i=[],e=Array.isArray(n)?new Set(n):n,a=new Set;for(let A of t)if(xX.has(e,A)&&!a.has(A)){if(o.first)return A;i.push(A),a.add(A)}return o.first?null:i};xX.has=function(n,t){return typeof n.has=="function"?n.has(t):n[t]!==void 0}});var qX=ee((rQA,JX)=>{"use strict";JX.exports=function(n){return!!n&&typeof n.then=="function"}});var WX=ee((aQA,VX)=>{"use strict";var zX={wrapped:Symbol("wrapped")};VX.exports=function(n){if(n[zX.wrapped])return n;let t=!1,o=function(...i){t||(t=!0,n(...i))};return o[zX.wrapped]=!0,o}});var XX=ee((iQA,ZX)=>{"use strict";var JUe=QB();ZX.exports=function(n,t,o){return t.replace(/{([^{}]+)}/g,(i,e)=>{let a=JUe(n,e,o);return a??""})}});var e7=ee((oQA,$X)=>{"use strict";var qUe={maxTimer:2147483647};$X.exports=function(n,t,o){if(typeof n=="bigint"&&(n=Number(n)),n>=Number.MAX_SAFE_INTEGER&&(n=1/0),typeof n!="number"&&n!==void 0)throw new TypeError("Timeout must be a number or bigint");return new Promise(i=>{let e=o?o.setTimeout:setTimeout,a=()=>{let A=Math.min(n,qUe.maxTimer);n-=A,e(()=>n>0?a():i(t),A)};n!==1/0&&a()})}});var A7=ee(pr=>{"use strict";pr.applyToDefaults=SX();pr.assert=Rl();pr.Bench=DX();pr.block=MX();pr.clone=eD();pr.contain=RX();pr.deepEqual=UF();pr.Error=RF();pr.escapeHeaderAttribute=vX();pr.escapeHtml=GX();pr.escapeJson=LX();pr.escapeRegex=HF();pr.flatten=KX();pr.ignore=LF();pr.intersect=jX();pr.isPromise=qX();pr.merge=GF();pr.once=WX();pr.reach=QB();pr.reachTemplate=XX();pr.stringify=NF();pr.wait=e7()});var Kr=ee(Pe=>{"use strict";var kl=A7(),ji={codes:new Map([[100,"Continue"],[101,"Switching Protocols"],[102,"Processing"],[200,"OK"],[201,"Created"],[202,"Accepted"],[203,"Non-Authoritative Information"],[204,"No Content"],[205,"Reset Content"],[206,"Partial Content"],[207,"Multi-Status"],[300,"Multiple Choices"],[301,"Moved Permanently"],[302,"Moved Temporarily"],[303,"See Other"],[304,"Not Modified"],[305,"Use Proxy"],[307,"Temporary Redirect"],[400,"Bad Request"],[401,"Unauthorized"],[402,"Payment Required"],[403,"Forbidden"],[404,"Not Found"],[405,"Method Not Allowed"],[406,"Not Acceptable"],[407,"Proxy Authentication Required"],[408,"Request Time-out"],[409,"Conflict"],[410,"Gone"],[411,"Length Required"],[412,"Precondition Failed"],[413,"Request Entity Too Large"],[414,"Request-URI Too Large"],[415,"Unsupported Media Type"],[416,"Requested Range Not Satisfiable"],[417,"Expectation Failed"],[418,"I'm a teapot"],[422,"Unprocessable Entity"],[423,"Locked"],[424,"Failed Dependency"],[425,"Too Early"],[426,"Upgrade Required"],[428,"Precondition Required"],[429,"Too Many Requests"],[431,"Request Header Fields Too Large"],[451,"Unavailable For Legal Reasons"],[500,"Internal Server Error"],[501,"Not Implemented"],[502,"Bad Gateway"],[503,"Service Unavailable"],[504,"Gateway Time-out"],[505,"HTTP Version Not Supported"],[506,"Variant Also Negotiates"],[507,"Insufficient Storage"],[509,"Bandwidth Limit Exceeded"],[510,"Not Extended"],[511,"Network Authentication Required"]])};Pe.Boom=class extends Error{constructor(n,t={}){if(n instanceof Error)return Pe.boomify(kl.clone(n),t);let{statusCode:o=500,data:i=null,ctor:e=Pe.Boom}=t,a=new Error(n||void 0);Error.captureStackTrace(a,e),a.data=i;let A=ji.initialize(a,o);return Object.defineProperty(A,"typeof",{value:e}),t.decorate&&Object.assign(A,t.decorate),A}static[Symbol.hasInstance](n){return this===Pe.Boom?Pe.isBoom(n):this.prototype.isPrototypeOf(n)}};Pe.isBoom=function(n,t){return n instanceof Error&&!!n.isBoom&&(!t||n.output.statusCode===t)};Pe.boomify=function(n,t){return kl.assert(n instanceof Error,"Cannot wrap non-Error object"),t=t||{},t.data!==void 0&&(n.data=t.data),t.decorate&&Object.assign(n,t.decorate),n.isBoom?t.override===!1||!t.statusCode&&!t.message?n:ji.initialize(n,t.statusCode||n.output.statusCode,t.message):ji.initialize(n,t.statusCode||500,t.message)};Pe.badRequest=function(n,t){return new Pe.Boom(n,{statusCode:400,data:t,ctor:Pe.badRequest})};Pe.unauthorized=function(n,t,o){let i=new Pe.Boom(n,{statusCode:401,ctor:Pe.unauthorized});if(!t)return i;if(typeof t!="string")return i.output.headers["WWW-Authenticate"]=t.join(", "),i;let e=`${t}`;return(o||n)&&(i.output.payload.attributes={}),o&&(typeof o=="string"?(e+=" "+kl.escapeHeaderAttribute(o),i.output.payload.attributes=o):e+=" "+Object.keys(o).map(a=>{let A=o[a];return A==null&&(A=""),i.output.payload.attributes[a]=A,`${a}="${kl.escapeHeaderAttribute(A.toString())}"`}).join(", ")),n?(o&&(e+=","),e+=` error="${kl.escapeHeaderAttribute(n)}"`,i.output.payload.attributes.error=n):i.isMissing=!0,i.output.headers["WWW-Authenticate"]=e,i};Pe.paymentRequired=function(n,t){return new Pe.Boom(n,{statusCode:402,data:t,ctor:Pe.paymentRequired})};Pe.forbidden=function(n,t){return new Pe.Boom(n,{statusCode:403,data:t,ctor:Pe.forbidden})};Pe.notFound=function(n,t){return new Pe.Boom(n,{statusCode:404,data:t,ctor:Pe.notFound})};Pe.methodNotAllowed=function(n,t,o){let i=new Pe.Boom(n,{statusCode:405,data:t,ctor:Pe.methodNotAllowed});return typeof o=="string"&&(o=[o]),Array.isArray(o)&&(i.output.headers.Allow=o.join(", ")),i};Pe.notAcceptable=function(n,t){return new Pe.Boom(n,{statusCode:406,data:t,ctor:Pe.notAcceptable})};Pe.proxyAuthRequired=function(n,t){return new Pe.Boom(n,{statusCode:407,data:t,ctor:Pe.proxyAuthRequired})};Pe.clientTimeout=function(n,t){return new Pe.Boom(n,{statusCode:408,data:t,ctor:Pe.clientTimeout})};Pe.conflict=function(n,t){return new Pe.Boom(n,{statusCode:409,data:t,ctor:Pe.conflict})};Pe.resourceGone=function(n,t){return new Pe.Boom(n,{statusCode:410,data:t,ctor:Pe.resourceGone})};Pe.lengthRequired=function(n,t){return new Pe.Boom(n,{statusCode:411,data:t,ctor:Pe.lengthRequired})};Pe.preconditionFailed=function(n,t){return new Pe.Boom(n,{statusCode:412,data:t,ctor:Pe.preconditionFailed})};Pe.entityTooLarge=function(n,t){return new Pe.Boom(n,{statusCode:413,data:t,ctor:Pe.entityTooLarge})};Pe.uriTooLong=function(n,t){return new Pe.Boom(n,{statusCode:414,data:t,ctor:Pe.uriTooLong})};Pe.unsupportedMediaType=function(n,t){return new Pe.Boom(n,{statusCode:415,data:t,ctor:Pe.unsupportedMediaType})};Pe.rangeNotSatisfiable=function(n,t){return new Pe.Boom(n,{statusCode:416,data:t,ctor:Pe.rangeNotSatisfiable})};Pe.expectationFailed=function(n,t){return new Pe.Boom(n,{statusCode:417,data:t,ctor:Pe.expectationFailed})};Pe.teapot=function(n,t){return new Pe.Boom(n,{statusCode:418,data:t,ctor:Pe.teapot})};Pe.badData=function(n,t){return new Pe.Boom(n,{statusCode:422,data:t,ctor:Pe.badData})};Pe.locked=function(n,t){return new Pe.Boom(n,{statusCode:423,data:t,ctor:Pe.locked})};Pe.failedDependency=function(n,t){return new Pe.Boom(n,{statusCode:424,data:t,ctor:Pe.failedDependency})};Pe.tooEarly=function(n,t){return new Pe.Boom(n,{statusCode:425,data:t,ctor:Pe.tooEarly})};Pe.preconditionRequired=function(n,t){return new Pe.Boom(n,{statusCode:428,data:t,ctor:Pe.preconditionRequired})};Pe.tooManyRequests=function(n,t){return new Pe.Boom(n,{statusCode:429,data:t,ctor:Pe.tooManyRequests})};Pe.illegal=function(n,t){return new Pe.Boom(n,{statusCode:451,data:t,ctor:Pe.illegal})};Pe.internal=function(n,t,o=500){return ji.serverError(n,t,o,Pe.internal)};Pe.notImplemented=function(n,t){return ji.serverError(n,t,501,Pe.notImplemented)};Pe.badGateway=function(n,t){return ji.serverError(n,t,502,Pe.badGateway)};Pe.serverUnavailable=function(n,t){return ji.serverError(n,t,503,Pe.serverUnavailable)};Pe.gatewayTimeout=function(n,t){return ji.serverError(n,t,504,Pe.gatewayTimeout)};Pe.badImplementation=function(n,t){let o=ji.serverError(n,t,500,Pe.badImplementation);return o.isDeveloperError=!0,o};ji.initialize=function(n,t,o){let i=parseInt(t,10);if(kl.assert(!isNaN(i)&&i>=400,"First argument must be a number (400+):",t),n.isBoom=!0,n.isServer=i>=500,n.hasOwnProperty("data")||(n.data=null),n.output={statusCode:i,payload:{},headers:{}},Object.defineProperty(n,"reformat",{value:ji.reformat,configurable:!0}),!o&&!n.message&&(n.reformat(),o=n.output.payload.error),o){let e=Object.getOwnPropertyDescriptor(n,"message")||Object.getOwnPropertyDescriptor(Object.getPrototypeOf(n),"message");kl.assert(!e||e.configurable&&!e.get,"The error is not compatible with boom"),n.message=o+(n.message?": "+n.message:""),n.output.payload.message=n.message}return n.reformat(),n};ji.reformat=function(n=!1){this.output.payload.statusCode=this.output.statusCode,this.output.payload.error=ji.codes.get(this.output.statusCode)||"Unknown",this.output.statusCode===500&&n!==!0?this.output.payload.message="An internal server error occurred":this.message&&(this.output.payload.message=this.message)};ji.serverError=function(n,t,o,i){return t instanceof Error&&!t.isBoom?Pe.boomify(t,{statusCode:o,message:n}):new Pe.Boom(n,{statusCode:o,data:t,ctor:i})}});var a$,OHe,bHe,MHe,_He,THe,NHe,RHe,kHe,vHe,PHe,GHe,FHe,LHe,UHe,O,Ts=ue(()=>{a$=n=>typeof n<"u"&&n!==null,OHe=n=>typeof n=="object",bHe=n=>Object.prototype.toString.call(n)==="[object Object]",MHe=n=>typeof n=="function",_He=n=>typeof n=="boolean",THe=n=>n instanceof Buffer,NHe=n=>{if(a$(n))switch(n.constructor){case Uint8Array:case Uint8ClampedArray:case Int8Array:case Uint16Array:case Int16Array:case Uint32Array:case Int32Array:case Float32Array:case Float64Array:return!0}return!1},RHe=n=>n instanceof ArrayBuffer,kHe=n=>typeof n=="string"&&n.length>0,vHe=n=>typeof n=="number"&&Number.isFinite(n),PHe=n=>Number.isInteger(n),GHe=(n,t,o)=>n>=t&&n<=o,FHe=(n,t)=>t.includes(n),LHe=(n,t,o)=>new Error(`Expected ${t} for ${n} but received ${o} of type ${typeof o}`),UHe=(n,t)=>(t.message=n.message,t),O={defined:a$,object:OHe,plainObject:bHe,fn:MHe,bool:_He,buffer:THe,typedArray:NHe,arrayBuffer:RHe,string:kHe,number:vHe,integer:PHe,inRange:GHe,inArray:FHe,invalidParameterError:LHe,nativeError:UHe}});var n$=ee((CyA,o$)=>{"use strict";var i$=()=>process.platform==="linux",fD=null,HHe=()=>{if(!fD)if(i$()&&process.report){let n=process.report.excludeNetwork;process.report.excludeNetwork=!0,fD=process.report.getReport(),process.report.excludeNetwork=n}else fD={};return fD};o$.exports={isLinux:i$,getReport:HHe}});var g$=ee((uyA,s$)=>{"use strict";var yh=$e("fs"),KHe="/usr/bin/ldd",xHe="/proc/self/exe",QD=2048,YHe=n=>{let t=yh.openSync(n,"r"),o=Buffer.alloc(QD),i=yh.readSync(t,o,0,QD,0);return yh.close(t,()=>{}),o.subarray(0,i)},jHe=n=>new Promise((t,o)=>{yh.open(n,"r",(i,e)=>{if(i)o(i);else{let a=Buffer.alloc(QD);yh.read(e,a,0,QD,0,(A,r)=>{t(a.subarray(0,r)),yh.close(e,()=>{})})}})});s$.exports={LDD_PATH:KHe,SELF_PATH:xHe,readFileSync:YHe,readFile:jHe}});var I$=ee((ByA,c$)=>{"use strict";var JHe=n=>{if(n.length<64||n.readUInt32BE(0)!==2135247942||n.readUInt8(4)!==2||n.readUInt8(5)!==1)return null;let t=n.readUInt32LE(32),o=n.readUInt16LE(54),i=n.readUInt16LE(56);for(let e=0;e{"use strict";var p$=$e("child_process"),{isLinux:mh,getReport:d$}=n$(),{LDD_PATH:yD,SELF_PATH:h$,readFile:AL,readFileSync:tL}=g$(),{interpreterPath:E$}=I$(),Ns,Rs,ks,C$="getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true",AI="",u$=()=>AI||new Promise(n=>{p$.exec(C$,(t,o)=>{AI=t?" ":o,n(AI)})}),B$=()=>{if(!AI)try{AI=p$.execSync(C$,{encoding:"utf8"})}catch{AI=" "}return AI},xg="glibc",f$=/LIBC[a-z0-9 \-).]*?(\d+\.\d+)/i,Ul="musl",qHe=n=>n.includes("libc.musl-")||n.includes("ld-musl-"),Q$=()=>{let n=d$();return n.header&&n.header.glibcVersionRuntime?xg:Array.isArray(n.sharedObjects)&&n.sharedObjects.some(qHe)?Ul:null},y$=n=>{let[t,o]=n.split(/[\r\n]+/);return t&&t.includes(xg)?xg:o&&o.includes(Ul)?Ul:null},m$=n=>{if(n){if(n.includes("/ld-musl-"))return Ul;if(n.includes("/ld-linux-"))return xg}return null},S$=n=>(n=n.toString(),n.includes("musl")?Ul:n.includes("GNU C Library")?xg:null),zHe=async()=>{if(Rs!==void 0)return Rs;Rs=null;try{let n=await AL(yD);Rs=S$(n)}catch{}return Rs},VHe=()=>{if(Rs!==void 0)return Rs;Rs=null;try{let n=tL(yD);Rs=S$(n)}catch{}return Rs},WHe=async()=>{if(Ns!==void 0)return Ns;Ns=null;try{let n=await AL(h$),t=E$(n);Ns=m$(t)}catch{}return Ns},ZHe=()=>{if(Ns!==void 0)return Ns;Ns=null;try{let n=tL(h$),t=E$(n);Ns=m$(t)}catch{}return Ns},w$=async()=>{let n=null;if(mh()&&(n=await WHe(),!n&&(n=await zHe(),n||(n=Q$()),!n))){let t=await u$();n=y$(t)}return n},D$=()=>{let n=null;if(mh()&&(n=ZHe(),!n&&(n=VHe(),n||(n=Q$()),!n))){let t=B$();n=y$(t)}return n},XHe=async()=>mh()&&await w$()!==xg,$He=()=>mh()&&D$()!==xg,eKe=async()=>{if(ks!==void 0)return ks;ks=null;try{let t=(await AL(yD)).match(f$);t&&(ks=t[1])}catch{}return ks},AKe=()=>{if(ks!==void 0)return ks;ks=null;try{let t=tL(yD).match(f$);t&&(ks=t[1])}catch{}return ks},O$=()=>{let n=d$();return n.header&&n.header.glibcVersionRuntime?n.header.glibcVersionRuntime:null},l$=n=>n.trim().split(/\s+/)[1],b$=n=>{let[t,o,i]=n.split(/[\r\n]+/);return t&&t.includes(xg)?l$(t):o&&i&&o.includes(Ul)?l$(i):null},tKe=async()=>{let n=null;if(mh()&&(n=await eKe(),n||(n=O$()),!n)){let t=await u$();n=b$(t)}return n},rKe=()=>{let n=null;if(mh()&&(n=AKe(),n||(n=O$()),!n)){let t=B$();n=b$(t)}return n};M$.exports={GLIBC:xg,MUSL:Ul,family:w$,familySync:D$,isNonGlibcLinux:XHe,isNonGlibcLinuxSync:$He,version:tKe,versionSync:rKe}});var Sh=ee((QyA,_$)=>{"use strict";var aKe="2.0.0",iKe=Number.MAX_SAFE_INTEGER||9007199254740991,oKe=16,nKe=250,sKe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];_$.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:oKe,MAX_SAFE_BUILD_LENGTH:nKe,MAX_SAFE_INTEGER:iKe,RELEASE_TYPES:sKe,SEMVER_SPEC_VERSION:aKe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var vB=ee((yyA,T$)=>{"use strict";var gKe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...n)=>console.error("SEMVER",...n):()=>{};T$.exports=gKe});var wh=ee((vs,N$)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:rL,MAX_SAFE_BUILD_LENGTH:cKe,MAX_LENGTH:IKe}=Sh(),lKe=vB();vs=N$.exports={};var pKe=vs.re=[],dKe=vs.safeRe=[],gA=vs.src=[],hKe=vs.safeSrc=[],cA=vs.t={},EKe=0,aL="[a-zA-Z0-9-]",CKe=[["\\s",1],["\\d",IKe],[aL,cKe]],uKe=n=>{for(let[t,o]of CKe)n=n.split(`${t}*`).join(`${t}{0,${o}}`).split(`${t}+`).join(`${t}{1,${o}}`);return n},JA=(n,t,o)=>{let i=uKe(t),e=EKe++;lKe(n,e,t),cA[n]=e,gA[e]=t,hKe[e]=i,pKe[e]=new RegExp(t,o?"g":void 0),dKe[e]=new RegExp(i,o?"g":void 0)};JA("NUMERICIDENTIFIER","0|[1-9]\\d*");JA("NUMERICIDENTIFIERLOOSE","\\d+");JA("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${aL}*`);JA("MAINVERSION",`(${gA[cA.NUMERICIDENTIFIER]})\\.(${gA[cA.NUMERICIDENTIFIER]})\\.(${gA[cA.NUMERICIDENTIFIER]})`);JA("MAINVERSIONLOOSE",`(${gA[cA.NUMERICIDENTIFIERLOOSE]})\\.(${gA[cA.NUMERICIDENTIFIERLOOSE]})\\.(${gA[cA.NUMERICIDENTIFIERLOOSE]})`);JA("PRERELEASEIDENTIFIER",`(?:${gA[cA.NONNUMERICIDENTIFIER]}|${gA[cA.NUMERICIDENTIFIER]})`);JA("PRERELEASEIDENTIFIERLOOSE",`(?:${gA[cA.NONNUMERICIDENTIFIER]}|${gA[cA.NUMERICIDENTIFIERLOOSE]})`);JA("PRERELEASE",`(?:-(${gA[cA.PRERELEASEIDENTIFIER]}(?:\\.${gA[cA.PRERELEASEIDENTIFIER]})*))`);JA("PRERELEASELOOSE",`(?:-?(${gA[cA.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${gA[cA.PRERELEASEIDENTIFIERLOOSE]})*))`);JA("BUILDIDENTIFIER",`${aL}+`);JA("BUILD",`(?:\\+(${gA[cA.BUILDIDENTIFIER]}(?:\\.${gA[cA.BUILDIDENTIFIER]})*))`);JA("FULLPLAIN",`v?${gA[cA.MAINVERSION]}${gA[cA.PRERELEASE]}?${gA[cA.BUILD]}?`);JA("FULL",`^${gA[cA.FULLPLAIN]}$`);JA("LOOSEPLAIN",`[v=\\s]*${gA[cA.MAINVERSIONLOOSE]}${gA[cA.PRERELEASELOOSE]}?${gA[cA.BUILD]}?`);JA("LOOSE",`^${gA[cA.LOOSEPLAIN]}$`);JA("GTLT","((?:<|>)?=?)");JA("XRANGEIDENTIFIERLOOSE",`${gA[cA.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);JA("XRANGEIDENTIFIER",`${gA[cA.NUMERICIDENTIFIER]}|x|X|\\*`);JA("XRANGEPLAIN",`[v=\\s]*(${gA[cA.XRANGEIDENTIFIER]})(?:\\.(${gA[cA.XRANGEIDENTIFIER]})(?:\\.(${gA[cA.XRANGEIDENTIFIER]})(?:${gA[cA.PRERELEASE]})?${gA[cA.BUILD]}?)?)?`);JA("XRANGEPLAINLOOSE",`[v=\\s]*(${gA[cA.XRANGEIDENTIFIERLOOSE]})(?:\\.(${gA[cA.XRANGEIDENTIFIERLOOSE]})(?:\\.(${gA[cA.XRANGEIDENTIFIERLOOSE]})(?:${gA[cA.PRERELEASELOOSE]})?${gA[cA.BUILD]}?)?)?`);JA("XRANGE",`^${gA[cA.GTLT]}\\s*${gA[cA.XRANGEPLAIN]}$`);JA("XRANGELOOSE",`^${gA[cA.GTLT]}\\s*${gA[cA.XRANGEPLAINLOOSE]}$`);JA("COERCEPLAIN",`(^|[^\\d])(\\d{1,${rL}})(?:\\.(\\d{1,${rL}}))?(?:\\.(\\d{1,${rL}}))?`);JA("COERCE",`${gA[cA.COERCEPLAIN]}(?:$|[^\\d])`);JA("COERCEFULL",gA[cA.COERCEPLAIN]+`(?:${gA[cA.PRERELEASE]})?(?:${gA[cA.BUILD]})?(?:$|[^\\d])`);JA("COERCERTL",gA[cA.COERCE],!0);JA("COERCERTLFULL",gA[cA.COERCEFULL],!0);JA("LONETILDE","(?:~>?)");JA("TILDETRIM",`(\\s*)${gA[cA.LONETILDE]}\\s+`,!0);vs.tildeTrimReplace="$1~";JA("TILDE",`^${gA[cA.LONETILDE]}${gA[cA.XRANGEPLAIN]}$`);JA("TILDELOOSE",`^${gA[cA.LONETILDE]}${gA[cA.XRANGEPLAINLOOSE]}$`);JA("LONECARET","(?:\\^)");JA("CARETTRIM",`(\\s*)${gA[cA.LONECARET]}\\s+`,!0);vs.caretTrimReplace="$1^";JA("CARET",`^${gA[cA.LONECARET]}${gA[cA.XRANGEPLAIN]}$`);JA("CARETLOOSE",`^${gA[cA.LONECARET]}${gA[cA.XRANGEPLAINLOOSE]}$`);JA("COMPARATORLOOSE",`^${gA[cA.GTLT]}\\s*(${gA[cA.LOOSEPLAIN]})$|^$`);JA("COMPARATOR",`^${gA[cA.GTLT]}\\s*(${gA[cA.FULLPLAIN]})$|^$`);JA("COMPARATORTRIM",`(\\s*)${gA[cA.GTLT]}\\s*(${gA[cA.LOOSEPLAIN]}|${gA[cA.XRANGEPLAIN]})`,!0);vs.comparatorTrimReplace="$1$2$3";JA("HYPHENRANGE",`^\\s*(${gA[cA.XRANGEPLAIN]})\\s+-\\s+(${gA[cA.XRANGEPLAIN]})\\s*$`);JA("HYPHENRANGELOOSE",`^\\s*(${gA[cA.XRANGEPLAINLOOSE]})\\s+-\\s+(${gA[cA.XRANGEPLAINLOOSE]})\\s*$`);JA("STAR","(<|>)?=?\\s*\\*");JA("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");JA("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var SD=ee((myA,R$)=>{"use strict";var BKe=Object.freeze({loose:!0}),fKe=Object.freeze({}),QKe=n=>n?typeof n!="object"?BKe:n:fKe;R$.exports=QKe});var iL=ee((SyA,P$)=>{"use strict";var k$=/^[0-9]+$/,v$=(n,t)=>{if(typeof n=="number"&&typeof t=="number")return n===t?0:nv$(t,n);P$.exports={compareIdentifiers:v$,rcompareIdentifiers:yKe}});var Ma=ee((wyA,F$)=>{"use strict";var wD=vB(),{MAX_LENGTH:G$,MAX_SAFE_INTEGER:DD}=Sh(),{safeRe:OD,t:bD}=wh(),mKe=SD(),{compareIdentifiers:oL}=iL(),SKe=(n,t)=>{let o=t.split(".");if(o.length>n.length)return!1;for(let i=0;iG$)throw new TypeError(`version is longer than ${G$} characters`);wD("SemVer",t,o),this.options=o,this.loose=!!o.loose,this.includePrerelease=!!o.includePrerelease;let i=t.trim().match(o.loose?OD[bD.LOOSE]:OD[bD.FULL]);if(!i)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>DD||this.major<0)throw new TypeError("Invalid major version");if(this.minor>DD||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>DD||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(e=>{if(/^[0-9]+$/.test(e)){let a=+e;if(a>=0&&at.major?1:this.minort.minor?1:this.patcht.patch?1:0}comparePre(t){if(t instanceof n||(t=new n(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let o=0;do{let i=this.prerelease[o],e=t.prerelease[o];if(wD("prerelease compare",o,i,e),i===void 0&&e===void 0)return 0;if(e===void 0)return 1;if(i===void 0)return-1;if(i===e)continue;return oL(i,e)}while(++o)}compareBuild(t){t instanceof n||(t=new n(t,this.options));let o=0;do{let i=this.build[o],e=t.build[o];if(wD("build compare",o,i,e),i===void 0&&e===void 0)return 0;if(e===void 0)return 1;if(i===void 0)return-1;if(i===e)continue;return oL(i,e)}while(++o)}inc(t,o,i){if(t.startsWith("pre")){if(!o&&i===!1)throw new Error("invalid increment argument: identifier is empty");if(o){let e=`-${o}`.match(this.options.loose?OD[bD.PRERELEASELOOSE]:OD[bD.PRERELEASE]);if(!e||e[1]!==o)throw new Error(`invalid identifier: ${o}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",o,i);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",o,i);break;case"prepatch":this.prerelease.length=0,this.inc("patch",o,i),this.inc("pre",o,i);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",o,i),this.inc("pre",o,i);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let e=Number(i)?1:0;if(this.prerelease.length===0)this.prerelease=[e];else{let a=this.prerelease.length;for(;--a>=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);if(a===-1){if(o===this.prerelease.join(".")&&i===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(o){let a=[o,e];if(i===!1&&(a=[o]),SKe(this.prerelease,o)){let A=this.prerelease[o.split(".").length];isNaN(A)&&(this.prerelease=a)}else this.prerelease=a}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};F$.exports=nL});var tI=ee((DyA,U$)=>{"use strict";var L$=Ma(),wKe=(n,t,o=!1)=>{if(n instanceof L$)return n;try{return new L$(n,t)}catch(i){if(!o)return null;throw i}};U$.exports=wKe});var K$=ee((OyA,H$)=>{"use strict";var DKe=tI(),OKe=(n,t)=>{let o=DKe(n,t);return o?o.version:null};H$.exports=OKe});var Y$=ee((byA,x$)=>{"use strict";var bKe=tI(),MKe=(n,t)=>{let o=bKe(n.trim().replace(/^[=v]+/,""),t);return o?o.version:null};x$.exports=MKe});var q$=ee((MyA,J$)=>{"use strict";var j$=Ma(),_Ke=(n,t,o,i,e)=>{typeof o=="string"&&(e=i,i=o,o=void 0);try{return new j$(n instanceof j$?n.version:n,o).inc(t,i,e).version}catch{return null}};J$.exports=_Ke});var W$=ee((_yA,V$)=>{"use strict";var z$=tI(),TKe=(n,t)=>{let o=z$(n,null,!0),i=z$(t,null,!0),e=o.compare(i);if(e===0)return null;let a=e>0,A=a?o:i,r=a?i:o,s=!!A.prerelease.length;if(!!r.prerelease.length&&!s){if(!r.patch&&!r.minor)return"major";if(r.compareMain(A)===0)return r.minor&&!r.patch?"minor":"patch"}let c=s?"pre":"";return o.major!==i.major?c+"major":o.minor!==i.minor?c+"minor":o.patch!==i.patch?c+"patch":"prerelease"};V$.exports=TKe});var X$=ee((TyA,Z$)=>{"use strict";var NKe=Ma(),RKe=(n,t)=>new NKe(n,t).major;Z$.exports=RKe});var eee=ee((NyA,$$)=>{"use strict";var kKe=Ma(),vKe=(n,t)=>new kKe(n,t).minor;$$.exports=vKe});var tee=ee((RyA,Aee)=>{"use strict";var PKe=Ma(),GKe=(n,t)=>new PKe(n,t).patch;Aee.exports=GKe});var aee=ee((kyA,ree)=>{"use strict";var FKe=tI(),LKe=(n,t)=>{let o=FKe(n,t);return o&&o.prerelease.length?o.prerelease:null};ree.exports=LKe});var Zo=ee((vyA,oee)=>{"use strict";var iee=Ma(),UKe=(n,t,o)=>new iee(n,o).compare(new iee(t,o));oee.exports=UKe});var see=ee((PyA,nee)=>{"use strict";var HKe=Zo(),KKe=(n,t,o)=>HKe(t,n,o);nee.exports=KKe});var cee=ee((GyA,gee)=>{"use strict";var xKe=Zo(),YKe=(n,t)=>xKe(n,t,!0);gee.exports=YKe});var MD=ee((FyA,lee)=>{"use strict";var Iee=Ma(),jKe=(n,t,o)=>{let i=new Iee(n,o),e=new Iee(t,o);return i.compare(e)||i.compareBuild(e)};lee.exports=jKe});var dee=ee((LyA,pee)=>{"use strict";var JKe=MD(),qKe=(n,t)=>n.sort((o,i)=>JKe(o,i,t));pee.exports=qKe});var Eee=ee((UyA,hee)=>{"use strict";var zKe=MD(),VKe=(n,t)=>n.sort((o,i)=>zKe(i,o,t));hee.exports=VKe});var PB=ee((HyA,Cee)=>{"use strict";var WKe=Zo(),ZKe=(n,t,o)=>WKe(n,t,o)>0;Cee.exports=ZKe});var _D=ee((KyA,uee)=>{"use strict";var XKe=Zo(),$Ke=(n,t,o)=>XKe(n,t,o)<0;uee.exports=$Ke});var sL=ee((xyA,Bee)=>{"use strict";var exe=Zo(),Axe=(n,t,o)=>exe(n,t,o)===0;Bee.exports=Axe});var gL=ee((YyA,fee)=>{"use strict";var txe=Zo(),rxe=(n,t,o)=>txe(n,t,o)!==0;fee.exports=rxe});var TD=ee((jyA,Qee)=>{"use strict";var axe=Zo(),ixe=(n,t,o)=>axe(n,t,o)>=0;Qee.exports=ixe});var ND=ee((JyA,yee)=>{"use strict";var oxe=Zo(),nxe=(n,t,o)=>oxe(n,t,o)<=0;yee.exports=nxe});var cL=ee((qyA,mee)=>{"use strict";var sxe=sL(),gxe=gL(),cxe=PB(),Ixe=TD(),lxe=_D(),pxe=ND(),dxe=(n,t,o,i)=>{switch(t){case"===":return typeof n=="object"&&(n=n.version),typeof o=="object"&&(o=o.version),n===o;case"!==":return typeof n=="object"&&(n=n.version),typeof o=="object"&&(o=o.version),n!==o;case"":case"=":case"==":return sxe(n,o,i);case"!=":return gxe(n,o,i);case">":return cxe(n,o,i);case">=":return Ixe(n,o,i);case"<":return lxe(n,o,i);case"<=":return pxe(n,o,i);default:throw new TypeError(`Invalid operator: ${t}`)}};mee.exports=dxe});var wee=ee((zyA,See)=>{"use strict";var hxe=Ma(),Exe=tI(),{safeRe:RD,t:kD}=wh(),Cxe=(n,t)=>{if(n instanceof hxe)return n;if(typeof n=="number"&&(n=String(n)),typeof n!="string")return null;t=t||{};let o=null;if(!t.rtl)o=n.match(t.includePrerelease?RD[kD.COERCEFULL]:RD[kD.COERCE]);else{let s=t.includePrerelease?RD[kD.COERCERTLFULL]:RD[kD.COERCERTL],g;for(;(g=s.exec(n))&&(!o||o.index+o[0].length!==n.length);)(!o||g.index+g[0].length!==o.index+o[0].length)&&(o=g),s.lastIndex=g.index+g[1].length+g[2].length;s.lastIndex=-1}if(o===null)return null;let i=o[2],e=o[3]||"0",a=o[4]||"0",A=t.includePrerelease&&o[5]?`-${o[5]}`:"",r=t.includePrerelease&&o[6]?`+${o[6]}`:"";return Exe(`${i}.${e}.${a}${A}${r}`,t)};See.exports=Cxe});var Oee=ee((VyA,Dee)=>{"use strict";var uxe=tI(),Bxe=Sh(),fxe=Ma(),Qxe=(n,t,o)=>{if(!Bxe.RELEASE_TYPES.includes(t))return null;let i=yxe(n,o);return i&&mxe(i,t)},yxe=(n,t)=>{let o=n instanceof fxe?n.version:n;return uxe(o,t)},mxe=(n,t)=>{if(Sxe(t))return n.version;switch(n.prerelease=[],t){case"major":n.minor=0,n.patch=0;break;case"minor":n.patch=0;break}return n.format()},Sxe=n=>n.startsWith("pre");Dee.exports=Qxe});var Mee=ee((WyA,bee)=>{"use strict";var IL=class{constructor(){this.max=1e3,this.map=new Map}get(t){let o=this.map.get(t);if(o!==void 0)return this.map.delete(t),this.map.set(t,o),o}delete(t){return this.map.delete(t)}set(t,o){if(!this.delete(t)&&o!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(t,o)}return this}};bee.exports=IL});var Xo=ee((ZyA,Ree)=>{"use strict";var wxe=/\s+/g,lL=class n{constructor(t,o){if(o=Oxe(o),t instanceof n)return t.loose===!!o.loose&&t.includePrerelease===!!o.includePrerelease?t:new n(t.raw,o);if(t instanceof pL)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=o,this.loose=!!o.loose,this.includePrerelease=!!o.includePrerelease,this.raw=t.trim().replace(wxe," "),this.set=this.raw.split("||").map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(e=>!Tee(e[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&Pxe(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t0&&(this.formatted+="||");let o=this.set[t];for(let i=0;i0&&(this.formatted+=" "),this.formatted+=o[i].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){t=t.replace(vxe,"");let i=((this.options.includePrerelease&&Rxe)|(this.options.loose&&kxe))+":"+t,e=_ee.get(i);if(e)return e;let a=this.options.loose,A=a?hi[_a.HYPHENRANGELOOSE]:hi[_a.HYPHENRANGE];t=t.replace(A,qxe(this.options.includePrerelease)),qt("hyphen replace",t),t=t.replace(hi[_a.COMPARATORTRIM],_xe),qt("comparator trim",t),t=t.replace(hi[_a.TILDETRIM],Txe),qt("tilde trim",t),t=t.replace(hi[_a.CARETTRIM],Nxe),qt("caret trim",t);let r=t.split(" ").map(I=>Gxe(I,this.options)).join(" ").split(/\s+/).map(I=>Jxe(I,this.options));a&&(r=r.filter(I=>(qt("loose invalid filter",I,this.options),!!I.match(hi[_a.COMPARATORLOOSE])))),qt("range list",r);let s=new Map,g=r.map(I=>new pL(I,this.options));for(let I of g){if(Tee(I))return[I];s.set(I.value,I)}s.size>1&&s.has("")&&s.delete("");let c=[...s.values()];return _ee.set(i,c),c}intersects(t,o){if(!(t instanceof n))throw new TypeError("a Range is required");return this.set.some(i=>Nee(i,o)&&t.set.some(e=>Nee(e,o)&&i.every(a=>e.every(A=>a.intersects(A,o)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new bxe(t,this.options)}catch{return!1}for(let o=0;on.value==="<0.0.0-0",Pxe=n=>n.value==="",Nee=(n,t)=>{let o=!0,i=n.slice(),e=i.pop();for(;o&&i.length;)o=i.every(a=>e.intersects(a,t)),e=i.pop();return o},Gxe=(n,t)=>(n=n.replace(hi[_a.BUILD],""),qt("comp",n,t),n=Hxe(n,t),qt("caret",n),n=Lxe(n,t),qt("tildes",n),n=xxe(n,t),qt("xrange",n),n=jxe(n,t),qt("stars",n),n),Jr=n=>!n||n.toLowerCase()==="x"||n==="*",Fxe=(n,t,o)=>Jr(n)&&!Jr(t)||Jr(t)&&o&&!Jr(o),Lxe=(n,t)=>n.trim().split(/\s+/).map(o=>Uxe(o,t)).join(" "),Uxe=(n,t)=>{let o=t.loose?hi[_a.TILDELOOSE]:hi[_a.TILDE],i=t.includePrerelease?"-0":"";return n.replace(o,(e,a,A,r,s)=>{qt("tilde",n,e,a,A,r,s);let g;return Jr(a)?g="":Jr(A)?g=`>=${a}.0.0${i} <${+a+1}.0.0-0`:Jr(r)?g=`>=${a}.${A}.0${i} <${a}.${+A+1}.0-0`:s?(qt("replaceTilde pr",s),g=`>=${a}.${A}.${r}-${s} <${a}.${+A+1}.0-0`):g=`>=${a}.${A}.${r} <${a}.${+A+1}.0-0`,qt("tilde return",g),g})},Hxe=(n,t)=>n.trim().split(/\s+/).map(o=>Kxe(o,t)).join(" "),Kxe=(n,t)=>{qt("caret",n,t);let o=t.loose?hi[_a.CARETLOOSE]:hi[_a.CARET],i=t.includePrerelease?"-0":"";return n.replace(o,(e,a,A,r,s)=>{qt("caret",n,e,a,A,r,s);let g;return Jr(a)?g="":Jr(A)?g=`>=${a}.0.0${i} <${+a+1}.0.0-0`:Jr(r)?a==="0"?g=`>=${a}.${A}.0${i} <${a}.${+A+1}.0-0`:g=`>=${a}.${A}.0${i} <${+a+1}.0.0-0`:s?(qt("replaceCaret pr",s),a==="0"?A==="0"?g=`>=${a}.${A}.${r}-${s} <${a}.${A}.${+r+1}-0`:g=`>=${a}.${A}.${r}-${s} <${a}.${+A+1}.0-0`:g=`>=${a}.${A}.${r}-${s} <${+a+1}.0.0-0`):(qt("no pr"),a==="0"?A==="0"?g=`>=${a}.${A}.${r} <${a}.${A}.${+r+1}-0`:g=`>=${a}.${A}.${r} <${a}.${+A+1}.0-0`:g=`>=${a}.${A}.${r} <${+a+1}.0.0-0`),qt("caret return",g),g})},xxe=(n,t)=>(qt("replaceXRanges",n,t),n.split(/\s+/).map(o=>Yxe(o,t)).join(" ")),Yxe=(n,t)=>{n=n.trim();let o=t.loose?hi[_a.XRANGELOOSE]:hi[_a.XRANGE];return n.replace(o,(i,e,a,A,r,s)=>{if(qt("xRange",n,i,e,a,A,r,s),Fxe(a,A,r))return n;let g=Jr(a),c=g||Jr(A),I=c||Jr(r),d=I;return e==="="&&d&&(e=""),s=t.includePrerelease?"-0":"",g?e===">"||e==="<"?i="<0.0.0-0":i="*":e&&d?(c&&(A=0),r=0,e===">"?(e=">=",c?(a=+a+1,A=0,r=0):(A=+A+1,r=0)):e==="<="&&(e="<",c?a=+a+1:A=+A+1),e==="<"&&(s="-0"),i=`${e+a}.${A}.${r}${s}`):c?i=`>=${a}.0.0${s} <${+a+1}.0.0-0`:I&&(i=`>=${a}.${A}.0${s} <${a}.${+A+1}.0-0`),qt("xRange return",i),i})},jxe=(n,t)=>(qt("replaceStars",n,t),n.trim().replace(hi[_a.STAR],"")),Jxe=(n,t)=>(qt("replaceGTE0",n,t),n.trim().replace(hi[t.includePrerelease?_a.GTE0PRE:_a.GTE0],"")),qxe=n=>(t,o,i,e,a,A,r,s,g,c,I,d)=>(Jr(i)?o="":Jr(e)?o=`>=${i}.0.0${n?"-0":""}`:Jr(a)?o=`>=${i}.${e}.0${n?"-0":""}`:A?o=`>=${o}`:o=`>=${o}${n?"-0":""}`,Jr(g)?s="":Jr(c)?s=`<${+g+1}.0.0-0`:Jr(I)?s=`<${g}.${+c+1}.0-0`:d?s=`<=${g}.${c}.${I}-${d}`:n?s=`<${g}.${c}.${+I+1}-0`:s=`<=${s}`,`${o} ${s}`.trim()),zxe=(n,t,o)=>{for(let i=0;i0){let e=n[i].semver;if(e.major===t.major&&e.minor===t.minor&&e.patch===t.patch)return!0}return!1}return!0}});var GB=ee((XyA,Lee)=>{"use strict";var FB=Symbol("SemVer ANY"),EL=class n{static get ANY(){return FB}constructor(t,o){if(o=kee(o),t instanceof n){if(t.loose===!!o.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),hL("comparator",t,o),this.options=o,this.loose=!!o.loose,this.parse(t),this.semver===FB?this.value="":this.value=this.operator+this.semver.version,hL("comp",this)}parse(t){let o=this.options.loose?vee[Pee.COMPARATORLOOSE]:vee[Pee.COMPARATOR],i=t.match(o);if(!i)throw new TypeError(`Invalid comparator: ${t}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new Gee(i[2],this.options.loose):this.semver=FB}toString(){return this.value}test(t){if(hL("Comparator.test",t,this.options.loose),this.semver===FB||t===FB)return!0;if(typeof t=="string")try{t=new Gee(t,this.options)}catch{return!1}return dL(t,this.operator,this.semver,this.options)}intersects(t,o){if(!(t instanceof n))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Fee(t.value,o).test(this.value):t.operator===""?t.value===""?!0:new Fee(this.value,o).test(t.semver):(o=kee(o),o.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!o.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||dL(this.semver,"<",t.semver,o)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||dL(this.semver,">",t.semver,o)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Lee.exports=EL;var kee=SD(),{safeRe:vee,t:Pee}=wh(),dL=cL(),hL=vB(),Gee=Ma(),Fee=Xo()});var LB=ee(($yA,Uee)=>{"use strict";var Vxe=Xo(),Wxe=(n,t,o)=>{try{t=new Vxe(t,o)}catch{return!1}return t.test(n)};Uee.exports=Wxe});var Kee=ee((emA,Hee)=>{"use strict";var Zxe=Xo(),Xxe=(n,t)=>new Zxe(n,t).set.map(o=>o.map(i=>i.value).join(" ").trim().split(" "));Hee.exports=Xxe});var Yee=ee((AmA,xee)=>{"use strict";var $xe=Ma(),eYe=Xo(),AYe=(n,t,o)=>{let i=null,e=null,a=null;try{a=new eYe(t,o)}catch{return null}return n.forEach(A=>{a.test(A)&&(!i||e.compare(A)===-1)&&(i=A,e=new $xe(i,o))}),i};xee.exports=AYe});var Jee=ee((tmA,jee)=>{"use strict";var tYe=Ma(),rYe=Xo(),aYe=(n,t,o)=>{let i=null,e=null,a=null;try{a=new rYe(t,o)}catch{return null}return n.forEach(A=>{a.test(A)&&(!i||e.compare(A)===1)&&(i=A,e=new tYe(i,o))}),i};jee.exports=aYe});var Vee=ee((rmA,zee)=>{"use strict";var CL=Ma(),iYe=Xo(),qee=PB(),oYe=(n,t)=>{n=new iYe(n,t);let o=new CL("0.0.0");if(n.test(o)||(o=new CL("0.0.0-0"),n.test(o)))return o;o=null;for(let i=0;i{let r=new CL(A.semver.version);switch(A.operator){case">":r.prerelease.length===0?r.patch++:r.prerelease.push(0),r.raw=r.format();case"":case">=":(!a||qee(r,a))&&(a=r);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${A.operator}`)}}),a&&(!o||qee(o,a))&&(o=a)}return o&&n.test(o)?o:null};zee.exports=oYe});var Zee=ee((amA,Wee)=>{"use strict";var nYe=Xo(),sYe=(n,t)=>{try{return new nYe(n,t).range||"*"}catch{return null}};Wee.exports=sYe});var vD=ee((imA,AAe)=>{"use strict";var gYe=Ma(),eAe=GB(),{ANY:cYe}=eAe,IYe=Xo(),lYe=LB(),Xee=PB(),$ee=_D(),pYe=ND(),dYe=TD(),hYe=(n,t,o,i)=>{n=new gYe(n,i),t=new IYe(t,i);let e,a,A,r,s;switch(o){case">":e=Xee,a=pYe,A=$ee,r=">",s=">=";break;case"<":e=$ee,a=dYe,A=Xee,r="<",s="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(lYe(n,t,i))return!1;for(let g=0;g{B.semver===cYe&&(B=new eAe(">=0.0.0")),I=I||B,d=d||B,e(B.semver,I.semver,i)?I=B:A(B.semver,d.semver,i)&&(d=B)}),I.operator===r||I.operator===s||(!d.operator||d.operator===r)&&a(n,d.semver))return!1;if(d.operator===s&&A(n,d.semver))return!1}return!0};AAe.exports=hYe});var rAe=ee((omA,tAe)=>{"use strict";var EYe=vD(),CYe=(n,t,o)=>EYe(n,t,">",o);tAe.exports=CYe});var iAe=ee((nmA,aAe)=>{"use strict";var uYe=vD(),BYe=(n,t,o)=>uYe(n,t,"<",o);aAe.exports=BYe});var sAe=ee((smA,nAe)=>{"use strict";var oAe=Xo(),fYe=(n,t,o)=>(n=new oAe(n,o),t=new oAe(t,o),n.intersects(t,o));nAe.exports=fYe});var cAe=ee((gmA,gAe)=>{"use strict";var QYe=LB(),yYe=Zo();gAe.exports=(n,t,o)=>{let i=[],e=null,a=null,A=n.sort((c,I)=>yYe(c,I,o));for(let c of A)QYe(c,t,o)?(a=c,e||(e=c)):(a&&i.push([e,a]),a=null,e=null);e&&i.push([e,null]);let r=[];for(let[c,I]of i)c===I?r.push(c):!I&&c===A[0]?r.push("*"):I?c===A[0]?r.push(`<=${I}`):r.push(`${c} - ${I}`):r.push(`>=${c}`);let s=r.join(" || "),g=typeof t.raw=="string"?t.raw:String(t);return s.length{"use strict";var IAe=Xo(),fL=GB(),{ANY:uL}=fL,BL=LB(),QL=Zo(),mYe=(n,t,o={})=>{if(n===t)return!0;n=new IAe(n,o),t=new IAe(t,o);let i=!1;e:for(let e of n.set){for(let a of t.set){let A=wYe(e,a,o);if(i=i||A!==null,A)continue e}if(i)return!1}return!0},SYe=[new fL(">=0.0.0-0")],lAe=[new fL(">=0.0.0")],wYe=(n,t,o)=>{if(n===t)return!0;if(n.length===1&&n[0].semver===uL){if(t.length===1&&t[0].semver===uL)return!0;o.includePrerelease?n=SYe:n=lAe}if(t.length===1&&t[0].semver===uL){if(o.includePrerelease)return!0;t=lAe}let i=new Set,e,a;for(let B of n)B.operator===">"||B.operator===">="?e=pAe(e,B,o):B.operator==="<"||B.operator==="<="?a=dAe(a,B,o):i.add(B.semver);if(i.size>1)return null;let A;if(e&&a){if(A=QL(e.semver,a.semver,o),A>0)return null;if(A===0&&(e.operator!==">="||a.operator!=="<="))return null}for(let B of i){if(e&&!BL(B,String(e),o)||a&&!BL(B,String(a),o))return null;for(let f of t)if(!BL(B,String(f),o))return!1;return!0}let r,s,g,c,I=a&&!o.includePrerelease&&a.semver.prerelease.length?a.semver:!1,d=e&&!o.includePrerelease&&e.semver.prerelease.length?e.semver:!1;I&&I.prerelease.length===1&&a.operator==="<"&&I.prerelease[0]===0&&(I=!1);for(let B of t){if(c=c||B.operator===">"||B.operator===">=",g=g||B.operator==="<"||B.operator==="<=",e){if(d&&B.semver.prerelease&&B.semver.prerelease.length&&B.semver.major===d.major&&B.semver.minor===d.minor&&B.semver.patch===d.patch&&(d=!1),B.operator===">"||B.operator===">="){if(r=pAe(e,B,o),r===B&&r!==e)return!1}else if(e.operator===">="&&!B.test(e.semver))return!1}if(a){if(I&&B.semver.prerelease&&B.semver.prerelease.length&&B.semver.major===I.major&&B.semver.minor===I.minor&&B.semver.patch===I.patch&&(I=!1),B.operator==="<"||B.operator==="<="){if(s=dAe(a,B,o),s===B&&s!==a)return!1}else if(a.operator==="<="&&!B.test(a.semver))return!1}if(!B.operator&&(a||e)&&A!==0)return!1}return!(e&&g&&!a&&A!==0||a&&c&&!e&&A!==0||d||I)},pAe=(n,t,o)=>{if(!n)return t;let i=QL(n.semver,t.semver,o);return i>0?n:i<0||t.operator===">"&&n.operator===">="?t:n},dAe=(n,t,o)=>{if(!n)return t;let i=QL(n.semver,t.semver,o);return i<0?n:i>0||t.operator==="<"&&n.operator==="<="?t:n};hAe.exports=mYe});var PD=ee((ImA,BAe)=>{"use strict";var yL=wh(),CAe=Sh(),DYe=Ma(),uAe=iL(),OYe=tI(),bYe=K$(),MYe=Y$(),_Ye=q$(),TYe=W$(),NYe=X$(),RYe=eee(),kYe=tee(),vYe=aee(),PYe=Zo(),GYe=see(),FYe=cee(),LYe=MD(),UYe=dee(),HYe=Eee(),KYe=PB(),xYe=_D(),YYe=sL(),jYe=gL(),JYe=TD(),qYe=ND(),zYe=cL(),VYe=wee(),WYe=Oee(),ZYe=GB(),XYe=Xo(),$Ye=LB(),e1e=Kee(),A1e=Yee(),t1e=Jee(),r1e=Vee(),a1e=Zee(),i1e=vD(),o1e=rAe(),n1e=iAe(),s1e=sAe(),g1e=cAe(),c1e=EAe();BAe.exports={parse:OYe,valid:bYe,clean:MYe,inc:_Ye,diff:TYe,major:NYe,minor:RYe,patch:kYe,prerelease:vYe,compare:PYe,rcompare:GYe,compareLoose:FYe,compareBuild:LYe,sort:UYe,rsort:HYe,gt:KYe,lt:xYe,eq:YYe,neq:jYe,gte:JYe,lte:qYe,cmp:zYe,coerce:VYe,truncate:WYe,Comparator:ZYe,Range:XYe,satisfies:$Ye,toComparators:e1e,maxSatisfying:A1e,minSatisfying:t1e,minVersion:r1e,validRange:a1e,outside:i1e,gtr:o1e,ltr:n1e,intersects:s1e,simplifyRange:g1e,subset:c1e,SemVer:DYe,re:yL.re,src:yL.src,tokens:yL.t,SEMVER_SPEC_VERSION:CAe.SEMVER_SPEC_VERSION,RELEASE_TYPES:CAe.RELEASE_TYPES,compareIdentifiers:uAe.compareIdentifiers,rcompareIdentifiers:uAe.rcompareIdentifiers}});var Yg,GD=ue(()=>{Yg={name:"sharp",description:"High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images",version:"0.35.3",author:"Lovell Fuller ",homepage:"https://sharp.pixelplumbing.com",contributors:["Pierre Inglebert ","Jonathan Ong ","Chanon Sajjamanochai ","Juliano Julio ","Daniel Gasienica ","Julian Walker ","Amit Pitaru ","Brandon Aaron ","Andreas Lind ","Maurus Cuelenaere ","Linus Unneb\xE4ck ","Victor Mateevitsi ","Alaric Holloway ","Bernhard K. Weisshuhn ","Chris Riley ","David Carley ","John Tobin ","Kenton Gray ","Felix B\xFCnemann ","Samy Al Zahrani ","Chintan Thakkar ","F. Orlando Galashan ","Kleis Auke Wolthuizen ","Matt Hirsch ","Matthias Thoemmes ","Patrick Paskaris ","J\xE9r\xE9my Lal ","Rahul Nanwani ","Alice Monday ","Kristo Jorgenson ","YvesBos ","Guy Maliar ","Nicolas Coden ","Matt Parrish ","Marcel Bretschneider ","Matthew McEachen ","Jarda Kot\u011B\u0161ovec ","Kenric D'Souza ","Oleh Aleinyk ","Marcel Bretschneider ","Andrea Bianco ","Rik Heywood ","Thomas Parisot ","Nathan Graves ","Tom Lokhorst ","Espen Hovlandsdal ","Sylvain Dumont ","Alun Davies ","Aidan Hoolachan ","Axel Eirola ","Freezy ","Daiz ","Julian Aubourg ","Keith Belovay ","Michael B. Klein ","Jordan Prudhomme ","Ilya Ovdin ","Andargor ","Paul Neave ","Brendan Kennedy ","Brychan Bennett-Odlum ","Edward Silverton ","Roman Malieiev ","Tomas Szabo ","Robert O'Rourke ","Guillermo Alfonso Varela Chouci\xF1o ","Christian Flintrup ","Manan Jadhav ","Leon Radley ","alza54 ","Jacob Smith ","Michael Nutt ","Brad Parham ","Taneli Vatanen ","Joris Dugu\xE9 ","Chris Banks ","Ompal Singh ","Brodan ","Ankur Parihar ","Brahim Ait elhaj ","Mart Jansink ","Lachlan Newman ","Dennis Beatty ","Ingvar Stepanyan ","Don Denton ","Dmytro Tiapukhin ","Florian Lefebvre "],scripts:{build:"node install/build.js","build:dist":"node scripts/build.mjs",clean:"rm -rf src/build/ test/fixtures/output.*",test:"npm run lint && npm run test-unit",lint:"npm run lint-cpp && npm run lint-js && npm run lint-types && npm run lint-publish","lint-cpp":"cpplint --quiet src/*.h src/*.cc","lint-js":"biome lint","lint-publish":"publint --strict","lint-types":"tsd --files ./test/types/sharp.test-d.{cts,mts}","test-leak":"./test/leak/leak.sh","test-unit":"node --experimental-test-coverage test/unit.mjs","package-from-local-build":"node npm/from-local-build.js","package-wasm-wrappers":"node npm/wasm-wrappers.js","package-release-notes":"node npm/release-notes.js","docs-build":"node docs/build.mjs","docs-serve":"cd docs && npm start","docs-publish":"cd docs && npm run build && npx firebase-tools deploy --project pixelplumbing --only hosting:pixelplumbing-sharp"},type:"commonjs",files:["dist","install","lib/index.d.ts","src/*.{cc,h,gyp}"],main:"./dist/index.cjs",module:"./dist/index.mjs",types:"./dist/index.d.mts",exports:{".":{import:{types:"./dist/index.d.mts",default:"./dist/index.mjs"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"}}},sideEffects:!0,repository:{type:"git",url:"git+https://github.com/lovell/sharp.git"},keywords:["jpeg","png","webp","avif","tiff","gif","svg","jp2","dzi","image","resize","thumbnail","crop","embed","libvips","vips"],dependencies:{"@img/colour":"^1.1.0","detect-libc":"^2.1.2",semver:"^7.8.5"},optionalDependencies:{"@img/sharp-darwin-arm64":"0.35.3","@img/sharp-darwin-x64":"0.35.3","@img/sharp-freebsd-wasm32":"0.35.3","@img/sharp-libvips-darwin-arm64":"1.3.2","@img/sharp-libvips-darwin-x64":"1.3.2","@img/sharp-libvips-linux-arm":"1.3.2","@img/sharp-libvips-linux-arm64":"1.3.2","@img/sharp-libvips-linux-ppc64":"1.3.2","@img/sharp-libvips-linux-riscv64":"1.3.2","@img/sharp-libvips-linux-s390x":"1.3.2","@img/sharp-libvips-linux-x64":"1.3.2","@img/sharp-libvips-linuxmusl-arm64":"1.3.2","@img/sharp-libvips-linuxmusl-x64":"1.3.2","@img/sharp-linux-arm":"0.35.3","@img/sharp-linux-arm64":"0.35.3","@img/sharp-linux-ppc64":"0.35.3","@img/sharp-linux-riscv64":"0.35.3","@img/sharp-linux-s390x":"0.35.3","@img/sharp-linux-x64":"0.35.3","@img/sharp-linuxmusl-arm64":"0.35.3","@img/sharp-linuxmusl-x64":"0.35.3","@img/sharp-webcontainers-wasm32":"0.35.3","@img/sharp-win32-arm64":"0.35.3","@img/sharp-win32-ia32":"0.35.3","@img/sharp-win32-x64":"0.35.3"},peerDependenciesMeta:{"@types/node":{optional:!0}},devDependencies:{"@biomejs/biome":"^2.5.1","@cpplint/cli":"^0.1.0","@emnapi/runtime":"^1.11.1","@img/sharp-libvips-dev":"1.3.2","@img/sharp-libvips-dev-wasm32":"1.3.2","@img/sharp-libvips-win32-arm64":"1.3.2","@img/sharp-libvips-win32-ia32":"1.3.2","@img/sharp-libvips-win32-x64":"1.3.2","@types/node":"*",emnapi:"^1.11.1","exif-reader":"^2.0.3","extract-zip":"^2.0.1",icc:"^4.0.0","node-addon-api":"^8.9.0","node-gyp":"^12.4.0",publint:"^0.3.21","tar-fs":"^3.1.3",tsd:"^0.33.0"},license:"Apache-2.0",engines:{node:">=20.9.0"},config:{libvips:">=8.18.3"},funding:{url:"https://opencollective.com/libvips"}}});import{spawnSync as UB}from"node:child_process";import{createHash as l1e}from"node:crypto";var HB,SL,p1e,QAe,d1e,wL,h1e,yAe,E1e,Dh,C1e,u1e,B1e,f1e,mAe,Q1e,fAe,y1e,m1e,SAe,S1e,w1e,wAe,mL,D1e,FD,DL=ue(()=>{HB=qe(PD(),1),SL=qe(mD(),1);GD();p1e=process.env.npm_package_config_libvips||Yg.config.libvips,QAe=HB.default.coerce(p1e).version,d1e=["darwin-arm64","darwin-x64","freebsd-arm64","freebsd-x64","linux-arm","linux-arm64","linux-ppc64","linux-riscv64","linux-s390x","linux-wasm32","linux-x64","linuxmusl-arm64","linuxmusl-x64","win32-arm64","win32-ia32","win32-x64"],wL={encoding:"utf8",shell:!0},h1e=n=>{n instanceof Error?console.error(`sharp: Installation error: ${n.message}`):console.log(`sharp: ${n}`)},yAe=()=>SL.default.isNonGlibcLinuxSync()?SL.default.familySync():"",E1e=()=>`${process.platform}${yAe()}-${process.arch}`,Dh=()=>{if(mAe())return"wasm32";let{npm_config_arch:n,npm_config_platform:t,npm_config_libc:o}=process.env,i=typeof o=="string"?o:yAe();return`${t||process.platform}${i}-${n||process.arch}`},C1e=()=>{try{return $e(`@img/sharp-libvips-dev-${Dh()}/include`)}catch{try{return $e("@img/sharp-libvips-dev/include")}catch{}}return""},u1e=()=>{try{return $e("@img/sharp-libvips-dev/cplusplus")}catch{}return""},B1e=()=>{try{return $e(`@img/sharp-libvips-dev-${Dh()}/lib`)}catch{try{return $e(`@img/sharp-libvips-${Dh()}/lib`)}catch{}}return""},f1e=()=>{if(process.release?.name==="node"&&process.versions&&!HB.default.satisfies(process.versions.node,Yg.engines.node))return{found:process.versions.node,expected:Yg.engines.node}},mAe=()=>{let{CC:n}=process.env;return!!n?.endsWith("/emcc")},Q1e=()=>process.platform==="darwin"&&process.arch==="x64"?(UB("sysctl sysctl.proc_translated",wL).stdout||"").trim()==="sysctl.proc_translated: 1":!1,fAe=n=>l1e("sha512").update(n).digest("hex"),y1e=()=>{try{let n=fAe(`imgsharp-libvips-${Dh()}`),t=HB.default.coerce(Yg.optionalDependencies[`@img/sharp-libvips-${Dh()}`],{includePrerelease:!0}).version;return fAe(`${n}npm:${t}`).slice(0,10)}catch{}return""},m1e=()=>UB(`node-gyp rebuild --directory=src ${mAe()?"--nodedir=emscripten":""}`,{...wL,stdio:"inherit"}).status,SAe=()=>process.platform!=="win32"?(UB("pkg-config --modversion vips-cpp",{...wL,env:{...process.env,PKG_CONFIG_PATH:wAe()}}).stdout||"").trim():"",S1e=()=>{try{let n=(UB("brew",["--prefix"],{encoding:"utf8"}).stdout||"").trim();if(n)return`${n}/lib/pkgconfig`}catch{}},w1e=()=>{try{let n=(UB("pkg-config",["--variable","pc_path","pkg-config"],{encoding:"utf8"}).stdout||"").trim();if(n)return n}catch{}},wAe=()=>process.platform!=="win32"?[S1e(),w1e(),process.env.PKG_CONFIG_PATH].filter(Boolean).join(":"):"",mL=(n,t,o)=>(o&&o(`Detected ${t}, skipping search for globally-installed libvips`),n),D1e=n=>{if(process.env.SHARP_IGNORE_GLOBAL_LIBVIPS)return mL(!1,"SHARP_IGNORE_GLOBAL_LIBVIPS",n);if(process.env.SHARP_FORCE_GLOBAL_LIBVIPS)return mL(!0,"SHARP_FORCE_GLOBAL_LIBVIPS",n);if(Q1e())return mL(!1,"Rosetta",n);let t=SAe();return!!t&&HB.default.gte(t,QAe)},FD={minimumLibvipsVersion:QAe,prebuiltPlatforms:d1e,buildPlatformArch:Dh,buildSharpLibvipsIncludeDir:C1e,buildSharpLibvipsCPlusPlusDir:u1e,buildSharpLibvipsLibDir:B1e,isUnsupportedNodeRuntime:f1e,runtimePlatformArch:E1e,log:h1e,yarnLocator:y1e,spawnRebuild:m1e,globalLibvipsVersion:SAe,pkgConfigPath:wAe,useGlobalLibvips:D1e}});import{createRequire as O1e}from"node:module";var LD,qr,OAe,b1e,DAe,M1e,_1e,jg,Ut,rI,St,KB=ue(()=>{LD=qe(mD(),1);DL();GD();qr=O1e(import.meta.url),{version:OAe}=Yg,{runtimePlatformArch:b1e,isUnsupportedNodeRuntime:DAe,prebuiltPlatforms:M1e,minimumLibvipsVersion:_1e}=FD,jg=b1e(),rI=[];try{Ut=qr(`../src/build/Release/sharp-${jg}-${OAe}.node`)}catch(n){rI.push(n)}if(!Ut)try{Ut=qr(`../src/build/Release/sharp-wasm32-${OAe}.node`)}catch(n){rI.push(n)}if(!Ut)try{switch(jg){case"darwin-arm64":Ut=qr("@img/sharp-darwin-arm64/sharp.node");break;case"darwin-x64":Ut=qr("@img/sharp-darwin-x64/sharp.node");break;case"linux-arm":Ut=qr("@img/sharp-linux-arm/sharp.node");break;case"linux-arm64":Ut=qr("@img/sharp-linux-arm64/sharp.node");break;case"linux-ppc64":Ut=qr("@img/sharp-linux-ppc64/sharp.node");break;case"linux-riscv64":Ut=qr("@img/sharp-linux-riscv64/sharp.node");break;case"linux-s390x":Ut=qr("@img/sharp-linux-s390x/sharp.node");break;case"linux-x64":Ut=qr("@img/sharp-linux-x64/sharp.node");break;case"linuxmusl-arm64":Ut=qr("@img/sharp-linuxmusl-arm64/sharp.node");break;case"linuxmusl-x64":Ut=qr("@img/sharp-linuxmusl-x64/sharp.node");break;case"win32-arm64":Ut=qr("@img/sharp-win32-arm64/sharp.node");break;case"win32-ia32":Ut=qr("@img/sharp-win32-ia32/sharp.node");break;case"win32-x64":Ut=qr("@img/sharp-win32-x64/sharp.node");break;case"freebsd-arm64":case"freebsd-x64":Ut=qr("@img/sharp-freebsd-wasm32/sharp.node");break;case"linux-wasm32":Ut=qr("@img/sharp-webcontainers-wasm32/sharp.node");break}if(Ut&&["linux-x64","linuxmusl-x64"].includes(jg)&&!Ut._isUsingX64V2()){let n=new Error("Prebuilt binaries for Linux x64 require v2 microarchitecture");n.code="Unsupported CPU",rI.push(n),Ut=null}Ut&&process.versions.electron&&jg.startsWith("linux")&&process.emitWarning("Binaries provided by Electron for use on Linux may be incompatible with sharp - see https://sharp.pixelplumbing.com/install#electron-and-linux",{code:"SharpElectronLinux"})}catch(n){rI.push(n)}if(!Ut)try{Ut=qr("@img/sharp-wasm32/sharp.node")}catch(n){rI.push(n)}if(!Ut){let[n,t,o]=["linux","darwin","win32"].map(a=>jg.startsWith(a)),i=[`Could not load the "sharp" module using the ${jg} runtime`];rI.forEach(a=>{a.code.endsWith("MODULE_NOT_FOUND")||i.push(`${a.code}: ${a.message}`)});let e=rI.map(a=>a.message).join(" ");if(i.push("Possible solutions:"),DAe()){let{found:a,expected:A}=DAe();i.push("- Please upgrade Node.js:",` Found ${a}`,` Requires ${A}`)}else if(M1e.includes(jg)){let[a,A]=jg.split("-"),r=a.endsWith("musl")?" --libc=musl":"";i.push("- Ensure optional dependencies can be installed:"," npm install --include=optional sharp","- Ensure your package manager supports multi-platform installation:"," See https://sharp.pixelplumbing.com/install#cross-platform","- Add platform-specific dependencies:",` npm install --os=${a.replace("musl","")}${r} --cpu=${A} sharp`)}else i.push(`- Manually install libvips >= ${_1e}`," See https://sharp.pixelplumbing.com/install#building-from-source","- Add WebAssembly-based dependencies:"," npm install sharp @img/sharp-wasm32");if(n&&/(symbol not found|CXXABI_)/i.test(e))try{let{config:a}=qr(`@img/sharp-libvips-${jg}/package`),A=`${(0,LD.familySync)()} ${(0,LD.versionSync)()}`,r=`${a.musl?"musl":"glibc"} ${a.musl||a.glibc}`;i.push("- Update your OS:",` Found ${A}`,` Requires ${r}`)}catch{}throw n&&/\/snap\/core[0-9]{2}/.test(e)&&i.push("- Remove the Node.js Snap, which does not support native modules"," snap remove node"),t&&/Incompatible library version/.test(e)&&i.push("- Update Homebrew:"," brew update && brew upgrade vips"),rI.some(a=>a.code==="ERR_DLOPEN_DISABLED")&&i.push("- Run Node.js without using the --no-addons flag"),o&&/The specified procedure could not be found/.test(e)&&i.push("- Using the canvas package on Windows?"," See https://sharp.pixelplumbing.com/install#canvas-and-windows","- Check for outdated versions of sharp in the dependency tree:"," npm ls sharp"),i.push("- Consult the installation documentation:"," See https://sharp.pixelplumbing.com/install"),new Error(i.join(` +Check the top-level render call using <`+he+">.")}return te}function kK(H,te){if(!(!H._store||H._store.validated||H.key!=null)){H._store.validated=!0;var he=KIe(te);if(!RK[he]){RK[he]=!0;var Se="";H&&H._owner&&H._owner!==R.current&&(Se=" It was passed a child from "+Be(H._owner.type)+"."),mp(H),k('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',he,Se),mp(null)}}}function vK(H,te){if(typeof H=="object"){if(je(H))for(var he=0;he",ze=" Did you accidentally export a JSX literal instead of a component?"):CA=typeof H,k("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",CA,ze)}var xA=ye.apply(this,arguments);if(xA==null)return xA;if(Se)for(var pt=2;pt10&&N("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."),Se._updatedFibers.clear()}}}var LK=!1,cQ=null;function qIe(H){if(cQ===null)try{var te=("require"+Math.random()).slice(0,7),he=TS&&TS[te];cQ=he.call(TS,"timers").setImmediate}catch{cQ=function(ze){LK===!1&&(LK=!0,typeof MessageChannel>"u"&&k("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var TA=new MessageChannel;TA.port1.onmessage=ze,TA.port2.postMessage(void 0)}}return cQ(H)}var Sp=0,UK=!1;function HK(H){{var te=Sp;Sp++,T.current===null&&(T.current=[]);var he=T.isBatchingLegacy,Se;try{if(T.isBatchingLegacy=!0,Se=H(),!he&&T.didScheduleLegacyUpdate){var ze=T.current;ze!==null&&(T.didScheduleLegacyUpdate=!1,PM(ze))}}catch(ir){throw IQ(te),ir}finally{T.isBatchingLegacy=he}if(Se!==null&&typeof Se=="object"&&typeof Se.then=="function"){var TA=Se,CA=!1,xA={then:function(ir,_r){CA=!0,TA.then(function(Ca){IQ(te),Sp===0?kM(Ca,ir,_r):ir(Ca)},function(Ca){IQ(te),_r(Ca)})}};return!UK&&typeof Promise<"u"&&Promise.resolve().then(function(){}).then(function(){CA||(UK=!0,k("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),xA}else{var pt=Se;if(IQ(te),Sp===0){var Gt=T.current;Gt!==null&&(PM(Gt),T.current=null);var Vt={then:function(ir,_r){T.current===null?(T.current=[],kM(pt,ir,_r)):ir(pt)}};return Vt}else{var Wt={then:function(ir,_r){ir(pt)}};return Wt}}}}function IQ(H){H!==Sp-1&&k("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),Sp=H}function kM(H,te,he){{var Se=T.current;if(Se!==null)try{PM(Se),qIe(function(){Se.length===0?(T.current=null,te(H)):kM(H,te,he)})}catch(ze){he(ze)}else te(H)}}var vM=!1;function PM(H){if(!vM){vM=!0;var te=0;try{for(;te{"use strict";process.env.NODE_ENV==="production"?vP.exports=c5():vP.exports=I5()});var Nl=ee((lfA,B9)=>{"use strict";var Lw=$e("crypto"),j2e=$e("assert");function zo(n){if(!(n instanceof Buffer))throw TypeError(`Expected Buffer instead of: ${n.constructor.name}`);return n}function J2e(n,t,o){zo(n),zo(t),zo(o);let i=Lw.createCipheriv("aes-256-cbc",n,o);return Buffer.concat([i.update(t),i.final()])}function q2e(n,t,o){zo(n),zo(t),zo(o);let i=Lw.createDecipheriv("aes-256-cbc",n,o);return Buffer.concat([i.update(t),i.final()])}function ih(n,t){zo(n),zo(t);let o=Lw.createHmac("sha256",n);return o.update(t),Buffer.from(o.digest())}function z2e(n){zo(n);let t=Lw.createHash("sha512");return t.update(n),t.digest()}function V2e(n,t,o,i){if(zo(n),zo(t),zo(o),t.byteLength!=32)throw new Error("Got salt of incorrect length");i=i||3,j2e(i>=1&&i<=3);let e=ih(t,n),a=new Uint8Array(o.byteLength+1+32);a.set(o,32),a[a.length-1]=1;let A=[ih(e,Buffer.from(a.slice(32)))];return i>1&&(a.set(A[A.length-1]),a[a.length-1]=2,A.push(ih(e,Buffer.from(a)))),i>2&&(a.set(A[A.length-1]),a[a.length-1]=3,A.push(ih(e,Buffer.from(a)))),A}function W2e(n,t,o,i){let e=ih(t,n).slice(0,i);if(o.length!==i||e.length!==i)throw new Error("Bad MAC length");if(!o.equals(e))throw new Error("Bad MAC")}B9.exports={deriveSecrets:V2e,decrypt:q2e,encrypt:J2e,hash:z2e,calculateMAC:ih,verifyMAC:W2e}});var R9=ee(kg=>{"use strict";Object.defineProperty(kg,"__esModule",{value:!0});var pfA=new Uint8Array(16),O9=new Uint8Array(32);O9[0]=9;function dA(n){var t,o=new Float64Array(16);if(n)for(t=0;t>24&255,n[t+1]=o>>16&255,n[t+2]=o>>8&255,n[t+3]=o&255,n[t+4]=i>>24&255,n[t+5]=i>>16&255,n[t+6]=i>>8&255,n[t+7]=i&255}function AUe(n,t,o,i,e){var a,A=0;for(a=0;a>>8)-1}function b9(n,t,o,i){return AUe(n,t,o,i,32)}function Hc(n,t){var o;for(o=0;o<16;o++)n[o]=t[o]|0}function gF(n){var t,o,i=1;for(t=0;t<16;t++)o=n[t]+i+65535,i=Math.floor(o/65536),n[t]=o-i*65536;n[0]+=i-1+37*(i-1)}function oh(n,t,o){for(var i,e=~(o-1),a=0;a<16;a++)i=e&(n[a]^t[a]),n[a]^=i,t[a]^=i}function sh(n,t){var o,i,e,a=dA(),A=dA();for(o=0;o<16;o++)A[o]=t[o];for(gF(A),gF(A),gF(A),i=0;i<2;i++){for(a[0]=A[0]-65517,o=1;o<15;o++)a[o]=A[o]-65535-(a[o-1]>>16&1),a[o-1]&=65535;a[15]=A[15]-32767-(a[14]>>16&1),e=a[15]>>16&1,a[14]&=65535,oh(A,a,1-e)}for(o=0;o<16;o++)n[2*o]=A[o]&255,n[2*o+1]=A[o]>>8}function m9(n,t){var o=new Uint8Array(32),i=new Uint8Array(32);return sh(o,n),sh(i,t),b9(o,0,i,0)}function M9(n){var t=new Uint8Array(32);return sh(t,n),t[0]&1}function dF(n,t){var o;for(o=0;o<16;o++)n[o]=t[2*o]+(t[2*o+1]<<8);n[15]&=32767}function Rn(n,t,o){for(var i=0;i<16;i++)n[i]=t[i]+o[i]}function vn(n,t,o){for(var i=0;i<16;i++)n[i]=t[i]-o[i]}function It(n,t,o){var i,e,a=0,A=0,r=0,s=0,g=0,c=0,I=0,d=0,B=0,f=0,Q=0,y=0,m=0,_=0,T=0,R=0,K=0,L=0,U=0,z=0,q=0,x=0,G=0,V=0,F=0,N=0,k=0,J=0,$=0,ie=0,pe=0,se=o[0],Me=o[1],fe=o[2],ke=o[3],Ne=o[4],We=o[5],ve=o[6],aA=o[7],Qe=o[8],Ie=o[9],Xe=o[10],je=o[11],Oe=o[12],EA=o[13],hA=o[14],iA=o[15];i=t[0],a+=i*se,A+=i*Me,r+=i*fe,s+=i*ke,g+=i*Ne,c+=i*We,I+=i*ve,d+=i*aA,B+=i*Qe,f+=i*Ie,Q+=i*Xe,y+=i*je,m+=i*Oe,_+=i*EA,T+=i*hA,R+=i*iA,i=t[1],A+=i*se,r+=i*Me,s+=i*fe,g+=i*ke,c+=i*Ne,I+=i*We,d+=i*ve,B+=i*aA,f+=i*Qe,Q+=i*Ie,y+=i*Xe,m+=i*je,_+=i*Oe,T+=i*EA,R+=i*hA,K+=i*iA,i=t[2],r+=i*se,s+=i*Me,g+=i*fe,c+=i*ke,I+=i*Ne,d+=i*We,B+=i*ve,f+=i*aA,Q+=i*Qe,y+=i*Ie,m+=i*Xe,_+=i*je,T+=i*Oe,R+=i*EA,K+=i*hA,L+=i*iA,i=t[3],s+=i*se,g+=i*Me,c+=i*fe,I+=i*ke,d+=i*Ne,B+=i*We,f+=i*ve,Q+=i*aA,y+=i*Qe,m+=i*Ie,_+=i*Xe,T+=i*je,R+=i*Oe,K+=i*EA,L+=i*hA,U+=i*iA,i=t[4],g+=i*se,c+=i*Me,I+=i*fe,d+=i*ke,B+=i*Ne,f+=i*We,Q+=i*ve,y+=i*aA,m+=i*Qe,_+=i*Ie,T+=i*Xe,R+=i*je,K+=i*Oe,L+=i*EA,U+=i*hA,z+=i*iA,i=t[5],c+=i*se,I+=i*Me,d+=i*fe,B+=i*ke,f+=i*Ne,Q+=i*We,y+=i*ve,m+=i*aA,_+=i*Qe,T+=i*Ie,R+=i*Xe,K+=i*je,L+=i*Oe,U+=i*EA,z+=i*hA,q+=i*iA,i=t[6],I+=i*se,d+=i*Me,B+=i*fe,f+=i*ke,Q+=i*Ne,y+=i*We,m+=i*ve,_+=i*aA,T+=i*Qe,R+=i*Ie,K+=i*Xe,L+=i*je,U+=i*Oe,z+=i*EA,q+=i*hA,x+=i*iA,i=t[7],d+=i*se,B+=i*Me,f+=i*fe,Q+=i*ke,y+=i*Ne,m+=i*We,_+=i*ve,T+=i*aA,R+=i*Qe,K+=i*Ie,L+=i*Xe,U+=i*je,z+=i*Oe,q+=i*EA,x+=i*hA,G+=i*iA,i=t[8],B+=i*se,f+=i*Me,Q+=i*fe,y+=i*ke,m+=i*Ne,_+=i*We,T+=i*ve,R+=i*aA,K+=i*Qe,L+=i*Ie,U+=i*Xe,z+=i*je,q+=i*Oe,x+=i*EA,G+=i*hA,V+=i*iA,i=t[9],f+=i*se,Q+=i*Me,y+=i*fe,m+=i*ke,_+=i*Ne,T+=i*We,R+=i*ve,K+=i*aA,L+=i*Qe,U+=i*Ie,z+=i*Xe,q+=i*je,x+=i*Oe,G+=i*EA,V+=i*hA,F+=i*iA,i=t[10],Q+=i*se,y+=i*Me,m+=i*fe,_+=i*ke,T+=i*Ne,R+=i*We,K+=i*ve,L+=i*aA,U+=i*Qe,z+=i*Ie,q+=i*Xe,x+=i*je,G+=i*Oe,V+=i*EA,F+=i*hA,N+=i*iA,i=t[11],y+=i*se,m+=i*Me,_+=i*fe,T+=i*ke,R+=i*Ne,K+=i*We,L+=i*ve,U+=i*aA,z+=i*Qe,q+=i*Ie,x+=i*Xe,G+=i*je,V+=i*Oe,F+=i*EA,N+=i*hA,k+=i*iA,i=t[12],m+=i*se,_+=i*Me,T+=i*fe,R+=i*ke,K+=i*Ne,L+=i*We,U+=i*ve,z+=i*aA,q+=i*Qe,x+=i*Ie,G+=i*Xe,V+=i*je,F+=i*Oe,N+=i*EA,k+=i*hA,J+=i*iA,i=t[13],_+=i*se,T+=i*Me,R+=i*fe,K+=i*ke,L+=i*Ne,U+=i*We,z+=i*ve,q+=i*aA,x+=i*Qe,G+=i*Ie,V+=i*Xe,F+=i*je,N+=i*Oe,k+=i*EA,J+=i*hA,$+=i*iA,i=t[14],T+=i*se,R+=i*Me,K+=i*fe,L+=i*ke,U+=i*Ne,z+=i*We,q+=i*ve,x+=i*aA,G+=i*Qe,V+=i*Ie,F+=i*Xe,N+=i*je,k+=i*Oe,J+=i*EA,$+=i*hA,ie+=i*iA,i=t[15],R+=i*se,K+=i*Me,L+=i*fe,U+=i*ke,z+=i*Ne,q+=i*We,x+=i*ve,G+=i*aA,V+=i*Qe,F+=i*Ie,N+=i*Xe,k+=i*je,J+=i*Oe,$+=i*EA,ie+=i*hA,pe+=i*iA,a+=38*K,A+=38*L,r+=38*U,s+=38*z,g+=38*q,c+=38*x,I+=38*G,d+=38*V,B+=38*F,f+=38*N,Q+=38*k,y+=38*J,m+=38*$,_+=38*ie,T+=38*pe,e=1,i=a+e+65535,e=Math.floor(i/65536),a=i-e*65536,i=A+e+65535,e=Math.floor(i/65536),A=i-e*65536,i=r+e+65535,e=Math.floor(i/65536),r=i-e*65536,i=s+e+65535,e=Math.floor(i/65536),s=i-e*65536,i=g+e+65535,e=Math.floor(i/65536),g=i-e*65536,i=c+e+65535,e=Math.floor(i/65536),c=i-e*65536,i=I+e+65535,e=Math.floor(i/65536),I=i-e*65536,i=d+e+65535,e=Math.floor(i/65536),d=i-e*65536,i=B+e+65535,e=Math.floor(i/65536),B=i-e*65536,i=f+e+65535,e=Math.floor(i/65536),f=i-e*65536,i=Q+e+65535,e=Math.floor(i/65536),Q=i-e*65536,i=y+e+65535,e=Math.floor(i/65536),y=i-e*65536,i=m+e+65535,e=Math.floor(i/65536),m=i-e*65536,i=_+e+65535,e=Math.floor(i/65536),_=i-e*65536,i=T+e+65535,e=Math.floor(i/65536),T=i-e*65536,i=R+e+65535,e=Math.floor(i/65536),R=i-e*65536,a+=e-1+37*(e-1),e=1,i=a+e+65535,e=Math.floor(i/65536),a=i-e*65536,i=A+e+65535,e=Math.floor(i/65536),A=i-e*65536,i=r+e+65535,e=Math.floor(i/65536),r=i-e*65536,i=s+e+65535,e=Math.floor(i/65536),s=i-e*65536,i=g+e+65535,e=Math.floor(i/65536),g=i-e*65536,i=c+e+65535,e=Math.floor(i/65536),c=i-e*65536,i=I+e+65535,e=Math.floor(i/65536),I=i-e*65536,i=d+e+65535,e=Math.floor(i/65536),d=i-e*65536,i=B+e+65535,e=Math.floor(i/65536),B=i-e*65536,i=f+e+65535,e=Math.floor(i/65536),f=i-e*65536,i=Q+e+65535,e=Math.floor(i/65536),Q=i-e*65536,i=y+e+65535,e=Math.floor(i/65536),y=i-e*65536,i=m+e+65535,e=Math.floor(i/65536),m=i-e*65536,i=_+e+65535,e=Math.floor(i/65536),_=i-e*65536,i=T+e+65535,e=Math.floor(i/65536),T=i-e*65536,i=R+e+65535,e=Math.floor(i/65536),R=i-e*65536,a+=e-1+37*(e-1),n[0]=a,n[1]=A,n[2]=r,n[3]=s,n[4]=g,n[5]=c,n[6]=I,n[7]=d,n[8]=B,n[9]=f,n[10]=Q,n[11]=y,n[12]=m,n[13]=_,n[14]=T,n[15]=R}function kn(n,t){It(n,t,t)}function hF(n,t){var o=dA(),i;for(i=0;i<16;i++)o[i]=t[i];for(i=253;i>=0;i--)kn(o,o),i!==2&&i!==4&&It(o,o,t);for(i=0;i<16;i++)n[i]=o[i]}function tUe(n,t){var o=dA(),i;for(i=0;i<16;i++)o[i]=t[i];for(i=250;i>=0;i--)kn(o,o),i!==1&&It(o,o,t);for(i=0;i<16;i++)n[i]=o[i]}function _9(n,t,o){var i=new Uint8Array(32),e=new Float64Array(80),a,A,r=dA(),s=dA(),g=dA(),c=dA(),I=dA(),d=dA();for(A=0;A<31;A++)i[A]=t[A];for(i[31]=t[31]&127|64,i[0]&=248,dF(e,o),A=0;A<16;A++)s[A]=e[A],c[A]=r[A]=g[A]=0;for(r[0]=c[0]=1,A=254;A>=0;--A)a=i[A>>>3]>>>(A&7)&1,oh(r,s,a),oh(g,c,a),Rn(I,r,g),vn(r,r,g),Rn(g,s,c),vn(s,s,c),kn(c,I),kn(d,r),It(r,g,r),It(g,s,I),Rn(I,r,g),vn(r,r,g),kn(s,r),vn(g,c,d),It(r,g,Z2e),Rn(r,r,c),It(g,g,r),It(r,c,d),It(c,s,e),kn(s,I),oh(r,s,a),oh(g,c,a);for(A=0;A<16;A++)e[A+16]=r[A],e[A+32]=g[A],e[A+48]=s[A],e[A+64]=c[A];var B=e.subarray(32),f=e.subarray(16);return hF(B,B),It(f,f,B),sh(n,f),0}function rUe(n,t){return _9(n,t,O9)}var S9=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function w9(n,t,o,i){for(var e=new Int32Array(16),a=new Int32Array(16),A,r,s,g,c,I,d,B,f,Q,y,m,_,T,R,K,L,U,z,q,x,G,V,F,N,k,J=n[0],$=n[1],ie=n[2],pe=n[3],se=n[4],Me=n[5],fe=n[6],ke=n[7],Ne=t[0],We=t[1],ve=t[2],aA=t[3],Qe=t[4],Ie=t[5],Xe=t[6],je=t[7],Oe=0;i>=128;){for(z=0;z<16;z++)q=8*z+Oe,e[z]=o[q+0]<<24|o[q+1]<<16|o[q+2]<<8|o[q+3],a[z]=o[q+4]<<24|o[q+5]<<16|o[q+6]<<8|o[q+7];for(z=0;z<80;z++)if(A=J,r=$,s=ie,g=pe,c=se,I=Me,d=fe,B=ke,f=Ne,Q=We,y=ve,m=aA,_=Qe,T=Ie,R=Xe,K=je,x=ke,G=je,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=(se>>>14|Qe<<18)^(se>>>18|Qe<<14)^(Qe>>>9|se<<23),G=(Qe>>>14|se<<18)^(Qe>>>18|se<<14)^(se>>>9|Qe<<23),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=se&Me^~se&fe,G=Qe&Ie^~Qe&Xe,V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=S9[z*2],G=S9[z*2+1],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=e[z%16],G=a[z%16],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,L=N&65535|k<<16,U=V&65535|F<<16,x=L,G=U,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=(J>>>28|Ne<<4)^(Ne>>>2|J<<30)^(Ne>>>7|J<<25),G=(Ne>>>28|J<<4)^(J>>>2|Ne<<30)^(J>>>7|Ne<<25),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,x=J&$^J&ie^$&ie,G=Ne&We^Ne&ve^We&ve,V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,B=N&65535|k<<16,K=V&65535|F<<16,x=g,G=m,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=L,G=U,V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,g=N&65535|k<<16,m=V&65535|F<<16,$=A,ie=r,pe=s,se=g,Me=c,fe=I,ke=d,J=B,We=f,ve=Q,aA=y,Qe=m,Ie=_,Xe=T,je=R,Ne=K,z%16===15)for(q=0;q<16;q++)x=e[q],G=a[q],V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=e[(q+9)%16],G=a[(q+9)%16],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,L=e[(q+1)%16],U=a[(q+1)%16],x=(L>>>1|U<<31)^(L>>>8|U<<24)^L>>>7,G=(U>>>1|L<<31)^(U>>>8|L<<24)^(U>>>7|L<<25),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,L=e[(q+14)%16],U=a[(q+14)%16],x=(L>>>19|U<<13)^(U>>>29|L<<3)^L>>>6,G=(U>>>19|L<<13)^(L>>>29|U<<3)^(U>>>6|L<<26),V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,e[q]=N&65535|k<<16,a[q]=V&65535|F<<16;x=J,G=Ne,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[0],G=t[0],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[0]=J=N&65535|k<<16,t[0]=Ne=V&65535|F<<16,x=$,G=We,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[1],G=t[1],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[1]=$=N&65535|k<<16,t[1]=We=V&65535|F<<16,x=ie,G=ve,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[2],G=t[2],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[2]=ie=N&65535|k<<16,t[2]=ve=V&65535|F<<16,x=pe,G=aA,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[3],G=t[3],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[3]=pe=N&65535|k<<16,t[3]=aA=V&65535|F<<16,x=se,G=Qe,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[4],G=t[4],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[4]=se=N&65535|k<<16,t[4]=Qe=V&65535|F<<16,x=Me,G=Ie,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[5],G=t[5],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[5]=Me=N&65535|k<<16,t[5]=Ie=V&65535|F<<16,x=fe,G=Xe,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[6],G=t[6],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[6]=fe=N&65535|k<<16,t[6]=Xe=V&65535|F<<16,x=ke,G=je,V=G&65535,F=G>>>16,N=x&65535,k=x>>>16,x=n[7],G=t[7],V+=G&65535,F+=G>>>16,N+=x&65535,k+=x>>>16,F+=V>>>16,N+=F>>>16,k+=N>>>16,n[7]=ke=N&65535|k<<16,t[7]=je=V&65535|F<<16,Oe+=128,i-=128}return i}function hB(n,t,o){var i=new Int32Array(8),e=new Int32Array(8),a=new Uint8Array(256),A,r=o;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,e[0]=4089235720,e[1]=2227873595,e[2]=4271175723,e[3]=1595750129,e[4]=2917565137,e[5]=725511199,e[6]=4215389547,e[7]=327033209,w9(i,e,t,o),o%=128,A=0;A=0;--e)i=o[e/8|0]>>(e&7)&1,D9(n,t,i),lF(t,n),lF(n,n),D9(n,t,i)}function Hw(n,t){var o=[dA(),dA(),dA(),dA()];Hc(o[0],f9),Hc(o[1],Q9),Hc(o[2],nh),It(o[3],f9,Q9),T9(n,o,t)}var cF=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function EF(n,t){var o,i,e,a;for(i=63;i>=32;--i){for(o=0,e=i-32,a=i-12;e>8,t[e]-=o*256;t[e]+=o,t[i]=0}for(o=0,e=0;e<32;e++)t[e]+=o-(t[31]>>4)*cF[e],o=t[e]>>8,t[e]&=255;for(e=0;e<32;e++)t[e]-=o*cF[e];for(i=0;i<32;i++)t[i+1]+=t[i]>>8,n[i]=t[i]&255}function EB(n){var t=new Float64Array(64),o;for(o=0;o<64;o++)t[o]=n[o];for(o=0;o<64;o++)n[o]=0;EF(n,t)}function aUe(n,t,o,i){var e=new Uint8Array(64),a=new Uint8Array(64),A,r,s=new Float64Array(64),g=[dA(),dA(),dA(),dA()];for(A=0;A>7&&vn(n[0],IF,n[0]),It(n[3],n[0],n[1]),0)}function nUe(n,t,o,i){var e,a,A=new Uint8Array(32),r=new Uint8Array(64),s=[dA(),dA(),dA(),dA()],g=[dA(),dA(),dA(),dA()];if(a=-1,o<64||oUe(g,i))return-1;for(e=0;e=0}kg.verify=pUe;function dUe(n){if(Kc(n),n.length!==32)throw new Error("wrong seed length");for(var t=new Uint8Array(32),o=new Uint8Array(32),i=0;i<32;i++)t[i]=n[i];return rUe(o,t),t[0]&=248,t[31]&=127,t[31]|=64,o[31]&=127,{public:o,private:t}}kg.generateKeyPair=dUe;kg.default={}});var xc=ee(ch=>{"use strict";var CB=R9(),gh=$e("crypto"),CF=Buffer.from([48,42,48,5,6,3,43,101,110,3,33,0]),uF=Buffer.from([48,46,2,1,0,48,5,6,3,43,101,110,4,34,4,32]),hUe=Buffer.from([5]),BF=function(n){return Buffer.concat([hUe,n])};function k9(n){if(n===void 0)throw new Error("Undefined private key");if(!(n instanceof Buffer))throw new Error(`Invalid private key type: ${n.constructor.name}`);if(n.byteLength!=32)throw new Error(`Incorrect private key length: ${n.byteLength}`)}function v9(n){if(!(n instanceof Buffer))throw new Error(`Invalid public key type: ${n.constructor.name}`);if(n===void 0||(n.byteLength!=33||n[0]!=5)&&n.byteLength!=32)throw new Error("Invalid public key");return n.byteLength==33?n.slice(1):(console.error("WARNING: Expected pubkey of length 33, please report the ST and client that generated the pubkey"),n)}function EUe(n){let t=new Uint8Array(n);return t[0]|=6,t[31]|=128,t[31]&=-65,t}ch.getPublicFromPrivateKey=function(n){let t=EUe(n),o=CB.generateKeyPair(t);return BF(Buffer.from(o.public))};ch.generateKeyPair=function(){try{let{publicKey:n,privateKey:t}=gh.generateKeyPairSync("x25519",{publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}}),o=n.slice(CF.length,CF.length+32),i=t.slice(uF.length,uF.length+32);return{pubKey:BF(o),privKey:i}}catch{let t=CB.generateKeyPair(gh.randomBytes(32));return{privKey:Buffer.from(t.private),pubKey:BF(Buffer.from(t.public))}}};ch.calculateAgreement=function(n,t){if(n=v9(n),k9(t),!n||n.byteLength!=32)throw new Error("Invalid public key");if(typeof gh.diffieHellman=="function"){let o=gh.createPrivateKey({key:Buffer.concat([uF,t]),format:"der",type:"pkcs8"}),i=gh.createPublicKey({key:Buffer.concat([CF,n]),format:"der",type:"spki"});return gh.diffieHellman({privateKey:o,publicKey:i})}else{let o=CB.sharedKey(t,n);return Buffer.from(o)}};ch.calculateSignature=function(n,t){if(k9(n),!t)throw new Error("Invalid message");return Buffer.from(CB.sign(n,t))};ch.verifySignature=function(n,t,o,i){if(n=v9(n),!n||n.byteLength!=32)throw new Error("Invalid public key");if(!t)throw new Error("Invalid message");if(!o||o.byteLength!=64)throw new Error("Invalid signature");return i?!0:CB.verify(n,t,o)}});var G9=ee(uB=>{var Kw=xc(),CUe=$e("crypto");function P9(n){return typeof n=="number"&&n%1===0&&n>=0}uB.generateIdentityKeyPair=Kw.generateKeyPair;uB.generateRegistrationId=function(){var n=Uint16Array.from(CUe.randomBytes(2))[0];return n&16383};uB.generateSignedPreKey=function(n,t){if(!(n.privKey instanceof Buffer)||n.privKey.byteLength!=32||!(n.pubKey instanceof Buffer)||n.pubKey.byteLength!=33)throw new TypeError("Invalid argument for identityKeyPair");if(!P9(t))throw new TypeError("Invalid argument for signedKeyId: "+t);let o=Kw.generateKeyPair(),i=Kw.calculateSignature(n.privKey,o.pubKey);return{keyId:t,keyPair:o,signature:i}};uB.generatePreKey=function(n){if(!P9(n))throw new TypeError("Invalid argument for keyId: "+n);let t=Kw.generateKeyPair();return{keyId:n,keyPair:t}}});var QF=ee((CfA,F9)=>{var fF=class n{static from(t){if(typeof t!="string"||!t.match(/.*\.\d+/))throw new Error("Invalid address encoding");let o=t.split(".");return new this(o[0],parseInt(o[1]))}constructor(t,o){if(typeof t!="string")throw new TypeError("id required for addr");if(t.indexOf(".")!==-1)throw new TypeError("encoded addr detected");if(this.id=t,typeof o!="number")throw new TypeError("number required for deviceId");this.deviceId=o}toString(){return`${this.id}.${this.deviceId}`}is(t){return t instanceof n?t.id===this.id&&t.deviceId===this.deviceId:!1}};F9.exports=fF});var yF=ee((ufA,L9)=>{var uUe={OURS:1,THEIRS:2};L9.exports=uUe});var mF=ee((BfA,U9)=>{var BUe={SENDING:1,RECEIVING:2};U9.exports=BUe});var Jw=ee((ffA,K9)=>{var fUe=yF(),QUe=40,H9="v1";function Yw(n){if(!Buffer.isBuffer(n))throw new TypeError("Buffer required")}var jw=class{constructor(){this._chains={}}toString(){return``}inspect(){return this.toString()}addChain(t,o){Yw(t);let i=t.toString("base64");if(this._chains.hasOwnProperty(i))throw new Error("Overwrite attempt");this._chains[i]=o}getChain(t){return Yw(t),this._chains[t.toString("base64")]}deleteChain(t){Yw(t);let o=t.toString("base64");if(!this._chains.hasOwnProperty(o))throw new ReferenceError("Not Found");delete this._chains[o]}*chains(){for(let[t,o]of Object.entries(this._chains))yield[Buffer.from(t,"base64"),o]}serialize(){let t={registrationId:this.registrationId,currentRatchet:{ephemeralKeyPair:{pubKey:this.currentRatchet.ephemeralKeyPair.pubKey.toString("base64"),privKey:this.currentRatchet.ephemeralKeyPair.privKey.toString("base64")},lastRemoteEphemeralKey:this.currentRatchet.lastRemoteEphemeralKey.toString("base64"),previousCounter:this.currentRatchet.previousCounter,rootKey:this.currentRatchet.rootKey.toString("base64")},indexInfo:{baseKey:this.indexInfo.baseKey.toString("base64"),baseKeyType:this.indexInfo.baseKeyType,closed:this.indexInfo.closed,used:this.indexInfo.used,created:this.indexInfo.created,remoteIdentityKey:this.indexInfo.remoteIdentityKey.toString("base64")},_chains:this._serialize_chains(this._chains)};return this.pendingPreKey&&(t.pendingPreKey=Object.assign({},this.pendingPreKey),t.pendingPreKey.baseKey=this.pendingPreKey.baseKey.toString("base64")),t}static deserialize(t){let o=new this;return o.registrationId=t.registrationId,o.currentRatchet={ephemeralKeyPair:{pubKey:Buffer.from(t.currentRatchet.ephemeralKeyPair.pubKey,"base64"),privKey:Buffer.from(t.currentRatchet.ephemeralKeyPair.privKey,"base64")},lastRemoteEphemeralKey:Buffer.from(t.currentRatchet.lastRemoteEphemeralKey,"base64"),previousCounter:t.currentRatchet.previousCounter,rootKey:Buffer.from(t.currentRatchet.rootKey,"base64")},o.indexInfo={baseKey:Buffer.from(t.indexInfo.baseKey,"base64"),baseKeyType:t.indexInfo.baseKeyType,closed:t.indexInfo.closed,used:t.indexInfo.used,created:t.indexInfo.created,remoteIdentityKey:Buffer.from(t.indexInfo.remoteIdentityKey,"base64")},o._chains=this._deserialize_chains(t._chains),t.pendingPreKey&&(o.pendingPreKey=Object.assign({},t.pendingPreKey),o.pendingPreKey.baseKey=Buffer.from(t.pendingPreKey.baseKey,"base64")),o}_serialize_chains(t){let o={};for(let i of Object.keys(t)){let e=t[i],a={};for(let[A,r]of Object.entries(e.messageKeys))a[A]=r.toString("base64");o[i]={chainKey:{counter:e.chainKey.counter,key:e.chainKey.key&&e.chainKey.key.toString("base64")},chainType:e.chainType,messageKeys:a}}return o}static _deserialize_chains(t){let o={};for(let i of Object.keys(t)){let e=t[i],a={};for(let[A,r]of Object.entries(e.messageKeys))a[A]=Buffer.from(r,"base64");o[i]={chainKey:{counter:e.chainKey.counter,key:e.chainKey.key&&Buffer.from(e.chainKey.key,"base64")},chainType:e.chainType,messageKeys:a}}return o}},xw=[{version:"v1",migrate:function(t){let o=t._sessions;if(t.registrationId)for(let i in o)o[i].registrationId||(o[i].registrationId=t.registrationId);else for(let i in o)o[i].indexInfo.closed===-1&&console.error("V1 session storage migration error: registrationId",t.registrationId,"for open session version",t.version)}}],SF=class{static createEntry(){return new jw}static migrate(t){let o=t.version===void 0;for(let i=0;i{let i=t.indexInfo.used||0,e=o.indexInfo.used||0;return i===e?0:iQUe;){let t,o;for(let[i,e]of Object.entries(this.sessions))e.indexInfo.closed!==-1&&(!o||e.indexInfo.closed{Os.SignalError=class extends Error{};Os.UntrustedIdentityKeyError=class extends Os.SignalError{constructor(t,o){super(),this.name="UntrustedIdentityKeyError",this.addr=t,this.identityKey=o}};Os.SessionError=class extends Os.SignalError{constructor(t){super(t),this.name="SessionError"}};Os.MessageCounterError=class extends Os.SessionError{constructor(t){super(t),this.name="MessageCounterError"}};Os.PreKeyError=class extends Os.SessionError{constructor(t){super(t),this.name="PreKeyError"}}});var wF=ee((OfA,Y9)=>{"use strict";var zw=new Map,x9=1e4;async function yUe(n,t){let o=0;for(;;){let i=Math.min(n.length,x9);for(let e=o;e=x9?(n.splice(0,i),o=0):o=i;else break}t()}Y9.exports=function(n,t){t.name||(Object.defineProperty(t,"name",{writable:!0}),typeof n=="string"?t.name=n:console.warn("Unhandled bucket type (for naming):",typeof n,n));let o;zw.has(n)||(zw.set(n,[]),o=!0);let i=zw.get(n),e=new Promise((a,A)=>i.push({awaitable:t,resolve:a,reject:A}));return o&&yUe(i,()=>zw.delete(n)),e}});var OF=ee((bfA,z9)=>{"use strict";var j9=yF(),mUe=mF(),J9=Jw(),q9=Nl(),Yc=xc(),Vw=qw(),SUe=wF(),DF=class{constructor(t,o){this.addr=o,this.storage=t}async initOutgoing(t){let o=this.addr.toString();return await SUe(o,async()=>{if(!await this.storage.isTrustedIdentity(this.addr.id,t.identityKey))throw new Vw.UntrustedIdentityKeyError(this.addr.id,t.identityKey);Yc.verifySignature(t.identityKey,t.signedPreKey.publicKey,t.signedPreKey.signature,!0);let i=Yc.generateKeyPair(),e=t.preKey&&t.preKey.publicKey,a=await this.initSession(!0,i,void 0,t.identityKey,e,t.signedPreKey.publicKey,t.registrationId);a.pendingPreKey={signedKeyId:t.signedPreKey.keyId,baseKey:i.pubKey},t.preKey&&(a.pendingPreKey.preKeyId=t.preKey.keyId);let A=await this.storage.loadSession(o);if(!A)A=new J9;else{let r=A.getOpenSession();r&&A.closeSession(r)}A.setSession(a),await this.storage.storeSession(o,A)})}async initIncoming(t,o){let i=this.addr.toString();if(!await this.storage.isTrustedIdentity(i,o.identityKey))throw new Vw.UntrustedIdentityKeyError(this.addr.id,o.identityKey);if(t.getSession(o.baseKey))return;let e=await this.storage.loadPreKey(o.preKeyId);if(o.preKeyId&&!e)throw new Vw.PreKeyError("Invalid PreKey ID");let a=await this.storage.loadSignedPreKey(o.signedPreKeyId);if(!a)throw new Vw.PreKeyError("Missing SignedPreKey");let A=t.getOpenSession();return A&&(console.warn("Closing open session in favor of incoming prekey bundle"),t.closeSession(A)),t.setSession(await this.initSession(!1,e,a,o.identityKey,o.baseKey,void 0,o.registrationId)),o.preKeyId}async initSession(t,o,i,e,a,A,r){if(t){if(i)throw new Error("Invalid call to initSession");i=o}else{if(A)throw new Error("Invalid call to initSession");A=a}let s;!o||!a?s=new Uint8Array(128):s=new Uint8Array(160);for(var g=0;g<32;g++)s[g]=255;let c=await this.storage.getOurIdentity(),I=Yc.calculateAgreement(A,c.privKey),d=Yc.calculateAgreement(e,i.privKey),B=Yc.calculateAgreement(A,i.privKey);if(t?(s.set(new Uint8Array(I),32),s.set(new Uint8Array(d),64)):(s.set(new Uint8Array(I),64),s.set(new Uint8Array(d),32)),s.set(new Uint8Array(B),96),o&&a){let y=Yc.calculateAgreement(a,o.privKey);s.set(new Uint8Array(y),128)}let f=q9.deriveSecrets(Buffer.from(s),Buffer.alloc(32),Buffer.from("WhisperText")),Q=J9.createEntry();return Q.registrationId=r,Q.currentRatchet={rootKey:f[0],ephemeralKeyPair:t?Yc.generateKeyPair():i,lastRemoteEphemeralKey:A,previousCounter:0},Q.indexInfo={created:Date.now(),used:Date.now(),remoteIdentityKey:e,baseKey:t?o.pubKey:a,baseKeyType:t?j9.OURS:j9.THEIRS,closed:-1},t&&this.calculateSendingRatchet(Q,A),Q}calculateSendingRatchet(t,o){let i=t.currentRatchet,e=Yc.calculateAgreement(o,i.ephemeralKeyPair.privKey),a=q9.deriveSecrets(e,i.rootKey,Buffer.from("WhisperRatchet"));t.addChain(i.ephemeralKeyPair.pubKey,{messageKeys:{},chainKey:{counter:-1,key:a[1]},chainType:mUe.SENDING}),i.rootKey=a[0]}};z9.exports=DF});var W9=ee((MfA,V9)=>{"use strict";var jc=Rm(),Vo=jc.Reader,bF=jc.Writer,nA=jc.util,Pn=jc.roots.default||(jc.roots.default={});Pn.textsecure=(function(){var n={};return n.WhisperMessage=(function(){function t(o){if(o)for(var i=Object.keys(o),e=0;e>>3){case 1:A.ephemeralKey=i.bytes();break;case 2:A.counter=i.uint32();break;case 3:A.previousCounter=i.uint32();break;case 4:A.ciphertext=i.bytes();break;default:i.skipType(r&7);break}}return A},t.decodeDelimited=function(i){return i instanceof Vo||(i=new Vo(i)),this.decode(i,i.uint32())},t.verify=function(i){return typeof i!="object"||i===null?"object expected":i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&!(i.ephemeralKey&&typeof i.ephemeralKey.length=="number"||nA.isString(i.ephemeralKey))?"ephemeralKey: buffer expected":i.counter!=null&&i.hasOwnProperty("counter")&&!nA.isInteger(i.counter)?"counter: integer expected":i.previousCounter!=null&&i.hasOwnProperty("previousCounter")&&!nA.isInteger(i.previousCounter)?"previousCounter: integer expected":i.ciphertext!=null&&i.hasOwnProperty("ciphertext")&&!(i.ciphertext&&typeof i.ciphertext.length=="number"||nA.isString(i.ciphertext))?"ciphertext: buffer expected":null},t.fromObject=function(i){if(i instanceof Pn.textsecure.WhisperMessage)return i;var e=new Pn.textsecure.WhisperMessage;return i.ephemeralKey!=null&&(typeof i.ephemeralKey=="string"?nA.base64.decode(i.ephemeralKey,e.ephemeralKey=nA.newBuffer(nA.base64.length(i.ephemeralKey)),0):i.ephemeralKey.length&&(e.ephemeralKey=i.ephemeralKey)),i.counter!=null&&(e.counter=i.counter>>>0),i.previousCounter!=null&&(e.previousCounter=i.previousCounter>>>0),i.ciphertext!=null&&(typeof i.ciphertext=="string"?nA.base64.decode(i.ciphertext,e.ciphertext=nA.newBuffer(nA.base64.length(i.ciphertext)),0):i.ciphertext.length&&(e.ciphertext=i.ciphertext)),e},t.toObject=function(i,e){e||(e={});var a={};return e.defaults&&(e.bytes===String?a.ephemeralKey="":(a.ephemeralKey=[],e.bytes!==Array&&(a.ephemeralKey=nA.newBuffer(a.ephemeralKey))),a.counter=0,a.previousCounter=0,e.bytes===String?a.ciphertext="":(a.ciphertext=[],e.bytes!==Array&&(a.ciphertext=nA.newBuffer(a.ciphertext)))),i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&(a.ephemeralKey=e.bytes===String?nA.base64.encode(i.ephemeralKey,0,i.ephemeralKey.length):e.bytes===Array?Array.prototype.slice.call(i.ephemeralKey):i.ephemeralKey),i.counter!=null&&i.hasOwnProperty("counter")&&(a.counter=i.counter),i.previousCounter!=null&&i.hasOwnProperty("previousCounter")&&(a.previousCounter=i.previousCounter),i.ciphertext!=null&&i.hasOwnProperty("ciphertext")&&(a.ciphertext=e.bytes===String?nA.base64.encode(i.ciphertext,0,i.ciphertext.length):e.bytes===Array?Array.prototype.slice.call(i.ciphertext):i.ciphertext),a},t.prototype.toJSON=function(){return this.constructor.toObject(this,jc.util.toJSONOptions)},t})(),n.PreKeyWhisperMessage=(function(){function t(o){if(o)for(var i=Object.keys(o),e=0;e>>3){case 5:A.registrationId=i.uint32();break;case 1:A.preKeyId=i.uint32();break;case 6:A.signedPreKeyId=i.uint32();break;case 2:A.baseKey=i.bytes();break;case 3:A.identityKey=i.bytes();break;case 4:A.message=i.bytes();break;default:i.skipType(r&7);break}}return A},t.decodeDelimited=function(i){return i instanceof Vo||(i=new Vo(i)),this.decode(i,i.uint32())},t.verify=function(i){return typeof i!="object"||i===null?"object expected":i.registrationId!=null&&i.hasOwnProperty("registrationId")&&!nA.isInteger(i.registrationId)?"registrationId: integer expected":i.preKeyId!=null&&i.hasOwnProperty("preKeyId")&&!nA.isInteger(i.preKeyId)?"preKeyId: integer expected":i.signedPreKeyId!=null&&i.hasOwnProperty("signedPreKeyId")&&!nA.isInteger(i.signedPreKeyId)?"signedPreKeyId: integer expected":i.baseKey!=null&&i.hasOwnProperty("baseKey")&&!(i.baseKey&&typeof i.baseKey.length=="number"||nA.isString(i.baseKey))?"baseKey: buffer expected":i.identityKey!=null&&i.hasOwnProperty("identityKey")&&!(i.identityKey&&typeof i.identityKey.length=="number"||nA.isString(i.identityKey))?"identityKey: buffer expected":i.message!=null&&i.hasOwnProperty("message")&&!(i.message&&typeof i.message.length=="number"||nA.isString(i.message))?"message: buffer expected":null},t.fromObject=function(i){if(i instanceof Pn.textsecure.PreKeyWhisperMessage)return i;var e=new Pn.textsecure.PreKeyWhisperMessage;return i.registrationId!=null&&(e.registrationId=i.registrationId>>>0),i.preKeyId!=null&&(e.preKeyId=i.preKeyId>>>0),i.signedPreKeyId!=null&&(e.signedPreKeyId=i.signedPreKeyId>>>0),i.baseKey!=null&&(typeof i.baseKey=="string"?nA.base64.decode(i.baseKey,e.baseKey=nA.newBuffer(nA.base64.length(i.baseKey)),0):i.baseKey.length&&(e.baseKey=i.baseKey)),i.identityKey!=null&&(typeof i.identityKey=="string"?nA.base64.decode(i.identityKey,e.identityKey=nA.newBuffer(nA.base64.length(i.identityKey)),0):i.identityKey.length&&(e.identityKey=i.identityKey)),i.message!=null&&(typeof i.message=="string"?nA.base64.decode(i.message,e.message=nA.newBuffer(nA.base64.length(i.message)),0):i.message.length&&(e.message=i.message)),e},t.toObject=function(i,e){e||(e={});var a={};return e.defaults&&(a.preKeyId=0,e.bytes===String?a.baseKey="":(a.baseKey=[],e.bytes!==Array&&(a.baseKey=nA.newBuffer(a.baseKey))),e.bytes===String?a.identityKey="":(a.identityKey=[],e.bytes!==Array&&(a.identityKey=nA.newBuffer(a.identityKey))),e.bytes===String?a.message="":(a.message=[],e.bytes!==Array&&(a.message=nA.newBuffer(a.message))),a.registrationId=0,a.signedPreKeyId=0),i.preKeyId!=null&&i.hasOwnProperty("preKeyId")&&(a.preKeyId=i.preKeyId),i.baseKey!=null&&i.hasOwnProperty("baseKey")&&(a.baseKey=e.bytes===String?nA.base64.encode(i.baseKey,0,i.baseKey.length):e.bytes===Array?Array.prototype.slice.call(i.baseKey):i.baseKey),i.identityKey!=null&&i.hasOwnProperty("identityKey")&&(a.identityKey=e.bytes===String?nA.base64.encode(i.identityKey,0,i.identityKey.length):e.bytes===Array?Array.prototype.slice.call(i.identityKey):i.identityKey),i.message!=null&&i.hasOwnProperty("message")&&(a.message=e.bytes===String?nA.base64.encode(i.message,0,i.message.length):e.bytes===Array?Array.prototype.slice.call(i.message):i.message),i.registrationId!=null&&i.hasOwnProperty("registrationId")&&(a.registrationId=i.registrationId),i.signedPreKeyId!=null&&i.hasOwnProperty("signedPreKeyId")&&(a.signedPreKeyId=i.signedPreKeyId),a},t.prototype.toJSON=function(){return this.constructor.toObject(this,jc.util.toJSONOptions)},t})(),n.KeyExchangeMessage=(function(){function t(o){if(o)for(var i=Object.keys(o),e=0;e>>3){case 1:A.id=i.uint32();break;case 2:A.baseKey=i.bytes();break;case 3:A.ephemeralKey=i.bytes();break;case 4:A.identityKey=i.bytes();break;case 5:A.baseKeySignature=i.bytes();break;default:i.skipType(r&7);break}}return A},t.decodeDelimited=function(i){return i instanceof Vo||(i=new Vo(i)),this.decode(i,i.uint32())},t.verify=function(i){return typeof i!="object"||i===null?"object expected":i.id!=null&&i.hasOwnProperty("id")&&!nA.isInteger(i.id)?"id: integer expected":i.baseKey!=null&&i.hasOwnProperty("baseKey")&&!(i.baseKey&&typeof i.baseKey.length=="number"||nA.isString(i.baseKey))?"baseKey: buffer expected":i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&!(i.ephemeralKey&&typeof i.ephemeralKey.length=="number"||nA.isString(i.ephemeralKey))?"ephemeralKey: buffer expected":i.identityKey!=null&&i.hasOwnProperty("identityKey")&&!(i.identityKey&&typeof i.identityKey.length=="number"||nA.isString(i.identityKey))?"identityKey: buffer expected":i.baseKeySignature!=null&&i.hasOwnProperty("baseKeySignature")&&!(i.baseKeySignature&&typeof i.baseKeySignature.length=="number"||nA.isString(i.baseKeySignature))?"baseKeySignature: buffer expected":null},t.fromObject=function(i){if(i instanceof Pn.textsecure.KeyExchangeMessage)return i;var e=new Pn.textsecure.KeyExchangeMessage;return i.id!=null&&(e.id=i.id>>>0),i.baseKey!=null&&(typeof i.baseKey=="string"?nA.base64.decode(i.baseKey,e.baseKey=nA.newBuffer(nA.base64.length(i.baseKey)),0):i.baseKey.length&&(e.baseKey=i.baseKey)),i.ephemeralKey!=null&&(typeof i.ephemeralKey=="string"?nA.base64.decode(i.ephemeralKey,e.ephemeralKey=nA.newBuffer(nA.base64.length(i.ephemeralKey)),0):i.ephemeralKey.length&&(e.ephemeralKey=i.ephemeralKey)),i.identityKey!=null&&(typeof i.identityKey=="string"?nA.base64.decode(i.identityKey,e.identityKey=nA.newBuffer(nA.base64.length(i.identityKey)),0):i.identityKey.length&&(e.identityKey=i.identityKey)),i.baseKeySignature!=null&&(typeof i.baseKeySignature=="string"?nA.base64.decode(i.baseKeySignature,e.baseKeySignature=nA.newBuffer(nA.base64.length(i.baseKeySignature)),0):i.baseKeySignature.length&&(e.baseKeySignature=i.baseKeySignature)),e},t.toObject=function(i,e){e||(e={});var a={};return e.defaults&&(a.id=0,e.bytes===String?a.baseKey="":(a.baseKey=[],e.bytes!==Array&&(a.baseKey=nA.newBuffer(a.baseKey))),e.bytes===String?a.ephemeralKey="":(a.ephemeralKey=[],e.bytes!==Array&&(a.ephemeralKey=nA.newBuffer(a.ephemeralKey))),e.bytes===String?a.identityKey="":(a.identityKey=[],e.bytes!==Array&&(a.identityKey=nA.newBuffer(a.identityKey))),e.bytes===String?a.baseKeySignature="":(a.baseKeySignature=[],e.bytes!==Array&&(a.baseKeySignature=nA.newBuffer(a.baseKeySignature)))),i.id!=null&&i.hasOwnProperty("id")&&(a.id=i.id),i.baseKey!=null&&i.hasOwnProperty("baseKey")&&(a.baseKey=e.bytes===String?nA.base64.encode(i.baseKey,0,i.baseKey.length):e.bytes===Array?Array.prototype.slice.call(i.baseKey):i.baseKey),i.ephemeralKey!=null&&i.hasOwnProperty("ephemeralKey")&&(a.ephemeralKey=e.bytes===String?nA.base64.encode(i.ephemeralKey,0,i.ephemeralKey.length):e.bytes===Array?Array.prototype.slice.call(i.ephemeralKey):i.ephemeralKey),i.identityKey!=null&&i.hasOwnProperty("identityKey")&&(a.identityKey=e.bytes===String?nA.base64.encode(i.identityKey,0,i.identityKey.length):e.bytes===Array?Array.prototype.slice.call(i.identityKey):i.identityKey),i.baseKeySignature!=null&&i.hasOwnProperty("baseKeySignature")&&(a.baseKeySignature=e.bytes===String?nA.base64.encode(i.baseKeySignature,0,i.baseKeySignature.length):e.bytes===Array?Array.prototype.slice.call(i.baseKeySignature):i.baseKeySignature),a},t.prototype.toJSON=function(){return this.constructor.toObject(this,jc.util.toJSONOptions)},t})(),n})();V9.exports=Pn});var MF=ee((_fA,Z9)=>{"use strict";var{textsecure:{WhisperMessage:wUe,PreKeyWhisperMessage:DUe}}=W9();Z9.exports={WhisperMessage:wUe,PreKeyWhisperMessage:DUe}});var AX=ee((TfA,eX)=>{var Ww=mF(),OUe=QF(),bUe=OF(),X9=Jw(),vg=Nl(),$9=xc(),bs=qw(),Ih=MF(),MUe=wF(),Jc=3;function Zw(n){if(!(n instanceof Buffer))throw TypeError(`Expected Buffer instead of: ${n.constructor.name}`);return n}var _F=class{constructor(t,o){if(!(o instanceof OUe))throw new TypeError("protocolAddress must be a ProtocolAddress");this.addr=o,this.storage=t}_encodeTupleByte(t,o){if(t>15||o>15)throw TypeError("Numbers must be 4 bits or less");return t<<4|o}_decodeTupleByte(t){return[t>>4,t&15]}toString(){return``}async getRecord(){let t=await this.storage.loadSession(this.addr.toString());if(t&&!(t instanceof X9))throw new TypeError("SessionRecord type expected from loadSession");return t}async storeRecord(t){t.removeOldSessions(),await this.storage.storeSession(this.addr.toString(),t)}async queueJob(t){return await MUe(this.addr.toString(),t)}async encrypt(t){Zw(t);let o=await this.storage.getOurIdentity();return await this.queueJob(async()=>{let i=await this.getRecord();if(!i)throw new bs.SessionError("No sessions");let e=i.getOpenSession();if(!e)throw new bs.SessionError("No open session");let a=e.indexInfo.remoteIdentityKey;if(!await this.storage.isTrustedIdentity(this.addr.id,a))throw new bs.UntrustedIdentityKeyError(this.addr.id,a);let A=e.getChain(e.currentRatchet.ephemeralKeyPair.pubKey);if(A.chainType===Ww.RECEIVING)throw new Error("Tried to encrypt on a receiving chain");this.fillMessageKeys(A,A.chainKey.counter+1);let r=vg.deriveSecrets(A.messageKeys[A.chainKey.counter],Buffer.alloc(32),Buffer.from("WhisperMessageKeys"));delete A.messageKeys[A.chainKey.counter];let s=Ih.WhisperMessage.create();s.ephemeralKey=e.currentRatchet.ephemeralKeyPair.pubKey,s.counter=A.chainKey.counter,s.previousCounter=e.currentRatchet.previousCounter,s.ciphertext=vg.encrypt(r[0],t,r[2].slice(0,16));let g=Ih.WhisperMessage.encode(s).finish(),c=Buffer.alloc(g.byteLength+66+1);c.set(o.pubKey),c.set(e.indexInfo.remoteIdentityKey,33),c[66]=this._encodeTupleByte(Jc,Jc),c.set(g,67);let I=vg.calculateMAC(r[1],c),d=Buffer.alloc(g.byteLength+9);d[0]=this._encodeTupleByte(Jc,Jc),d.set(g,1),d.set(I.slice(0,8),g.byteLength+1),await this.storeRecord(i);let B,f;if(e.pendingPreKey){B=3;let Q=Ih.PreKeyWhisperMessage.create({identityKey:o.pubKey,registrationId:await this.storage.getOurRegistrationId(),baseKey:e.pendingPreKey.baseKey,signedPreKeyId:e.pendingPreKey.signedKeyId,message:d});e.pendingPreKey.preKeyId&&(Q.preKeyId=e.pendingPreKey.preKeyId),f=Buffer.concat([Buffer.from([this._encodeTupleByte(Jc,Jc)]),Buffer.from(Ih.PreKeyWhisperMessage.encode(Q).finish())])}else B=1,f=d;return{type:B,body:f,registrationId:e.registrationId}})}async decryptWithSessions(t,o){if(!o.length)throw new bs.SessionError("No sessions available");let i=[];for(let e of o){let a;try{return a=await this.doDecryptWhisperMessage(t,e),e.indexInfo.used=Date.now(),{session:e,plaintext:a}}catch(A){i.push(A)}}console.error("Failed to decrypt message with any known session...");for(let e of i)console.error("Session error:"+e,e.stack);throw new bs.SessionError("No matching sessions found for message")}async decryptWhisperMessage(t){return Zw(t),await this.queueJob(async()=>{let o=await this.getRecord();if(!o)throw new bs.SessionError("No session record");let i=await this.decryptWithSessions(t,o.getSessions()),e=i.session.indexInfo.remoteIdentityKey;if(!await this.storage.isTrustedIdentity(this.addr.id,e))throw new bs.UntrustedIdentityKeyError(this.addr.id,e);return o.isClosed(i.session)&&console.warn("Decrypted message with closed session."),await this.storeRecord(o),i.plaintext})}async decryptPreKeyWhisperMessage(t){Zw(t);let o=this._decodeTupleByte(t[0]);if(o[1]>3||o[0]<3)throw new Error("Incompatible version number on PreKeyWhisperMessage");return await this.queueJob(async()=>{let i=await this.getRecord(),e=Ih.PreKeyWhisperMessage.decode(t.slice(1));if(!i){if(e.registrationId==null)throw new Error("No registrationId");i=new X9}let A=await new bUe(this.storage,this.addr).initIncoming(i,e),r=i.getSession(e.baseKey),s=await this.doDecryptWhisperMessage(e.message,r);return await this.storeRecord(i),A&&await this.storage.removePreKey(A),s})}async doDecryptWhisperMessage(t,o){if(Zw(t),!o)throw new TypeError("session required");let i=this._decodeTupleByte(t[0]);if(i[1]>3||i[0]<3)throw new Error("Incompatible version number on WhisperMessage");let e=t.slice(1,-8),a=Ih.WhisperMessage.decode(e);this.maybeStepRatchet(o,a.ephemeralKey,a.previousCounter);let A=o.getChain(a.ephemeralKey);if(A.chainType===Ww.SENDING)throw new Error("Tried to decrypt on a sending chain");if(this.fillMessageKeys(A,a.counter),!A.messageKeys.hasOwnProperty(a.counter))throw new bs.MessageCounterError("Key used already or never filled");let r=A.messageKeys[a.counter];delete A.messageKeys[a.counter];let s=vg.deriveSecrets(r,Buffer.alloc(32),Buffer.from("WhisperMessageKeys")),g=await this.storage.getOurIdentity(),c=Buffer.alloc(e.byteLength+66+1);c.set(o.indexInfo.remoteIdentityKey),c.set(g.pubKey,33),c[66]=this._encodeTupleByte(Jc,Jc),c.set(e,67),vg.verifyMAC(c,s[1],t.slice(-8),8);let I=vg.decrypt(s[0],a.ciphertext,s[2].slice(0,16));return delete o.pendingPreKey,I}fillMessageKeys(t,o){if(t.chainKey.counter>=o)return;if(o-t.chainKey.counter>2e3)throw new bs.SessionError("Over 2000 messages into the future!");if(t.chainKey.key===void 0)throw new bs.SessionError("Chain closed");let i=t.chainKey.key;return t.messageKeys[t.chainKey.counter+1]=vg.calculateMAC(i,Buffer.from([1])),t.chainKey.key=vg.calculateMAC(i,Buffer.from([2])),t.chainKey.counter+=1,this.fillMessageKeys(t,o)}maybeStepRatchet(t,o,i){if(t.getChain(o))return;let e=t.currentRatchet,a=t.getChain(e.lastRemoteEphemeralKey);a&&(this.fillMessageKeys(a,i),delete a.chainKey.key),this.calculateRatchet(t,o,!1);let A=t.getChain(e.ephemeralKeyPair.pubKey);A&&(e.previousCounter=A.chainKey.counter,t.deleteChain(e.ephemeralKeyPair.pubKey)),e.ephemeralKeyPair=$9.generateKeyPair(),this.calculateRatchet(t,o,!0),e.lastRemoteEphemeralKey=o}calculateRatchet(t,o,i){let e=t.currentRatchet,a=$9.calculateAgreement(o,e.ephemeralKeyPair.privKey),A=vg.deriveSecrets(a,e.rootKey,Buffer.from("WhisperRatchet"),2),r=i?e.ephemeralKeyPair.pubKey:o;t.addChain(r,{messageKeys:{},chainKey:{counter:-1,key:A[1]},chainType:i?Ww.SENDING:Ww.RECEIVING}),e.rootKey=A[0]}async hasOpenSession(){return await this.queueJob(async()=>{let t=await this.getRecord();return t?t.haveOpenSession():!1})}async closeOpenSession(){return await this.queueJob(async()=>{let t=await this.getRecord();if(t){let o=t.getOpenSession();o&&(t.closeSession(o),await this.storeRecord(t))}})}};eX.exports=_F});var tX=ee(Pg=>{"use strict";Pg.crypto=Nl();Pg.curve=xc();Pg.keyhelper=G9();Pg.ProtocolAddress=QF();Pg.SessionBuilder=OF();Pg.SessionCipher=AX();Pg.SessionRecord=Jw();Object.assign(Pg,qw())});var NF=ee((PfA,nX)=>{"use strict";nX.exports=function(...n){try{return JSON.stringify(...n)}catch(t){return"[Cannot display object: "+t.message+"]"}}});var RF=ee((sX,gX)=>{"use strict";var PUe=NF();gX.exports=class extends Error{constructor(n){let t=n.filter(o=>o!=="").map(o=>typeof o=="string"?o:o instanceof Error?o.message:PUe(o));super(t.join(" ")||"Unknown error"),typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,sX.assert)}}});var Rl=ee((FfA,cX)=>{"use strict";var GUe=RF();cX.exports=function(n,...t){if(!n)throw t.length===1&&t[0]instanceof Error?t[0]:new GUe(t)}});var QB=ee((LfA,lX)=>{"use strict";var kF=Rl(),IX={};lX.exports=function(n,t,o){if(t===!1||t===null||t===void 0)return n;o=o||{},typeof o=="string"&&(o={separator:o});let i=Array.isArray(t);kF(!i||!o.separator,"Separator option is not valid for array-based chain");let e=i?t:t.split(o.separator||"."),a=n;for(let A=0;A{"use strict";var pX={};di=dX.exports={array:Array.prototype,buffer:Buffer&&Buffer.prototype,date:Date.prototype,error:Error.prototype,generic:Object.prototype,map:Map.prototype,promise:Promise.prototype,regex:RegExp.prototype,set:Set.prototype,weakMap:WeakMap.prototype,weakSet:WeakSet.prototype};pX.typeMap=new Map([["[object Error]",di.error],["[object Map]",di.map],["[object Promise]",di.promise],["[object Set]",di.set],["[object WeakMap]",di.weakMap],["[object WeakSet]",di.weakSet]]);di.getInternalProto=function(n){if(Array.isArray(n))return di.array;if(Buffer&&n instanceof Buffer)return di.buffer;if(n instanceof Date)return di.date;if(n instanceof RegExp)return di.regex;if(n instanceof Error)return di.error;let t=Object.prototype.toString.call(n);return pX.typeMap.get(t)||di.generic}});var $w=ee(hX=>{"use strict";hX.keys=function(n,t={}){return t.symbols!==!1?Reflect.ownKeys(n):Object.getOwnPropertyNames(n)}});var eD=ee((HfA,EX)=>{"use strict";var FUe=QB(),po=vF(),LUe=$w(),Fg={needsProtoHack:new Set([po.set,po.map,po.weakSet,po.weakMap])};EX.exports=Fg.clone=function(n,t={},o=null){if(typeof n!="object"||n===null)return n;let i=Fg.clone,e=o;if(t.shallow){if(t.shallow!==!0)return Fg.cloneWithShallow(n,t);i=s=>s}else if(e){let s=e.get(n);if(s)return s}else e=new Map;let a=po.getInternalProto(n);if(a===po.buffer)return Buffer&&Buffer.from(n);if(a===po.date)return new Date(n.getTime());if(a===po.regex)return new RegExp(n);let A=Fg.base(n,a,t);if(A===n)return n;if(e&&e.set(n,A),a===po.set)for(let s of n)A.add(i(s,t,e));else if(a===po.map)for(let[s,g]of n)A.set(s,i(g,t,e));let r=LUe.keys(n,t);for(let s of r){if(s==="__proto__")continue;if(a===po.array&&s==="length"){A.length=n.length;continue}let g=Object.getOwnPropertyDescriptor(n,s);g?g.get||g.set?Object.defineProperty(A,s,g):g.enumerable?A[s]=i(n[s],t,e):Object.defineProperty(A,s,{enumerable:!1,writable:!0,configurable:!0,value:i(n[s],t,e)}):Object.defineProperty(A,s,{enumerable:!0,writable:!0,configurable:!0,value:i(n[s],t,e)})}return A};Fg.cloneWithShallow=function(n,t){let o=t.shallow;t=Object.assign({},t),t.shallow=!1;let i=new Map;for(let e of o){let a=FUe(n,e);(typeof a=="object"||typeof a=="function")&&i.set(a,a)}return Fg.clone(n,t,i)};Fg.base=function(n,t,o){if(o.prototype===!1)return Fg.needsProtoHack.has(t)?new t.constructor:t===po.array?[]:{};let i=Object.getPrototypeOf(n);if(i&&i.isImmutable)return n;if(t===po.array){let e=[];return i!==t&&Object.setPrototypeOf(e,i),e}if(Fg.needsProtoHack.has(t)){let e=new i.constructor;return i!==t&&Object.setPrototypeOf(e,i),e}return Object.create(i)}});var GF=ee((KfA,BX)=>{"use strict";var PF=Rl(),CX=eD(),UUe=$w(),uX={};BX.exports=uX.merge=function(n,t,o){if(PF(n&&typeof n=="object","Invalid target value: must be an object"),PF(t==null||typeof t=="object","Invalid source value: must be null, undefined, or an object"),!t)return n;if(o=Object.assign({nullOverride:!0,mergeArrays:!0},o),Array.isArray(t)){PF(Array.isArray(n),"Cannot merge array onto an object"),o.mergeArrays||(n.length=0);for(let e=0;e{"use strict";var AD=Rl(),QX=eD(),yX=GF(),fX=QB(),tD={};mX.exports=function(n,t,o={}){if(AD(n&&typeof n=="object","Invalid defaults value: must be an object"),AD(!t||t===!0||typeof t=="object","Invalid source value: must be true, falsy or an object"),AD(typeof o=="object","Invalid options: must be an object"),!t)return null;if(o.shallow)return tD.applyToDefaultsWithShallow(n,t,o);let i=QX(n);if(t===!0)return i;let e=o.nullOverride!==void 0?o.nullOverride:!1;return yX(i,t,{nullOverride:e,mergeArrays:!1})};tD.applyToDefaultsWithShallow=function(n,t,o){let i=o.shallow;AD(Array.isArray(i),"Invalid keys");let e=new Map,a=t===!0?null:new Set;for(let s of i){s=Array.isArray(s)?s:s.split(".");let g=fX(n,s);g&&typeof g=="object"?e.set(g,a&&fX(t,s)||g):a&&a.add(s)}let A=QX(n,{},e);if(!a)return A;for(let s of a)tD.reachCopy(A,t,s);let r=o.nullOverride!==void 0?o.nullOverride:!1;return yX(A,t,{nullOverride:r,mergeArrays:!1})};tD.reachCopy=function(n,t,o){for(let a of o){if(!(a in t))return;let A=t[a];if(typeof A!="object"||A===null)return;t=A}let i=t,e=n;for(let a=0;a{"use strict";var FF={};wX.exports=FF.Bench=class{constructor(){this.ts=0,this.reset()}reset(){this.ts=FF.Bench.now()}elapsed(){return FF.Bench.now()-this.ts}static now(){let n=process.hrtime();return n[0]*1e3+n[1]/1e6}}});var LF=ee((JfA,OX)=>{"use strict";OX.exports=function(){}});var MX=ee((qfA,bX)=>{"use strict";var HUe=LF();bX.exports=function(){return new Promise(HUe)}});var UF=ee((zfA,_X)=>{"use strict";var Ms=vF(),ai={mismatched:null};_X.exports=function(n,t,o){return o=Object.assign({prototype:!0},o),!!ai.isDeepEqual(n,t,o,[])};ai.isDeepEqual=function(n,t,o,i){if(n===t)return n!==0||1/n===1/t;let e=typeof n;if(e!==typeof t||n===null||t===null)return!1;if(e==="function"){if(!o.deepFunction||n.toString()!==t.toString())return!1}else if(e!=="object")return n!==n&&t!==t;let a=ai.getSharedType(n,t,!!o.prototype);switch(a){case Ms.buffer:return Buffer&&Buffer.prototype.equals.call(n,t);case Ms.promise:return n===t;case Ms.regex:return n.toString()===t.toString();case ai.mismatched:return!1}for(let A=i.length-1;A>=0;--A)if(i[A].isSame(n,t))return!0;i.push(new ai.SeenEntry(n,t));try{return!!ai.isDeepEqualObj(a,n,t,o,i)}finally{i.pop()}};ai.getSharedType=function(n,t,o){if(o)return Object.getPrototypeOf(n)!==Object.getPrototypeOf(t)?ai.mismatched:Ms.getInternalProto(n);let i=Ms.getInternalProto(n);return i!==Ms.getInternalProto(t)?ai.mismatched:i};ai.valueOf=function(n){let t=n.valueOf;if(t===void 0)return n;try{return t.call(n)}catch(o){return o}};ai.hasOwnEnumerableProperty=function(n,t){return Object.prototype.propertyIsEnumerable.call(n,t)};ai.isSetSimpleEqual=function(n,t){for(let o of Set.prototype.values.call(n))if(!Set.prototype.has.call(t,o))return!1;return!0};ai.isDeepEqualObj=function(n,t,o,i,e){let{isDeepEqual:a,valueOf:A,hasOwnEnumerableProperty:r}=ai,{keys:s,getOwnPropertySymbols:g}=Object;if(n===Ms.array)if(i.part){for(let f of t)for(let Q of o)if(a(f,Q,i,e))return!0}else{if(t.length!==o.length)return!1;for(let f=0;f{"use strict";TX.exports=function(n){return n.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g,"\\$&")}});var RX=ee((ZfA,NX)=>{"use strict";var rD=Rl(),KUe=UF(),xUe=HF(),YUe=$w(),ho={};NX.exports=function(n,t,o={}){return typeof t!="object"&&(t=[t]),rD(!Array.isArray(t)||t.length,"Values array cannot be empty"),typeof n=="string"?ho.string(n,t,o):Array.isArray(n)?ho.array(n,t,o):(rD(typeof n=="object","Reference must be string or an object"),ho.object(n,t,o))};ho.array=function(n,t,o){if(Array.isArray(t)||(t=[t]),!n.length||o.only&&o.once&&n.length!==t.length)return!1;let i,e=new Map;for(let A of t)if(!o.deep||!A||typeof A!="object"){let r=e.get(A);r?++r.allowed:e.set(A,{allowed:1,hits:0})}else{i=i||ho.compare(o);let r=!1;for(let[s,g]of e.entries())if(i(s,A)){++g.allowed,r=!0;break}r||e.set(A,{allowed:1,hits:0})}let a=0;for(let A of n){let r;if(!o.deep||!A||typeof A!="object")r=e.get(A);else{i=i||ho.compare(o);for(let[s,g]of e.entries())if(i(s,A)){r=g;break}}if(r&&(++r.hits,++a,o.once&&r.hits>r.allowed))return!1}if(o.only&&a!==n.length)return!1;for(let A of e.values())if(A.hits!==A.allowed&&A.hitst.propertyIsEnumerable(s)),a=[...Object.keys(t),...e],A=ho.compare(o),r=new Set(a);for(let s of i){if(!r.has(s)){if(o.only)return!1;continue}if(!A(t[s],n[s]))return!1;r.delete(s)}return r.size?o.part?r.sizes!=="");let i=new Map,e=[];for(let s of t)if(rD(typeof s=="string","Cannot compare string reference to non-string value"),s){let g=i.get(s);g?++g.allowed:(i.set(s,{allowed:1,hits:0}),e.push(xUe(s)))}else if(o.once||o.only)return!1;if(!e.length)return!0;let a=new RegExp(`(${e.join("|")})`,"g"),A=n.replace(a,(s,g)=>(++i.get(g).hits,""));if(o.only&&A)return!1;let r=!1;for(let s of i.values())if(s.hits&&(r=!0),s.hits!==s.allowed&&(s.hitsKUe(e,a,i)};ho.shallow=function(n,t){return n===t}});var vX=ee((XfA,kX)=>{"use strict";var jUe=Rl();kX.exports=function(n){return jUe(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/.test(n),"Bad attribute value ("+n+")"),n.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')}});var GX=ee(($fA,PX)=>{"use strict";var zc={};PX.exports=function(n){if(!n)return"";let t="";for(let o=0;o=256?"&#"+n+";":`&#x${n.toString(16).padStart(2,"0")};`)};zc.isSafe=function(n){return zc.safeCharCodes.has(n)};zc.namedHtml=new Map([[38,"&"],[60,"<"],[62,">"],[34,"""],[160," "],[162,"¢"],[163,"£"],[164,"¤"],[169,"©"],[174,"®"]]);zc.safeCharCodes=(function(){let n=new Set;for(let t=32;t<123;++t)(t>=97||t>=65&&t<=90||t>=48&&t<=57||t===32||t===46||t===44||t===45||t===58||t===95)&&n.add(t);return n})()});var LX=ee((eQA,FX)=>{"use strict";var aD={};FX.exports=function(n){return n?n.replace(/[<>&\u2028\u2029]/g,aD.escape):""};aD.escape=function(n){return aD.replacements.get(n)};aD.replacements=new Map([["<","\\u003c"],[">","\\u003e"],["&","\\u0026"],["\u2028","\\u2028"],["\u2029","\\u2029"]])});var KX=ee((AQA,HX)=>{"use strict";var UX={};HX.exports=UX.flatten=function(n,t){let o=t||[];for(let i of n)Array.isArray(i)?UX.flatten(i,o):o.push(i);return o}});var jX=ee((tQA,YX)=>{"use strict";var xX={};YX.exports=function(n,t,o={}){if(!n||!t)return o.first?null:[];let i=[],e=Array.isArray(n)?new Set(n):n,a=new Set;for(let A of t)if(xX.has(e,A)&&!a.has(A)){if(o.first)return A;i.push(A),a.add(A)}return o.first?null:i};xX.has=function(n,t){return typeof n.has=="function"?n.has(t):n[t]!==void 0}});var qX=ee((rQA,JX)=>{"use strict";JX.exports=function(n){return!!n&&typeof n.then=="function"}});var WX=ee((aQA,VX)=>{"use strict";var zX={wrapped:Symbol("wrapped")};VX.exports=function(n){if(n[zX.wrapped])return n;let t=!1,o=function(...i){t||(t=!0,n(...i))};return o[zX.wrapped]=!0,o}});var XX=ee((iQA,ZX)=>{"use strict";var JUe=QB();ZX.exports=function(n,t,o){return t.replace(/{([^{}]+)}/g,(i,e)=>{let a=JUe(n,e,o);return a??""})}});var e7=ee((oQA,$X)=>{"use strict";var qUe={maxTimer:2147483647};$X.exports=function(n,t,o){if(typeof n=="bigint"&&(n=Number(n)),n>=Number.MAX_SAFE_INTEGER&&(n=1/0),typeof n!="number"&&n!==void 0)throw new TypeError("Timeout must be a number or bigint");return new Promise(i=>{let e=o?o.setTimeout:setTimeout,a=()=>{let A=Math.min(n,qUe.maxTimer);n-=A,e(()=>n>0?a():i(t),A)};n!==1/0&&a()})}});var A7=ee(pr=>{"use strict";pr.applyToDefaults=SX();pr.assert=Rl();pr.Bench=DX();pr.block=MX();pr.clone=eD();pr.contain=RX();pr.deepEqual=UF();pr.Error=RF();pr.escapeHeaderAttribute=vX();pr.escapeHtml=GX();pr.escapeJson=LX();pr.escapeRegex=HF();pr.flatten=KX();pr.ignore=LF();pr.intersect=jX();pr.isPromise=qX();pr.merge=GF();pr.once=WX();pr.reach=QB();pr.reachTemplate=XX();pr.stringify=NF();pr.wait=e7()});var Kr=ee(Pe=>{"use strict";var kl=A7(),ji={codes:new Map([[100,"Continue"],[101,"Switching Protocols"],[102,"Processing"],[200,"OK"],[201,"Created"],[202,"Accepted"],[203,"Non-Authoritative Information"],[204,"No Content"],[205,"Reset Content"],[206,"Partial Content"],[207,"Multi-Status"],[300,"Multiple Choices"],[301,"Moved Permanently"],[302,"Moved Temporarily"],[303,"See Other"],[304,"Not Modified"],[305,"Use Proxy"],[307,"Temporary Redirect"],[400,"Bad Request"],[401,"Unauthorized"],[402,"Payment Required"],[403,"Forbidden"],[404,"Not Found"],[405,"Method Not Allowed"],[406,"Not Acceptable"],[407,"Proxy Authentication Required"],[408,"Request Time-out"],[409,"Conflict"],[410,"Gone"],[411,"Length Required"],[412,"Precondition Failed"],[413,"Request Entity Too Large"],[414,"Request-URI Too Large"],[415,"Unsupported Media Type"],[416,"Requested Range Not Satisfiable"],[417,"Expectation Failed"],[418,"I'm a teapot"],[422,"Unprocessable Entity"],[423,"Locked"],[424,"Failed Dependency"],[425,"Too Early"],[426,"Upgrade Required"],[428,"Precondition Required"],[429,"Too Many Requests"],[431,"Request Header Fields Too Large"],[451,"Unavailable For Legal Reasons"],[500,"Internal Server Error"],[501,"Not Implemented"],[502,"Bad Gateway"],[503,"Service Unavailable"],[504,"Gateway Time-out"],[505,"HTTP Version Not Supported"],[506,"Variant Also Negotiates"],[507,"Insufficient Storage"],[509,"Bandwidth Limit Exceeded"],[510,"Not Extended"],[511,"Network Authentication Required"]])};Pe.Boom=class extends Error{constructor(n,t={}){if(n instanceof Error)return Pe.boomify(kl.clone(n),t);let{statusCode:o=500,data:i=null,ctor:e=Pe.Boom}=t,a=new Error(n||void 0);Error.captureStackTrace(a,e),a.data=i;let A=ji.initialize(a,o);return Object.defineProperty(A,"typeof",{value:e}),t.decorate&&Object.assign(A,t.decorate),A}static[Symbol.hasInstance](n){return this===Pe.Boom?Pe.isBoom(n):this.prototype.isPrototypeOf(n)}};Pe.isBoom=function(n,t){return n instanceof Error&&!!n.isBoom&&(!t||n.output.statusCode===t)};Pe.boomify=function(n,t){return kl.assert(n instanceof Error,"Cannot wrap non-Error object"),t=t||{},t.data!==void 0&&(n.data=t.data),t.decorate&&Object.assign(n,t.decorate),n.isBoom?t.override===!1||!t.statusCode&&!t.message?n:ji.initialize(n,t.statusCode||n.output.statusCode,t.message):ji.initialize(n,t.statusCode||500,t.message)};Pe.badRequest=function(n,t){return new Pe.Boom(n,{statusCode:400,data:t,ctor:Pe.badRequest})};Pe.unauthorized=function(n,t,o){let i=new Pe.Boom(n,{statusCode:401,ctor:Pe.unauthorized});if(!t)return i;if(typeof t!="string")return i.output.headers["WWW-Authenticate"]=t.join(", "),i;let e=`${t}`;return(o||n)&&(i.output.payload.attributes={}),o&&(typeof o=="string"?(e+=" "+kl.escapeHeaderAttribute(o),i.output.payload.attributes=o):e+=" "+Object.keys(o).map(a=>{let A=o[a];return A==null&&(A=""),i.output.payload.attributes[a]=A,`${a}="${kl.escapeHeaderAttribute(A.toString())}"`}).join(", ")),n?(o&&(e+=","),e+=` error="${kl.escapeHeaderAttribute(n)}"`,i.output.payload.attributes.error=n):i.isMissing=!0,i.output.headers["WWW-Authenticate"]=e,i};Pe.paymentRequired=function(n,t){return new Pe.Boom(n,{statusCode:402,data:t,ctor:Pe.paymentRequired})};Pe.forbidden=function(n,t){return new Pe.Boom(n,{statusCode:403,data:t,ctor:Pe.forbidden})};Pe.notFound=function(n,t){return new Pe.Boom(n,{statusCode:404,data:t,ctor:Pe.notFound})};Pe.methodNotAllowed=function(n,t,o){let i=new Pe.Boom(n,{statusCode:405,data:t,ctor:Pe.methodNotAllowed});return typeof o=="string"&&(o=[o]),Array.isArray(o)&&(i.output.headers.Allow=o.join(", ")),i};Pe.notAcceptable=function(n,t){return new Pe.Boom(n,{statusCode:406,data:t,ctor:Pe.notAcceptable})};Pe.proxyAuthRequired=function(n,t){return new Pe.Boom(n,{statusCode:407,data:t,ctor:Pe.proxyAuthRequired})};Pe.clientTimeout=function(n,t){return new Pe.Boom(n,{statusCode:408,data:t,ctor:Pe.clientTimeout})};Pe.conflict=function(n,t){return new Pe.Boom(n,{statusCode:409,data:t,ctor:Pe.conflict})};Pe.resourceGone=function(n,t){return new Pe.Boom(n,{statusCode:410,data:t,ctor:Pe.resourceGone})};Pe.lengthRequired=function(n,t){return new Pe.Boom(n,{statusCode:411,data:t,ctor:Pe.lengthRequired})};Pe.preconditionFailed=function(n,t){return new Pe.Boom(n,{statusCode:412,data:t,ctor:Pe.preconditionFailed})};Pe.entityTooLarge=function(n,t){return new Pe.Boom(n,{statusCode:413,data:t,ctor:Pe.entityTooLarge})};Pe.uriTooLong=function(n,t){return new Pe.Boom(n,{statusCode:414,data:t,ctor:Pe.uriTooLong})};Pe.unsupportedMediaType=function(n,t){return new Pe.Boom(n,{statusCode:415,data:t,ctor:Pe.unsupportedMediaType})};Pe.rangeNotSatisfiable=function(n,t){return new Pe.Boom(n,{statusCode:416,data:t,ctor:Pe.rangeNotSatisfiable})};Pe.expectationFailed=function(n,t){return new Pe.Boom(n,{statusCode:417,data:t,ctor:Pe.expectationFailed})};Pe.teapot=function(n,t){return new Pe.Boom(n,{statusCode:418,data:t,ctor:Pe.teapot})};Pe.badData=function(n,t){return new Pe.Boom(n,{statusCode:422,data:t,ctor:Pe.badData})};Pe.locked=function(n,t){return new Pe.Boom(n,{statusCode:423,data:t,ctor:Pe.locked})};Pe.failedDependency=function(n,t){return new Pe.Boom(n,{statusCode:424,data:t,ctor:Pe.failedDependency})};Pe.tooEarly=function(n,t){return new Pe.Boom(n,{statusCode:425,data:t,ctor:Pe.tooEarly})};Pe.preconditionRequired=function(n,t){return new Pe.Boom(n,{statusCode:428,data:t,ctor:Pe.preconditionRequired})};Pe.tooManyRequests=function(n,t){return new Pe.Boom(n,{statusCode:429,data:t,ctor:Pe.tooManyRequests})};Pe.illegal=function(n,t){return new Pe.Boom(n,{statusCode:451,data:t,ctor:Pe.illegal})};Pe.internal=function(n,t,o=500){return ji.serverError(n,t,o,Pe.internal)};Pe.notImplemented=function(n,t){return ji.serverError(n,t,501,Pe.notImplemented)};Pe.badGateway=function(n,t){return ji.serverError(n,t,502,Pe.badGateway)};Pe.serverUnavailable=function(n,t){return ji.serverError(n,t,503,Pe.serverUnavailable)};Pe.gatewayTimeout=function(n,t){return ji.serverError(n,t,504,Pe.gatewayTimeout)};Pe.badImplementation=function(n,t){let o=ji.serverError(n,t,500,Pe.badImplementation);return o.isDeveloperError=!0,o};ji.initialize=function(n,t,o){let i=parseInt(t,10);if(kl.assert(!isNaN(i)&&i>=400,"First argument must be a number (400+):",t),n.isBoom=!0,n.isServer=i>=500,n.hasOwnProperty("data")||(n.data=null),n.output={statusCode:i,payload:{},headers:{}},Object.defineProperty(n,"reformat",{value:ji.reformat,configurable:!0}),!o&&!n.message&&(n.reformat(),o=n.output.payload.error),o){let e=Object.getOwnPropertyDescriptor(n,"message")||Object.getOwnPropertyDescriptor(Object.getPrototypeOf(n),"message");kl.assert(!e||e.configurable&&!e.get,"The error is not compatible with boom"),n.message=o+(n.message?": "+n.message:""),n.output.payload.message=n.message}return n.reformat(),n};ji.reformat=function(n=!1){this.output.payload.statusCode=this.output.statusCode,this.output.payload.error=ji.codes.get(this.output.statusCode)||"Unknown",this.output.statusCode===500&&n!==!0?this.output.payload.message="An internal server error occurred":this.message&&(this.output.payload.message=this.message)};ji.serverError=function(n,t,o,i){return t instanceof Error&&!t.isBoom?Pe.boomify(t,{statusCode:o,message:n}):new Pe.Boom(n,{statusCode:o,data:t,ctor:i})}});var a$,OHe,bHe,MHe,_He,THe,NHe,RHe,kHe,vHe,PHe,GHe,FHe,LHe,UHe,O,Ts=ue(()=>{a$=n=>typeof n<"u"&&n!==null,OHe=n=>typeof n=="object",bHe=n=>Object.prototype.toString.call(n)==="[object Object]",MHe=n=>typeof n=="function",_He=n=>typeof n=="boolean",THe=n=>n instanceof Buffer,NHe=n=>{if(a$(n))switch(n.constructor){case Uint8Array:case Uint8ClampedArray:case Int8Array:case Uint16Array:case Int16Array:case Uint32Array:case Int32Array:case Float32Array:case Float64Array:return!0}return!1},RHe=n=>n instanceof ArrayBuffer,kHe=n=>typeof n=="string"&&n.length>0,vHe=n=>typeof n=="number"&&Number.isFinite(n),PHe=n=>Number.isInteger(n),GHe=(n,t,o)=>n>=t&&n<=o,FHe=(n,t)=>t.includes(n),LHe=(n,t,o)=>new Error(`Expected ${t} for ${n} but received ${o} of type ${typeof o}`),UHe=(n,t)=>(t.message=n.message,t),O={defined:a$,object:OHe,plainObject:bHe,fn:MHe,bool:_He,buffer:THe,typedArray:NHe,arrayBuffer:RHe,string:kHe,number:vHe,integer:PHe,inRange:GHe,inArray:FHe,invalidParameterError:LHe,nativeError:UHe}});var n$=ee((CyA,o$)=>{"use strict";var i$=()=>process.platform==="linux",fD=null,HHe=()=>{if(!fD)if(i$()&&process.report){let n=process.report.excludeNetwork;process.report.excludeNetwork=!0,fD=process.report.getReport(),process.report.excludeNetwork=n}else fD={};return fD};o$.exports={isLinux:i$,getReport:HHe}});var g$=ee((uyA,s$)=>{"use strict";var yh=$e("fs"),KHe="/usr/bin/ldd",xHe="/proc/self/exe",QD=2048,YHe=n=>{let t=yh.openSync(n,"r"),o=Buffer.alloc(QD),i=yh.readSync(t,o,0,QD,0);return yh.close(t,()=>{}),o.subarray(0,i)},jHe=n=>new Promise((t,o)=>{yh.open(n,"r",(i,e)=>{if(i)o(i);else{let a=Buffer.alloc(QD);yh.read(e,a,0,QD,0,(A,r)=>{t(a.subarray(0,r)),yh.close(e,()=>{})})}})});s$.exports={LDD_PATH:KHe,SELF_PATH:xHe,readFileSync:YHe,readFile:jHe}});var I$=ee((ByA,c$)=>{"use strict";var JHe=n=>{if(n.length<64||n.readUInt32BE(0)!==2135247942||n.readUInt8(4)!==2||n.readUInt8(5)!==1)return null;let t=n.readUInt32LE(32),o=n.readUInt16LE(54),i=n.readUInt16LE(56);for(let e=0;e{"use strict";var p$=$e("child_process"),{isLinux:mh,getReport:d$}=n$(),{LDD_PATH:yD,SELF_PATH:h$,readFile:AL,readFileSync:tL}=g$(),{interpreterPath:E$}=I$(),Ns,Rs,ks,C$="getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true",AI="",u$=()=>AI||new Promise(n=>{p$.exec(C$,(t,o)=>{AI=t?" ":o,n(AI)})}),B$=()=>{if(!AI)try{AI=p$.execSync(C$,{encoding:"utf8"})}catch{AI=" "}return AI},xg="glibc",f$=/LIBC[a-z0-9 \-).]*?(\d+\.\d+)/i,Ul="musl",qHe=n=>n.includes("libc.musl-")||n.includes("ld-musl-"),Q$=()=>{let n=d$();return n.header&&n.header.glibcVersionRuntime?xg:Array.isArray(n.sharedObjects)&&n.sharedObjects.some(qHe)?Ul:null},y$=n=>{let[t,o]=n.split(/[\r\n]+/);return t&&t.includes(xg)?xg:o&&o.includes(Ul)?Ul:null},m$=n=>{if(n){if(n.includes("/ld-musl-"))return Ul;if(n.includes("/ld-linux-"))return xg}return null},S$=n=>(n=n.toString(),n.includes("musl")?Ul:n.includes("GNU C Library")?xg:null),zHe=async()=>{if(Rs!==void 0)return Rs;Rs=null;try{let n=await AL(yD);Rs=S$(n)}catch{}return Rs},VHe=()=>{if(Rs!==void 0)return Rs;Rs=null;try{let n=tL(yD);Rs=S$(n)}catch{}return Rs},WHe=async()=>{if(Ns!==void 0)return Ns;Ns=null;try{let n=await AL(h$),t=E$(n);Ns=m$(t)}catch{}return Ns},ZHe=()=>{if(Ns!==void 0)return Ns;Ns=null;try{let n=tL(h$),t=E$(n);Ns=m$(t)}catch{}return Ns},w$=async()=>{let n=null;if(mh()&&(n=await WHe(),!n&&(n=await zHe(),n||(n=Q$()),!n))){let t=await u$();n=y$(t)}return n},D$=()=>{let n=null;if(mh()&&(n=ZHe(),!n&&(n=VHe(),n||(n=Q$()),!n))){let t=B$();n=y$(t)}return n},XHe=async()=>mh()&&await w$()!==xg,$He=()=>mh()&&D$()!==xg,eKe=async()=>{if(ks!==void 0)return ks;ks=null;try{let t=(await AL(yD)).match(f$);t&&(ks=t[1])}catch{}return ks},AKe=()=>{if(ks!==void 0)return ks;ks=null;try{let t=tL(yD).match(f$);t&&(ks=t[1])}catch{}return ks},O$=()=>{let n=d$();return n.header&&n.header.glibcVersionRuntime?n.header.glibcVersionRuntime:null},l$=n=>n.trim().split(/\s+/)[1],b$=n=>{let[t,o,i]=n.split(/[\r\n]+/);return t&&t.includes(xg)?l$(t):o&&i&&o.includes(Ul)?l$(i):null},tKe=async()=>{let n=null;if(mh()&&(n=await eKe(),n||(n=O$()),!n)){let t=await u$();n=b$(t)}return n},rKe=()=>{let n=null;if(mh()&&(n=AKe(),n||(n=O$()),!n)){let t=B$();n=b$(t)}return n};M$.exports={GLIBC:xg,MUSL:Ul,family:w$,familySync:D$,isNonGlibcLinux:XHe,isNonGlibcLinuxSync:$He,version:tKe,versionSync:rKe}});var Sh=ee((QyA,_$)=>{"use strict";var aKe="2.0.0",iKe=Number.MAX_SAFE_INTEGER||9007199254740991,oKe=16,nKe=250,sKe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];_$.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:oKe,MAX_SAFE_BUILD_LENGTH:nKe,MAX_SAFE_INTEGER:iKe,RELEASE_TYPES:sKe,SEMVER_SPEC_VERSION:aKe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var vB=ee((yyA,T$)=>{"use strict";var gKe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...n)=>console.error("SEMVER",...n):()=>{};T$.exports=gKe});var wh=ee((vs,N$)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:rL,MAX_SAFE_BUILD_LENGTH:cKe,MAX_LENGTH:IKe}=Sh(),lKe=vB();vs=N$.exports={};var pKe=vs.re=[],dKe=vs.safeRe=[],gA=vs.src=[],hKe=vs.safeSrc=[],cA=vs.t={},EKe=0,aL="[a-zA-Z0-9-]",CKe=[["\\s",1],["\\d",IKe],[aL,cKe]],uKe=n=>{for(let[t,o]of CKe)n=n.split(`${t}*`).join(`${t}{0,${o}}`).split(`${t}+`).join(`${t}{1,${o}}`);return n},JA=(n,t,o)=>{let i=uKe(t),e=EKe++;lKe(n,e,t),cA[n]=e,gA[e]=t,hKe[e]=i,pKe[e]=new RegExp(t,o?"g":void 0),dKe[e]=new RegExp(i,o?"g":void 0)};JA("NUMERICIDENTIFIER","0|[1-9]\\d*");JA("NUMERICIDENTIFIERLOOSE","\\d+");JA("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${aL}*`);JA("MAINVERSION",`(${gA[cA.NUMERICIDENTIFIER]})\\.(${gA[cA.NUMERICIDENTIFIER]})\\.(${gA[cA.NUMERICIDENTIFIER]})`);JA("MAINVERSIONLOOSE",`(${gA[cA.NUMERICIDENTIFIERLOOSE]})\\.(${gA[cA.NUMERICIDENTIFIERLOOSE]})\\.(${gA[cA.NUMERICIDENTIFIERLOOSE]})`);JA("PRERELEASEIDENTIFIER",`(?:${gA[cA.NONNUMERICIDENTIFIER]}|${gA[cA.NUMERICIDENTIFIER]})`);JA("PRERELEASEIDENTIFIERLOOSE",`(?:${gA[cA.NONNUMERICIDENTIFIER]}|${gA[cA.NUMERICIDENTIFIERLOOSE]})`);JA("PRERELEASE",`(?:-(${gA[cA.PRERELEASEIDENTIFIER]}(?:\\.${gA[cA.PRERELEASEIDENTIFIER]})*))`);JA("PRERELEASELOOSE",`(?:-?(${gA[cA.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${gA[cA.PRERELEASEIDENTIFIERLOOSE]})*))`);JA("BUILDIDENTIFIER",`${aL}+`);JA("BUILD",`(?:\\+(${gA[cA.BUILDIDENTIFIER]}(?:\\.${gA[cA.BUILDIDENTIFIER]})*))`);JA("FULLPLAIN",`v?${gA[cA.MAINVERSION]}${gA[cA.PRERELEASE]}?${gA[cA.BUILD]}?`);JA("FULL",`^${gA[cA.FULLPLAIN]}$`);JA("LOOSEPLAIN",`[v=\\s]*${gA[cA.MAINVERSIONLOOSE]}${gA[cA.PRERELEASELOOSE]}?${gA[cA.BUILD]}?`);JA("LOOSE",`^${gA[cA.LOOSEPLAIN]}$`);JA("GTLT","((?:<|>)?=?)");JA("XRANGEIDENTIFIERLOOSE",`${gA[cA.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);JA("XRANGEIDENTIFIER",`${gA[cA.NUMERICIDENTIFIER]}|x|X|\\*`);JA("XRANGEPLAIN",`[v=\\s]*(${gA[cA.XRANGEIDENTIFIER]})(?:\\.(${gA[cA.XRANGEIDENTIFIER]})(?:\\.(${gA[cA.XRANGEIDENTIFIER]})(?:${gA[cA.PRERELEASE]})?${gA[cA.BUILD]}?)?)?`);JA("XRANGEPLAINLOOSE",`[v=\\s]*(${gA[cA.XRANGEIDENTIFIERLOOSE]})(?:\\.(${gA[cA.XRANGEIDENTIFIERLOOSE]})(?:\\.(${gA[cA.XRANGEIDENTIFIERLOOSE]})(?:${gA[cA.PRERELEASELOOSE]})?${gA[cA.BUILD]}?)?)?`);JA("XRANGE",`^${gA[cA.GTLT]}\\s*${gA[cA.XRANGEPLAIN]}$`);JA("XRANGELOOSE",`^${gA[cA.GTLT]}\\s*${gA[cA.XRANGEPLAINLOOSE]}$`);JA("COERCEPLAIN",`(^|[^\\d])(\\d{1,${rL}})(?:\\.(\\d{1,${rL}}))?(?:\\.(\\d{1,${rL}}))?`);JA("COERCE",`${gA[cA.COERCEPLAIN]}(?:$|[^\\d])`);JA("COERCEFULL",gA[cA.COERCEPLAIN]+`(?:${gA[cA.PRERELEASE]})?(?:${gA[cA.BUILD]})?(?:$|[^\\d])`);JA("COERCERTL",gA[cA.COERCE],!0);JA("COERCERTLFULL",gA[cA.COERCEFULL],!0);JA("LONETILDE","(?:~>?)");JA("TILDETRIM",`(\\s*)${gA[cA.LONETILDE]}\\s+`,!0);vs.tildeTrimReplace="$1~";JA("TILDE",`^${gA[cA.LONETILDE]}${gA[cA.XRANGEPLAIN]}$`);JA("TILDELOOSE",`^${gA[cA.LONETILDE]}${gA[cA.XRANGEPLAINLOOSE]}$`);JA("LONECARET","(?:\\^)");JA("CARETTRIM",`(\\s*)${gA[cA.LONECARET]}\\s+`,!0);vs.caretTrimReplace="$1^";JA("CARET",`^${gA[cA.LONECARET]}${gA[cA.XRANGEPLAIN]}$`);JA("CARETLOOSE",`^${gA[cA.LONECARET]}${gA[cA.XRANGEPLAINLOOSE]}$`);JA("COMPARATORLOOSE",`^${gA[cA.GTLT]}\\s*(${gA[cA.LOOSEPLAIN]})$|^$`);JA("COMPARATOR",`^${gA[cA.GTLT]}\\s*(${gA[cA.FULLPLAIN]})$|^$`);JA("COMPARATORTRIM",`(\\s*)${gA[cA.GTLT]}\\s*(${gA[cA.LOOSEPLAIN]}|${gA[cA.XRANGEPLAIN]})`,!0);vs.comparatorTrimReplace="$1$2$3";JA("HYPHENRANGE",`^\\s*(${gA[cA.XRANGEPLAIN]})\\s+-\\s+(${gA[cA.XRANGEPLAIN]})\\s*$`);JA("HYPHENRANGELOOSE",`^\\s*(${gA[cA.XRANGEPLAINLOOSE]})\\s+-\\s+(${gA[cA.XRANGEPLAINLOOSE]})\\s*$`);JA("STAR","(<|>)?=?\\s*\\*");JA("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");JA("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var SD=ee((myA,R$)=>{"use strict";var BKe=Object.freeze({loose:!0}),fKe=Object.freeze({}),QKe=n=>n?typeof n!="object"?BKe:n:fKe;R$.exports=QKe});var iL=ee((SyA,P$)=>{"use strict";var k$=/^[0-9]+$/,v$=(n,t)=>{if(typeof n=="number"&&typeof t=="number")return n===t?0:nv$(t,n);P$.exports={compareIdentifiers:v$,rcompareIdentifiers:yKe}});var Ma=ee((wyA,F$)=>{"use strict";var wD=vB(),{MAX_LENGTH:G$,MAX_SAFE_INTEGER:DD}=Sh(),{safeRe:OD,t:bD}=wh(),mKe=SD(),{compareIdentifiers:oL}=iL(),SKe=(n,t)=>{let o=t.split(".");if(o.length>n.length)return!1;for(let i=0;iG$)throw new TypeError(`version is longer than ${G$} characters`);wD("SemVer",t,o),this.options=o,this.loose=!!o.loose,this.includePrerelease=!!o.includePrerelease;let i=t.trim().match(o.loose?OD[bD.LOOSE]:OD[bD.FULL]);if(!i)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>DD||this.major<0)throw new TypeError("Invalid major version");if(this.minor>DD||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>DD||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(e=>{if(/^[0-9]+$/.test(e)){let a=+e;if(a>=0&&at.major?1:this.minort.minor?1:this.patcht.patch?1:0}comparePre(t){if(t instanceof n||(t=new n(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let o=0;do{let i=this.prerelease[o],e=t.prerelease[o];if(wD("prerelease compare",o,i,e),i===void 0&&e===void 0)return 0;if(e===void 0)return 1;if(i===void 0)return-1;if(i===e)continue;return oL(i,e)}while(++o)}compareBuild(t){t instanceof n||(t=new n(t,this.options));let o=0;do{let i=this.build[o],e=t.build[o];if(wD("build compare",o,i,e),i===void 0&&e===void 0)return 0;if(e===void 0)return 1;if(i===void 0)return-1;if(i===e)continue;return oL(i,e)}while(++o)}inc(t,o,i){if(t.startsWith("pre")){if(!o&&i===!1)throw new Error("invalid increment argument: identifier is empty");if(o){let e=`-${o}`.match(this.options.loose?OD[bD.PRERELEASELOOSE]:OD[bD.PRERELEASE]);if(!e||e[1]!==o)throw new Error(`invalid identifier: ${o}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",o,i);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",o,i);break;case"prepatch":this.prerelease.length=0,this.inc("patch",o,i),this.inc("pre",o,i);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",o,i),this.inc("pre",o,i);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let e=Number(i)?1:0;if(this.prerelease.length===0)this.prerelease=[e];else{let a=this.prerelease.length;for(;--a>=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);if(a===-1){if(o===this.prerelease.join(".")&&i===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(o){let a=[o,e];if(i===!1&&(a=[o]),SKe(this.prerelease,o)){let A=this.prerelease[o.split(".").length];isNaN(A)&&(this.prerelease=a)}else this.prerelease=a}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};F$.exports=nL});var tI=ee((DyA,U$)=>{"use strict";var L$=Ma(),wKe=(n,t,o=!1)=>{if(n instanceof L$)return n;try{return new L$(n,t)}catch(i){if(!o)return null;throw i}};U$.exports=wKe});var K$=ee((OyA,H$)=>{"use strict";var DKe=tI(),OKe=(n,t)=>{let o=DKe(n,t);return o?o.version:null};H$.exports=OKe});var Y$=ee((byA,x$)=>{"use strict";var bKe=tI(),MKe=(n,t)=>{let o=bKe(n.trim().replace(/^[=v]+/,""),t);return o?o.version:null};x$.exports=MKe});var q$=ee((MyA,J$)=>{"use strict";var j$=Ma(),_Ke=(n,t,o,i,e)=>{typeof o=="string"&&(e=i,i=o,o=void 0);try{return new j$(n instanceof j$?n.version:n,o).inc(t,i,e).version}catch{return null}};J$.exports=_Ke});var W$=ee((_yA,V$)=>{"use strict";var z$=tI(),TKe=(n,t)=>{let o=z$(n,null,!0),i=z$(t,null,!0),e=o.compare(i);if(e===0)return null;let a=e>0,A=a?o:i,r=a?i:o,s=!!A.prerelease.length;if(!!r.prerelease.length&&!s){if(!r.patch&&!r.minor)return"major";if(r.compareMain(A)===0)return r.minor&&!r.patch?"minor":"patch"}let c=s?"pre":"";return o.major!==i.major?c+"major":o.minor!==i.minor?c+"minor":o.patch!==i.patch?c+"patch":"prerelease"};V$.exports=TKe});var X$=ee((TyA,Z$)=>{"use strict";var NKe=Ma(),RKe=(n,t)=>new NKe(n,t).major;Z$.exports=RKe});var eee=ee((NyA,$$)=>{"use strict";var kKe=Ma(),vKe=(n,t)=>new kKe(n,t).minor;$$.exports=vKe});var tee=ee((RyA,Aee)=>{"use strict";var PKe=Ma(),GKe=(n,t)=>new PKe(n,t).patch;Aee.exports=GKe});var aee=ee((kyA,ree)=>{"use strict";var FKe=tI(),LKe=(n,t)=>{let o=FKe(n,t);return o&&o.prerelease.length?o.prerelease:null};ree.exports=LKe});var Zo=ee((vyA,oee)=>{"use strict";var iee=Ma(),UKe=(n,t,o)=>new iee(n,o).compare(new iee(t,o));oee.exports=UKe});var see=ee((PyA,nee)=>{"use strict";var HKe=Zo(),KKe=(n,t,o)=>HKe(t,n,o);nee.exports=KKe});var cee=ee((GyA,gee)=>{"use strict";var xKe=Zo(),YKe=(n,t)=>xKe(n,t,!0);gee.exports=YKe});var MD=ee((FyA,lee)=>{"use strict";var Iee=Ma(),jKe=(n,t,o)=>{let i=new Iee(n,o),e=new Iee(t,o);return i.compare(e)||i.compareBuild(e)};lee.exports=jKe});var dee=ee((LyA,pee)=>{"use strict";var JKe=MD(),qKe=(n,t)=>n.sort((o,i)=>JKe(o,i,t));pee.exports=qKe});var Eee=ee((UyA,hee)=>{"use strict";var zKe=MD(),VKe=(n,t)=>n.sort((o,i)=>zKe(i,o,t));hee.exports=VKe});var PB=ee((HyA,Cee)=>{"use strict";var WKe=Zo(),ZKe=(n,t,o)=>WKe(n,t,o)>0;Cee.exports=ZKe});var _D=ee((KyA,uee)=>{"use strict";var XKe=Zo(),$Ke=(n,t,o)=>XKe(n,t,o)<0;uee.exports=$Ke});var sL=ee((xyA,Bee)=>{"use strict";var exe=Zo(),Axe=(n,t,o)=>exe(n,t,o)===0;Bee.exports=Axe});var gL=ee((YyA,fee)=>{"use strict";var txe=Zo(),rxe=(n,t,o)=>txe(n,t,o)!==0;fee.exports=rxe});var TD=ee((jyA,Qee)=>{"use strict";var axe=Zo(),ixe=(n,t,o)=>axe(n,t,o)>=0;Qee.exports=ixe});var ND=ee((JyA,yee)=>{"use strict";var oxe=Zo(),nxe=(n,t,o)=>oxe(n,t,o)<=0;yee.exports=nxe});var cL=ee((qyA,mee)=>{"use strict";var sxe=sL(),gxe=gL(),cxe=PB(),Ixe=TD(),lxe=_D(),pxe=ND(),dxe=(n,t,o,i)=>{switch(t){case"===":return typeof n=="object"&&(n=n.version),typeof o=="object"&&(o=o.version),n===o;case"!==":return typeof n=="object"&&(n=n.version),typeof o=="object"&&(o=o.version),n!==o;case"":case"=":case"==":return sxe(n,o,i);case"!=":return gxe(n,o,i);case">":return cxe(n,o,i);case">=":return Ixe(n,o,i);case"<":return lxe(n,o,i);case"<=":return pxe(n,o,i);default:throw new TypeError(`Invalid operator: ${t}`)}};mee.exports=dxe});var wee=ee((zyA,See)=>{"use strict";var hxe=Ma(),Exe=tI(),{safeRe:RD,t:kD}=wh(),Cxe=(n,t)=>{if(n instanceof hxe)return n;if(typeof n=="number"&&(n=String(n)),typeof n!="string")return null;t=t||{};let o=null;if(!t.rtl)o=n.match(t.includePrerelease?RD[kD.COERCEFULL]:RD[kD.COERCE]);else{let s=t.includePrerelease?RD[kD.COERCERTLFULL]:RD[kD.COERCERTL],g;for(;(g=s.exec(n))&&(!o||o.index+o[0].length!==n.length);)(!o||g.index+g[0].length!==o.index+o[0].length)&&(o=g),s.lastIndex=g.index+g[1].length+g[2].length;s.lastIndex=-1}if(o===null)return null;let i=o[2],e=o[3]||"0",a=o[4]||"0",A=t.includePrerelease&&o[5]?`-${o[5]}`:"",r=t.includePrerelease&&o[6]?`+${o[6]}`:"";return Exe(`${i}.${e}.${a}${A}${r}`,t)};See.exports=Cxe});var Oee=ee((VyA,Dee)=>{"use strict";var uxe=tI(),Bxe=Sh(),fxe=Ma(),Qxe=(n,t,o)=>{if(!Bxe.RELEASE_TYPES.includes(t))return null;let i=yxe(n,o);return i&&mxe(i,t)},yxe=(n,t)=>{let o=n instanceof fxe?n.version:n;return uxe(o,t)},mxe=(n,t)=>{if(Sxe(t))return n.version;switch(n.prerelease=[],t){case"major":n.minor=0,n.patch=0;break;case"minor":n.patch=0;break}return n.format()},Sxe=n=>n.startsWith("pre");Dee.exports=Qxe});var Mee=ee((WyA,bee)=>{"use strict";var IL=class{constructor(){this.max=1e3,this.map=new Map}get(t){let o=this.map.get(t);if(o!==void 0)return this.map.delete(t),this.map.set(t,o),o}delete(t){return this.map.delete(t)}set(t,o){if(!this.delete(t)&&o!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(t,o)}return this}};bee.exports=IL});var Xo=ee((ZyA,Ree)=>{"use strict";var wxe=/\s+/g,lL=class n{constructor(t,o){if(o=Oxe(o),t instanceof n)return t.loose===!!o.loose&&t.includePrerelease===!!o.includePrerelease?t:new n(t.raw,o);if(t instanceof pL)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=o,this.loose=!!o.loose,this.includePrerelease=!!o.includePrerelease,this.raw=t.trim().replace(wxe," "),this.set=this.raw.split("||").map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(e=>!Tee(e[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&Pxe(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t0&&(this.formatted+="||");let o=this.set[t];for(let i=0;i0&&(this.formatted+=" "),this.formatted+=o[i].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){t=t.replace(vxe,"");let i=((this.options.includePrerelease&&Rxe)|(this.options.loose&&kxe))+":"+t,e=_ee.get(i);if(e)return e;let a=this.options.loose,A=a?hi[_a.HYPHENRANGELOOSE]:hi[_a.HYPHENRANGE];t=t.replace(A,qxe(this.options.includePrerelease)),qt("hyphen replace",t),t=t.replace(hi[_a.COMPARATORTRIM],_xe),qt("comparator trim",t),t=t.replace(hi[_a.TILDETRIM],Txe),qt("tilde trim",t),t=t.replace(hi[_a.CARETTRIM],Nxe),qt("caret trim",t);let r=t.split(" ").map(I=>Gxe(I,this.options)).join(" ").split(/\s+/).map(I=>Jxe(I,this.options));a&&(r=r.filter(I=>(qt("loose invalid filter",I,this.options),!!I.match(hi[_a.COMPARATORLOOSE])))),qt("range list",r);let s=new Map,g=r.map(I=>new pL(I,this.options));for(let I of g){if(Tee(I))return[I];s.set(I.value,I)}s.size>1&&s.has("")&&s.delete("");let c=[...s.values()];return _ee.set(i,c),c}intersects(t,o){if(!(t instanceof n))throw new TypeError("a Range is required");return this.set.some(i=>Nee(i,o)&&t.set.some(e=>Nee(e,o)&&i.every(a=>e.every(A=>a.intersects(A,o)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new bxe(t,this.options)}catch{return!1}for(let o=0;on.value==="<0.0.0-0",Pxe=n=>n.value==="",Nee=(n,t)=>{let o=!0,i=n.slice(),e=i.pop();for(;o&&i.length;)o=i.every(a=>e.intersects(a,t)),e=i.pop();return o},Gxe=(n,t)=>(n=n.replace(hi[_a.BUILD],""),qt("comp",n,t),n=Hxe(n,t),qt("caret",n),n=Lxe(n,t),qt("tildes",n),n=xxe(n,t),qt("xrange",n),n=jxe(n,t),qt("stars",n),n),Jr=n=>!n||n.toLowerCase()==="x"||n==="*",Fxe=(n,t,o)=>Jr(n)&&!Jr(t)||Jr(t)&&o&&!Jr(o),Lxe=(n,t)=>n.trim().split(/\s+/).map(o=>Uxe(o,t)).join(" "),Uxe=(n,t)=>{let o=t.loose?hi[_a.TILDELOOSE]:hi[_a.TILDE],i=t.includePrerelease?"-0":"";return n.replace(o,(e,a,A,r,s)=>{qt("tilde",n,e,a,A,r,s);let g;return Jr(a)?g="":Jr(A)?g=`>=${a}.0.0${i} <${+a+1}.0.0-0`:Jr(r)?g=`>=${a}.${A}.0${i} <${a}.${+A+1}.0-0`:s?(qt("replaceTilde pr",s),g=`>=${a}.${A}.${r}-${s} <${a}.${+A+1}.0-0`):g=`>=${a}.${A}.${r} <${a}.${+A+1}.0-0`,qt("tilde return",g),g})},Hxe=(n,t)=>n.trim().split(/\s+/).map(o=>Kxe(o,t)).join(" "),Kxe=(n,t)=>{qt("caret",n,t);let o=t.loose?hi[_a.CARETLOOSE]:hi[_a.CARET],i=t.includePrerelease?"-0":"";return n.replace(o,(e,a,A,r,s)=>{qt("caret",n,e,a,A,r,s);let g;return Jr(a)?g="":Jr(A)?g=`>=${a}.0.0${i} <${+a+1}.0.0-0`:Jr(r)?a==="0"?g=`>=${a}.${A}.0${i} <${a}.${+A+1}.0-0`:g=`>=${a}.${A}.0${i} <${+a+1}.0.0-0`:s?(qt("replaceCaret pr",s),a==="0"?A==="0"?g=`>=${a}.${A}.${r}-${s} <${a}.${A}.${+r+1}-0`:g=`>=${a}.${A}.${r}-${s} <${a}.${+A+1}.0-0`:g=`>=${a}.${A}.${r}-${s} <${+a+1}.0.0-0`):(qt("no pr"),a==="0"?A==="0"?g=`>=${a}.${A}.${r} <${a}.${A}.${+r+1}-0`:g=`>=${a}.${A}.${r} <${a}.${+A+1}.0-0`:g=`>=${a}.${A}.${r} <${+a+1}.0.0-0`),qt("caret return",g),g})},xxe=(n,t)=>(qt("replaceXRanges",n,t),n.split(/\s+/).map(o=>Yxe(o,t)).join(" ")),Yxe=(n,t)=>{n=n.trim();let o=t.loose?hi[_a.XRANGELOOSE]:hi[_a.XRANGE];return n.replace(o,(i,e,a,A,r,s)=>{if(qt("xRange",n,i,e,a,A,r,s),Fxe(a,A,r))return n;let g=Jr(a),c=g||Jr(A),I=c||Jr(r),d=I;return e==="="&&d&&(e=""),s=t.includePrerelease?"-0":"",g?e===">"||e==="<"?i="<0.0.0-0":i="*":e&&d?(c&&(A=0),r=0,e===">"?(e=">=",c?(a=+a+1,A=0,r=0):(A=+A+1,r=0)):e==="<="&&(e="<",c?a=+a+1:A=+A+1),e==="<"&&(s="-0"),i=`${e+a}.${A}.${r}${s}`):c?i=`>=${a}.0.0${s} <${+a+1}.0.0-0`:I&&(i=`>=${a}.${A}.0${s} <${a}.${+A+1}.0-0`),qt("xRange return",i),i})},jxe=(n,t)=>(qt("replaceStars",n,t),n.trim().replace(hi[_a.STAR],"")),Jxe=(n,t)=>(qt("replaceGTE0",n,t),n.trim().replace(hi[t.includePrerelease?_a.GTE0PRE:_a.GTE0],"")),qxe=n=>(t,o,i,e,a,A,r,s,g,c,I,d)=>(Jr(i)?o="":Jr(e)?o=`>=${i}.0.0${n?"-0":""}`:Jr(a)?o=`>=${i}.${e}.0${n?"-0":""}`:A?o=`>=${o}`:o=`>=${o}${n?"-0":""}`,Jr(g)?s="":Jr(c)?s=`<${+g+1}.0.0-0`:Jr(I)?s=`<${g}.${+c+1}.0-0`:d?s=`<=${g}.${c}.${I}-${d}`:n?s=`<${g}.${c}.${+I+1}-0`:s=`<=${s}`,`${o} ${s}`.trim()),zxe=(n,t,o)=>{for(let i=0;i0){let e=n[i].semver;if(e.major===t.major&&e.minor===t.minor&&e.patch===t.patch)return!0}return!1}return!0}});var GB=ee((XyA,Lee)=>{"use strict";var FB=Symbol("SemVer ANY"),EL=class n{static get ANY(){return FB}constructor(t,o){if(o=kee(o),t instanceof n){if(t.loose===!!o.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),hL("comparator",t,o),this.options=o,this.loose=!!o.loose,this.parse(t),this.semver===FB?this.value="":this.value=this.operator+this.semver.version,hL("comp",this)}parse(t){let o=this.options.loose?vee[Pee.COMPARATORLOOSE]:vee[Pee.COMPARATOR],i=t.match(o);if(!i)throw new TypeError(`Invalid comparator: ${t}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new Gee(i[2],this.options.loose):this.semver=FB}toString(){return this.value}test(t){if(hL("Comparator.test",t,this.options.loose),this.semver===FB||t===FB)return!0;if(typeof t=="string")try{t=new Gee(t,this.options)}catch{return!1}return dL(t,this.operator,this.semver,this.options)}intersects(t,o){if(!(t instanceof n))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Fee(t.value,o).test(this.value):t.operator===""?t.value===""?!0:new Fee(this.value,o).test(t.semver):(o=kee(o),o.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!o.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||dL(this.semver,"<",t.semver,o)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||dL(this.semver,">",t.semver,o)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Lee.exports=EL;var kee=SD(),{safeRe:vee,t:Pee}=wh(),dL=cL(),hL=vB(),Gee=Ma(),Fee=Xo()});var LB=ee(($yA,Uee)=>{"use strict";var Vxe=Xo(),Wxe=(n,t,o)=>{try{t=new Vxe(t,o)}catch{return!1}return t.test(n)};Uee.exports=Wxe});var Kee=ee((emA,Hee)=>{"use strict";var Zxe=Xo(),Xxe=(n,t)=>new Zxe(n,t).set.map(o=>o.map(i=>i.value).join(" ").trim().split(" "));Hee.exports=Xxe});var Yee=ee((AmA,xee)=>{"use strict";var $xe=Ma(),eYe=Xo(),AYe=(n,t,o)=>{let i=null,e=null,a=null;try{a=new eYe(t,o)}catch{return null}return n.forEach(A=>{a.test(A)&&(!i||e.compare(A)===-1)&&(i=A,e=new $xe(i,o))}),i};xee.exports=AYe});var Jee=ee((tmA,jee)=>{"use strict";var tYe=Ma(),rYe=Xo(),aYe=(n,t,o)=>{let i=null,e=null,a=null;try{a=new rYe(t,o)}catch{return null}return n.forEach(A=>{a.test(A)&&(!i||e.compare(A)===1)&&(i=A,e=new tYe(i,o))}),i};jee.exports=aYe});var Vee=ee((rmA,zee)=>{"use strict";var CL=Ma(),iYe=Xo(),qee=PB(),oYe=(n,t)=>{n=new iYe(n,t);let o=new CL("0.0.0");if(n.test(o)||(o=new CL("0.0.0-0"),n.test(o)))return o;o=null;for(let i=0;i{let r=new CL(A.semver.version);switch(A.operator){case">":r.prerelease.length===0?r.patch++:r.prerelease.push(0),r.raw=r.format();case"":case">=":(!a||qee(r,a))&&(a=r);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${A.operator}`)}}),a&&(!o||qee(o,a))&&(o=a)}return o&&n.test(o)?o:null};zee.exports=oYe});var Zee=ee((amA,Wee)=>{"use strict";var nYe=Xo(),sYe=(n,t)=>{try{return new nYe(n,t).range||"*"}catch{return null}};Wee.exports=sYe});var vD=ee((imA,AAe)=>{"use strict";var gYe=Ma(),eAe=GB(),{ANY:cYe}=eAe,IYe=Xo(),lYe=LB(),Xee=PB(),$ee=_D(),pYe=ND(),dYe=TD(),hYe=(n,t,o,i)=>{n=new gYe(n,i),t=new IYe(t,i);let e,a,A,r,s;switch(o){case">":e=Xee,a=pYe,A=$ee,r=">",s=">=";break;case"<":e=$ee,a=dYe,A=Xee,r="<",s="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(lYe(n,t,i))return!1;for(let g=0;g{B.semver===cYe&&(B=new eAe(">=0.0.0")),I=I||B,d=d||B,e(B.semver,I.semver,i)?I=B:A(B.semver,d.semver,i)&&(d=B)}),I.operator===r||I.operator===s||(!d.operator||d.operator===r)&&a(n,d.semver))return!1;if(d.operator===s&&A(n,d.semver))return!1}return!0};AAe.exports=hYe});var rAe=ee((omA,tAe)=>{"use strict";var EYe=vD(),CYe=(n,t,o)=>EYe(n,t,">",o);tAe.exports=CYe});var iAe=ee((nmA,aAe)=>{"use strict";var uYe=vD(),BYe=(n,t,o)=>uYe(n,t,"<",o);aAe.exports=BYe});var sAe=ee((smA,nAe)=>{"use strict";var oAe=Xo(),fYe=(n,t,o)=>(n=new oAe(n,o),t=new oAe(t,o),n.intersects(t,o));nAe.exports=fYe});var cAe=ee((gmA,gAe)=>{"use strict";var QYe=LB(),yYe=Zo();gAe.exports=(n,t,o)=>{let i=[],e=null,a=null,A=n.sort((c,I)=>yYe(c,I,o));for(let c of A)QYe(c,t,o)?(a=c,e||(e=c)):(a&&i.push([e,a]),a=null,e=null);e&&i.push([e,null]);let r=[];for(let[c,I]of i)c===I?r.push(c):!I&&c===A[0]?r.push("*"):I?c===A[0]?r.push(`<=${I}`):r.push(`${c} - ${I}`):r.push(`>=${c}`);let s=r.join(" || "),g=typeof t.raw=="string"?t.raw:String(t);return s.length{"use strict";var IAe=Xo(),fL=GB(),{ANY:uL}=fL,BL=LB(),QL=Zo(),mYe=(n,t,o={})=>{if(n===t)return!0;n=new IAe(n,o),t=new IAe(t,o);let i=!1;e:for(let e of n.set){for(let a of t.set){let A=wYe(e,a,o);if(i=i||A!==null,A)continue e}if(i)return!1}return!0},SYe=[new fL(">=0.0.0-0")],lAe=[new fL(">=0.0.0")],wYe=(n,t,o)=>{if(n===t)return!0;if(n.length===1&&n[0].semver===uL){if(t.length===1&&t[0].semver===uL)return!0;o.includePrerelease?n=SYe:n=lAe}if(t.length===1&&t[0].semver===uL){if(o.includePrerelease)return!0;t=lAe}let i=new Set,e,a;for(let B of n)B.operator===">"||B.operator===">="?e=pAe(e,B,o):B.operator==="<"||B.operator==="<="?a=dAe(a,B,o):i.add(B.semver);if(i.size>1)return null;let A;if(e&&a){if(A=QL(e.semver,a.semver,o),A>0)return null;if(A===0&&(e.operator!==">="||a.operator!=="<="))return null}for(let B of i){if(e&&!BL(B,String(e),o)||a&&!BL(B,String(a),o))return null;for(let f of t)if(!BL(B,String(f),o))return!1;return!0}let r,s,g,c,I=a&&!o.includePrerelease&&a.semver.prerelease.length?a.semver:!1,d=e&&!o.includePrerelease&&e.semver.prerelease.length?e.semver:!1;I&&I.prerelease.length===1&&a.operator==="<"&&I.prerelease[0]===0&&(I=!1);for(let B of t){if(c=c||B.operator===">"||B.operator===">=",g=g||B.operator==="<"||B.operator==="<=",e){if(d&&B.semver.prerelease&&B.semver.prerelease.length&&B.semver.major===d.major&&B.semver.minor===d.minor&&B.semver.patch===d.patch&&(d=!1),B.operator===">"||B.operator===">="){if(r=pAe(e,B,o),r===B&&r!==e)return!1}else if(e.operator===">="&&!B.test(e.semver))return!1}if(a){if(I&&B.semver.prerelease&&B.semver.prerelease.length&&B.semver.major===I.major&&B.semver.minor===I.minor&&B.semver.patch===I.patch&&(I=!1),B.operator==="<"||B.operator==="<="){if(s=dAe(a,B,o),s===B&&s!==a)return!1}else if(a.operator==="<="&&!B.test(a.semver))return!1}if(!B.operator&&(a||e)&&A!==0)return!1}return!(e&&g&&!a&&A!==0||a&&c&&!e&&A!==0||d||I)},pAe=(n,t,o)=>{if(!n)return t;let i=QL(n.semver,t.semver,o);return i>0?n:i<0||t.operator===">"&&n.operator===">="?t:n},dAe=(n,t,o)=>{if(!n)return t;let i=QL(n.semver,t.semver,o);return i<0?n:i>0||t.operator==="<"&&n.operator==="<="?t:n};hAe.exports=mYe});var PD=ee((ImA,BAe)=>{"use strict";var yL=wh(),CAe=Sh(),DYe=Ma(),uAe=iL(),OYe=tI(),bYe=K$(),MYe=Y$(),_Ye=q$(),TYe=W$(),NYe=X$(),RYe=eee(),kYe=tee(),vYe=aee(),PYe=Zo(),GYe=see(),FYe=cee(),LYe=MD(),UYe=dee(),HYe=Eee(),KYe=PB(),xYe=_D(),YYe=sL(),jYe=gL(),JYe=TD(),qYe=ND(),zYe=cL(),VYe=wee(),WYe=Oee(),ZYe=GB(),XYe=Xo(),$Ye=LB(),e1e=Kee(),A1e=Yee(),t1e=Jee(),r1e=Vee(),a1e=Zee(),i1e=vD(),o1e=rAe(),n1e=iAe(),s1e=sAe(),g1e=cAe(),c1e=EAe();BAe.exports={parse:OYe,valid:bYe,clean:MYe,inc:_Ye,diff:TYe,major:NYe,minor:RYe,patch:kYe,prerelease:vYe,compare:PYe,rcompare:GYe,compareLoose:FYe,compareBuild:LYe,sort:UYe,rsort:HYe,gt:KYe,lt:xYe,eq:YYe,neq:jYe,gte:JYe,lte:qYe,cmp:zYe,coerce:VYe,truncate:WYe,Comparator:ZYe,Range:XYe,satisfies:$Ye,toComparators:e1e,maxSatisfying:A1e,minSatisfying:t1e,minVersion:r1e,validRange:a1e,outside:i1e,gtr:o1e,ltr:n1e,intersects:s1e,simplifyRange:g1e,subset:c1e,SemVer:DYe,re:yL.re,src:yL.src,tokens:yL.t,SEMVER_SPEC_VERSION:CAe.SEMVER_SPEC_VERSION,RELEASE_TYPES:CAe.RELEASE_TYPES,compareIdentifiers:uAe.compareIdentifiers,rcompareIdentifiers:uAe.rcompareIdentifiers}});var Yg,GD=ue(()=>{Yg={name:"sharp",description:"High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images",version:"0.35.3",author:"Lovell Fuller ",homepage:"https://sharp.pixelplumbing.com",contributors:["Pierre Inglebert ","Jonathan Ong ","Chanon Sajjamanochai ","Juliano Julio ","Daniel Gasienica ","Julian Walker ","Amit Pitaru ","Brandon Aaron ","Andreas Lind ","Maurus Cuelenaere ","Linus Unneb\xE4ck ","Victor Mateevitsi ","Alaric Holloway ","Bernhard K. Weisshuhn ","Chris Riley ","David Carley ","John Tobin ","Kenton Gray ","Felix B\xFCnemann ","Samy Al Zahrani ","Chintan Thakkar ","F. Orlando Galashan ","Kleis Auke Wolthuizen ","Matt Hirsch ","Matthias Thoemmes ","Patrick Paskaris ","J\xE9r\xE9my Lal ","Rahul Nanwani ","Alice Monday ","Kristo Jorgenson ","YvesBos ","Guy Maliar ","Nicolas Coden ","Matt Parrish ","Marcel Bretschneider ","Matthew McEachen ","Jarda Kot\u011B\u0161ovec ","Kenric D'Souza ","Oleh Aleinyk ","Marcel Bretschneider ","Andrea Bianco ","Rik Heywood ","Thomas Parisot ","Nathan Graves ","Tom Lokhorst ","Espen Hovlandsdal ","Sylvain Dumont ","Alun Davies ","Aidan Hoolachan ","Axel Eirola ","Freezy ","Daiz ","Julian Aubourg ","Keith Belovay ","Michael B. Klein ","Jordan Prudhomme ","Ilya Ovdin ","Andargor ","Paul Neave ","Brendan Kennedy ","Brychan Bennett-Odlum ","Edward Silverton ","Roman Malieiev ","Tomas Szabo ","Robert O'Rourke ","Guillermo Alfonso Varela Chouci\xF1o ","Christian Flintrup ","Manan Jadhav ","Leon Radley ","alza54 ","Jacob Smith ","Michael Nutt ","Brad Parham ","Taneli Vatanen ","Joris Dugu\xE9 ","Chris Banks ","Ompal Singh ","Brodan ","Ankur Parihar ","Brahim Ait elhaj ","Mart Jansink ","Lachlan Newman ","Dennis Beatty ","Ingvar Stepanyan ","Don Denton ","Dmytro Tiapukhin ","Florian Lefebvre "],scripts:{build:"node install/build.js","build:dist":"node scripts/build.mjs",clean:"rm -rf src/build/ test/fixtures/output.*",test:"npm run lint && npm run test-unit",lint:"npm run lint-cpp && npm run lint-js && npm run lint-types && npm run lint-publish","lint-cpp":"cpplint --quiet src/*.h src/*.cc","lint-js":"biome lint","lint-publish":"publint --strict","lint-types":"tsd --files ./test/types/sharp.test-d.{cts,mts}","test-leak":"./test/leak/leak.sh","test-unit":"node --experimental-test-coverage test/unit.mjs","package-from-local-build":"node npm/from-local-build.js","package-wasm-wrappers":"node npm/wasm-wrappers.js","package-release-notes":"node npm/release-notes.js","docs-build":"node docs/build.mjs","docs-serve":"cd docs && npm start","docs-publish":"cd docs && npm run build && npx firebase-tools deploy --project pixelplumbing --only hosting:pixelplumbing-sharp"},type:"commonjs",files:["dist","install","lib/index.d.ts","src/*.{cc,h,gyp}"],main:"./dist/index.cjs",module:"./dist/index.mjs",types:"./dist/index.d.mts",exports:{".":{import:{types:"./dist/index.d.mts",default:"./dist/index.mjs"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"}}},sideEffects:!0,repository:{type:"git",url:"git+https://github.com/lovell/sharp.git"},keywords:["jpeg","png","webp","avif","tiff","gif","svg","jp2","dzi","image","resize","thumbnail","crop","embed","libvips","vips"],dependencies:{"@img/colour":"^1.1.0","detect-libc":"^2.1.2",semver:"^7.8.5"},optionalDependencies:{"@img/sharp-darwin-arm64":"0.35.3","@img/sharp-darwin-x64":"0.35.3","@img/sharp-freebsd-wasm32":"0.35.3","@img/sharp-libvips-darwin-arm64":"1.3.2","@img/sharp-libvips-darwin-x64":"1.3.2","@img/sharp-libvips-linux-arm":"1.3.2","@img/sharp-libvips-linux-arm64":"1.3.2","@img/sharp-libvips-linux-ppc64":"1.3.2","@img/sharp-libvips-linux-riscv64":"1.3.2","@img/sharp-libvips-linux-s390x":"1.3.2","@img/sharp-libvips-linux-x64":"1.3.2","@img/sharp-libvips-linuxmusl-arm64":"1.3.2","@img/sharp-libvips-linuxmusl-x64":"1.3.2","@img/sharp-linux-arm":"0.35.3","@img/sharp-linux-arm64":"0.35.3","@img/sharp-linux-ppc64":"0.35.3","@img/sharp-linux-riscv64":"0.35.3","@img/sharp-linux-s390x":"0.35.3","@img/sharp-linux-x64":"0.35.3","@img/sharp-linuxmusl-arm64":"0.35.3","@img/sharp-linuxmusl-x64":"0.35.3","@img/sharp-webcontainers-wasm32":"0.35.3","@img/sharp-win32-arm64":"0.35.3","@img/sharp-win32-ia32":"0.35.3","@img/sharp-win32-x64":"0.35.3"},peerDependenciesMeta:{"@types/node":{optional:!0}},devDependencies:{"@biomejs/biome":"^2.5.1","@cpplint/cli":"^0.1.0","@emnapi/runtime":"^1.11.1","@img/sharp-libvips-dev":"1.3.2","@img/sharp-libvips-dev-wasm32":"1.3.2","@img/sharp-libvips-win32-arm64":"1.3.2","@img/sharp-libvips-win32-ia32":"1.3.2","@img/sharp-libvips-win32-x64":"1.3.2","@types/node":"*",emnapi:"^1.11.1","exif-reader":"^2.0.3","extract-zip":"^2.0.1",icc:"^4.0.0","node-addon-api":"^8.9.0","node-gyp":"^12.4.0",publint:"^0.3.21","tar-fs":"^3.1.3",tsd:"^0.33.0"},license:"Apache-2.0",engines:{node:">=20.9.0"},config:{libvips:">=8.18.3"},funding:{url:"https://opencollective.com/libvips"}}});import{spawnSync as UB}from"node:child_process";import{createHash as l1e}from"node:crypto";var HB,SL,p1e,QAe,d1e,wL,h1e,yAe,E1e,Dh,C1e,u1e,B1e,f1e,mAe,Q1e,fAe,y1e,m1e,SAe,S1e,w1e,wAe,mL,D1e,FD,DL=ue(()=>{HB=qe(PD(),1),SL=qe(mD(),1);GD();p1e=process.env.npm_package_config_libvips||Yg.config.libvips,QAe=HB.default.coerce(p1e).version,d1e=["darwin-arm64","darwin-x64","freebsd-arm64","freebsd-x64","linux-arm","linux-arm64","linux-ppc64","linux-riscv64","linux-s390x","linux-wasm32","linux-x64","linuxmusl-arm64","linuxmusl-x64","win32-arm64","win32-ia32","win32-x64"],wL={encoding:"utf8",shell:!0},h1e=n=>{n instanceof Error?console.error(`sharp: Installation error: ${n.message}`):console.log(`sharp: ${n}`)},yAe=()=>SL.default.isNonGlibcLinuxSync()?SL.default.familySync():"",E1e=()=>`${process.platform}${yAe()}-${process.arch}`,Dh=()=>{if(mAe())return"wasm32";let{npm_config_arch:n,npm_config_platform:t,npm_config_libc:o}=process.env,i=typeof o=="string"?o:yAe();return`${t||process.platform}${i}-${n||process.arch}`},C1e=()=>{try{return $e(`@img/sharp-libvips-dev-${Dh()}/include`)}catch{try{return $e("@img/sharp-libvips-dev/include")}catch{}}return""},u1e=()=>{try{return $e("@img/sharp-libvips-dev/cplusplus")}catch{}return""},B1e=()=>{try{return $e(`@img/sharp-libvips-dev-${Dh()}/lib`)}catch{try{return $e(`@img/sharp-libvips-${Dh()}/lib`)}catch{}}return""},f1e=()=>{if(process.release?.name==="node"&&process.versions&&!HB.default.satisfies(process.versions.node,Yg.engines.node))return{found:process.versions.node,expected:Yg.engines.node}},mAe=()=>{let{CC:n}=process.env;return!!n?.endsWith("/emcc")},Q1e=()=>process.platform==="darwin"&&process.arch==="x64"?(UB("sysctl sysctl.proc_translated",wL).stdout||"").trim()==="sysctl.proc_translated: 1":!1,fAe=n=>l1e("sha512").update(n).digest("hex"),y1e=()=>{try{let n=fAe(`imgsharp-libvips-${Dh()}`),t=HB.default.coerce(Yg.optionalDependencies[`@img/sharp-libvips-${Dh()}`],{includePrerelease:!0}).version;return fAe(`${n}npm:${t}`).slice(0,10)}catch{}return""},m1e=()=>UB(`node-gyp rebuild --directory=src ${mAe()?"--nodedir=emscripten":""}`,{...wL,stdio:"inherit"}).status,SAe=()=>process.platform!=="win32"?(UB("pkg-config --modversion vips-cpp",{...wL,env:{...process.env,PKG_CONFIG_PATH:wAe()}}).stdout||"").trim():"",S1e=()=>{try{let n=(UB("brew",["--prefix"],{encoding:"utf8"}).stdout||"").trim();if(n)return`${n}/lib/pkgconfig`}catch{}},w1e=()=>{try{let n=(UB("pkg-config",["--variable","pc_path","pkg-config"],{encoding:"utf8"}).stdout||"").trim();if(n)return n}catch{}},wAe=()=>process.platform!=="win32"?[S1e(),w1e(),process.env.PKG_CONFIG_PATH].filter(Boolean).join(":"):"",mL=(n,t,o)=>(o&&o(`Detected ${t}, skipping search for globally-installed libvips`),n),D1e=n=>{if(process.env.SHARP_IGNORE_GLOBAL_LIBVIPS)return mL(!1,"SHARP_IGNORE_GLOBAL_LIBVIPS",n);if(process.env.SHARP_FORCE_GLOBAL_LIBVIPS)return mL(!0,"SHARP_FORCE_GLOBAL_LIBVIPS",n);if(Q1e())return mL(!1,"Rosetta",n);let t=SAe();return!!t&&HB.default.gte(t,QAe)},FD={minimumLibvipsVersion:QAe,prebuiltPlatforms:d1e,buildPlatformArch:Dh,buildSharpLibvipsIncludeDir:C1e,buildSharpLibvipsCPlusPlusDir:u1e,buildSharpLibvipsLibDir:B1e,isUnsupportedNodeRuntime:f1e,runtimePlatformArch:E1e,log:h1e,yarnLocator:y1e,spawnRebuild:m1e,globalLibvipsVersion:SAe,pkgConfigPath:wAe,useGlobalLibvips:D1e}});import{createRequire as O1e}from"node:module";var LD,qr,OAe,b1e,DAe,M1e,_1e,jg,Ut,rI,St,KB=ue(()=>{LD=qe(mD(),1);DL();GD();qr=O1e(import.meta.url),{version:OAe}=Yg,{runtimePlatformArch:b1e,isUnsupportedNodeRuntime:DAe,prebuiltPlatforms:M1e,minimumLibvipsVersion:_1e}=FD,jg=b1e(),rI=[];try{Ut=qr(`../src/build/Release/sharp-${jg}-${OAe}.node`)}catch(n){rI.push(n)}if(!Ut)try{Ut=qr(`../src/build/Release/sharp-wasm32-${OAe}.node`)}catch(n){rI.push(n)}if(!Ut)try{switch(jg){case"darwin-arm64":Ut=qr("@img/sharp-darwin-arm64/sharp.node");break;case"darwin-x64":Ut=qr("@img/sharp-darwin-x64/sharp.node");break;case"linux-arm":Ut=qr("@img/sharp-linux-arm/sharp.node");break;case"linux-arm64":Ut=qr("@img/sharp-linux-arm64/sharp.node");break;case"linux-ppc64":Ut=qr("@img/sharp-linux-ppc64/sharp.node");break;case"linux-riscv64":Ut=qr("@img/sharp-linux-riscv64/sharp.node");break;case"linux-s390x":Ut=qr("@img/sharp-linux-s390x/sharp.node");break;case"linux-x64":Ut=qr("@img/sharp-linux-x64/sharp.node");break;case"linuxmusl-arm64":Ut=qr("@img/sharp-linuxmusl-arm64/sharp.node");break;case"linuxmusl-x64":Ut=qr("@img/sharp-linuxmusl-x64/sharp.node");break;case"win32-arm64":Ut=qr("@img/sharp-win32-arm64/sharp.node");break;case"win32-ia32":Ut=qr("@img/sharp-win32-ia32/sharp.node");break;case"win32-x64":Ut=qr("@img/sharp-win32-x64/sharp.node");break;case"freebsd-arm64":case"freebsd-x64":Ut=qr("@img/sharp-freebsd-wasm32/sharp.node");break;case"linux-wasm32":Ut=qr("@img/sharp-webcontainers-wasm32/sharp.node");break}if(Ut&&["linux-x64","linuxmusl-x64"].includes(jg)&&!Ut._isUsingX64V2()){let n=new Error("Prebuilt binaries for Linux x64 require v2 microarchitecture");n.code="Unsupported CPU",rI.push(n),Ut=null}Ut&&process.versions.electron&&jg.startsWith("linux")&&process.emitWarning("Binaries provided by Electron for use on Linux may be incompatible with sharp - see https://sharp.pixelplumbing.com/install#electron-and-linux",{code:"SharpElectronLinux"})}catch(n){rI.push(n)}if(!Ut)try{Ut=qr("@img/sharp-wasm32/sharp.node")}catch(n){rI.push(n)}if(!Ut){let[n,t,o]=["linux","darwin","win32"].map(a=>jg.startsWith(a)),i=[`Could not load the "sharp" module using the ${jg} runtime`];rI.forEach(a=>{a.code.endsWith("MODULE_NOT_FOUND")||i.push(`${a.code}: ${a.message}`)});let e=rI.map(a=>a.message).join(" ");if(i.push("Possible solutions:"),DAe()){let{found:a,expected:A}=DAe();i.push("- Please upgrade Node.js:",` Found ${a}`,` Requires ${A}`)}else if(M1e.includes(jg)){let[a,A]=jg.split("-"),r=a.endsWith("musl")?" --libc=musl":"";i.push("- Ensure optional dependencies can be installed:"," npm install --include=optional sharp","- Ensure your package manager supports multi-platform installation:"," See https://sharp.pixelplumbing.com/install#cross-platform","- Add platform-specific dependencies:",` npm install --os=${a.replace("musl","")}${r} --cpu=${A} sharp`)}else i.push(`- Manually install libvips >= ${_1e}`," See https://sharp.pixelplumbing.com/install#building-from-source","- Add WebAssembly-based dependencies:"," npm install sharp @img/sharp-wasm32");if(n&&/(symbol not found|CXXABI_)/i.test(e))try{let{config:a}=qr(`@img/sharp-libvips-${jg}/package`),A=`${(0,LD.familySync)()} ${(0,LD.versionSync)()}`,r=`${a.musl?"musl":"glibc"} ${a.musl||a.glibc}`;i.push("- Update your OS:",` Found ${A}`,` Requires ${r}`)}catch{}throw n&&/\/snap\/core[0-9]{2}/.test(e)&&i.push("- Remove the Node.js Snap, which does not support native modules"," snap remove node"),t&&/Incompatible library version/.test(e)&&i.push("- Update Homebrew:"," brew update && brew upgrade vips"),rI.some(a=>a.code==="ERR_DLOPEN_DISABLED")&&i.push("- Run Node.js without using the --no-addons flag"),o&&/The specified procedure could not be found/.test(e)&&i.push("- Using the canvas package on Windows?"," See https://sharp.pixelplumbing.com/install#canvas-and-windows","- Check for outdated versions of sharp in the dependency tree:"," npm ls sharp"),i.push("- Consult the installation documentation:"," See https://sharp.pixelplumbing.com/install"),new Error(i.join(` `))}St=Ut});import T1e from"node:util";import OL from"node:stream";function k1e(){let n=this.constructor.call(),{debuglog:t,queueListener:o,...i}=this.options;return n.options=structuredClone(i),n.options.debuglog=t,n.options.queueListener=o,this._isStreamInput()&&this.on("finish",()=>{this._flattenBufferIn(),n.options.input.buffer=this.options.input.buffer,n.emit("finish")}),n}var N1e,R1e,Hl,Ps,bAe=ue(()=>{Ts();KB();N1e=T1e.debuglog("sharp"),R1e=n=>{Hl.queue.emit("change",n)},Hl=function(n,t){if(arguments.length===1&&!O.defined(n))throw new Error("Invalid input");return this instanceof Hl?(OL.Duplex.call(this),this.options={topOffsetPre:-1,leftOffsetPre:-1,widthPre:-1,heightPre:-1,topOffsetPost:-1,leftOffsetPost:-1,widthPost:-1,heightPost:-1,width:-1,height:-1,canvas:"crop",position:0,resizeBackground:[0,0,0,255],angle:0,rotationAngle:0,rotationBackground:[0,0,0,255],rotateBefore:!1,orientBefore:!1,flip:!1,flop:!1,extendTop:0,extendBottom:0,extendLeft:0,extendRight:0,extendBackground:[0,0,0,255],extendWith:"background",withoutEnlargement:!1,withoutReduction:!1,affineMatrix:[],affineBackground:[0,0,0,255],affineIdx:0,affineIdy:0,affineOdx:0,affineOdy:0,affineInterpolator:this.constructor.interpolators.bilinear,kernel:"lanczos3",fastShrinkOnLoad:!0,tint:[-1,0,0,0],flatten:!1,flattenBackground:[0,0,0],unflatten:!1,negate:!1,negateAlpha:!0,medianSize:0,blurSigma:0,precision:"integer",minAmpl:.2,sharpenSigma:0,sharpenM1:1,sharpenM2:2,sharpenX1:2,sharpenY2:10,sharpenY3:20,threshold:0,thresholdGrayscale:!0,trimBackground:[],trimThreshold:-1,trimLineArt:!1,trimMargin:0,dilateWidth:0,erodeWidth:0,gamma:0,gammaOut:0,greyscale:!1,normalise:!1,normaliseLower:1,normaliseUpper:99,claheWidth:0,claheHeight:0,claheMaxSlope:3,brightness:1,saturation:1,hue:0,lightness:0,booleanBufferIn:null,booleanFileIn:"",joinChannelIn:[],extractChannel:-1,removeAlpha:!1,ensureAlpha:-1,colourspace:"srgb",colourspacePipeline:"last",composite:[],fileOut:"",formatOut:"input",streamOut:!1,typedArrayOut:!1,keepMetadata:0,withMetadataOrientation:-1,withMetadataDensity:0,withIccProfile:"",withExif:{},withExifMerge:!0,withXmp:"",keepGainMap:!1,withGainMap:!1,resolveWithObject:!1,loop:-1,delay:[],jpegQuality:80,jpegProgressive:!1,jpegChromaSubsampling:"4:2:0",jpegTrellisQuantisation:!1,jpegOvershootDeringing:!1,jpegOptimiseScans:!1,jpegOptimiseCoding:!0,jpegQuantisationTable:0,pngProgressive:!1,pngCompressionLevel:6,pngAdaptiveFiltering:!1,pngPalette:!1,pngQuality:100,pngEffort:7,pngBitdepth:8,pngDither:1,jp2Quality:80,jp2TileHeight:512,jp2TileWidth:512,jp2Lossless:!1,jp2ChromaSubsampling:"4:4:4",webpQuality:80,webpAlphaQuality:100,webpLossless:!1,webpNearLossless:!1,webpSmartSubsample:!1,webpSmartDeblock:!1,webpPreset:"default",webpEffort:4,webpMinSize:!1,webpMixed:!1,webpExact:!1,gifBitdepth:8,gifEffort:7,gifDither:1,gifInterFrameMaxError:0,gifInterPaletteMaxError:3,gifKeepDuplicateFrames:!1,gifReuse:!0,gifProgressive:!1,tiffQuality:80,tiffCompression:"jpeg",tiffBigtiff:!1,tiffPredictor:"horizontal",tiffPyramid:!1,tiffMiniswhite:!1,tiffBitdepth:0,tiffTile:!1,tiffTileHeight:256,tiffTileWidth:256,tiffXres:1,tiffYres:1,tiffResolutionUnit:"inch",heifQuality:50,heifLossless:!1,heifCompression:"av1",heifEffort:4,heifChromaSubsampling:"4:4:4",heifBitdepth:8,heifTune:"auto",jxlDistance:1,jxlDecodingTier:0,jxlEffort:7,jxlLossless:!1,rawDepth:"uchar",tileSize:256,tileOverlap:0,tileContainer:"fs",tileLayout:"dz",tileFormat:"last",tileDepth:"last",tileAngle:0,tileSkipBlanks:-1,tileBackground:[255,255,255,255],tileCentre:!1,tileId:"https://example.com/iiif",tileBasename:"",timeoutSeconds:0,linearA:[],linearB:[],pdfBackground:[255,255,255,255],debuglog:o=>{this.emit("warning",o),N1e(o)},queueListener:R1e},this.options.input=this._createInputDescriptor(n,t,{allowStream:!0}),this):new Hl(n,t)};Object.setPrototypeOf(Hl.prototype,OL.Duplex.prototype);Object.setPrototypeOf(Hl,OL.Duplex);Object.assign(Hl.prototype,{clone:k1e});Ps=Hl});function MAe(n){let t=P1e.filter(o=>O.defined(n[o])).map(o=>[o,n[o]]);return t.length?Object.fromEntries(t):void 0}function G1e(n,t,o){let i={autoOrient:!1,failOn:"warning",limitInputPixels:268402689,limitInputChannels:5,ignoreIcc:!1,unlimited:!1,sequentialRead:!0};if(O.string(n))i.file=n;else if(O.buffer(n)){if(n.length===0)throw Error("Input Buffer is empty");i.buffer=n}else if(O.arrayBuffer(n)){if(n.byteLength===0)throw Error("Input bit Array is empty");i.buffer=Buffer.from(n,0,n.byteLength)}else if(O.typedArray(n)){if(n.length===0)throw Error("Input Bit Array is empty");i.buffer=Buffer.from(n.buffer,n.byteOffset,n.byteLength)}else if(O.plainObject(n)&&!O.defined(t))t=n,MAe(t)&&(i.buffer=[]);else if(!O.defined(n)&&!O.defined(t)&&O.object(o)&&o.allowStream)i.buffer=[];else if(Array.isArray(n))if(n.length>1)if(!this.options.joining)this.options.joining=!0,this.options.join=n.map(e=>this._createInputDescriptor(e));else throw new Error("Recursive join is unsupported");else throw new Error("Expected at least two images to join");else throw new Error(`Unsupported input '${n}' of type ${typeof n}${O.defined(t)?` when also providing options of type ${typeof t}`:""}`);if(O.object(t)){if(O.defined(t.failOn))if(O.string(t.failOn)&&O.inArray(t.failOn,["none","truncated","error","warning"]))i.failOn=t.failOn;else throw O.invalidParameterError("failOn","one of: none, truncated, error, warning",t.failOn);if(O.defined(t.autoOrient))if(O.bool(t.autoOrient))i.autoOrient=t.autoOrient;else throw O.invalidParameterError("autoOrient","boolean",t.autoOrient);if(O.defined(t.density))if(O.number(t.density)&&O.inRange(t.density,1,1e5))i.density=t.density;else throw O.invalidParameterError("density","number between 1 and 100000",t.density);if(O.defined(t.ignoreIcc))if(O.bool(t.ignoreIcc))i.ignoreIcc=t.ignoreIcc;else throw O.invalidParameterError("ignoreIcc","boolean",t.ignoreIcc);if(O.defined(t.limitInputPixels))if(O.bool(t.limitInputPixels))i.limitInputPixels=t.limitInputPixels?16383**2:0;else if(O.integer(t.limitInputPixels)&&O.inRange(t.limitInputPixels,0,Number.MAX_SAFE_INTEGER))i.limitInputPixels=t.limitInputPixels;else throw O.invalidParameterError("limitInputPixels","positive integer",t.limitInputPixels);if(O.defined(t.limitInputChannels))if(O.bool(t.limitInputChannels))i.limitInputChannels=t.limitInputChannels?5:0;else if(O.integer(t.limitInputChannels)&&O.inRange(t.limitInputChannels,0,Number.MAX_SAFE_INTEGER))i.limitInputChannels=t.limitInputChannels;else throw O.invalidParameterError("limitInputChannels","positive integer",t.limitInputChannels);if(O.defined(t.unlimited))if(O.bool(t.unlimited))i.unlimited=t.unlimited;else throw O.invalidParameterError("unlimited","boolean",t.unlimited);if(O.defined(t.sequentialRead))if(O.bool(t.sequentialRead))i.sequentialRead=t.sequentialRead;else throw O.invalidParameterError("sequentialRead","boolean",t.sequentialRead);if(O.defined(t.raw)){if(O.object(t.raw)&&O.integer(t.raw.width)&&O.inRange(t.raw.width,1,1e8)&&O.integer(t.raw.height)&&O.inRange(t.raw.height,1,1e8)&&O.integer(t.raw.channels)&&O.inRange(t.raw.channels,1,4))switch(i.rawWidth=t.raw.width,i.rawHeight=t.raw.height,i.rawChannels=t.raw.channels,n.constructor){case Uint8Array:case Uint8ClampedArray:i.rawDepth="uchar";break;case Int8Array:i.rawDepth="char";break;case Uint16Array:i.rawDepth="ushort";break;case Int16Array:i.rawDepth="short";break;case Uint32Array:i.rawDepth="uint";break;case Int32Array:i.rawDepth="int";break;case Float32Array:i.rawDepth="float";break;case Float64Array:i.rawDepth="double";break;default:i.rawDepth="uchar";break}else throw new Error("Expected width, height and channels for raw pixel input");if(i.rawPremultiplied=!1,O.defined(t.raw.premultiplied))if(O.bool(t.raw.premultiplied))i.rawPremultiplied=t.raw.premultiplied;else throw O.invalidParameterError("raw.premultiplied","boolean",t.raw.premultiplied);if(i.rawPageHeight=0,O.defined(t.raw.pageHeight))if(O.integer(t.raw.pageHeight)&&t.raw.pageHeight>0&&t.raw.pageHeight<=t.raw.height){if(t.raw.height%t.raw.pageHeight!==0)throw new Error(`Expected raw.height ${t.raw.height} to be a multiple of raw.pageHeight ${t.raw.pageHeight}`);i.rawPageHeight=t.raw.pageHeight}else throw O.invalidParameterError("raw.pageHeight","positive integer",t.raw.pageHeight)}if(O.defined(t.animated))if(O.bool(t.animated))i.pages=t.animated?-1:1;else throw O.invalidParameterError("animated","boolean",t.animated);if(O.defined(t.pages))if(O.integer(t.pages)&&O.inRange(t.pages,-1,1e5))i.pages=t.pages;else throw O.invalidParameterError("pages","integer between -1 and 100000",t.pages);if(O.defined(t.page))if(O.integer(t.page)&&O.inRange(t.page,0,1e5))i.page=t.page;else throw O.invalidParameterError("page","integer between 0 and 100000",t.page);if(O.object(t.openSlide)&&O.defined(t.openSlide.level))if(O.integer(t.openSlide.level)&&O.inRange(t.openSlide.level,0,256))i.openSlideLevel=t.openSlide.level;else throw O.invalidParameterError("openSlide.level","integer between 0 and 256",t.openSlide.level);else if(O.defined(t.level))if(O.integer(t.level)&&O.inRange(t.level,0,256))i.openSlideLevel=t.level;else throw O.invalidParameterError("level","integer between 0 and 256",t.level);if(O.object(t.tiff)&&O.defined(t.tiff.subifd))if(O.integer(t.tiff.subifd)&&O.inRange(t.tiff.subifd,-1,1e5))i.tiffSubifd=t.tiff.subifd;else throw O.invalidParameterError("tiff.subifd","integer between -1 and 100000",t.tiff.subifd);else if(O.defined(t.subifd))if(O.integer(t.subifd)&&O.inRange(t.subifd,-1,1e5))i.tiffSubifd=t.subifd;else throw O.invalidParameterError("subifd","integer between -1 and 100000",t.subifd);if(O.object(t.svg)){if(O.defined(t.svg.stylesheet))if(O.string(t.svg.stylesheet))i.svgStylesheet=t.svg.stylesheet;else throw O.invalidParameterError("svg.stylesheet","string",t.svg.stylesheet);if(O.defined(t.svg.highBitdepth))if(O.bool(t.svg.highBitdepth))i.svgHighBitdepth=t.svg.highBitdepth;else throw O.invalidParameterError("svg.highBitdepth","boolean",t.svg.highBitdepth)}if(O.object(t.pdf)&&O.defined(t.pdf.background)?i.pdfBackground=this._getBackgroundColourOption(t.pdf.background):O.defined(t.pdfBackground)&&(i.pdfBackground=this._getBackgroundColourOption(t.pdfBackground)),O.object(t.jp2)&&O.defined(t.jp2.oneshot))if(O.bool(t.jp2.oneshot))i.jp2Oneshot=t.jp2.oneshot;else throw O.invalidParameterError("jp2.oneshot","boolean",t.jp2.oneshot);if(O.defined(t.create))if(O.object(t.create)&&O.integer(t.create.width)&&O.inRange(t.create.width,1,1e8)&&O.integer(t.create.height)&&O.inRange(t.create.height,1,1e8)&&O.integer(t.create.channels)){if(i.createWidth=t.create.width,i.createHeight=t.create.height,i.createChannels=t.create.channels,i.createPageHeight=0,O.defined(t.create.pageHeight))if(O.integer(t.create.pageHeight)&&t.create.pageHeight>0&&t.create.pageHeight<=t.create.height){if(t.create.height%t.create.pageHeight!==0)throw new Error(`Expected create.height ${t.create.height} to be a multiple of create.pageHeight ${t.create.pageHeight}`);i.createPageHeight=t.create.pageHeight}else throw O.invalidParameterError("create.pageHeight","positive integer",t.create.pageHeight);if(O.defined(t.create.noise)){if(!O.object(t.create.noise))throw new Error("Expected noise to be an object");if(t.create.noise.type!=="gaussian")throw new Error("Only gaussian noise is supported at the moment");if(i.createNoiseType=t.create.noise.type,!O.inRange(t.create.channels,1,4))throw O.invalidParameterError("create.channels","number between 1 and 4",t.create.channels);if(i.createNoiseMean=128,O.defined(t.create.noise.mean))if(O.number(t.create.noise.mean)&&O.inRange(t.create.noise.mean,0,1e4))i.createNoiseMean=t.create.noise.mean;else throw O.invalidParameterError("create.noise.mean","number between 0 and 10000",t.create.noise.mean);if(i.createNoiseSigma=30,O.defined(t.create.noise.sigma))if(O.number(t.create.noise.sigma)&&O.inRange(t.create.noise.sigma,0,1e4))i.createNoiseSigma=t.create.noise.sigma;else throw O.invalidParameterError("create.noise.sigma","number between 0 and 10000",t.create.noise.sigma)}else if(O.defined(t.create.background)){if(!O.inRange(t.create.channels,3,4))throw O.invalidParameterError("create.channels","number between 3 and 4",t.create.channels);i.createBackground=this._getBackgroundColourOption(t.create.background)}else throw new Error("Expected valid noise or background to create a new input image");delete i.buffer}else throw new Error("Expected valid width, height and channels to create a new input image");if(O.defined(t.text))if(O.object(t.text)&&O.string(t.text.text)){if(i.textValue=t.text.text,O.defined(t.text.height)&&O.defined(t.text.dpi))throw new Error("Expected only one of dpi or height");if(O.defined(t.text.font))if(O.string(t.text.font))i.textFont=t.text.font;else throw O.invalidParameterError("text.font","string",t.text.font);if(O.defined(t.text.fontfile))if(O.string(t.text.fontfile))i.textFontfile=t.text.fontfile;else throw O.invalidParameterError("text.fontfile","string",t.text.fontfile);if(O.defined(t.text.width))if(O.integer(t.text.width)&&O.inRange(t.text.width,1,1e6))i.textWidth=t.text.width;else throw O.invalidParameterError("text.width","integer between 1 and 1000000",t.text.width);if(O.defined(t.text.height))if(O.integer(t.text.height)&&O.inRange(t.text.height,1,1e6))i.textHeight=t.text.height;else throw O.invalidParameterError("text.height","integer between 1 and 1000000",t.text.height);if(O.defined(t.text.align))if(O.string(t.text.align)&&O.string(this.constructor.align[t.text.align]))i.textAlign=this.constructor.align[t.text.align];else throw O.invalidParameterError("text.align","valid alignment",t.text.align);if(O.defined(t.text.justify))if(O.bool(t.text.justify))i.textJustify=t.text.justify;else throw O.invalidParameterError("text.justify","boolean",t.text.justify);if(O.defined(t.text.dpi))if(O.integer(t.text.dpi)&&O.inRange(t.text.dpi,1,1e6))i.textDpi=t.text.dpi;else throw O.invalidParameterError("text.dpi","integer between 1 and 1000000",t.text.dpi);if(O.defined(t.text.rgba))if(O.bool(t.text.rgba))i.textRgba=t.text.rgba;else throw O.invalidParameterError("text.rgba","bool",t.text.rgba);if(O.defined(t.text.spacing))if(O.integer(t.text.spacing)&&O.inRange(t.text.spacing,-1e6,1e6))i.textSpacing=t.text.spacing;else throw O.invalidParameterError("text.spacing","integer between -1000000 and 1000000",t.text.spacing);if(O.defined(t.text.wrap))if(O.string(t.text.wrap)&&O.inArray(t.text.wrap,["word","char","word-char","none"]))i.textWrap=t.text.wrap;else throw O.invalidParameterError("text.wrap","one of: word, char, word-char, none",t.text.wrap);delete i.buffer}else throw new Error("Expected a valid string to create an image with text.");if(O.defined(t.join))if(O.defined(this.options.join)){if(O.defined(t.join.animated))if(O.bool(t.join.animated))i.joinAnimated=t.join.animated;else throw O.invalidParameterError("join.animated","boolean",t.join.animated);if(O.defined(t.join.across))if(O.integer(t.join.across)&&O.inRange(t.join.across,1,1e6))i.joinAcross=t.join.across;else throw O.invalidParameterError("join.across","integer between 1 and 100000",t.join.across);if(O.defined(t.join.shim))if(O.integer(t.join.shim)&&O.inRange(t.join.shim,0,1e6))i.joinShim=t.join.shim;else throw O.invalidParameterError("join.shim","integer between 0 and 100000",t.join.shim);if(O.defined(t.join.background)&&(i.joinBackground=this._getBackgroundColourOption(t.join.background)),O.defined(t.join.halign))if(O.string(t.join.halign)&&O.string(this.constructor.align[t.join.halign]))i.joinHalign=this.constructor.align[t.join.halign];else throw O.invalidParameterError("join.halign","valid alignment",t.join.halign);if(O.defined(t.join.valign))if(O.string(t.join.valign)&&O.string(this.constructor.align[t.join.valign]))i.joinValign=this.constructor.align[t.join.valign];else throw O.invalidParameterError("join.valign","valid alignment",t.join.valign)}else throw new Error("Expected input to be an array of images to join")}else if(O.defined(t))throw new Error(`Invalid input options ${t}`);return i}function F1e(n,t,o){Array.isArray(this.options.input.buffer)?O.buffer(n)?(this.options.input.buffer.length===0&&this.on("finish",()=>{this.streamInFinished=!0}),this.options.input.buffer.push(n),o()):o(new Error("Non-Buffer data on Writable Stream")):o(new Error("Unexpected data on Writable Stream"))}function L1e(){this._isStreamInput()&&(this.options.input.buffer=Buffer.concat(this.options.input.buffer))}function U1e(){return Array.isArray(this.options.input.buffer)}function H1e(n){let t=Error();return O.fn(n)?(this._isStreamInput()?this.on("finish",()=>{this._flattenBufferIn(),St.metadata(this.options,(o,i)=>{o?n(O.nativeError(o,t)):n(null,i)})}):St.metadata(this.options,(o,i)=>{o?n(O.nativeError(o,t)):n(null,i)}),this):this._isStreamInput()?new Promise((o,i)=>{let e=()=>{this._flattenBufferIn(),St.metadata(this.options,(a,A)=>{a?i(O.nativeError(a,t)):o(A)})};this.writableFinished?e():this.once("finish",e)}):new Promise((o,i)=>{St.metadata(this.options,(e,a)=>{e?i(O.nativeError(e,t)):o(a)})})}function K1e(n){let t=Error();return O.fn(n)?(this._isStreamInput()?this.on("finish",()=>{this._flattenBufferIn(),St.stats(this.options,(o,i)=>{o?n(O.nativeError(o,t)):n(null,i)})}):St.stats(this.options,(o,i)=>{o?n(O.nativeError(o,t)):n(null,i)}),this):this._isStreamInput()?new Promise((o,i)=>{this.on("finish",function(){this._flattenBufferIn(),St.stats(this.options,(e,a)=>{e?i(O.nativeError(e,t)):o(a)})})}):new Promise((o,i)=>{St.stats(this.options,(e,a)=>{e?i(O.nativeError(e,t)):o(a)})})}var v1e,P1e,_Ae,TAe=ue(()=>{Ts();KB();v1e={left:"low",top:"low",low:"low",center:"centre",centre:"centre",right:"high",bottom:"high",high:"high"},P1e=["failOn","limitInputPixels","limitInputChannels","unlimited","animated","autoOrient","density","ignoreIcc","page","pages","sequentialRead","jp2","openSlide","pdf","raw","svg","tiff","openSlideLevel","pdfBackground","tiffSubifd"];_Ae=n=>{Object.assign(n.prototype,{_inputOptionsFromObject:MAe,_createInputDescriptor:G1e,_write:F1e,_flattenBufferIn:L1e,_isStreamInput:U1e,metadata:H1e,stats:K1e}),n.align=v1e}});function ML(n){return n.angle%360!==0||n.rotationAngle!==0}function UD(n){return n.width!==-1||n.height!==-1}function j1e(n,t,o){if(UD(this.options)&&this.options.debuglog("ignoring previous resize options"),this.options.widthPost!==-1&&this.options.debuglog("operation order will be: extract, resize, extract"),O.defined(n))if(O.object(n)&&!O.defined(o))o=n;else if(O.integer(n)&&n>0)this.options.width=n;else throw O.invalidParameterError("width","positive integer",n);else this.options.width=-1;if(O.defined(t))if(O.integer(t)&&t>0)this.options.height=t;else throw O.invalidParameterError("height","positive integer",t);else this.options.height=-1;if(O.object(o)){if(O.defined(o.width))if(O.integer(o.width)&&o.width>0)this.options.width=o.width;else throw O.invalidParameterError("width","positive integer",o.width);if(O.defined(o.height))if(O.integer(o.height)&&o.height>0)this.options.height=o.height;else throw O.invalidParameterError("height","positive integer",o.height);if(O.defined(o.fit)){let i=Y1e[o.fit];if(O.string(i))this.options.canvas=i;else throw O.invalidParameterError("fit","valid fit",o.fit)}if(O.defined(o.position)){let i=O.integer(o.position)?o.position:vAe[o.position]||kAe[o.position]||RAe[o.position];if(O.integer(i)&&(O.inRange(i,0,8)||O.inRange(i,16,17)))this.options.position=i;else throw O.invalidParameterError("position","valid position/gravity/strategy",o.position)}if(this._setBackgroundColourOption("resizeBackground",o.background),O.defined(o.kernel))if(O.string(bL[o.kernel]))this.options.kernel=bL[o.kernel];else throw O.invalidParameterError("kernel","valid kernel name",o.kernel);O.defined(o.withoutEnlargement)&&this._setBooleanOption("withoutEnlargement",o.withoutEnlargement),O.defined(o.withoutReduction)&&this._setBooleanOption("withoutReduction",o.withoutReduction),O.defined(o.fastShrinkOnLoad)&&this._setBooleanOption("fastShrinkOnLoad",o.fastShrinkOnLoad)}return ML(this.options)&&UD(this.options)&&(this.options.rotateBefore=!0),this}function J1e(n){if(O.integer(n))if(O.inRange(n,1,1e4))this.options.extendTop=n,this.options.extendBottom=n,this.options.extendLeft=n,this.options.extendRight=n;else throw O.invalidParameterError("extend","integer between 1 and 10000",n);else if(O.object(n)){if(O.defined(n.top))if(O.integer(n.top)&&O.inRange(n.top,0,1e4))this.options.extendTop=n.top;else throw O.invalidParameterError("top","integer between 0 and 10000",n.top);if(O.defined(n.bottom))if(O.integer(n.bottom)&&O.inRange(n.bottom,0,1e4))this.options.extendBottom=n.bottom;else throw O.invalidParameterError("bottom","integer between 0 and 10000",n.bottom);if(O.defined(n.left))if(O.integer(n.left)&&O.inRange(n.left,0,1e4))this.options.extendLeft=n.left;else throw O.invalidParameterError("left","integer between 0 and 10000",n.left);if(O.defined(n.right))if(O.integer(n.right)&&O.inRange(n.right,0,1e4))this.options.extendRight=n.right;else throw O.invalidParameterError("right","integer between 0 and 10000",n.right);if(this._setBackgroundColourOption("extendBackground",n.background),O.defined(n.extendWith))if(O.string(NAe[n.extendWith]))this.options.extendWith=NAe[n.extendWith];else throw O.invalidParameterError("extendWith","one of: background, copy, repeat, mirror",n.extendWith)}else throw O.invalidParameterError("extend","integer or object",n);return this}function q1e(n){let t=UD(this.options)||this.options.widthPre!==-1?"Post":"Pre";return this.options[`width${t}`]!==-1&&this.options.debuglog("ignoring previous extract options"),["left","top","width","height"].forEach(function(o){let i=n[o];if(O.integer(i)&&O.inRange(i,0,1e8))this.options[o+(o==="left"||o==="top"?"Offset":"")+t]=i;else throw O.invalidParameterError(o,"integer between 0 and 100000000",i)},this),ML(this.options)&&!UD(this.options)&&(this.options.widthPre===-1||this.options.widthPost===-1)&&(this.options.rotateBefore=!0),this.options.input.autoOrient&&(this.options.orientBefore=!0),this}function z1e(n){if(this.options.trimThreshold=10,O.defined(n))if(O.object(n)){if(O.defined(n.background)&&this._setBackgroundColourOption("trimBackground",n.background),O.defined(n.threshold))if(O.number(n.threshold)&&n.threshold>=0)this.options.trimThreshold=n.threshold;else throw O.invalidParameterError("threshold","positive number",n.threshold);if(O.defined(n.lineArt)&&this._setBooleanOption("trimLineArt",n.lineArt),O.defined(n.margin))if(O.integer(n.margin)&&O.inRange(n.margin,0,1e7))this.options.trimMargin=n.margin;else throw O.invalidParameterError("margin","integer between 0 and 10000000",n.margin)}else throw O.invalidParameterError("trim","object",n);return ML(this.options)&&(this.options.rotateBefore=!0),this}var RAe,kAe,NAe,vAe,bL,x1e,Y1e,PAe,GAe=ue(()=>{Ts();RAe={center:0,centre:0,north:1,east:2,south:3,west:4,northeast:5,southeast:6,southwest:7,northwest:8},kAe={top:1,right:2,bottom:3,left:4,"right top":5,"right bottom":6,"left bottom":7,"left top":8},NAe={background:"background",copy:"copy",repeat:"repeat",mirror:"mirror"},vAe={entropy:16,attention:17},bL={nearest:"nearest",linear:"linear",cubic:"cubic",mitchell:"mitchell",lanczos2:"lanczos2",lanczos3:"lanczos3",mks2013:"mks2013",mks2021:"mks2021"},x1e={contain:"contain",cover:"cover",fill:"fill",inside:"inside",outside:"outside"},Y1e={contain:"embed",cover:"crop",fill:"ignore_aspect",inside:"max",outside:"min"};PAe=n=>{Object.assign(n.prototype,{resize:j1e,extend:J1e,extract:q1e,trim:z1e}),n.gravity=RAe,n.strategy=vAe,n.kernel=bL,n.fit=x1e,n.position=kAe}});function V1e(n){if(!Array.isArray(n))throw O.invalidParameterError("images to composite","array",n);return this.options.composite=n.map(t=>{if(!O.object(t))throw O.invalidParameterError("image to composite","object",t);let o=this._inputOptionsFromObject(t),i={input:this._createInputDescriptor(t.input,o,{allowStream:!1}),blend:"over",tile:!1,left:0,top:0,hasOffset:!1,gravity:0,premultiplied:!1};if(O.defined(t.blend))if(O.string(_L[t.blend]))i.blend=_L[t.blend];else throw O.invalidParameterError("blend","valid blend name",t.blend);if(O.defined(t.tile))if(O.bool(t.tile))i.tile=t.tile;else throw O.invalidParameterError("tile","boolean",t.tile);if(O.defined(t.left))if(O.integer(t.left))i.left=t.left;else throw O.invalidParameterError("left","integer",t.left);if(O.defined(t.top))if(O.integer(t.top))i.top=t.top;else throw O.invalidParameterError("top","integer",t.top);if(O.defined(t.top)!==O.defined(t.left))throw new Error("Expected both left and top to be set");if(i.hasOffset=O.integer(t.top)&&O.integer(t.left),O.defined(t.gravity))if(O.integer(t.gravity)&&O.inRange(t.gravity,0,8))i.gravity=t.gravity;else if(O.string(t.gravity)&&O.integer(this.constructor.gravity[t.gravity]))i.gravity=this.constructor.gravity[t.gravity];else throw O.invalidParameterError("gravity","valid gravity",t.gravity);if(O.defined(t.premultiplied))if(O.bool(t.premultiplied))i.premultiplied=t.premultiplied;else throw O.invalidParameterError("premultiplied","boolean",t.premultiplied);return i}),this}var _L,FAe,LAe=ue(()=>{Ts();_L={clear:"clear",source:"source",over:"over",in:"in",out:"out",atop:"atop",dest:"dest","dest-over":"dest-over","dest-in":"dest-in","dest-out":"dest-out","dest-atop":"dest-atop",xor:"xor",add:"add",saturate:"saturate",multiply:"multiply",screen:"screen",overlay:"overlay",darken:"darken",lighten:"lighten","colour-dodge":"colour-dodge","color-dodge":"colour-dodge","colour-burn":"colour-burn","color-burn":"colour-burn","hard-light":"hard-light","soft-light":"soft-light",difference:"difference",exclusion:"exclusion"};FAe=n=>{n.prototype.composite=V1e,n.blend=_L}});function W1e(n,t){if(!O.defined(n))return this.autoOrient();if((this.options.angle||this.options.rotationAngle)&&(this.options.debuglog("ignoring previous rotate options"),this.options.angle=0,this.options.rotationAngle=0),O.integer(n)&&!(n%90))this.options.angle=n;else if(O.number(n))this.options.rotationAngle=n,O.object(t)&&t.background&&this._setBackgroundColourOption("rotationBackground",t.background);else throw O.invalidParameterError("angle","numeric",n);return this}function Z1e(){return this.options.input.autoOrient=!0,this}function X1e(n){return this.options.flip=O.bool(n)?n:!0,this}function $1e(n){return this.options.flop=O.bool(n)?n:!0,this}function e3e(n,t){let i=Array.isArray(n)&&(n.length===4&&n.every(O.number)||n.length===2&&n.every(e=>Array.isArray(e)&&e.length===2))?n.flat():[];if(i.length===4&&i.every(O.number))this.options.affineMatrix=i;else throw O.invalidParameterError("matrix","1x4 or 2x2 array",n);if(O.defined(t))if(O.object(t)){if(this._setBackgroundColourOption("affineBackground",t.background),O.defined(t.idx))if(O.number(t.idx))this.options.affineIdx=t.idx;else throw O.invalidParameterError("options.idx","number",t.idx);if(O.defined(t.idy))if(O.number(t.idy))this.options.affineIdy=t.idy;else throw O.invalidParameterError("options.idy","number",t.idy);if(O.defined(t.odx))if(O.number(t.odx))this.options.affineOdx=t.odx;else throw O.invalidParameterError("options.odx","number",t.odx);if(O.defined(t.ody))if(O.number(t.ody))this.options.affineOdy=t.ody;else throw O.invalidParameterError("options.ody","number",t.ody);if(O.defined(t.interpolator))if(O.inArray(t.interpolator,Object.values(this.constructor.interpolators)))this.options.affineInterpolator=t.interpolator;else throw O.invalidParameterError("options.interpolator","valid interpolator name",t.interpolator)}else throw O.invalidParameterError("options","object",t);return this}function A3e(n){if(O.plainObject(n)){if(O.number(n.sigma)&&O.inRange(n.sigma,1e-6,10))this.options.sharpenSigma=n.sigma;else throw O.invalidParameterError("options.sigma","number between 0.000001 and 10",n.sigma);if(O.defined(n.m1))if(O.number(n.m1)&&O.inRange(n.m1,0,1e6))this.options.sharpenM1=n.m1;else throw O.invalidParameterError("options.m1","number between 0 and 1000000",n.m1);if(O.defined(n.m2))if(O.number(n.m2)&&O.inRange(n.m2,0,1e6))this.options.sharpenM2=n.m2;else throw O.invalidParameterError("options.m2","number between 0 and 1000000",n.m2);if(O.defined(n.x1))if(O.number(n.x1)&&O.inRange(n.x1,0,1e6))this.options.sharpenX1=n.x1;else throw O.invalidParameterError("options.x1","number between 0 and 1000000",n.x1);if(O.defined(n.y2))if(O.number(n.y2)&&O.inRange(n.y2,0,1e6))this.options.sharpenY2=n.y2;else throw O.invalidParameterError("options.y2","number between 0 and 1000000",n.y2);if(O.defined(n.y3))if(O.number(n.y3)&&O.inRange(n.y3,0,1e6))this.options.sharpenY3=n.y3;else throw O.invalidParameterError("options.y3","number between 0 and 1000000",n.y3)}else this.options.sharpenSigma=-1;return this}function t3e(n){if(!O.defined(n))this.options.medianSize=3;else if(O.integer(n)&&O.inRange(n,1,1e3))this.options.medianSize=n;else throw O.invalidParameterError("size","integer between 1 and 1000",n);return this}function r3e(n){let t;if(O.number(n))t=n;else if(O.plainObject(n)){if(!O.number(n.sigma))throw O.invalidParameterError("options.sigma","number between 0.3 and 1000",t);if(t=n.sigma,"precision"in n)if(O.string(UAe[n.precision]))this.options.precision=UAe[n.precision];else throw O.invalidParameterError("precision","one of: integer, float, approximate",n.precision);if("minAmplitude"in n)if(O.number(n.minAmplitude)&&O.inRange(n.minAmplitude,.001,1))this.options.minAmpl=n.minAmplitude;else throw O.invalidParameterError("minAmplitude","number between 0.001 and 1",n.minAmplitude)}if(!O.defined(n))this.options.blurSigma=-1;else if(O.bool(n))this.options.blurSigma=n?-1:0;else if(O.number(t)&&O.inRange(t,.3,1e3))this.options.blurSigma=t;else throw O.invalidParameterError("sigma","number between 0.3 and 1000",t);return this}function a3e(n){if(!O.defined(n))this.options.dilateWidth=1;else if(O.integer(n)&&O.inRange(n,1,65536))this.options.dilateWidth=n;else throw O.invalidParameterError("width","integer between 1 and 65536",n);return this}function i3e(n){if(!O.defined(n))this.options.erodeWidth=1;else if(O.integer(n)&&O.inRange(n,1,65536))this.options.erodeWidth=n;else throw O.invalidParameterError("width","integer between 1 and 65536",n);return this}function o3e(n){return this.options.flatten=O.bool(n)?n:!0,O.object(n)&&this._setBackgroundColourOption("flattenBackground",n.background),this}function n3e(){return this.options.unflatten=!0,this}function s3e(n,t){if(!O.defined(n))this.options.gamma=2.2;else if(O.number(n)&&O.inRange(n,1,3))this.options.gamma=n;else throw O.invalidParameterError("gamma","number between 1.0 and 3.0",n);if(!O.defined(t))this.options.gammaOut=this.options.gamma;else if(O.number(t)&&O.inRange(t,1,3))this.options.gammaOut=t;else throw O.invalidParameterError("gammaOut","number between 1.0 and 3.0",t);return this}function g3e(n){if(this.options.negate=O.bool(n)?n:!0,O.plainObject(n)&&"alpha"in n)if(O.bool(n.alpha))this.options.negateAlpha=n.alpha;else throw O.invalidParameterError("alpha","should be boolean value",n.alpha);return this}function c3e(n){if(O.plainObject(n)){if(O.defined(n.lower))if(O.number(n.lower)&&O.inRange(n.lower,0,99))this.options.normaliseLower=n.lower;else throw O.invalidParameterError("lower","number between 0 and 99",n.lower);if(O.defined(n.upper))if(O.number(n.upper)&&O.inRange(n.upper,1,100))this.options.normaliseUpper=n.upper;else throw O.invalidParameterError("upper","number between 1 and 100",n.upper)}if(this.options.normaliseLower>=this.options.normaliseUpper)throw O.invalidParameterError("range","lower to be less than upper",`${this.options.normaliseLower} >= ${this.options.normaliseUpper}`);return this.options.normalise=!0,this}function I3e(n){return this.normalise(n)}function l3e(n){if(O.plainObject(n)){if(O.integer(n.width)&&O.inRange(n.width,1,65536))this.options.claheWidth=n.width;else throw O.invalidParameterError("width","integer between 1 and 65536",n.width);if(O.integer(n.height)&&O.inRange(n.height,1,65536))this.options.claheHeight=n.height;else throw O.invalidParameterError("height","integer between 1 and 65536",n.height);if(O.defined(n.maxSlope))if(O.integer(n.maxSlope)&&O.inRange(n.maxSlope,0,100))this.options.claheMaxSlope=n.maxSlope;else throw O.invalidParameterError("maxSlope","integer between 0 and 100",n.maxSlope)}else throw O.invalidParameterError("options","plain object",n);return this}function p3e(n){if(!O.object(n)||!Array.isArray(n.kernel)||!O.integer(n.width)||!O.integer(n.height)||!O.inRange(n.width,3,1001)||!O.inRange(n.height,3,1001)||n.height*n.width!==n.kernel.length||!n.kernel.every(O.number))throw new Error("Invalid convolution kernel");return O.integer(n.scale)||(n.scale=n.kernel.reduce((t,o)=>t+o,0)),n.scale<1&&(n.scale=1),O.integer(n.offset)||(n.offset=0),this.options.convKernel=n,this}function d3e(n,t){if(!O.defined(n))this.options.threshold=128;else if(O.bool(n))this.options.threshold=n?128:0;else if(O.integer(n)&&O.inRange(n,0,255))this.options.threshold=n;else throw O.invalidParameterError("threshold","integer between 0 and 255",n);return!O.object(t)||t.greyscale===!0||t.grayscale===!0?this.options.thresholdGrayscale=!0:this.options.thresholdGrayscale=!1,this}function h3e(n,t,o){if(this.options.boolean=this._createInputDescriptor(n,o),O.string(t)&&O.inArray(t,["and","or","eor"]))this.options.booleanOp=t;else throw O.invalidParameterError("operator","one of: and, or, eor",t);return this}function E3e(n,t){if(!O.defined(n)&&O.number(t)?n=1:O.number(n)&&!O.defined(t)&&(t=0),!O.defined(n))this.options.linearA=[];else if(O.number(n))this.options.linearA=[n];else if(Array.isArray(n)&&n.length&&n.every(O.number))this.options.linearA=n;else throw O.invalidParameterError("a","number or array of numbers",n);if(!O.defined(t))this.options.linearB=[];else if(O.number(t))this.options.linearB=[t];else if(Array.isArray(t)&&t.length&&t.every(O.number))this.options.linearB=t;else throw O.invalidParameterError("b","number or array of numbers",t);if(this.options.linearA.length!==this.options.linearB.length)throw new Error("Expected a and b to be arrays of the same length");return this}function C3e(n){if(!Array.isArray(n))throw O.invalidParameterError("inputMatrix","array",n);let t=n.length;if(t!==3&&t!==4)throw O.invalidParameterError("inputMatrix","3x3 or 4x4 array",t);if(!n.every(i=>Array.isArray(i)&&i.length===t))throw O.invalidParameterError("inputMatrix",`array of ${t} arrays of length ${t}`,n);let o=n.flat();if(!o.every(O.number))throw O.invalidParameterError("inputMatrix","array of numbers",o);return this.options.recombMatrix=o,this}function u3e(n){if(!O.plainObject(n))throw O.invalidParameterError("options","plain object",n);if("brightness"in n)if(O.number(n.brightness)&&n.brightness>=0)this.options.brightness=n.brightness;else throw O.invalidParameterError("brightness","number above zero",n.brightness);if("saturation"in n)if(O.number(n.saturation)&&n.saturation>=0)this.options.saturation=n.saturation;else throw O.invalidParameterError("saturation","number above zero",n.saturation);if("hue"in n)if(O.integer(n.hue))this.options.hue=n.hue%360;else throw O.invalidParameterError("hue","number",n.hue);if("lightness"in n)if(O.number(n.lightness))this.options.lightness=n.lightness;else throw O.invalidParameterError("lightness","number",n.lightness);return this}var UAe,HAe,KAe=ue(()=>{Ts();UAe={integer:"integer",float:"float",approximate:"approximate"};HAe=n=>{Object.assign(n.prototype,{autoOrient:Z1e,rotate:W1e,flip:X1e,flop:$1e,affine:e3e,sharpen:A3e,erode:i3e,dilate:a3e,median:t3e,blur:r3e,flatten:o3e,unflatten:n3e,gamma:s3e,negate:g3e,normalise:c3e,normalize:I3e,clahe:l3e,convolve:p3e,threshold:d3e,boolean:h3e,linear:E3e,recomb:C3e,modulate:u3e})}});var zAe=ee((PmA,qAe)=>{var vL=Object.defineProperty,B3e=Object.getOwnPropertyDescriptor,f3e=Object.getOwnPropertyNames,Q3e=Object.prototype.hasOwnProperty,y3e=(n,t)=>{for(var o in t)vL(n,o,{get:t[o],enumerable:!0})},m3e=(n,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of f3e(t))!Q3e.call(n,e)&&e!==o&&vL(n,e,{get:()=>t[e],enumerable:!(i=B3e(t,e))||i.enumerable});return n},S3e=n=>m3e(vL({},"__esModule",{value:!0}),n),xAe={};y3e(xAe,{default:()=>F3e});qAe.exports=S3e(xAe);var TL={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(let n in TL)Object.freeze(TL[n]);var Gs=Object.freeze(TL),YAe=Object.create(null);for(let n in Gs)Object.hasOwn(Gs,n)&&(YAe[Gs[n]]=n);var qi={to:{},get:{}};qi.get=function(n){let t=n.slice(0,3).toLowerCase(),o,i;switch(t){case"hsl":{o=qi.get.hsl(n),i="hsl";break}case"hwb":{o=qi.get.hwb(n),i="hwb";break}default:{o=qi.get.rgb(n),i="rgb";break}}return o?{model:i,value:o}:null};qi.get.rgb=function(n){if(!n)return null;let t=/^#([a-f\d]{3,4})$/i,o=/^#([a-f\d]{6})([a-f\d]{2})?$/i,i=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,e=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/,A=[0,0,0,1],r,s,g;if(r=n.match(o)){for(g=r[2],r=r[1],s=0;s<3;s++){let c=s*2;A[s]=Number.parseInt(r.slice(c,c+2),16)}g&&(A[3]=Number.parseInt(g,16)/255)}else if(r=n.match(t)){for(r=r[1],g=r[3],s=0;s<3;s++)A[s]=Number.parseInt(r[s]+r[s],16);g&&(A[3]=Number.parseInt(g+g,16)/255)}else if(r=n.match(i)){for(s=0;s<3;s++)A[s]=Number.parseFloat(r[s+1]);r[4]&&(A[3]=r[5]?Number.parseFloat(r[4])*.01:Number.parseFloat(r[4]))}else if(r=n.match(e)){for(s=0;s<3;s++)A[s]=Math.round(Number.parseFloat(r[s+1])*2.55);r[4]&&(A[3]=r[5]?Number.parseFloat(r[4])*.01:Number.parseFloat(r[4]))}else return(r=n.toLowerCase().match(a))?r[1]==="transparent"?[0,0,0,0]:Object.hasOwn(Gs,r[1])?(A=Gs[r[1]].slice(),A[3]=1,A):null:null;for(s=0;s<3;s++)A[s]=aI(A[s],0,255);return A[3]=aI(A[3],0,1),A};qi.get.hsl=function(n){if(!n)return null;let t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,o=n.match(t);if(o){let i=Number.parseFloat(o[4]),e=(Number.parseFloat(o[1])%360+360)%360,a=aI(Number.parseFloat(o[2]),0,100),A=aI(Number.parseFloat(o[3]),0,100),r=aI(Number.isNaN(i)?1:i,0,1);return[e,a,A,r]}return null};qi.get.hwb=function(n){if(!n)return null;let t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,o=n.match(t);if(o){let i=Number.parseFloat(o[4]),e=(Number.parseFloat(o[1])%360+360)%360,a=aI(Number.parseFloat(o[2]),0,100),A=aI(Number.parseFloat(o[3]),0,100),r=aI(Number.isNaN(i)?1:i,0,1);return[e,a,A,r]}return null};qi.to.hex=function(...n){return"#"+HD(n[0])+HD(n[1])+HD(n[2])+(n[3]<1?HD(Math.round(n[3]*255)):"")};qi.to.rgb=function(...n){return n.length<4||n[3]===1?"rgb("+Math.round(n[0])+", "+Math.round(n[1])+", "+Math.round(n[2])+")":"rgba("+Math.round(n[0])+", "+Math.round(n[1])+", "+Math.round(n[2])+", "+n[3]+")"};qi.to.rgb.percent=function(...n){let t=Math.round(n[0]/255*100),o=Math.round(n[1]/255*100),i=Math.round(n[2]/255*100);return n.length<4||n[3]===1?"rgb("+t+"%, "+o+"%, "+i+"%)":"rgba("+t+"%, "+o+"%, "+i+"%, "+n[3]+")"};qi.to.hsl=function(...n){return n.length<4||n[3]===1?"hsl("+n[0]+", "+n[1]+"%, "+n[2]+"%)":"hsla("+n[0]+", "+n[1]+"%, "+n[2]+"%, "+n[3]+")"};qi.to.hwb=function(...n){let t="";return n.length>=4&&n[3]!==1&&(t=", "+n[3]),"hwb("+n[0]+", "+n[1]+"%, "+n[2]+"%"+t+")"};qi.to.keyword=function(...n){return YAe[n.slice(0,3)]};function aI(n,t,o){return Math.min(Math.max(t,n),o)}function HD(n){let t=Math.round(n).toString(16).toUpperCase();return t.length<2?"0"+t:t}var Oh=qi,jAe={};for(let n of Object.keys(Gs))jAe[Gs[n]]=n;var sA={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},oklab:{channels:3,labels:["okl","oka","okb"]},lch:{channels:3,labels:"lch"},oklch:{channels:3,labels:["okl","okc","okh"]},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},Kl=sA,Jg=(6/29)**3;function Mh(n){let t=n>.0031308?1.055*n**.4166666666666667-.055:n*12.92;return Math.min(Math.max(0,t),1)}function _h(n){return n>.04045?((n+.055)/1.055)**2.4:n/12.92}for(let n of Object.keys(sA)){if(!("channels"in sA[n]))throw new Error("missing channels property: "+n);if(!("labels"in sA[n]))throw new Error("missing channel labels property: "+n);if(sA[n].labels.length!==sA[n].channels)throw new Error("channel and label counts mismatch: "+n);let{channels:t,labels:o}=sA[n];delete sA[n].channels,delete sA[n].labels,Object.defineProperty(sA[n],"channels",{value:t}),Object.defineProperty(sA[n],"labels",{value:o})}sA.rgb.hsl=function(n){let t=n[0]/255,o=n[1]/255,i=n[2]/255,e=Math.min(t,o,i),a=Math.max(t,o,i),A=a-e,r,s;switch(a){case e:{r=0;break}case t:{r=(o-i)/A;break}case o:{r=2+(i-t)/A;break}case i:{r=4+(t-o)/A;break}}r=Math.min(r*60,360),r<0&&(r+=360);let g=(e+a)/2;return a===e?s=0:g<=.5?s=A/(a+e):s=A/(2-a-e),[r,s*100,g*100]};sA.rgb.hsv=function(n){let t,o,i,e,a,A=n[0]/255,r=n[1]/255,s=n[2]/255,g=Math.max(A,r,s),c=g-Math.min(A,r,s),I=function(d){return(g-d)/6/c+1/2};if(c===0)e=0,a=0;else{switch(a=c/g,t=I(A),o=I(r),i=I(s),g){case A:{e=i-o;break}case r:{e=1/3+t-i;break}case s:{e=2/3+o-t;break}}e<0?e+=1:e>1&&(e-=1)}return[e*360,a*100,g*100]};sA.rgb.hwb=function(n){let t=n[0],o=n[1],i=n[2],e=sA.rgb.hsl(n)[0],a=1/255*Math.min(t,Math.min(o,i));return i=1-1/255*Math.max(t,Math.max(o,i)),[e,a*100,i*100]};sA.rgb.oklab=function(n){let t=_h(n[0]/255),o=_h(n[1]/255),i=_h(n[2]/255),e=Math.cbrt(.4122214708*t+.5363325363*o+.0514459929*i),a=Math.cbrt(.2119034982*t+.6806995451*o+.1073969566*i),A=Math.cbrt(.0883024619*t+.2817188376*o+.6299787005*i),r=.2104542553*e+.793617785*a-.0040720468*A,s=1.9779984951*e-2.428592205*a+.4505937099*A,g=.0259040371*e+.7827717662*a-.808675766*A;return[r*100,s*100,g*100]};sA.rgb.cmyk=function(n){let t=n[0]/255,o=n[1]/255,i=n[2]/255,e=Math.min(1-t,1-o,1-i),a=(1-t-e)/(1-e)||0,A=(1-o-e)/(1-e)||0,r=(1-i-e)/(1-e)||0;return[a*100,A*100,r*100,e*100]};function w3e(n,t){return(n[0]-t[0])**2+(n[1]-t[1])**2+(n[2]-t[2])**2}sA.rgb.keyword=function(n){let t=jAe[n];if(t)return t;let o=Number.POSITIVE_INFINITY,i;for(let e of Object.keys(Gs)){let a=Gs[e],A=w3e(n,a);AJg?o**(1/3):7.787*o+16/116,i=i>Jg?i**(1/3):7.787*i+16/116,e=e>Jg?e**(1/3):7.787*e+16/116;let a=116*i-16,A=500*(o-i),r=200*(i-e);return[a,A,r]};sA.hsl.rgb=function(n){let t=n[0]/360,o=n[1]/100,i=n[2]/100,e,a;if(o===0)return a=i*255,[a,a,a];let A=i<.5?i*(1+o):i+o-i*o,r=2*i-A,s=[0,0,0];for(let g=0;g<3;g++)e=t+1/3*-(g-1),e<0&&e++,e>1&&e--,6*e<1?a=r+(A-r)*6*e:2*e<1?a=A:3*e<2?a=r+(A-r)*(2/3-e)*6:a=r,s[g]=a*255;return s};sA.hsl.hsv=function(n){let t=n[0],o=n[1]/100,i=n[2]/100,e=o,a=Math.max(i,.01);i*=2,o*=i<=1?i:2-i,e*=a<=1?a:2-a;let A=(i+o)/2,r=i===0?2*e/(a+e):2*o/(i+o);return[t,r*100,A*100]};sA.hsv.rgb=function(n){let t=n[0]/60,o=n[1]/100,i=n[2]/100,e=Math.floor(t)%6,a=t-Math.floor(t),A=255*i*(1-o),r=255*i*(1-o*a),s=255*i*(1-o*(1-a));switch(i*=255,e){case 0:return[i,s,A];case 1:return[r,i,A];case 2:return[A,i,s];case 3:return[A,r,i];case 4:return[s,A,i];case 5:return[i,A,r]}};sA.hsv.hsl=function(n){let t=n[0],o=n[1]/100,i=n[2]/100,e=Math.max(i,.01),a,A;A=(2-o)*i;let r=(2-o)*e;return a=o*e,a/=r<=1?r:2-r,a=a||0,A/=2,[t,a*100,A*100]};sA.hwb.rgb=function(n){let t=n[0]/360,o=n[1]/100,i=n[2]/100,e=o+i,a;e>1&&(o/=e,i/=e);let A=Math.floor(6*t),r=1-i;a=6*t-A,(A&1)!==0&&(a=1-a);let s=o+a*(r-o),g,c,I;switch(A){default:case 6:case 0:{g=r,c=s,I=o;break}case 1:{g=s,c=r,I=o;break}case 2:{g=o,c=r,I=s;break}case 3:{g=o,c=s,I=r;break}case 4:{g=s,c=o,I=r;break}case 5:{g=r,c=o,I=s;break}}return[g*255,c*255,I*255]};sA.cmyk.rgb=function(n){let t=n[0]/100,o=n[1]/100,i=n[2]/100,e=n[3]/100,a=1-Math.min(1,t*(1-e)+e),A=1-Math.min(1,o*(1-e)+e),r=1-Math.min(1,i*(1-e)+e);return[a*255,A*255,r*255]};sA.xyz.rgb=function(n){let t=n[0]/100,o=n[1]/100,i=n[2]/100,e,a,A;return e=t*3.2404542+o*-1.5371385+i*-.4985314,a=t*-.969266+o*1.8760108+i*.041556,A=t*.0556434+o*-.2040259+i*1.0572252,e=Mh(e),a=Mh(a),A=Mh(A),[e*255,a*255,A*255]};sA.xyz.lab=function(n){let t=n[0],o=n[1],i=n[2];t/=95.047,o/=100,i/=108.883,t=t>Jg?t**(1/3):7.787*t+16/116,o=o>Jg?o**(1/3):7.787*o+16/116,i=i>Jg?i**(1/3):7.787*i+16/116;let e=116*o-16,a=500*(t-o),A=200*(o-i);return[e,a,A]};sA.xyz.oklab=function(n){let t=n[0]/100,o=n[1]/100,i=n[2]/100,e=Math.cbrt(.8189330101*t+.3618667424*o-.1288597137*i),a=Math.cbrt(.0329845436*t+.9293118715*o+.0361456387*i),A=Math.cbrt(.0482003018*t+.2643662691*o+.633851707*i),r=.2104542553*e+.793617785*a-.0040720468*A,s=1.9779984951*e-2.428592205*a+.4505937099*A,g=.0259040371*e+.7827717662*a-.808675766*A;return[r*100,s*100,g*100]};sA.oklab.oklch=function(n){return sA.lab.lch(n)};sA.oklab.xyz=function(n){let t=n[0]/100,o=n[1]/100,i=n[2]/100,e=(.999999998*t+.396337792*o+.215803758*i)**3,a=(1.000000008*t-.105561342*o-.063854175*i)**3,A=(1.000000055*t-.089484182*o-1.291485538*i)**3,r=1.227013851*e-.55779998*a+.281256149*A,s=-.040580178*e+1.11225687*a-.071676679*A,g=-.076381285*e-.421481978*a+1.58616322*A;return[r*100,s*100,g*100]};sA.oklab.rgb=function(n){let t=n[0]/100,o=n[1]/100,i=n[2]/100,e=(t+.3963377774*o+.2158037573*i)**3,a=(t-.1055613458*o-.0638541728*i)**3,A=(t-.0894841775*o-1.291485548*i)**3,r=Mh(4.0767416621*e-3.3077115913*a+.2309699292*A),s=Mh(-1.2684380046*e+2.6097574011*a-.3413193965*A),g=Mh(-.0041960863*e-.7034186147*a+1.707614701*A);return[r*255,s*255,g*255]};sA.oklch.oklab=function(n){return sA.lch.lab(n)};sA.lab.xyz=function(n){let t=n[0],o=n[1],i=n[2],e,a,A;a=(t+16)/116,e=o/500+a,A=a-i/200;let r=a**3,s=e**3,g=A**3;return a=r>Jg?r:(a-16/116)/7.787,e=s>Jg?s:(e-16/116)/7.787,A=g>Jg?g:(A-16/116)/7.787,e*=95.047,a*=100,A*=108.883,[e,a,A]};sA.lab.lch=function(n){let t=n[0],o=n[1],i=n[2],e;e=Math.atan2(i,o)*360/2/Math.PI,e<0&&(e+=360);let A=Math.sqrt(o*o+i*i);return[t,A,e]};sA.lch.lab=function(n){let t=n[0],o=n[1],e=n[2]/360*2*Math.PI,a=o*Math.cos(e),A=o*Math.sin(e);return[t,a,A]};sA.rgb.ansi16=function(n,t=null){let[o,i,e]=n,a=t===null?sA.rgb.hsv(n)[2]:t;if(a=Math.round(a/50),a===0)return 30;let A=30+(Math.round(e/255)<<2|Math.round(i/255)<<1|Math.round(o/255));return a===2&&(A+=60),A};sA.hsv.ansi16=function(n){return sA.rgb.ansi16(sA.hsv.rgb(n),n[2])};sA.rgb.ansi256=function(n){let t=n[0],o=n[1],i=n[2];return t>>4===o>>4&&o>>4===i>>4?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(i/255*5)};sA.ansi16.rgb=function(n){n=n[0];let t=n%10;if(t===0||t===7)return n>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let o=(Math.trunc(n>50)+1)*.5,i=(t&1)*o*255,e=(t>>1&1)*o*255,a=(t>>2&1)*o*255;return[i,e,a]};sA.ansi256.rgb=function(n){if(n=n[0],n>=232){let a=(n-232)*10+8;return[a,a,a]}n-=16;let t,o=Math.floor(n/36)/5*255,i=Math.floor((t=n%36)/6)/5*255,e=t%6/5*255;return[o,i,e]};sA.rgb.hex=function(n){let o=(((Math.round(n[0])&255)<<16)+((Math.round(n[1])&255)<<8)+(Math.round(n[2])&255)).toString(16).toUpperCase();return"000000".slice(o.length)+o};sA.hex.rgb=function(n){let t=n.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!t)return[0,0,0];let o=t[0];t[0].length===3&&(o=[...o].map(r=>r+r).join(""));let i=Number.parseInt(o,16),e=i>>16&255,a=i>>8&255,A=i&255;return[e,a,A]};sA.rgb.hcg=function(n){let t=n[0]/255,o=n[1]/255,i=n[2]/255,e=Math.max(Math.max(t,o),i),a=Math.min(Math.min(t,o),i),A=e-a,r,s=A<1?a/(1-A):0;return A<=0?r=0:e===t?r=(o-i)/A%6:e===o?r=2+(i-t)/A:r=4+(t-o)/A,r/=6,r%=1,[r*360,A*100,s*100]};sA.hsl.hcg=function(n){let t=n[1]/100,o=n[2]/100,i=o<.5?2*t*o:2*t*(1-o),e=0;return i<1&&(e=(o-.5*i)/(1-i)),[n[0],i*100,e*100]};sA.hsv.hcg=function(n){let t=n[1]/100,o=n[2]/100,i=t*o,e=0;return i<1&&(e=(o-i)/(1-i)),[n[0],i*100,e*100]};sA.hcg.rgb=function(n){let t=n[0]/360,o=n[1]/100,i=n[2]/100;if(o===0)return[i*255,i*255,i*255];let e=[0,0,0],a=t%1*6,A=a%1,r=1-A,s=0;switch(Math.floor(a)){case 0:{e[0]=1,e[1]=A,e[2]=0;break}case 1:{e[0]=r,e[1]=1,e[2]=0;break}case 2:{e[0]=0,e[1]=1,e[2]=A;break}case 3:{e[0]=0,e[1]=r,e[2]=1;break}case 4:{e[0]=A,e[1]=0,e[2]=1;break}default:e[0]=1,e[1]=0,e[2]=r}return s=(1-o)*i,[(o*e[0]+s)*255,(o*e[1]+s)*255,(o*e[2]+s)*255]};sA.hcg.hsv=function(n){let t=n[1]/100,o=n[2]/100,i=t+o*(1-t),e=0;return i>0&&(e=t/i),[n[0],e*100,i*100]};sA.hcg.hsl=function(n){let t=n[1]/100,i=n[2]/100*(1-t)+.5*t,e=0;return i>0&&i<.5?e=t/(2*i):i>=.5&&i<1&&(e=t/(2*(1-i))),[n[0],e*100,i*100]};sA.hcg.hwb=function(n){let t=n[1]/100,o=n[2]/100,i=t+o*(1-t);return[n[0],(i-t)*100,(1-i)*100]};sA.hwb.hcg=function(n){let t=n[1]/100,i=1-n[2]/100,e=i-t,a=0;return e<1&&(a=(i-e)/(1-e)),[n[0],e*100,a*100]};sA.apple.rgb=function(n){return[n[0]/65535*255,n[1]/65535*255,n[2]/65535*255]};sA.rgb.apple=function(n){return[n[0]/255*65535,n[1]/255*65535,n[2]/255*65535]};sA.gray.rgb=function(n){return[n[0]/100*255,n[0]/100*255,n[0]/100*255]};sA.gray.hsl=function(n){return[0,0,n[0]]};sA.gray.hsv=sA.gray.hsl;sA.gray.hwb=function(n){return[0,100,n[0]]};sA.gray.cmyk=function(n){return[0,0,0,n[0]]};sA.gray.lab=function(n){return[n[0],0,0]};sA.gray.hex=function(n){let t=Math.round(n[0]/100*255)&255,i=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".slice(i.length)+i};sA.rgb.gray=function(n){return[(n[0]+n[1]+n[2])/3/255*100]};function D3e(){let n={},t=Object.keys(Kl);for(let{length:o}=t,i=0;i0;){let i=o.pop(),e=Object.keys(Kl[i]);for(let{length:a}=e,A=0;A1&&(o=i),n(o))};return"conversion"in n&&(t.conversion=n.conversion),t}function k3e(n){let t=function(...o){let i=o[0];if(i==null)return i;i.length>1&&(o=i);let e=n(o);if(typeof e=="object")for(let{length:a}=e,A=0;A0){this.model=t||"rgb",i=Eo[this.model].channels;let e=Array.prototype.slice.call(n,0,i);this.color=kL(e,i),this.valpha=typeof n[i]=="number"?n[i]:1}else if(typeof n=="number")this.model="rgb",this.color=[n>>16&255,n>>8&255,n&255],this.valpha=1;else{this.valpha=1;let e=Object.keys(n);"alpha"in n&&(e.splice(e.indexOf("alpha"),1),this.valpha=typeof n.alpha=="number"?n.alpha:0);let a=e.sort().join("");if(!(a in NL))throw new Error("Unable to parse color from object: "+JSON.stringify(n));this.model=NL[a];let{labels:A}=Eo[this.model],r=[];for(o=0;o(n%360+360)%360),saturationl:wr("hsl",1,zr(100)),lightness:wr("hsl",2,zr(100)),saturationv:wr("hsv",1,zr(100)),value:wr("hsv",2,zr(100)),chroma:wr("hcg",1,zr(100)),gray:wr("hcg",2,zr(100)),white:wr("hwb",1,zr(100)),wblack:wr("hwb",2,zr(100)),cyan:wr("cmyk",0,zr(100)),magenta:wr("cmyk",1,zr(100)),yellow:wr("cmyk",2,zr(100)),black:wr("cmyk",3,zr(100)),x:wr("xyz",0,zr(95.047)),y:wr("xyz",1,zr(100)),z:wr("xyz",2,zr(108.833)),l:wr("lab",0,zr(100)),a:wr("lab",1),b:wr("lab",2),keyword(n){return n!==void 0?new la(n):Eo[this.model].keyword(this.color)},hex(n){return n!==void 0?new la(n):Oh.to.hex(...this.rgb().round().color)},hexa(n){if(n!==void 0)return new la(n);let t=this.rgb().round().color,o=Math.round(this.valpha*255).toString(16).toUpperCase();return o.length===1&&(o="0"+o),Oh.to.hex(...t)+o},rgbNumber(){let n=this.rgb().color;return(n[0]&255)<<16|(n[1]&255)<<8|n[2]&255},luminosity(){let n=this.rgb().color,t=[];for(let[o,i]of n.entries()){let e=i/255;t[o]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return .2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(n){let t=this.luminosity(),o=n.luminosity();return t>o?(t+.05)/(o+.05):(o+.05)/(t+.05)},level(n){let t=this.contrast(n);return t>=7?"AAA":t>=4.5?"AA":""},isDark(){let n=this.rgb().color;return(n[0]*2126+n[1]*7152+n[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){let n=this.rgb();for(let t=0;t<3;t++)n.color[t]=255-n.color[t];return n},lighten(n){let t=this.hsl();return t.color[2]+=t.color[2]*n,t},darken(n){let t=this.hsl();return t.color[2]-=t.color[2]*n,t},saturate(n){let t=this.hsl();return t.color[1]+=t.color[1]*n,t},desaturate(n){let t=this.hsl();return t.color[1]-=t.color[1]*n,t},whiten(n){let t=this.hwb();return t.color[1]+=t.color[1]*n,t},blacken(n){let t=this.hwb();return t.color[2]+=t.color[2]*n,t},grayscale(){let n=this.rgb().color,t=n[0]*.3+n[1]*.59+n[2]*.11;return la.rgb(t,t,t)},fade(n){return this.alpha(this.valpha-this.valpha*n)},opaquer(n){return this.alpha(this.valpha+this.valpha*n)},rotate(n){let t=this.hsl(),o=t.color[0];return o=(o+n)%360,o=o<0?360+o:o,t.color[0]=o,t},mix(n,t){if(!n||!n.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof n);let o=n.rgb(),i=this.rgb(),e=t===void 0?.5:t,a=2*e-1,A=o.alpha()-i.alpha(),r=((a*A===-1?a:(a+A)/(1+a*A))+1)/2,s=1-r;return la.rgb(r*o.red()+s*i.red(),r*o.green()+s*i.green(),r*o.blue()+s*i.blue(),o.alpha()*e+i.alpha()*(1-e))}};for(let n of Object.keys(Eo)){if(JAe.includes(n))continue;let{channels:t}=Eo[n];la.prototype[n]=function(...o){return this.model===n?new la(this):o.length>0?new la(o,n):new la([...G3e(Eo[this.model][n].raw(this.color)),this.valpha],n)},la[n]=function(...o){let i=o[0];return typeof i=="number"&&(i=kL(o,t)),new la(i,n)}}function v3e(n,t){return Number(n.toFixed(t))}function P3e(n){return function(t){return v3e(t,n)}}function wr(n,t,o){n=Array.isArray(n)?n:[n];for(let i of n)(RL[i]||=[])[t]=o;return n=n[0],function(i){let e;return i!==void 0?(o&&(i=o(i)),e=this[n](),e.color[t]=i,e):(e=this[n]().color[t],o&&(e=o(e)),e)}}function zr(n){return function(t){return Math.max(0,Math.min(n,t))}}function G3e(n){return Array.isArray(n)?n:[n]}function kL(n,t){for(let o=0;o{VAe.exports=zAe().default});function L3e(n){return this._setBackgroundColourOption("tint",n),this}function U3e(n){return this.options.greyscale=O.bool(n)?n:!0,this}function H3e(n){return this.greyscale(n)}function K3e(n){if(!O.string(n))throw O.invalidParameterError("colourspace","string",n);return this.options.colourspacePipeline=n,this}function x3e(n){return this.pipelineColourspace(n)}function Y3e(n){if(!O.string(n))throw O.invalidParameterError("colourspace","string",n);return this.options.colourspace=n,this}function j3e(n){return this.toColourspace(n)}function $Ae(n){if(O.object(n)||O.string(n)&&n.length>=3&&n.length<=200){let t=(0,XAe.default)(n),o=t.red(),i=t.green(),e=t.blue(),a=Math.round(t.alpha()*255);for(let[A,r]of[["red",o],["green",i],["blue",e],["alpha",a]])if(!O.number(r))throw O.invalidParameterError(`background.${A}`,"number",r);return[o,i,e,a]}else throw O.invalidParameterError("background","object or string",n)}function J3e(n,t){O.defined(t)&&(this.options[n]=$Ae(t))}var XAe,ZAe,ete,Ate=ue(()=>{XAe=qe(WAe(),1);Ts();ZAe={multiband:"multiband","b-w":"b-w",bw:"b-w",cmyk:"cmyk",srgb:"srgb"};ete=n=>{Object.assign(n.prototype,{tint:L3e,greyscale:U3e,grayscale:H3e,pipelineColourspace:K3e,pipelineColorspace:x3e,toColourspace:Y3e,toColorspace:j3e,_getBackgroundColourOption:$Ae,_setBackgroundColourOption:J3e}),n.colourspace=ZAe,n.colorspace=ZAe}});function z3e(){return this.options.removeAlpha=!0,this}function V3e(n){if(O.defined(n))if(O.number(n)&&O.inRange(n,0,1))this.options.ensureAlpha=n;else throw O.invalidParameterError("alpha","number between 0 and 1",n);else this.options.ensureAlpha=1;return this}function W3e(n){let t={red:0,green:1,blue:2,alpha:3};if(Object.keys(t).includes(n)&&(n=t[n]),O.integer(n)&&O.inRange(n,0,4))this.options.extractChannel=n;else throw O.invalidParameterError("channel","integer or one of: red, green, blue, alpha",n);return this}function Z3e(n,t){return Array.isArray(n)?n.forEach(function(o){this.options.joinChannelIn.push(this._createInputDescriptor(o,t))},this):this.options.joinChannelIn.push(this._createInputDescriptor(n,t)),this}function X3e(n){if(O.string(n)&&O.inArray(n,["and","or","eor"]))this.options.bandBoolOp=n;else throw O.invalidParameterError("boolOp","one of: and, or, eor",n);return this}var q3e,tte,rte=ue(()=>{Ts();q3e={and:"and",or:"or",eor:"eor"};tte=n=>{Object.assign(n.prototype,{removeAlpha:z3e,ensureAlpha:V3e,extractChannel:W3e,joinChannel:Z3e,bandbool:X3e}),n.bool=q3e}});import PL from"node:path";function eje(n,t){let o;if(O.string(n)?O.string(this.options.input.file)&&PL.resolve(this.options.input.file)===PL.resolve(n)?o=new Error("Cannot use same file for input and output"):$3e.test(PL.extname(n))&&!this.constructor.format.jp2.output.file&&(o=ite()):o=new Error("Missing output file path"),o)if(O.fn(t))t(o);else return Promise.reject(o);else{this.options.fileOut=n;let i=Error();return this._pipeline(t,i)}return this}function Aje(n,t){O.object(n)?this._setBooleanOption("resolveWithObject",n.resolveWithObject):this.options.resolveWithObject&&(this.options.resolveWithObject=!1),this.options.fileOut="";let o=Error();return this._pipeline(O.fn(n)?n:t,o)}function tje(){this.options.resolveWithObject=!0,this.options.typedArrayOut=!0;let n=Error();return this._pipeline(null,n)}function rje(n){if(O.number(n)&&n>0)this.options.withMetadataDensity=n;else throw O.invalidParameterError("density","positive number",n);return this.keepExif()}function aje(){return this.options.keepMetadata|=1,this}function ije(n){if(O.object(n))for(let[t,o]of Object.entries(n))if(O.object(o))for(let[i,e]of Object.entries(o))if(O.string(e))this.options.withExif[`exif-${t.toLowerCase()}-${i}`]=e;else throw O.invalidParameterError(`${t}.${i}`,"string",e);else throw O.invalidParameterError(t,"object",o);else throw O.invalidParameterError("exif","object",n);return this.options.withExifMerge=!1,this.keepExif()}function oje(n){return this.withExif(n),this.options.withExifMerge=!0,this}function nje(){return this.options.keepMetadata|=8,this}function sje(n,t){if(O.string(n))this.options.withIccProfile=n;else throw O.invalidParameterError("icc","string",n);if(this.keepIccProfile(),O.object(t)&&O.defined(t.attach))if(O.bool(t.attach))t.attach||(this.options.keepMetadata&=-9);else throw O.invalidParameterError("attach","boolean",t.attach);return this}function gje(){return this.options.keepGainMap=!0,this.options.withGainMap=!1,this.options.keepMetadata|=32,this}function cje(){return this.options.withGainMap=!0,this.options.keepGainMap=!1,this.options.colourspace="scrgb",this}function Ije(){return this.options.keepMetadata|=2,this}function lje(n){if(O.string(n)&&n.length>0)this.options.withXmp=n,this.options.keepMetadata|=2;else throw O.invalidParameterError("xmp","non-empty string",n);return this}function pje(){return this.options.keepMetadata|=31,this}function dje(n){if(this.keepMetadata(),this.withIccProfile("srgb"),O.object(n)){if(O.defined(n.orientation))if(O.integer(n.orientation)&&O.inRange(n.orientation,1,8))this.options.withMetadataOrientation=n.orientation;else throw O.invalidParameterError("orientation","integer between 1 and 8",n.orientation);if(O.defined(n.density))if(O.number(n.density)&&n.density>0)this.options.withMetadataDensity=n.density;else throw O.invalidParameterError("density","positive number",n.density);O.defined(n.icc)&&this.withIccProfile(n.icc),O.defined(n.exif)&&this.withExifMerge(n.exif)}return this}function hje(n,t){let o=ate.get((O.object(n)&&O.string(n.id)?n.id:n).toLowerCase());if(!o)throw O.invalidParameterError("format",`one of: ${[...ate.keys()].join(", ")}`,n);return this[o](t)}function Eje(n){if(O.object(n)){if(O.defined(n.quality))if(O.integer(n.quality)&&O.inRange(n.quality,1,100))this.options.jpegQuality=n.quality;else throw O.invalidParameterError("quality","integer between 1 and 100",n.quality);if(O.defined(n.progressive)&&this._setBooleanOption("jpegProgressive",n.progressive),O.defined(n.chromaSubsampling))if(O.string(n.chromaSubsampling)&&O.inArray(n.chromaSubsampling,["4:2:0","4:4:4"]))this.options.jpegChromaSubsampling=n.chromaSubsampling;else throw O.invalidParameterError("chromaSubsampling","one of: 4:2:0, 4:4:4",n.chromaSubsampling);let t=O.bool(n.optimizeCoding)?n.optimizeCoding:n.optimiseCoding;if(O.defined(t)&&this._setBooleanOption("jpegOptimiseCoding",t),O.defined(n.mozjpeg))if(O.bool(n.mozjpeg))n.mozjpeg&&(this.options.jpegTrellisQuantisation=!0,this.options.jpegOvershootDeringing=!0,this.options.jpegOptimiseScans=!0,this.options.jpegProgressive=!0,this.options.jpegQuantisationTable=3);else throw O.invalidParameterError("mozjpeg","boolean",n.mozjpeg);let o=O.bool(n.trellisQuantization)?n.trellisQuantization:n.trellisQuantisation;O.defined(o)&&this._setBooleanOption("jpegTrellisQuantisation",o),O.defined(n.overshootDeringing)&&this._setBooleanOption("jpegOvershootDeringing",n.overshootDeringing);let i=O.bool(n.optimizeScans)?n.optimizeScans:n.optimiseScans;O.defined(i)&&(this._setBooleanOption("jpegOptimiseScans",i),i&&(this.options.jpegProgressive=!0));let e=O.number(n.quantizationTable)?n.quantizationTable:n.quantisationTable;if(O.defined(e))if(O.integer(e)&&O.inRange(e,0,8))this.options.jpegQuantisationTable=e;else throw O.invalidParameterError("quantisationTable","integer between 0 and 8",e)}return this._updateFormatOut("jpeg",n)}function Cje(n){if(O.object(n)){if(O.defined(n.progressive)&&this._setBooleanOption("pngProgressive",n.progressive),O.defined(n.compressionLevel))if(O.integer(n.compressionLevel)&&O.inRange(n.compressionLevel,0,9))this.options.pngCompressionLevel=n.compressionLevel;else throw O.invalidParameterError("compressionLevel","integer between 0 and 9",n.compressionLevel);O.defined(n.adaptiveFiltering)&&this._setBooleanOption("pngAdaptiveFiltering",n.adaptiveFiltering);let t=n.colours||n.colors;if(O.defined(t))if(O.integer(t)&&O.inRange(t,2,256))this.options.pngBitdepth=ote(t);else throw O.invalidParameterError("colours","integer between 2 and 256",t);if(O.defined(n.palette)?this._setBooleanOption("pngPalette",n.palette):[n.quality,n.effort,n.colours,n.colors,n.dither].some(O.defined)&&this._setBooleanOption("pngPalette",!0),this.options.pngPalette){if(O.defined(n.quality))if(O.integer(n.quality)&&O.inRange(n.quality,0,100))this.options.pngQuality=n.quality;else throw O.invalidParameterError("quality","integer between 0 and 100",n.quality);if(O.defined(n.effort))if(O.integer(n.effort)&&O.inRange(n.effort,1,10))this.options.pngEffort=n.effort;else throw O.invalidParameterError("effort","integer between 1 and 10",n.effort);if(O.defined(n.dither))if(O.number(n.dither)&&O.inRange(n.dither,0,1))this.options.pngDither=n.dither;else throw O.invalidParameterError("dither","number between 0.0 and 1.0",n.dither)}}return this._updateFormatOut("png",n)}function uje(n){if(O.object(n)){if(O.defined(n.quality))if(O.integer(n.quality)&&O.inRange(n.quality,1,100))this.options.webpQuality=n.quality;else throw O.invalidParameterError("quality","integer between 1 and 100",n.quality);if(O.defined(n.alphaQuality))if(O.integer(n.alphaQuality)&&O.inRange(n.alphaQuality,0,100))this.options.webpAlphaQuality=n.alphaQuality;else throw O.invalidParameterError("alphaQuality","integer between 0 and 100",n.alphaQuality);if(O.defined(n.lossless)&&this._setBooleanOption("webpLossless",n.lossless),O.defined(n.nearLossless)&&this._setBooleanOption("webpNearLossless",n.nearLossless),O.defined(n.smartSubsample)&&this._setBooleanOption("webpSmartSubsample",n.smartSubsample),O.defined(n.smartDeblock)&&this._setBooleanOption("webpSmartDeblock",n.smartDeblock),O.defined(n.preset))if(O.string(n.preset)&&O.inArray(n.preset,["default","photo","picture","drawing","icon","text"]))this.options.webpPreset=n.preset;else throw O.invalidParameterError("preset","one of: default, photo, picture, drawing, icon, text",n.preset);if(O.defined(n.effort))if(O.integer(n.effort)&&O.inRange(n.effort,0,6))this.options.webpEffort=n.effort;else throw O.invalidParameterError("effort","integer between 0 and 6",n.effort);O.defined(n.minSize)&&this._setBooleanOption("webpMinSize",n.minSize),O.defined(n.mixed)&&this._setBooleanOption("webpMixed",n.mixed),O.defined(n.exact)&&this._setBooleanOption("webpExact",n.exact)}return GL(n,this.options),this._updateFormatOut("webp",n)}function Bje(n){if(O.object(n)){O.defined(n.reuse)&&this._setBooleanOption("gifReuse",n.reuse),O.defined(n.progressive)&&this._setBooleanOption("gifProgressive",n.progressive);let t=n.colours||n.colors;if(O.defined(t))if(O.integer(t)&&O.inRange(t,2,256))this.options.gifBitdepth=ote(t);else throw O.invalidParameterError("colours","integer between 2 and 256",t);if(O.defined(n.effort))if(O.integer(n.effort)&&O.inRange(n.effort,1,10))this.options.gifEffort=n.effort;else throw O.invalidParameterError("effort","integer between 1 and 10",n.effort);if(O.defined(n.dither))if(O.number(n.dither)&&O.inRange(n.dither,0,1))this.options.gifDither=n.dither;else throw O.invalidParameterError("dither","number between 0.0 and 1.0",n.dither);if(O.defined(n.interFrameMaxError))if(O.number(n.interFrameMaxError)&&O.inRange(n.interFrameMaxError,0,32))this.options.gifInterFrameMaxError=n.interFrameMaxError;else throw O.invalidParameterError("interFrameMaxError","number between 0.0 and 32.0",n.interFrameMaxError);if(O.defined(n.interPaletteMaxError))if(O.number(n.interPaletteMaxError)&&O.inRange(n.interPaletteMaxError,0,256))this.options.gifInterPaletteMaxError=n.interPaletteMaxError;else throw O.invalidParameterError("interPaletteMaxError","number between 0.0 and 256.0",n.interPaletteMaxError);if(O.defined(n.keepDuplicateFrames))if(O.bool(n.keepDuplicateFrames))this._setBooleanOption("gifKeepDuplicateFrames",n.keepDuplicateFrames);else throw O.invalidParameterError("keepDuplicateFrames","boolean",n.keepDuplicateFrames)}return GL(n,this.options),this._updateFormatOut("gif",n)}function fje(n){if(!this.constructor.format.jp2.output.buffer)throw ite();if(O.object(n)){if(O.defined(n.quality))if(O.integer(n.quality)&&O.inRange(n.quality,1,100))this.options.jp2Quality=n.quality;else throw O.invalidParameterError("quality","integer between 1 and 100",n.quality);if(O.defined(n.lossless))if(O.bool(n.lossless))this.options.jp2Lossless=n.lossless;else throw O.invalidParameterError("lossless","boolean",n.lossless);if(O.defined(n.tileWidth))if(O.integer(n.tileWidth)&&O.inRange(n.tileWidth,1,32768))this.options.jp2TileWidth=n.tileWidth;else throw O.invalidParameterError("tileWidth","integer between 1 and 32768",n.tileWidth);if(O.defined(n.tileHeight))if(O.integer(n.tileHeight)&&O.inRange(n.tileHeight,1,32768))this.options.jp2TileHeight=n.tileHeight;else throw O.invalidParameterError("tileHeight","integer between 1 and 32768",n.tileHeight);if(O.defined(n.chromaSubsampling))if(O.string(n.chromaSubsampling)&&O.inArray(n.chromaSubsampling,["4:2:0","4:4:4"]))this.options.jp2ChromaSubsampling=n.chromaSubsampling;else throw O.invalidParameterError("chromaSubsampling","one of: 4:2:0, 4:4:4",n.chromaSubsampling)}return this._updateFormatOut("jp2",n)}function GL(n,t){if(O.object(n)&&O.defined(n.loop))if(O.integer(n.loop)&&O.inRange(n.loop,0,65535))t.loop=n.loop;else throw O.invalidParameterError("loop","integer between 0 and 65535",n.loop);if(O.object(n)&&O.defined(n.delay))if(O.integer(n.delay)&&O.inRange(n.delay,0,65535))t.delay=[n.delay];else if(Array.isArray(n.delay)&&n.delay.every(O.integer)&&n.delay.every(o=>O.inRange(o,0,65535)))t.delay=n.delay;else throw O.invalidParameterError("delay","integer or an array of integers between 0 and 65535",n.delay)}function Qje(n){if(O.object(n)){if(O.defined(n.quality))if(O.integer(n.quality)&&O.inRange(n.quality,1,100))this.options.tiffQuality=n.quality;else throw O.invalidParameterError("quality","integer between 1 and 100",n.quality);if(O.defined(n.bitdepth))if(O.integer(n.bitdepth)&&O.inArray(n.bitdepth,[1,2,4]))this.options.tiffBitdepth=n.bitdepth;else throw O.invalidParameterError("bitdepth","1, 2 or 4",n.bitdepth);if(O.defined(n.tile)&&this._setBooleanOption("tiffTile",n.tile),O.defined(n.tileWidth))if(O.integer(n.tileWidth)&&O.inRange(n.tileWidth,1,32768))this.options.tiffTileWidth=n.tileWidth;else throw O.invalidParameterError("tileWidth","integer between 1 and 32768",n.tileWidth);if(O.defined(n.tileHeight))if(O.integer(n.tileHeight)&&O.inRange(n.tileHeight,1,32768))this.options.tiffTileHeight=n.tileHeight;else throw O.invalidParameterError("tileHeight","integer between 1 and 32768",n.tileHeight);if(O.defined(n.miniswhite)&&this._setBooleanOption("tiffMiniswhite",n.miniswhite),O.defined(n.pyramid)&&this._setBooleanOption("tiffPyramid",n.pyramid),O.defined(n.xres))if(O.number(n.xres)&&O.inRange(n.xres,.001,1e6))this.options.tiffXres=n.xres;else throw O.invalidParameterError("xres","number between 0.001 and 1000000",n.xres);if(O.defined(n.yres))if(O.number(n.yres)&&O.inRange(n.yres,.001,1e6))this.options.tiffYres=n.yres;else throw O.invalidParameterError("yres","number between 0.001 and 1000000",n.yres);if(O.defined(n.compression))if(O.string(n.compression)&&O.inArray(n.compression,["none","jpeg","deflate","packbits","ccittfax4","lzw","webp","zstd","jp2k"]))this.options.tiffCompression=n.compression;else throw O.invalidParameterError("compression","one of: none, jpeg, deflate, packbits, ccittfax4, lzw, webp, zstd, jp2k",n.compression);if(O.defined(n.bigtiff)&&this._setBooleanOption("tiffBigtiff",n.bigtiff),O.defined(n.predictor))if(O.string(n.predictor)&&O.inArray(n.predictor,["none","horizontal","float"]))this.options.tiffPredictor=n.predictor;else throw O.invalidParameterError("predictor","one of: none, horizontal, float",n.predictor);if(O.defined(n.resolutionUnit))if(O.string(n.resolutionUnit)&&O.inArray(n.resolutionUnit,["inch","cm"]))this.options.tiffResolutionUnit=n.resolutionUnit;else throw O.invalidParameterError("resolutionUnit","one of: inch, cm",n.resolutionUnit)}return this._updateFormatOut("tiff",n)}function yje(n){return this.heif({...n,compression:"av1"})}function mje(n){if(O.object(n)){if(O.string(n.compression)&&O.inArray(n.compression,["av1","hevc"]))this.options.heifCompression=n.compression;else throw O.invalidParameterError("compression","one of: av1, hevc",n.compression);if(O.defined(n.quality))if(O.integer(n.quality)&&O.inRange(n.quality,1,100))this.options.heifQuality=n.quality;else throw O.invalidParameterError("quality","integer between 1 and 100",n.quality);if(O.defined(n.lossless))if(O.bool(n.lossless))this.options.heifLossless=n.lossless;else throw O.invalidParameterError("lossless","boolean",n.lossless);if(O.defined(n.effort))if(O.integer(n.effort)&&O.inRange(n.effort,0,9))this.options.heifEffort=n.effort;else throw O.invalidParameterError("effort","integer between 0 and 9",n.effort);if(O.defined(n.chromaSubsampling))if(O.string(n.chromaSubsampling)&&O.inArray(n.chromaSubsampling,["4:2:0","4:4:4"]))this.options.heifChromaSubsampling=n.chromaSubsampling;else throw O.invalidParameterError("chromaSubsampling","one of: 4:2:0, 4:4:4",n.chromaSubsampling);if(O.defined(n.bitdepth))if(O.integer(n.bitdepth)&&O.inArray(n.bitdepth,[8,10,12]))this.options.heifBitdepth=n.bitdepth;else throw O.invalidParameterError("bitdepth","8, 10 or 12",n.bitdepth);if(O.defined(n.tune))if(O.string(n.tune)&&O.inArray(n.tune,["auto","iq","psnr","ssim"]))this.options.heifLossless&&n.tune==="iq"?this.options.heifTune="ssim":this.options.heifTune=n.tune;else throw O.invalidParameterError("tune","one of: auto, iq, psnr, ssim",n.tune)}else throw O.invalidParameterError("options","Object",n);return this._updateFormatOut("heif",n)}function Sje(n){if(O.object(n)){if(O.defined(n.quality))if(O.integer(n.quality)&&O.inRange(n.quality,1,100))this.options.jxlDistance=n.quality>=30?.1+(100-n.quality)*.09:53/3e3*n.quality*n.quality-23/20*n.quality+25;else throw O.invalidParameterError("quality","integer between 1 and 100",n.quality);else if(O.defined(n.distance))if(O.number(n.distance)&&O.inRange(n.distance,0,15))this.options.jxlDistance=n.distance;else throw O.invalidParameterError("distance","number between 0.0 and 15.0",n.distance);if(O.defined(n.decodingTier))if(O.integer(n.decodingTier)&&O.inRange(n.decodingTier,0,4))this.options.jxlDecodingTier=n.decodingTier;else throw O.invalidParameterError("decodingTier","integer between 0 and 4",n.decodingTier);if(O.defined(n.lossless))if(O.bool(n.lossless))this.options.jxlLossless=n.lossless;else throw O.invalidParameterError("lossless","boolean",n.lossless);if(O.defined(n.effort))if(O.integer(n.effort)&&O.inRange(n.effort,1,9))this.options.jxlEffort=n.effort;else throw O.invalidParameterError("effort","integer between 1 and 9",n.effort)}return GL(n,this.options),this._updateFormatOut("jxl",n)}function wje(n){if(O.object(n)&&O.defined(n.depth))if(O.string(n.depth)&&O.inArray(n.depth,["char","uchar","short","ushort","int","uint","float","complex","double","dpcomplex"]))this.options.rawDepth=n.depth;else throw O.invalidParameterError("depth","one of: char, uchar, short, ushort, int, uint, float, complex, double, dpcomplex",n.depth);return this._updateFormatOut("raw")}function Dje(n){if(O.object(n)){if(O.defined(n.size))if(O.integer(n.size)&&O.inRange(n.size,1,8192))this.options.tileSize=n.size;else throw O.invalidParameterError("size","integer between 1 and 8192",n.size);if(O.defined(n.overlap))if(O.integer(n.overlap)&&O.inRange(n.overlap,0,8192)){if(n.overlap>this.options.tileSize)throw O.invalidParameterError("overlap",`<= size (${this.options.tileSize})`,n.overlap);this.options.tileOverlap=n.overlap}else throw O.invalidParameterError("overlap","integer between 0 and 8192",n.overlap);if(O.defined(n.container))if(O.string(n.container)&&O.inArray(n.container,["fs","zip"]))this.options.tileContainer=n.container;else throw O.invalidParameterError("container","one of: fs, zip",n.container);if(O.defined(n.layout))if(O.string(n.layout)&&O.inArray(n.layout,["dz","google","iiif","iiif3","zoomify"]))this.options.tileLayout=n.layout;else throw O.invalidParameterError("layout","one of: dz, google, iiif, iiif3, zoomify",n.layout);if(O.defined(n.angle))if(O.integer(n.angle)&&!(n.angle%90))this.options.tileAngle=n.angle;else throw O.invalidParameterError("angle","positive/negative multiple of 90",n.angle);if(this._setBackgroundColourOption("tileBackground",n.background),O.defined(n.depth))if(O.string(n.depth)&&O.inArray(n.depth,["onepixel","onetile","one"]))this.options.tileDepth=n.depth;else throw O.invalidParameterError("depth","one of: onepixel, onetile, one",n.depth);if(O.defined(n.skipBlanks))if(O.integer(n.skipBlanks)&&O.inRange(n.skipBlanks,-1,65535))this.options.tileSkipBlanks=n.skipBlanks;else throw O.invalidParameterError("skipBlanks","integer between -1 and 255/65535",n.skipBlanks);else O.defined(n.layout)&&n.layout==="google"&&(this.options.tileSkipBlanks=5);let t=O.bool(n.center)?n.center:n.centre;if(O.defined(t)&&this._setBooleanOption("tileCentre",t),O.defined(n.id))if(O.string(n.id))this.options.tileId=n.id;else throw O.invalidParameterError("id","string",n.id);if(O.defined(n.basename))if(O.string(n.basename))this.options.tileBasename=n.basename;else throw O.invalidParameterError("basename","string",n.basename)}if(O.inArray(this.options.formatOut,["jpeg","png","webp"]))this.options.tileFormat=this.options.formatOut;else if(this.options.formatOut!=="input")throw O.invalidParameterError("format","one of: jpeg, png, webp",this.options.formatOut);return this._updateFormatOut("dz")}function Oje(n){if(!O.plainObject(n))throw O.invalidParameterError("options","object",n);if(O.integer(n.seconds)&&O.inRange(n.seconds,0,3600))this.options.timeoutSeconds=n.seconds;else throw O.invalidParameterError("seconds","integer between 0 and 3600",n.seconds);return this}function bje(n,t){return O.object(t)&&t.force===!1||(this.options.formatOut=n),this}function Mje(n,t){if(O.bool(t))this.options[n]=t;else throw O.invalidParameterError(n,"boolean",t)}function _je(){if(!this.options.streamOut){this.options.streamOut=!0;let n=Error();this._pipeline(void 0,n)}}function Tje(n,t){return typeof n=="function"?(this._isStreamInput()?this.on("finish",()=>{this._flattenBufferIn(),St.pipeline(this.options,(o,i,e)=>{o?n(O.nativeError(o,t)):n(null,i,e)})}):St.pipeline(this.options,(o,i,e)=>{o?n(O.nativeError(o,t)):n(null,i,e)}),this):this.options.streamOut?(this._isStreamInput()?(this.once("finish",()=>{this._flattenBufferIn(),St.pipeline(this.options,(o,i,e)=>{o?this.emit("error",O.nativeError(o,t)):(this.emit("info",e),this.push(i)),this.push(null),this.on("end",()=>this.emit("close"))})}),this.streamInFinished&&this.emit("finish")):St.pipeline(this.options,(o,i,e)=>{o?this.emit("error",O.nativeError(o,t)):(this.emit("info",e),this.push(i)),this.push(null),this.on("end",()=>this.emit("close"))}),this):this._isStreamInput()?new Promise((o,i)=>{this.once("finish",()=>{this._flattenBufferIn(),St.pipeline(this.options,(e,a,A)=>{e?i(O.nativeError(e,t)):this.options.resolveWithObject?o({data:a,info:A}):o(a)})})}):new Promise((o,i)=>{St.pipeline(this.options,(e,a,A)=>{e?i(O.nativeError(e,t)):this.options.resolveWithObject?o({data:a,info:A}):o(a)})})}var ate,$3e,ite,ote,nte,ste=ue(()=>{Ts();KB();ate=new Map([["heic","heif"],["heif","heif"],["avif","avif"],["jpeg","jpeg"],["jpg","jpeg"],["jpe","jpeg"],["tile","tile"],["dz","tile"],["png","png"],["raw","raw"],["tiff","tiff"],["tif","tiff"],["webp","webp"],["gif","gif"],["jp2","jp2"],["jpx","jp2"],["j2k","jp2"],["j2c","jp2"],["jxl","jxl"]]),$3e=/\.(jp[2x]|j2[kc])$/i,ite=()=>new Error("JP2 output requires libvips with support for OpenJPEG"),ote=n=>1<<31-Math.clz32(Math.ceil(Math.log2(n)));nte=n=>{Object.assign(n.prototype,{toFile:eje,toBuffer:Aje,toUint8Array:tje,withDensity:rje,keepExif:aje,withExif:ije,withExifMerge:oje,keepIccProfile:nje,withIccProfile:sje,keepGainMap:gje,withGainMap:cje,keepXmp:Ije,withXmp:lje,keepMetadata:pje,withMetadata:dje,toFormat:hje,jpeg:Eje,jp2:fje,png:Cje,webp:uje,tiff:Qje,avif:yje,heif:mje,jxl:Sje,gif:Bje,raw:wje,tile:Dje,timeout:Oje,_updateFormatOut:bje,_setBooleanOption:Mje,_read:_je,_pipeline:Tje})}});import Nje from"node:events";import{createRequire as Rje}from"node:module";import{availableParallelism as kje}from"node:os";function cte(n){if(O.bool(n))return n?St.cache(50,20,100):St.cache(0,0,0);if(O.object(n)){for(let t of["memory","files","items"]){let o=n[t];if(O.defined(o)&&!(O.integer(o)&&o>=0))throw O.invalidParameterError(t,"a positive integer",o)}return St.cache(n.memory,n.files,n.items)}else return St.cache()}function Pje(n){return St.concurrency(O.integer(n)?n:null)}function Fje(){return St.counters()}function Lje(n){return St.simd(O.bool(n)?n:null)}function Uje(n){if(O.object(n))if(Array.isArray(n.operation)&&n.operation.every(O.string))St.block(n.operation,!0);else throw O.invalidParameterError("operation","Array",n.operation);else throw O.invalidParameterError("options","object",n)}function Hje(n){if(O.object(n))if(Array.isArray(n.operation)&&n.operation.every(O.string))St.block(n.operation,!1);else throw O.invalidParameterError("operation","Array",n.operation);else throw O.invalidParameterError("options","object",n)}var xB,FL,gte,LL,iI,vje,Th,Gje,Ite,lte=ue(()=>{xB=qe(mD(),1);Ts();DL();KB();GD();FL=Rje(import.meta.url),gte=FD.runtimePlatformArch(),LL=St.libvipsVersion(),iI=St.format();iI.heif.output.alias=["avif","heic"];iI.jpeg.output.alias=["jpe","jpg"];iI.tiff.output.alias=["tif"];iI.jp2.output.alias=["j2c","j2k","jp2","jpx"];vje={nearest:"nearest",bilinear:"bilinear",bicubic:"bicubic",locallyBoundedBicubic:"lbb",nohalo:"nohalo",vertexSplitQuadraticBasisSpline:"vsqbs"},Th={vips:LL.semver};if(!LL.isGlobal)if(LL.isWasm)try{Th=FL("@img/sharp-wasm32/versions")}catch{}else try{Th=FL(`@img/sharp-${gte}/versions`)}catch{try{Th=FL(`@img/sharp-libvips-${gte}/versions`)}catch{}}Th.sharp=Yg.version;Th.heif&&iI.heif&&(iI.heif.input.fileSuffix=[".avif"],iI.heif.output.alias=["avif"]);cte(!0);!process.env.MALLOC_ARENA_MAX&&xB.default.familySync()===xB.default.GLIBC&&!St._isUsingJemalloc()?St.concurrency(1):xB.default.familySync()===xB.default.MUSL&&St.concurrency()===1024&&St.concurrency(kje());Gje=new Nje.EventEmitter;Ite=n=>{n.cache=cte,n.concurrency=Pje,n.counters=Fje,n.simd=Lje,n.format=iI,n.interpolators=vje,n.versions=Th,n.queue=Gje,n.block=Uje,n.unblock=Hje}});var pte={};Fr(pte,{default:()=>Kje});var Kje,dte=ue(()=>{bAe();TAe();GAe();LAe();KAe();Ate();rte();ste();lte();_Ae(Ps);PAe(Ps);FAe(Ps);HAe(Ps);ete(Ps);tte(Ps);nte(Ps);Ite(Ps);Kje=Ps});var xje,kA,oI,YB=ue(()=>{xje="End-Of-Stream",kA=class extends Error{constructor(){super(xje),this.name="EndOfStreamError"}},oI=class extends Error{constructor(t="The operation was aborted"){super(t),this.name="AbortError"}}});var KD,hte=ue(()=>{KD=class{constructor(){this.resolve=()=>null,this.reject=()=>null,this.promise=new Promise((t,o)=>{this.reject=o,this.resolve=t})}}});var nI,xD=ue(()=>{YB();nI=class{constructor(){this.endOfStream=!1,this.interrupted=!1,this.peekQueue=[]}async peek(t,o=!1){let i=await this.read(t,o);return this.peekQueue.push(t.subarray(0,i)),i}async read(t,o=!1){if(t.length===0)return 0;let i=this.readFromPeekBuffer(t);if(this.endOfStream||(i+=await this.readRemainderFromStream(t.subarray(i),o)),i===0&&!o)throw new kA;return i}readFromPeekBuffer(t){let o=t.length,i=0;for(;this.peekQueue.length>0&&o>0;){let e=this.peekQueue.pop();if(!e)throw new Error("peekData should be defined");let a=Math.min(e.length,o);t.set(e.subarray(0,a),i),i+=a,o-=a,a{YB();hte();xD();jB=class extends nI{constructor(t){if(super(),this.s=t,this.deferred=null,!t.read||!t.once)throw new Error("Expected an instance of stream.Readable");this.s.once("end",()=>{this.endOfStream=!0,this.deferred&&this.deferred.resolve(0)}),this.s.once("error",o=>this.reject(o)),this.s.once("close",()=>this.abort())}async readFromStream(t,o){if(t.length===0)return 0;let i=this.s.read(t.length);if(i)return t.set(i),i.length;let e={buffer:t,mayBeLess:o,deferred:new KD};return this.deferred=e.deferred,this.s.once("readable",()=>{this.readDeferred(e)}),e.deferred.promise}readDeferred(t){let o=this.s.read(t.buffer.length);o?(t.buffer.set(o),t.deferred.resolve(o.length),this.deferred=null):this.s.once("readable",()=>{this.readDeferred(t)})}reject(t){this.interrupted=!0,this.deferred&&(this.deferred.reject(t),this.deferred=null)}async abort(){this.reject(new oI)}async close(){return this.abort()}}});var YD,Cte=ue(()=>{xD();YD=class extends nI{constructor(t){super(),this.reader=t}async abort(){return this.close()}async close(){this.reader.releaseLock()}}});var JB,UL=ue(()=>{Cte();JB=class extends YD{async readFromStream(t,o){if(t.length===0)return 0;let i=await this.reader.read(new Uint8Array(t.length),{min:o?void 0:t.length});return i.done&&(this.endOfStream=i.done),i.value?(t.set(i.value),i.value.length):0}}});var Nh,HL=ue(()=>{YB();xD();Nh=class extends nI{constructor(t){super(),this.reader=t,this.buffer=null}writeChunk(t,o){let i=Math.min(o.length,t.length);return t.set(o.subarray(0,i)),i{UL();HL()});var sI=ue(()=>{YB();Ete();UL();HL();ute()});var Kn,Rh=ue(()=>{sI();Kn=class{constructor(t){this.numBuffer=new Uint8Array(8),this.position=0,this.onClose=t?.onClose,t?.abortSignal&&t.abortSignal.addEventListener("abort",()=>{this.abort()})}async readToken(t,o=this.position){let i=new Uint8Array(t.len);if(await this.readBuffer(i,{position:o})o)return this.position+=o,o}return this.position+=t,t}async close(){await this.abort(),await this.onClose?.()}normalizeOptions(t,o){if(!this.supportsRandomAccess()&&o&&o.position!==void 0&&o.position{Rh();sI();Yje=256e3,qB=class extends Kn{constructor(t,o){super(o),this.streamReader=t,this.fileInfo=o?.fileInfo??{}}async readBuffer(t,o){let i=this.normalizeOptions(t,o),e=i.position-this.position;if(e>0)return await this.ignore(e),this.readBuffer(t,o);if(e<0)throw new Error("`options.position` must be equal or greater than `tokenizer.position`");if(i.length===0)return 0;let a=await this.streamReader.read(t.subarray(0,i.length),i.mayBeLess);if(this.position+=a,(!o||!o.mayBeLess)&&a0){let A=new Uint8Array(i.length+a);return e=await this.peekBuffer(A,{mayBeLess:i.mayBeLess}),t.set(A.subarray(a)),e-a}if(a<0)throw new Error("Cannot peek from a negative offset in a stream")}if(i.length>0){try{e=await this.streamReader.peek(t.subarray(0,i.length),i.mayBeLess)}catch(a){if(o?.mayBeLess&&a instanceof kA)return 0;throw a}if(!i.mayBeLess&&e{sI();Rh();jD=class extends Kn{constructor(t,o){super(o),this.uint8Array=t,this.fileInfo={...o?.fileInfo??{},size:t.length}}async readBuffer(t,o){o?.position&&(this.position=o.position);let i=await this.peekBuffer(t,o);return this.position+=i,i}async peekBuffer(t,o){let i=this.normalizeOptions(t,o),e=Math.min(this.uint8Array.length-i.position,i.length);if(!i.mayBeLess&&e{sI();Rh();JD=class extends Kn{constructor(t,o){super(o),this.blob=t,this.fileInfo={...o?.fileInfo??{},size:t.size,mimeType:t.type}}async readBuffer(t,o){o?.position&&(this.position=o.position);let i=await this.peekBuffer(t,o);return this.position+=i,i}async peekBuffer(t,o){let i=this.normalizeOptions(t,o),e=Math.min(this.blob.size-i.position,i.length);if(!i.mayBeLess&&e{if(await o.close(),e)return e()},new qB(o,i)}function qD(n,t){let o=KL(n),i=t??{},e=i.onClose;return i.onClose=async()=>{if(await o.close(),e)return e()},new qB(o,i)}function Co(n,t){return new jD(n,t)}function zD(n,t){return new JD(n,t)}var VD=ue(()=>{sI();Bte();fte();Qte();sI();Rh()});import{open as Jje}from"node:fs/promises";var kh,xL=ue(()=>{Rh();sI();kh=class n extends Kn{static async fromFile(t){let o=await Jje(t,"r"),i=await o.stat();return new n(o,{fileInfo:{path:t,size:i.size}})}constructor(t,o){super(o),this.fileHandle=t,this.fileInfo=o.fileInfo}async readBuffer(t,o){let i=this.normalizeOptions(t,o);if(this.position=i.position,i.length===0)return 0;let e=await this.fileHandle.read(t,0,i.length,i.position);if(this.position+=e.bytesRead,e.bytesRead{VD();xL();xL();VD();mte=kh.fromFile});var Ste=ee(jL=>{jL.read=function(n,t,o,i,e){var a,A,r=e*8-i-1,s=(1<>1,c=-7,I=o?e-1:0,d=o?-1:1,B=n[t+I];for(I+=d,a=B&(1<<-c)-1,B>>=-c,c+=r;c>0;a=a*256+n[t+I],I+=d,c-=8);for(A=a&(1<<-c)-1,a>>=-c,c+=i;c>0;A=A*256+n[t+I],I+=d,c-=8);if(a===0)a=1-g;else{if(a===s)return A?NaN:(B?-1:1)*(1/0);A=A+Math.pow(2,i),a=a-g}return(B?-1:1)*A*Math.pow(2,a-i)};jL.write=function(n,t,o,i,e,a){var A,r,s,g=a*8-e-1,c=(1<>1,d=e===23?Math.pow(2,-24)-Math.pow(2,-77):0,B=i?0:a-1,f=i?1:-1,Q=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(r=isNaN(t)?1:0,A=c):(A=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-A))<1&&(A--,s*=2),A+I>=1?t+=d/s:t+=d*Math.pow(2,1-I),t*s>=2&&(A++,s/=2),A+I>=c?(r=0,A=c):A+I>=1?(r=(t*s-1)*Math.pow(2,e),A=A+I):(r=t*Math.pow(2,I-1)*Math.pow(2,e),A=0));e>=8;n[o+B]=r&255,B+=f,r/=256,e-=8);for(A=A<0;n[o+B]=A&255,B+=f,A/=256,g-=8);n[o+B-f]|=Q*128}});function zje(){if(!(typeof globalThis.TextDecoder>"u"))return WD??(WD=new globalThis.TextDecoder("utf-8"))}function Vje(){if(!(typeof globalThis.TextEncoder>"u"))return ZD??(ZD=new globalThis.TextEncoder)}function br(n,t="utf-8"){switch(t.toLowerCase()){case"utf-8":case"utf8":{let o=zje();return o?o.decode(n):Zje(n)}case"utf-16le":return Xje(n);case"us-ascii":case"ascii":return $je(n);case"latin1":case"iso-8859-1":return eJe(n);case"windows-1252":return AJe(n);default:throw new RangeError(`Encoding '${t}' not supported`)}}function Dte(n="",t="utf-8"){switch(t.toLowerCase()){case"utf-8":case"utf8":{let o=Vje();return o?o.encode(n):tJe(n)}case"utf-16le":return rJe(n);case"us-ascii":case"ascii":return aJe(n);case"latin1":case"iso-8859-1":return iJe(n);case"windows-1252":return oJe(n);default:throw new RangeError(`Encoding '${t}' not supported`)}}function qL(n,t){t.length!==0&&(n.push(String.fromCharCode.apply(null,t)),t.length=0)}function vr(n,t,o){t.push(o),t.length>=vh&&qL(n,t)}function Wje(n,t,o){if(o<=65535){vr(n,t,o);return}o-=65536,vr(n,t,55296+(o>>10)),vr(n,t,56320+(o&1023))}function Zje(n){let t=[],o=[],i=0;for(n.length>=3&&n[0]===239&&n[1]===187&&n[2]===191&&(i=3);i244){vr(t,o,Ta),i++;continue}if(e<=223){if(i+1>=n.length){vr(t,o,Ta),i++;continue}let c=n[i+1];if((c&192)!==128){vr(t,o,Ta),i++;continue}let I=(e&31)<<6|c&63;vr(t,o,I),i+=2;continue}if(e<=239){if(i+2>=n.length){vr(t,o,Ta),i++;continue}let c=n[i+1],I=n[i+2];if(!((c&192)===128&&(I&192)===128&&!(e===224&&c<160)&&!(e===237&&c>=160))){vr(t,o,Ta),i++;continue}let B=(e&15)<<12|(c&63)<<6|I&63;vr(t,o,B),i+=3;continue}if(i+3>=n.length){vr(t,o,Ta),i++;continue}let a=n[i+1],A=n[i+2],r=n[i+3];if(!((a&192)===128&&(A&192)===128&&(r&192)===128&&!(e===240&&a<144)&&!(e===244&&a>143))){vr(t,o,Ta),i++;continue}let g=(e&7)<<18|(a&63)<<12|(A&63)<<6|r&63;Wje(t,o,g),i+=4}return qL(t,o),t.join("")}function Xje(n){let t=[],o=[],i=n.length,e=0;for(;e+1=55296&&a<=56319){if(e+1=56320&&A<=57343?(vr(t,o,a),vr(t,o,A),e+=2):vr(t,o,Ta)}else vr(t,o,Ta);continue}if(a>=56320&&a<=57343){vr(t,o,Ta);continue}vr(t,o,a)}return e=128&&e<=159?wte[e]:void 0;o+=a??String.fromCharCode(e),o.length>=vh&&(t.push(o),o="")}return o&&t.push(o),t.join("")}function tJe(n){let t=[];for(let o=0;o=55296&&i<=56319)if(o+1=56320&&e<=57343?(i=65536+(i-55296<<10)+(e-56320),o++):i=Ta}else i=Ta;else i>=56320&&i<=57343&&(i=Ta);i<128?t.push(i):i<2048?t.push(192|i>>6,128|i&63):i<65536?t.push(224|i>>12,128|i>>6&63,128|i&63):t.push(240|i>>18,128|i>>12&63,128|i>>6&63,128|i&63)}return new Uint8Array(t)}function rJe(n){let t=[];for(let i=0;i=55296&&e<=56319){if(i+1=56320&&a<=57343?(t.push(e,a),i++):t.push(Ta)}else t.push(Ta);continue}if(e>=56320&&e<=57343){t.push(Ta);continue}t.push(e)}let o=new Uint8Array(t.length*2);for(let i=0;i>>8}return o}function aJe(n){let t=new Uint8Array(n.length);for(let o=0;o=0&&e<=127||e>=160&&e<=255){t[o]=e;continue}t[o]=63}return t}var wte,JL,WD,ZD,vh,Ta,Fs=ue(()=>{wte={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"},JL={};for(let[n,t]of Object.entries(wte))JL[t]=Number.parseInt(n,10);vh=32*1024,Ta=65533});var VA={};Fr(VA,{AnsiStringType:()=>VL,Float16_BE:()=>gJe,Float16_LE:()=>cJe,Float32_BE:()=>ZL,Float32_LE:()=>IJe,Float64_BE:()=>$D,Float64_LE:()=>lJe,Float80_BE:()=>pJe,Float80_LE:()=>dJe,INT16_BE:()=>en,INT16_LE:()=>nJe,INT24_BE:()=>XD,INT24_LE:()=>sJe,INT32_BE:()=>Ei,INT32_LE:()=>dr,INT64_BE:()=>WL,INT64_LE:()=>WB,INT8:()=>Us,IgnoreType:()=>zL,StringType:()=>Ve,UINT16_BE:()=>LA,UINT16_LE:()=>SA,UINT24_BE:()=>Pr,UINT24_LE:()=>VB,UINT32_BE:()=>xe,UINT32_LE:()=>Le,UINT64_BE:()=>Hs,UINT64_LE:()=>Gr,UINT8:()=>QA,Uint8ArrayType:()=>Ot});function zA(n){return new DataView(n.buffer,n.byteOffset)}var Ls,QA,SA,LA,VB,Pr,Le,xe,Us,en,nJe,sJe,XD,Ei,dr,Gr,WB,Hs,WL,gJe,cJe,ZL,IJe,$D,lJe,pJe,dJe,zL,Ot,Ve,VL,DA=ue(()=>{Ls=qe(Ste(),1);Fs();QA={len:1,get(n,t){return zA(n).getUint8(t)},put(n,t,o){return zA(n).setUint8(t,o),t+1}},SA={len:2,get(n,t){return zA(n).getUint16(t,!0)},put(n,t,o){return zA(n).setUint16(t,o,!0),t+2}},LA={len:2,get(n,t){return zA(n).getUint16(t)},put(n,t,o){return zA(n).setUint16(t,o),t+2}},VB={len:3,get(n,t){let o=zA(n);return o.getUint8(t)+(o.getUint16(t+1,!0)<<8)},put(n,t,o){let i=zA(n);return i.setUint8(t,o&255),i.setUint16(t+1,o>>8,!0),t+3}},Pr={len:3,get(n,t){let o=zA(n);return(o.getUint16(t)<<8)+o.getUint8(t+2)},put(n,t,o){let i=zA(n);return i.setUint16(t,o>>8),i.setUint8(t+2,o&255),t+3}},Le={len:4,get(n,t){return zA(n).getUint32(t,!0)},put(n,t,o){return zA(n).setUint32(t,o,!0),t+4}},xe={len:4,get(n,t){return zA(n).getUint32(t)},put(n,t,o){return zA(n).setUint32(t,o),t+4}},Us={len:1,get(n,t){return zA(n).getInt8(t)},put(n,t,o){return zA(n).setInt8(t,o),t+1}},en={len:2,get(n,t){return zA(n).getInt16(t)},put(n,t,o){return zA(n).setInt16(t,o),t+2}},nJe={len:2,get(n,t){return zA(n).getInt16(t,!0)},put(n,t,o){return zA(n).setInt16(t,o,!0),t+2}},sJe={len:3,get(n,t){let o=VB.get(n,t);return o>8388607?o-16777216:o},put(n,t,o){let i=zA(n);return i.setUint8(t,o&255),i.setUint16(t+1,o>>8,!0),t+3}},XD={len:3,get(n,t){let o=Pr.get(n,t);return o>8388607?o-16777216:o},put(n,t,o){let i=zA(n);return i.setUint16(t,o>>8),i.setUint8(t+2,o&255),t+3}},Ei={len:4,get(n,t){return zA(n).getInt32(t)},put(n,t,o){return zA(n).setInt32(t,o),t+4}},dr={len:4,get(n,t){return zA(n).getInt32(t,!0)},put(n,t,o){return zA(n).setInt32(t,o,!0),t+4}},Gr={len:8,get(n,t){return zA(n).getBigUint64(t,!0)},put(n,t,o){return zA(n).setBigUint64(t,o,!0),t+8}},WB={len:8,get(n,t){return zA(n).getBigInt64(t,!0)},put(n,t,o){return zA(n).setBigInt64(t,o,!0),t+8}},Hs={len:8,get(n,t){return zA(n).getBigUint64(t)},put(n,t,o){return zA(n).setBigUint64(t,o),t+8}},WL={len:8,get(n,t){return zA(n).getBigInt64(t)},put(n,t,o){return zA(n).setBigInt64(t,o),t+8}},gJe={len:2,get(n,t){return Ls.read(n,t,!1,10,this.len)},put(n,t,o){return Ls.write(n,o,t,!1,10,this.len),t+this.len}},cJe={len:2,get(n,t){return Ls.read(n,t,!0,10,this.len)},put(n,t,o){return Ls.write(n,o,t,!0,10,this.len),t+this.len}},ZL={len:4,get(n,t){return zA(n).getFloat32(t)},put(n,t,o){return zA(n).setFloat32(t,o),t+4}},IJe={len:4,get(n,t){return zA(n).getFloat32(t,!0)},put(n,t,o){return zA(n).setFloat32(t,o,!0),t+4}},$D={len:8,get(n,t){return zA(n).getFloat64(t)},put(n,t,o){return zA(n).setFloat64(t,o),t+8}},lJe={len:8,get(n,t){return zA(n).getFloat64(t,!0)},put(n,t,o){return zA(n).setFloat64(t,o,!0),t+8}},pJe={len:10,get(n,t){return Ls.read(n,t,!1,63,this.len)},put(n,t,o){return Ls.write(n,o,t,!1,63,this.len),t+this.len}},dJe={len:10,get(n,t){return Ls.read(n,t,!0,63,this.len)},put(n,t,o){return Ls.write(n,o,t,!0,63,this.len),t+this.len}},zL=class{constructor(t){this.len=t}get(t,o){}},Ot=class{constructor(t){this.len=t}get(t,o){return t.subarray(o,o+this.len)}},Ve=class{constructor(t,o){this.len=t,this.encoding=o}get(t,o=0){let i=t.subarray(o,o+this.len);return br(i,this.encoding)}},VL=class extends Ve{constructor(t){super(t,"windows-1252")}}});var xl,XL,Ote,bte,Mte,_te=ue(()=>{DA();xl={LocalFileHeader:67324752,DataDescriptor:134695760,CentralFileHeader:33639248,EndOfCentralDirectory:101010256},XL={get(n){return{signature:Le.get(n,0),compressedSize:Le.get(n,8),uncompressedSize:Le.get(n,12)}},len:16},Ote={get(n){let t=SA.get(n,6);return{signature:Le.get(n,0),minVersion:SA.get(n,4),dataDescriptor:!!(t&8),compressedMethod:SA.get(n,8),compressedSize:Le.get(n,18),uncompressedSize:Le.get(n,22),filenameLength:SA.get(n,26),extraFieldLength:SA.get(n,28),filename:null}},len:30},bte={get(n){return{signature:Le.get(n,0),nrOfThisDisk:SA.get(n,4),nrOfThisDiskWithTheStart:SA.get(n,6),nrOfEntriesOnThisDisk:SA.get(n,8),nrOfEntriesOfSize:SA.get(n,10),sizeOfCd:Le.get(n,12),offsetOfStartOfCd:Le.get(n,16),zipFileCommentLength:SA.get(n,20)}},len:22},Mte={get(n){let t=SA.get(n,8);return{signature:Le.get(n,0),minVersion:SA.get(n,6),dataDescriptor:!!(t&8),compressedMethod:SA.get(n,10),compressedSize:Le.get(n,20),uncompressedSize:Le.get(n,24),filenameLength:SA.get(n,28),extraFieldLength:SA.get(n,30),fileCommentLength:SA.get(n,32),relativeOffsetOfLocalHeader:Le.get(n,42),filename:null}},len:46}});function Nte(n){let t=new Uint8Array(Le.len);return Le.put(t,0,n),t}function EJe(n,t){let o=n.length,i=t.length;if(i>o)return-1;for(let e=0;e<=o-i;e++){let a=!0;for(let A=0;Ae+a.length,0),o=new Uint8Array(t),i=0;for(let e of n)o.set(e,i),i+=e.length;return o}var Tte,Ks,$L,hJe,eO,Yl,Rte=ue(()=>{DA();Tte=qe(ct(),1);_te();Ks=(0,Tte.default)("tokenizer:inflate"),$L=256*1024,hJe=Nte(xl.DataDescriptor),eO=Nte(xl.EndOfCentralDirectory),Yl=class n{constructor(t){this.tokenizer=t,this.syncBuffer=new Uint8Array($L)}async isZip(){return await this.peekSignature()===xl.LocalFileHeader}peekSignature(){return this.tokenizer.peekToken(Le)}async findEndOfCentralDirectoryLocator(){let t=this.tokenizer,o=Math.min(16*1024,t.fileInfo.size),i=this.syncBuffer.subarray(0,o);await this.tokenizer.readBuffer(i,{position:t.fileInfo.size-o});for(let e=i.length-4;e>=0;e--)if(i[e]===eO[0]&&i[e+1]===eO[1]&&i[e+2]===eO[2]&&i[e+3]===eO[3])return t.fileInfo.size-o+e;return-1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess()){Ks("Cannot reading central-directory without random-read support");return}Ks("Reading central-directory...");let t=this.tokenizer.position,o=await this.findEndOfCentralDirectoryLocator();if(o>0){Ks("Central-directory 32-bit signature found");let i=await this.tokenizer.readToken(bte,o),e=[];this.tokenizer.setPosition(i.offsetOfStartOfCd);for(let a=0;a=0?g:s;if(a.handler){let I=new Uint8Array(c);await this.tokenizer.readBuffer(I),r.push(I)}else await this.tokenizer.ignore(c)}Ks(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),a.handler&&await this.inflate(e,CJe(r),a.handler)}else a.handler?(Ks(`Reading compressed-file-data: ${e.compressedSize} bytes`),A=new Uint8Array(e.compressedSize),await this.tokenizer.readBuffer(A),await this.inflate(e,A,a.handler)):(Ks(`Ignoring compressed-file-data: ${e.compressedSize} bytes`),await this.tokenizer.ignore(e.compressedSize));if(Ks(`Reading data-descriptor at pos=${this.tokenizer.position}`),e.dataDescriptor&&(await this.tokenizer.readToken(XL)).signature!==134695760)throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-XL.len}`)}while(!i)}async iterateOverCentralDirectory(t,o){for(let i of t){let e=o(i);if(e.handler){this.tokenizer.setPosition(i.relativeOffsetOfLocalHeader);let a=await this.readLocalFileHeader();if(a){await this.tokenizer.ignore(a.extraFieldLength);let A=new Uint8Array(i.compressedSize);await this.tokenizer.readBuffer(A),await this.inflate(a,A,e.handler)}}if(e.stop)break}}async inflate(t,o,i){if(t.compressedMethod===0)return i(o);if(t.compressedMethod!==8)throw new Error(`Unsupported ZIP compression method: ${t.compressedMethod}`);Ks(`Decompress filename=${t.filename}, compressed-size=${o.length}`);let e=await n.decompressDeflateRaw(o);return i(e)}static async decompressDeflateRaw(t){let o=new ReadableStream({start(a){a.enqueue(t),a.close()}}),i=new DecompressionStream("deflate-raw"),e=o.pipeThrough(i);try{let A=await new Response(e).arrayBuffer();return new Uint8Array(A)}catch(a){let A=a instanceof Error?`Failed to deflate ZIP entry: ${a.message}`:"Unknown decompression error in ZIP entry";throw new TypeError(A)}}async readLocalFileHeader(){let t=await this.tokenizer.peekToken(Le);if(t===xl.LocalFileHeader){let o=await this.tokenizer.readToken(Ote);return o.filename=await this.tokenizer.readToken(new Ve(o.filenameLength,"utf-8")),o}if(t===xl.CentralFileHeader)return!1;throw t===3759263696?new Error("Encrypted ZIP"):new Error("Unexpected signature")}}});var ZB,kte=ue(()=>{ZB=class{constructor(t){this.tokenizer=t}inflate(){let t=this.tokenizer;return new ReadableStream({async pull(o){let i=new Uint8Array(1024),e=await t.readBuffer(i,{mayBeLess:!0});if(e===0){o.close();return}o.enqueue(i.subarray(0,e))}}).pipeThrough(new DecompressionStream("gzip"))}}});var vte=ue(()=>{Rte();kte()});function fJe(n,t,o){return n?n.constructor===t?!0:uJe.call(n)===o:!1}function QJe(n){return fJe(n,Uint8Array,BJe)}function yJe(n){if(!QJe(n))throw new TypeError(`Expected \`Uint8Array\`, got \`${typeof n}\``)}function AO(n){yJe(n);let t="";for(let o=0;o{uJe=Object.prototype.toString,BJe="[object Uint8Array]";CwA={utf8:new globalThis.TextDecoder("utf8")},uwA=new globalThis.TextEncoder,mJe=Array.from({length:256},(n,t)=>t.toString(16).padStart(2,"0"))});function Pte(n,t){if(t==="utf-16le"){let o=[];for(let i=0;i>8&255)}return o}if(t==="utf-16be"){let o=[];for(let i=0;i>8&255,e&255)}return o}return[...n].map(o=>o.charCodeAt(0))}function Gte(n,t=0){let o=Number.parseInt(new Ve(6).get(n,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(o))return!1;let i=256;for(let e=t;e{DA();Fte={get:(n,t)=>n[t+3]&127|n[t+2]<<7|n[t+1]<<14|n[t]<<21,len:4}});var Ute,Hte,Kte=ue(()=>{Ute=["jpg","png","apng","gif","webp","flif","xcf","cr2","cr3","orf","arw","dng","nef","rw2","raf","tif","bmp","icns","jxr","psd","indd","zip","tar","rar","gz","bz2","7z","dmg","mp4","mid","mkv","webm","mov","avi","mpg","mp2","mp3","m4a","oga","ogg","ogv","opus","flac","wav","spx","amr","pdf","epub","elf","macho","exe","swf","rtf","wasm","woff","woff2","eot","ttf","otf","ttc","ico","flv","ps","xz","sqlite","nes","crx","xpi","cab","deb","ar","rpm","Z","lz","cfb","mxf","mts","blend","bpg","docx","pptx","xlsx","3gp","3g2","j2c","jp2","jpm","jpx","mj2","aif","qcp","odt","ods","odp","xml","mobi","heic","cur","ktx","ape","wv","dcm","ics","glb","pcap","dsf","lnk","alias","voc","ac3","m4v","m4p","m4b","f4v","f4p","f4b","f4a","mie","asf","ogm","ogx","mpc","arrow","shp","aac","mp1","it","s3m","xm","skp","avif","eps","lzh","pgp","asar","stl","chm","3mf","zst","jxl","vcf","jls","pst","dwg","parquet","class","arj","cpio","ace","avro","icc","fbx","vsdx","vtt","apk","drc","lz4","potx","xltx","dotx","xltm","ott","ots","otp","odg","otg","xlsm","docm","dotm","potm","pptm","jar","jmp","rm","sav","ppsm","ppsx","tar.gz","reg","dat"],Hte=["image/jpeg","image/png","image/gif","image/webp","image/flif","image/x-xcf","image/x-canon-cr2","image/x-canon-cr3","image/tiff","image/bmp","image/vnd.ms-photo","image/vnd.adobe.photoshop","application/x-indesign","application/epub+zip","application/x-xpinstall","application/vnd.ms-powerpoint.slideshow.macroenabled.12","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.slideshow","application/zip","application/x-tar","application/x-rar-compressed","application/gzip","application/x-bzip2","application/x-7z-compressed","application/x-apple-diskimage","application/vnd.apache.arrow.file","video/mp4","audio/midi","video/matroska","video/webm","video/quicktime","video/vnd.avi","audio/wav","audio/qcelp","audio/x-ms-asf","video/x-ms-asf","application/vnd.ms-asf","video/mpeg","video/3gpp","audio/mpeg","audio/mp4","video/ogg","audio/ogg","audio/ogg; codecs=opus","application/ogg","audio/flac","audio/ape","audio/wavpack","audio/amr","application/pdf","application/x-elf","application/x-mach-binary","application/x-msdownload","application/x-shockwave-flash","application/rtf","application/wasm","font/woff","font/woff2","application/vnd.ms-fontobject","font/ttf","font/otf","font/collection","image/x-icon","video/x-flv","application/postscript","application/eps","application/x-xz","application/x-sqlite3","application/x-nintendo-nes-rom","application/x-google-chrome-extension","application/vnd.ms-cab-compressed","application/x-deb","application/x-unix-archive","application/x-rpm","application/x-compress","application/x-lzip","application/x-cfb","application/x-mie","application/mxf","video/mp2t","application/x-blender","image/bpg","image/j2c","image/jp2","image/jpx","image/jpm","image/mj2","audio/aiff","application/xml","application/x-mobipocket-ebook","image/heif","image/heif-sequence","image/heic","image/heic-sequence","image/icns","image/ktx","application/dicom","audio/x-musepack","text/calendar","text/vcard","text/vtt","model/gltf-binary","application/vnd.tcpdump.pcap","audio/x-dsf","application/x.ms.shortcut","application/x.apple.alias","audio/x-voc","audio/vnd.dolby.dd-raw","audio/x-m4a","image/apng","image/x-olympus-orf","image/x-sony-arw","image/x-adobe-dng","image/x-nikon-nef","image/x-panasonic-rw2","image/x-fujifilm-raf","video/x-m4v","video/3gpp2","application/x-esri-shape","audio/aac","audio/x-it","audio/x-s3m","audio/x-xm","video/MP1S","video/MP2P","application/vnd.sketchup.skp","image/avif","application/x-lzh-compressed","application/pgp-encrypted","application/x-asar","model/stl","application/vnd.ms-htmlhelp","model/3mf","image/jxl","application/zstd","image/jls","application/vnd.ms-outlook","image/vnd.dwg","application/vnd.apache.parquet","application/java-vm","application/x-arj","application/x-cpio","application/x-ace-compressed","application/avro","application/vnd.iccprofile","application/x.autodesk.fbx","application/vnd.visio","application/vnd.android.package-archive","application/vnd.google.draco","application/x-lz4","application/vnd.openxmlformats-officedocument.presentationml.template","application/vnd.openxmlformats-officedocument.spreadsheetml.template","application/vnd.openxmlformats-officedocument.wordprocessingml.template","application/vnd.ms-excel.template.macroenabled.12","application/vnd.oasis.opendocument.text-template","application/vnd.oasis.opendocument.spreadsheet-template","application/vnd.oasis.opendocument.presentation-template","application/vnd.oasis.opendocument.graphics","application/vnd.oasis.opendocument.graphics-template","application/vnd.ms-excel.sheet.macroenabled.12","application/vnd.ms-word.document.macroenabled.12","application/vnd.ms-word.template.macroenabled.12","application/vnd.ms-powerpoint.template.macroenabled.12","application/vnd.ms-powerpoint.presentation.macroenabled.12","application/java-archive","application/vnd.rn-realmedia","application/x-spss-sav","application/x-ms-regedit","application/x-ft-windows-registry-hive","application/x-jmp-data"]});function GJe(n){let t=n?.streamReader;if(t?.constructor?.name!=="WebStreamByobReader")return n;let{reader:o}=t,i=async()=>{await o.cancel(),o.releaseLock()};return t.close=i,t.abort=async()=>{t.interrupted=!0,await i()},n}function r2(n,t,o){if(!Number.isFinite(n)||n<0||n>t)throw new qg(`${o} has invalid size ${n} (maximum ${t} bytes)`);return n}async function gI(n,t,{maximumLength:o=An,reason:i="skip"}={}){let e=r2(t,o,i);await n.ignore(e)}async function A2(n,t,o,{maximumLength:i=t.length,reason:e="read"}={}){let a=o?.length??t.length,A=r2(a,i,e);return n.readBuffer(t,{...o,length:A})}async function FJe(n,{maximumLength:t=Ys}={}){let e=new ReadableStream({start(g){g.enqueue(n),g.close()}}).pipeThrough(new DecompressionStream("deflate-raw")).getReader(),a=[],A=0;try{for(;;){let{done:g,value:c}=await e.read();if(g)break;if(A+=c.length,A>t)throw await e.cancel(),new Error(`ZIP entry decompressed data exceeds ${t} bytes`);a.push(c)}}finally{e.releaseLock()}let r=new Uint8Array(A),s=0;for(let g of a)r.set(g,s),s+=g.length;return r}function UJe(n,t){if(n.length=0?0:r===e?Math.min(LJe,r-1):0,c=s>=0?s:r-g;if(c===0)break;if(A+=c,A>o)throw new Error(`ZIP entry compressed data exceeds ${o} bytes`);if(t){let I=new Uint8Array(c);await n.tokenizer.readBuffer(I),a.push(I)}else await n.tokenizer.ignore(c);if(s>=0)break}if(Ci(n.tokenizer)||(n.knownSizeDescriptorScannedBytes+=A),!!t)return KJe(a,A)}function YJe(n,t){return Ci(n.tokenizer)?Math.max(0,An-(n.tokenizer.position-t)):Math.max(0,Ys-n.knownSizeDescriptorScannedBytes)}async function jJe(n,t,{shouldBuffer:o,maximumDescriptorLength:i=Ys}={}){if(t.dataDescriptor&&t.compressedSize===0)return xJe(n,{shouldBuffer:o,maximumLength:i});if(!o){await gI(n.tokenizer,t.compressedSize,{maximumLength:Ci(n.tokenizer)?Ys:n.tokenizer.fileInfo.size,reason:"ZIP entry compressed data"});return}let e=ZJe(n.tokenizer);if(!Number.isFinite(t.compressedSize)||t.compressedSize<0||t.compressedSize>e)throw new Error(`ZIP entry compressed data exceeds ${e} bytes`);let a=new Uint8Array(t.compressedSize);return await n.tokenizer.readBuffer(a),a}function JJe(n,t){let o=n.getReader(),i=0,e=!1,a=!1,A=async r=>{e||a||(a=!0,await o.cancel(r))};return new ReadableStream({async pull(r){if(i>=t){r.close(),await A();return}let{done:s,value:g}=await o.read();if(s||!g){e=!0,r.close();return}let c=t-i;if(g.length>c){r.enqueue(g.subarray(0,c)),i+=c,r.close(),await A();return}r.enqueue(g),i+=g.length},async cancel(r){await A(r)}})}async function tf(n,t){return new t2(t).fromBuffer(n)}function Xte(n){switch(n=n.toLowerCase(),n){case"application/epub+zip":return{ext:"epub",mime:n};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:n};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:n};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:n};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:n};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:n};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:n};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:n};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:n};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:n};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:n};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:n};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:n};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:n};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:n};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:n};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"};default:}}function xs(n,t,o){o={offset:0,...o};for(let[i,e]of t.entries())if(o.mask){if(e!==(o.mask[i]&n[i+o.offset]))return!1}else if(e!==n[i+o.offset])return!1;return!0}function qJe(n){return Number.isFinite(n)?Math.max(1,Math.trunc(n)):ef}function zJe(n,t,o){return o===void 0?n.read(t):(o.throwIfAborted(),new Promise((i,e)=>{let a=()=>{o.removeEventListener("abort",A)},A=()=>{let r=o.reason;a(),(async()=>{try{await n.cancel(r)}catch{}})(),e(r)};o.addEventListener("abort",A,{once:!0}),(async()=>{try{let r=await n.read(t);a(),i(r)}catch(r){a(),e(r)}})()}))}function VJe(n){return Number.isFinite(n)?Math.max(0,Math.min(SJe,Math.trunc(n))):0}function WJe(n){return Number.isFinite(n)?Math.max(0,n):Number.MAX_SAFE_INTEGER}function Ci(n){let t=n.fileInfo.size;return!Number.isFinite(t)||t===Number.MAX_SAFE_INTEGER}function Af(n,t,o){return Ci(n)&&n.position-t>o}function ZJe(n){let t=n.fileInfo.size,o=Number.isFinite(t)?Math.max(0,t-n.position):Number.MAX_SAFE_INTEGER;return Math.min(o,wJe)}function XJe(n){if(n instanceof kA||n instanceof qg)return!0;if(!(n instanceof Error))return!1;if(kJe.has(n.message)||PJe.has(n.code))return!0;for(let t of vJe)if(n.message.startsWith(t))return!0;return!1}function $te(n,t=Ys){let o=[n.compressedSize,n.uncompressedSize];for(let i of o)if(!Number.isFinite(i)||i<0||i>t)return!1;return!0}function $Je(){return{hasContentTypesEntry:!1,hasParsedContentTypesEntry:!1,isParsingContentTypes:!1,hasUnparseableContentTypes:!1,hasWordDirectory:!1,hasPresentationDirectory:!1,hasSpreadsheetDirectory:!1,hasThreeDimensionalModelEntry:!1}}function eqe(n,t){t.startsWith("word/")&&(n.hasWordDirectory=!0),t.startsWith("ppt/")&&(n.hasPresentationDirectory=!0),t.startsWith("xl/")&&(n.hasSpreadsheetDirectory=!0),t.startsWith("3D/")&&t.endsWith(".model")&&(n.hasThreeDimensionalModelEntry=!0)}function ere(n){if(!(!n.hasContentTypesEntry||n.hasUnparseableContentTypes||n.isParsingContentTypes||n.hasParsedContentTypesEntry)){if(n.hasWordDirectory)return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(n.hasPresentationDirectory)return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(n.hasSpreadsheetDirectory)return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};if(n.hasThreeDimensionalModelEntry)return{ext:"3mf",mime:"model/3mf"}}}function Aqe(n){let t=n.indexOf('.main+xml"');if(t===-1){let e="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";return n.includes(`ContentType="${e}"`)?e:void 0}let o=n.slice(0,t),i=o.lastIndexOf('"');return o.slice(i+1)}var ef,SJe,Ys,xte,wJe,An,rO,Yte,DJe,OJe,jte,e2,Jte,qte,bJe,MJe,_Je,TJe,NJe,zte,Vte,Wte,RJe,Zte,kJe,vJe,PJe,qg,Are,tO,LJe,t2,tqe,rqe,tre=ue(()=>{DA();VD();vte();$B();Lte();Kte();ef=4100,SJe=ef-2,Ys=1024*1024,xte=1024,wJe=2**31-1,An=16*1024*1024,rO=Ys,Yte=Ys,DJe=An,OJe=1,jte=100,e2=An,Jte=64,qte=rO,bJe=256,MJe=512,_Je=An,TJe=512,NJe=512,zte=256,Vte=rO,Wte=rO,RJe=rO,Zte=An,kJe=new Set(["Unexpected signature","Encrypted ZIP","Expected Central-File-Header signature"]),vJe=["ZIP entry count exceeds ","Unsupported ZIP compression method:","ZIP entry compressed data exceeds ","ZIP entry decompressed data exceeds ","Expected data-descriptor-signature at position "],PJe=new Set(["Z_BUF_ERROR","Z_DATA_ERROR","ERR_INVALID_STATE"]),qg=class extends Error{};Are=134695760,tO=16,LJe=tO-1;Yl.prototype.inflate=async function(n,t,o){if(n.compressedMethod===0)return o(t);if(n.compressedMethod!==8)throw new Error(`Unsupported ZIP compression method: ${n.compressedMethod}`);let i=await FJe(t,{maximumLength:Ys});return o(i)};Yl.prototype.unzip=async function(n){let t=!1,o=0,i=this.tokenizer.position;this.knownSizeDescriptorScannedBytes=0;do{if(Af(this.tokenizer,i,An))throw new qg(`ZIP stream probing exceeds ${An} bytes`);let e=await this.readLocalFileHeader();if(!e)break;if(o++,o>xte)throw new Error(`ZIP entry count exceeds ${xte}`);let a=n(e);t=!!a.stop,await this.tokenizer.ignore(e.extraFieldLength);let A=await jJe(this,e,{shouldBuffer:!!a.handler,maximumDescriptorLength:Math.min(Ys,YJe(this,i))});if(a.handler&&await this.inflate(e,A,a.handler),e.dataDescriptor){let r=new Uint8Array(tO);if(await this.tokenizer.readBuffer(r),Le.get(r,0)!==Are)throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-r.length}`)}if(Af(this.tokenizer,i,An))throw new qg(`ZIP stream probing exceeds ${An} bytes`)}while(!t)};t2=class n{constructor(t){let o=VJe(t?.mpegOffsetTolerance);this.options={...t,mpegOffsetTolerance:o},this.detectors=[...this.options.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:this.options.signal},this.gzipProbeDepth=0}getTokenizerOptions(){return{...this.tokenizerOptions}}createTokenizerFromWebStream(t){return GJe(qD(t,this.getTokenizerOptions()))}async parseTokenizer(t,o=0){this.detectionReentryCount=o;let i=t.position;for(let e of this.detectors){let a;try{a=await e.detect(t)}catch(A){if(A instanceof kA||A instanceof qg)return;throw A}if(a)return a;if(i!==t.position)return}}async fromTokenizer(t){try{return await this.parseTokenizer(t)}finally{await t.close()}}async fromBuffer(t){if(!(t instanceof Uint8Array||t instanceof ArrayBuffer))throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof t}\``);let o=t instanceof Uint8Array?t:new Uint8Array(t);if(o?.length>1)return this.fromTokenizer(Co(o,this.getTokenizerOptions()))}async fromBlob(t){this.options.signal?.throwIfAborted();let o=zD(t,this.getTokenizerOptions());return this.fromTokenizer(o)}async fromStream(t){this.options.signal?.throwIfAborted();let o=this.createTokenizerFromWebStream(t);return this.fromTokenizer(o)}async toDetectionStream(t,o){let i=qJe(o?.sampleSize??ef),e,a,A=t.getReader({mode:"byob"});try{let{value:g,done:c}=await zJe(A,new Uint8Array(i),this.options.signal);if(a=g,!c&&g)try{e=await this.fromBuffer(g.subarray(0,i))}catch(I){if(!(I instanceof kA))throw I;e=void 0}a=g}finally{A.releaseLock()}let r=new TransformStream({async start(g){g.enqueue(a)},transform(g,c){c.enqueue(g)}}),s=t.pipeThrough(r);return s.fileType=e,s}async detectGzip(t){if(this.gzipProbeDepth>=OJe)return{ext:"gz",mime:"application/gzip"};let o=new ZB(t),i=JJe(o.inflate(),DJe),e=Ci(t),a,A,r,s;if(e){let g=new AbortController;a=setTimeout(()=>{g.abort(new DOMException(`Operation timed out after ${jte} ms`,"TimeoutError"))},jte),A=this.options.signal===void 0?g.signal:AbortSignal.any([this.options.signal,g.signal]),r=new n({...this.options,signal:A}),r.gzipProbeDepth=this.gzipProbeDepth+1}else this.gzipProbeDepth++;try{s=await(r??this).fromStream(i)}catch(g){if(g?.name==="AbortError"&&A?.reason?.name!=="TimeoutError")throw g}finally{clearTimeout(a),e||this.gzipProbeDepth--}return s?.ext==="tar"?{ext:"tar.gz",mime:"application/gzip"}:{ext:"gz",mime:"application/gzip"}}check(t,o){return xs(this.buffer,t,o)}checkString(t,o){return this.check(Pte(t,o?.encoding),o)}detectConfident=async t=>{if(this.buffer=new Uint8Array(ef),t.fileInfo.size===void 0&&(t.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=t,Ci(t)&&(await t.peekBuffer(this.buffer,{length:3,mayBeLess:!0}),this.check([31,139,8])))return this.detectGzip(t);if(await t.peekBuffer(this.buffer,{length:32,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return await t.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14})?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191]))return this.detectionReentryCount>=zte?void 0:(this.detectionReentryCount++,await this.tokenizer.ignore(3),this.detectConfident(t));if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return this.detectGzip(t);if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await gI(t,6,{maximumLength:6,reason:"ID3 header prefix"});let o=await t.readToken(Fte),i=Ci(t);if(!Number.isFinite(o)||o<0||i&&(o>e2||t.position+o>e2))return;if(t.position+o>t.fileInfo.size)return i?void 0:{ext:"mp3",mime:"audio/mpeg"};try{await gI(t,o,{maximumLength:i?e2:t.fileInfo.size,reason:"ID3 payload"})}catch(e){if(e instanceof kA)return;throw e}return this.detectionReentryCount>=zte?void 0:(this.detectionReentryCount++,this.parseTokenizer(t,this.detectionReentryCount))}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((this.buffer[0]===67||this.buffer[0]===70)&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let o,i=$Je();try{await new Yl(t).unzip(e=>{eqe(i,e.filename);let a=e.filename==="[Content_Types].xml",A=ere(i);if(!a&&A)return o=A,{stop:!0};switch(e.filename){case"META-INF/mozilla.rsa":return o={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return o={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":return $te(e,Yte)?{async handler(r){let s=new TextDecoder("utf-8").decode(r).trim();o=Xte(s)},stop:!0}:{};case"[Content_Types].xml":return i.hasContentTypesEntry=!0,$te(e,Yte)?(i.isParsingContentTypes=!0,{async handler(r){let s=new TextDecoder("utf-8").decode(r),g=Aqe(s);g&&(o=Xte(g)),i.hasParsedContentTypesEntry=!0,i.isParsingContentTypes=!1},stop:!0}):(i.hasUnparseableContentTypes=!0,{});default:return/classes\d*\.dex/.test(e.filename)?(o={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0}):{}}})}catch(e){if(!XJe(e))throw e;i.isParsingContentTypes&&(i.isParsingContentTypes=!1,i.hasUnparseableContentTypes=!0)}return o??ere(i)??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await t.ignore(28);let o=new Uint8Array(8);return await t.readBuffer(o),xs(o,[79,112,117,115,72,101,97,100])?{ext:"opus",mime:"audio/ogg; codecs=opus"}:xs(o,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:xs(o,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:xs(o,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:xs(o,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:xs(o,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(this.buffer[2]===3||this.buffer[2]===5||this.buffer[2]===7)&&(this.buffer[3]===4||this.buffer[3]===6||this.buffer[3]===8))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF"))return{ext:"pdf",mime:"application/pdf"};if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let o=await this.readTiffHeader(!1);if(o)return o}if(this.check([77,77])){let o=await this.readTiffHeader(!0);if(o)return o}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function o(){let s=await t.peekNumber(QA),g=128,c=0;for(;(s&g)===0&&g!==0;)++c,g>>=1;let I=new Uint8Array(c+1);return await A2(t,I,void 0,{maximumLength:I.length,reason:"EBML field"}),I}async function i(){let s=await o(),g=await o();g[0]^=128>>g.length-1;let c=Math.min(6,g.length),I=new DataView(s.buffer),d=new DataView(g.buffer,g.length-c,c);return{id:XB(I),len:XB(d)}}async function e(s){let g=0;for(;s>0;){if(g++,g>bJe||Af(t,A,An))return;let c=t.position,I=await i();if(I.id===17026){if(I.len>Jte)return;let d=r2(I.len,Jte,"EBML DocType");return(await t.readToken(new Ve(d))).replaceAll(/\00.*$/g,"")}if(Ci(t)&&(!Number.isFinite(I.len)||I.len<0||I.len>qte)||(await gI(t,I.len,{maximumLength:Ci(t)?qte:t.fileInfo.size,reason:"EBML payload"}),--s,t.position<=c))return}}let a=await i(),A=t.position;switch(await e(a.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1")||this.checkString("PARE"))return{ext:"parquet",mime:"application/vnd.apache.parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};if(this.check([254,237,250,206])||this.check([254,237,250,207])||this.check([206,250,237,254])||this.check([207,250,237,254]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.checkString("regf"))return{ext:"dat",mime:"application/x-ft-windows-registry-hive"};if(this.checkString("$FL2")||this.checkString("$FL3"))return{ext:"sav",mime:"application/x-spss-sav"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};if(this.checkString("-lh0-",{offset:2})||this.checkString("-lh1-",{offset:2})||this.checkString("-lh2-",{offset:2})||this.checkString("-lh3-",{offset:2})||this.checkString("-lh4-",{offset:2})||this.checkString("-lh5-",{offset:2})||this.checkString("-lh6-",{offset:2})||this.checkString("-lh7-",{offset:2})||this.checkString("-lzs-",{offset:2})||this.checkString("-lz4-",{offset:2})||this.checkString("-lz5-",{offset:2})||this.checkString("-lhd-",{offset:2}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190])){let o=xe.get(this.buffer,4),i=LA.get(this.buffer,6);if(o>0&&o<=30)return{ext:"macho",mime:"application/x-mach-binary"};if(i>30)return{ext:"class",mime:"application/java-vm"}}if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("=1e3&&o<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!"))return await t.ignore(8),await t.readToken(new Ve(13,"ascii"))==="debian-binary"?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&[` `,"\r"," "," ","\0"].some(o=>this.checkString(o,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){let o={ext:"png",mime:"image/png"},i={ext:"apng",mime:"image/apng"};await t.ignore(8);async function e(){return{length:await t.readToken(Ei),type:await t.readToken(new Ve(4,"latin1"))}}let a=Ci(t),A=t.position,r=0,s=!1;do{if(r++,r>MJe||Af(t,A,_Je))break;let g=t.position,c=await e();if(c.length<0)return;if(c.type==="IHDR"){if(c.length!==13)return;s=!0}switch(c.type){case"IDAT":return o;case"acTL":return i;default:if(!s&&c.type!=="CgBI")return;if(a&&c.length>Vte)return s&&HJe(c.type)?o:void 0;try{await gI(t,c.length+4,{maximumLength:a?Vte+4:t.fileInfo.size,reason:"PNG chunk payload"})}catch(I){if(!a&&(I instanceof qg||I instanceof kA))return o;throw I}}if(t.position<=g)break}while(t.position+8TJe||Af(t,a,An)));){let r=t.position,s=await i(),g=s.size-24;if(!Number.isFinite(g)||g<0){o=!0;break}if(xs(s.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let c=new Uint8Array(16);if(g-=await A2(t,c,void 0,{maximumLength:c.length,reason:"ASF stream type GUID"}),xs(c,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(xs(c,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}if(e&&g>Wte){o=!0;break}if(await gI(t,g,{maximumLength:e?Wte:t.fileInfo.size,reason:"ASF header payload"}),t.position<=r){o=!0;break}}}catch(i){if(i instanceof kA||i instanceof qg)Ci(t)&&(o=!0);else throw i}return o?void 0:{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await t.ignore(20),await t.readToken(new Ve(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.checkString("=16){let o=new DataView(this.buffer.buffer).getUint32(12,!0);if(o>12&&this.buffer.length>=o+16)try{let i=new TextDecoder().decode(this.buffer.subarray(16,o+16));if(JSON.parse(i).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188}))return{ext:"mts",mime:"video/mp2t"};if(this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};if(this.check([76,80],{offset:34})&&(this.check([0,0,1],{offset:8})||this.check([1,0,2],{offset:8})||this.check([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};if(this.check([255,255,0,0,7,0,0,0,4,0,0,0,1,0,1,0])||this.check([0,0,255,255,0,0,0,7,0,0,0,4,0,1,0,1]))return{ext:"jmp",mime:"application/x-jmp-data"};if(await t.peekBuffer(this.buffer,{length:Math.min(512,t.fileInfo.size),mayBeLess:!0}),this.checkString("ustar",{offset:257})&&(this.checkString("\0",{offset:262})||this.checkString(" ",{offset:262}))||this.check([0,0,0,0,0,0],{offset:257})&&Gte(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254])){let o="utf-16le";return this.checkString("{this.buffer=new Uint8Array(ef);let o=WJe(t.fileInfo.size);if(await t.peekBuffer(this.buffer,{length:Math.min(8,o),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(await t.peekBuffer(this.buffer,{length:Math.min(2+this.options.mpegOffsetTolerance,o),mayBeLess:!0}),this.buffer.length>=2+this.options.mpegOffsetTolerance)for(let i=0;i<=this.options.mpegOffsetTolerance;++i){let e=this.scanMpeg(i);if(e)return e}};async readTiffTag(t){let o=await this.tokenizer.readToken(t?LA:SA);switch(await this.tokenizer.ignore(10),o){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"};default:}}async readTiffIFD(t){let o=await this.tokenizer.readToken(t?LA:SA);if(!(o>NJe)&&!(Ci(this.tokenizer)&&2+o*12>Zte))for(let i=0;i=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(e>=8){let r=(t?LA:SA).get(this.buffer,8),s=(t?LA:SA).get(this.buffer,10);if(r===28&&s===254||r===31&&s===11)return{ext:"nef",mime:"image/x-nikon-nef"}}}if(Ci(this.tokenizer)&&e>RJe)return o;let a=Ci(this.tokenizer)?Zte:this.tokenizer.fileInfo.size;try{await gI(this.tokenizer,e,{maximumLength:a,reason:"TIFF IFD offset"})}catch(r){if(r instanceof kA)return;throw r}let A;try{A=await this.readTiffIFD(t)}catch(r){if(r instanceof kA)return;throw r}return A??o}if(i===43)return o}scanMpeg(t){if(this.check([255,224],{offset:t,mask:[255,224]})){if(this.check([16],{offset:t+1,mask:[22]}))return this.check([8],{offset:t+1,mask:[8]})?{ext:"aac",mime:"audio/aac"}:{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:t+1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:t+1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:t+1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}}},tqe=new Set(Ute),rqe=new Set(Hte)});var a2=ue(()=>{$o();tre()});var gre=ee(aO=>{"use strict";Object.defineProperty(aO,"__esModule",{value:!0});aO.format=nqe;aO.parse=sqe;var aqe=/^[\u0009\u0020-\u007e\u0080-\u00ff]*$/,are=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,iqe=/[\\"]/g,oqe=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,ire=(()=>{let n=function(){};return n.prototype=Object.create(null),n})();function nqe(n){let{type:t,parameters:o}=n;if(!t||!oqe.test(t))throw new TypeError(`Invalid type: ${t}`);let i=t;if(o)for(let e of Object.keys(o)){if(!are.test(e))throw new TypeError(`Invalid parameter name: ${e}`);i+=`; ${e}=${pqe(o[e])}`}return i}function sqe(n,t){let o=t?.comma===!0?Iqe:65536,i=n.length,e=o2(n,t?.start??0,i),a=e;e=i2(n,e,i,o);let A=n2(n,a,e),r=n.slice(a,A).toLowerCase();return t?.parameters===!1?{type:r,index:e,parameters:new ire}:lqe(n,r,e,i,o)}var ore=32,nre=9,sre=59,gqe=61,rre=34,cqe=92,Iqe=44;function lqe(n,t,o,i,e){let a=new ire;e:for(;ot;){let i=n.charCodeAt(o-1);if(i!==ore&&i!==nre)break;o--}return o}function pqe(n){if(are.test(n))return n;if(aqe.test(n))return`"${n.replace(iqe,"\\$&")}"`;throw new TypeError(`Invalid parameter value: ${n}`)}});function cre(n){if(!dqe.test(n))throw new TypeError(`Invalid media type: ${n}`);let t=n.indexOf("/"),o=n.slice(0,t).toLowerCase(),i=n.slice(t+1).toLowerCase(),e,a=i.lastIndexOf("+");return a!==-1&&(e=i.slice(a+1),i=i.slice(0,a)),{type:o,subtype:i,suffix:e}}var dqe,Ire=ue(()=>{dqe=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}\/[A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}$/});var lre,pa,s2,g2=ue(()=>{lre={10:"shot",20:"scene",30:"track",40:"part",50:"album",60:"edition",70:"collection"},pa={video:1,audio:2,complex:3,logo:4,subtitle:17,button:18,control:32},s2={[pa.video]:"video",[pa.audio]:"audio",[pa.complex]:"complex",[pa.logo]:"logo",[pa.subtitle]:"subtitle",[pa.button]:"button",[pa.control]:"control"}});var Ph,cI,II,c2,tn,jl,Qt,er=ue(()=>{Ph=n=>class extends Error{constructor(o){super(o),this.name=n}},cI=class extends Ph("CouldNotDetermineFileTypeError"){},II=class extends Ph("UnsupportedFileTypeError"){},c2=class extends Ph("UnexpectedFileContentError"){constructor(t,o){super(o),this.fileType=t}toString(){return`${this.name} (FileType: ${this.fileType}): ${this.message}`}},tn=class extends Ph("FieldDecodingError"){},jl=class extends Ph("InternalParserError"){},Qt=n=>class extends c2{constructor(t){super(n,t)}}});function GA(n,t,o){return(n[t]&1<>a;let r=8-a,s=i-r;return s<0?A>>=8-a-i:s>0&&(A<<=s,A|=ZA(n,t,o+r,s)),A}function Na(n,t,o){return ZA(n,t,o,1)===1}function dre(n){let t=[];for(let o=0,i=n.length;oo.trim().toLowerCase());if(t.length>=1){let o=Number.parseFloat(t[0]);return t.length===2&&t[1]==="db"?{dB:o,ratio:Eqe(o)}:{dB:hqe(o),ratio:o}}}function I2(n){if(n.length===0)throw new Error("decodeUintBE: empty Uint8Array");let t=new DataView(n.buffer,n.byteOffset,n.byteLength);return XB(t)}var Ar=ue(()=>{DA();er();$B()});var Gh,Fh,Lh,l2,rf,p2,Uh,oO,d2,lI=ue(()=>{DA();Ar();Gh={0:"Other",1:"32x32 pixels 'file icon' (PNG only)",2:"Other file icon",3:"Cover (front)",4:"Cover (back)",5:"Leaflet page",6:"Media (e.g. label side of CD)",7:"Lead artist/lead performer/soloist",8:"Artist/performer",9:"Conductor",10:"Band/Orchestra",11:"Composer",12:"Lyricist/text writer",13:"Recording Location",14:"During recording",15:"During performance",16:"Movie/video screen capture",17:"A bright coloured fish",18:"Illustration",19:"Band/artist logotype",20:"Publisher/Studio logotype"},Fh={other:0,lyrics:1,text:2,movement_part:3,events:4,chord:5,trivia_pop:6},Lh={notSynchronized:0,mpegFrameNumber:1,milliseconds:2},l2={get:(n,t)=>n[t+3]&127|n[t+2]<<7|n[t+1]<<14|n[t]<<21,len:4},rf={len:10,get:(n,t)=>({fileIdentifier:new Ve(3,"ascii").get(n,t),version:{major:Us.get(n,t+3),revision:Us.get(n,t+4)},flags:{unsynchronisation:GA(n,t+5,7),isExtendedHeader:GA(n,t+5,6),expIndicator:GA(n,t+5,5),footer:GA(n,t+5,4)},size:l2.get(n,t+6)})},p2={len:10,get:(n,t)=>({size:xe.get(n,t),extendedFlags:LA.get(n,t+4),sizeOfPadding:xe.get(n,t+6),crcDataPresent:GA(n,t+4,31)})},Uh={len:1,get:(n,t)=>{switch(n[t]){case 0:return{encoding:"latin1"};case 1:return{encoding:"utf-16le",bom:!0};case 2:return{encoding:"utf-16be",bom:!1};case 3:return{encoding:"utf8",bom:!1};default:return{encoding:"utf8",bom:!1}}}},oO={len:4,get:(n,t)=>({encoding:Uh.get(n,t),language:new Ve(3,"latin1").get(n,t+1)})},d2={len:6,get:(n,t)=>{let o=oO.get(n,t);return{encoding:o.encoding,language:o.language,timeStampFormat:QA.get(n,t+4),contentType:QA.get(n,t+5)}}}});var Jl=ue(()=>{g2();lI()});function Ere(n){return nO[n]&&!nO[n].multiple}function Cre(n){return!nO[n].multiple||nO[n].unique||!1}var AA,nO,ure=ue(()=>{AA={multiple:!1},nO={year:AA,track:AA,disk:AA,title:AA,artist:AA,artists:{multiple:!0,unique:!0},albumartist:AA,albumartists:{multiple:!0,unique:!0},album:AA,date:AA,originaldate:AA,originalyear:AA,releasedate:AA,comment:{multiple:!0,unique:!1},genre:{multiple:!0,unique:!0},picture:{multiple:!0,unique:!0},composer:{multiple:!0,unique:!0},lyrics:{multiple:!0,unique:!1},albumsort:{multiple:!1,unique:!0},titlesort:{multiple:!1,unique:!0},work:{multiple:!1,unique:!0},artistsort:{multiple:!1,unique:!0},albumartistsort:{multiple:!1,unique:!0},composersort:{multiple:!1,unique:!0},lyricist:{multiple:!0,unique:!0},writer:{multiple:!0,unique:!0},conductor:{multiple:!0,unique:!0},remixer:{multiple:!0,unique:!0},arranger:{multiple:!0,unique:!0},engineer:{multiple:!0,unique:!0},producer:{multiple:!0,unique:!0},technician:{multiple:!0,unique:!0},djmixer:{multiple:!0,unique:!0},mixer:{multiple:!0,unique:!0},label:{multiple:!0,unique:!0},grouping:AA,subtitle:{multiple:!0},discsubtitle:AA,totaltracks:AA,totaldiscs:AA,compilation:AA,rating:{multiple:!0},bpm:AA,mood:AA,media:AA,catalognumber:{multiple:!0,unique:!0},tvShow:AA,tvShowSort:AA,tvSeason:AA,tvEpisode:AA,tvEpisodeId:AA,tvNetwork:AA,podcast:AA,podcasturl:AA,releasestatus:AA,releasetype:{multiple:!0},releasecountry:AA,script:AA,language:AA,copyright:AA,license:AA,encodedby:AA,encodersettings:AA,gapless:AA,barcode:AA,isrc:{multiple:!0},asin:AA,musicbrainz_recordingid:AA,musicbrainz_trackid:AA,musicbrainz_albumid:AA,musicbrainz_artistid:{multiple:!0},musicbrainz_albumartistid:{multiple:!0},musicbrainz_releasegroupid:AA,musicbrainz_workid:AA,musicbrainz_trmid:AA,musicbrainz_discid:AA,acoustid_id:AA,acoustid_fingerprint:AA,musicip_puid:AA,musicip_fingerprint:AA,website:AA,"performer:instrument":{multiple:!0,unique:!0},averageLevel:AA,peakLevel:AA,notes:{multiple:!0,unique:!1},key:AA,originalalbum:AA,originalartist:AA,discogs_artist_id:{multiple:!0,unique:!0},discogs_release_id:AA,discogs_label_id:AA,discogs_master_release_id:AA,discogs_votes:AA,discogs_rating:AA,replaygain_track_peak:AA,replaygain_track_gain:AA,replaygain_album_peak:AA,replaygain_album_gain:AA,replaygain_track_minmax:AA,replaygain_album_minmax:AA,replaygain_undo:AA,description:{multiple:!0},longDescription:AA,category:{multiple:!0},hdVideo:AA,keywords:{multiple:!0},movement:AA,movementIndex:AA,movementTotal:AA,podcastId:AA,showMovement:AA,stik:AA,playCounter:AA}});var hr,zg=ue(()=>{hr=class{static toIntOrNull(t){let o=Number.parseInt(t,10);return Number.isNaN(o)?null:o}static normalizeTrack(t){let o=t.toString().split("/");return{no:Number.parseInt(o[0],10)||null,of:Number.parseInt(o[1],10)||null}}constructor(t,o){this.tagTypes=t,this.tagMap=o}mapGenericTag(t,o){t={id:t.id,value:t.value},this.postMap(t,o);let i=this.getCommonName(t.id);return i?{id:i,value:t.value}:null}getCommonName(t){return this.tagMap[t]}postMap(t,o){}};hr.maxRatingScore=1});var Cqe,sO,Bre=ue(()=>{zg();Cqe={title:"title",artist:"artist",album:"album",year:"year",comment:"comment",track:"track",genre:"genre"},sO=class extends hr{constructor(){super(["ID3v1"],Cqe)}}});var an,Hh=ue(()=>{zg();an=class extends hr{constructor(t,o){let i={};for(let e of Object.keys(o))i[e.toUpperCase()]=o[e];super(t,i)}getCommonName(t){return this.tagMap[t.toUpperCase()]}}});var uqe,gO,fre=ue(()=>{DA();zg();Hh();Ar();uqe={TIT2:"title",TPE1:"artist","TXXX:Artists":"artists",TPE2:"albumartist",TALB:"album",TDRV:"date",TORY:"originalyear",TPOS:"disk",TCON:"genre",APIC:"picture",TCOM:"composer",USLT:"lyrics",TSOA:"albumsort",TSOT:"titlesort",TOAL:"originalalbum",TSOP:"artistsort",TSO2:"albumartistsort",TSOC:"composersort",TEXT:"lyricist","TXXX:Writer":"writer",TPE3:"conductor",TPE4:"remixer","IPLS:arranger":"arranger","IPLS:engineer":"engineer","IPLS:producer":"producer","IPLS:DJ-mix":"djmixer","IPLS:mix":"mixer",TPUB:"label",TIT1:"grouping",TIT3:"subtitle",TRCK:"track",TCMP:"compilation",POPM:"rating",TBPM:"bpm",TMED:"media","TXXX:CATALOGNUMBER":"catalognumber","TXXX:MusicBrainz Album Status":"releasestatus","TXXX:MusicBrainz Album Type":"releasetype","TXXX:MusicBrainz Album Release Country":"releasecountry","TXXX:RELEASECOUNTRY":"releasecountry","TXXX:SCRIPT":"script",TLAN:"language",TCOP:"copyright",WCOP:"license",TENC:"encodedby",TSSE:"encodersettings","TXXX:BARCODE":"barcode","TXXX:ISRC":"isrc",TSRC:"isrc","TXXX:ASIN":"asin","TXXX:originalyear":"originalyear","UFID:http://musicbrainz.org":"musicbrainz_recordingid","TXXX:MusicBrainz Release Track Id":"musicbrainz_trackid","TXXX:MusicBrainz Album Id":"musicbrainz_albumid","TXXX:MusicBrainz Artist Id":"musicbrainz_artistid","TXXX:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","TXXX:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","TXXX:MusicBrainz Work Id":"musicbrainz_workid","TXXX:MusicBrainz TRM Id":"musicbrainz_trmid","TXXX:MusicBrainz Disc Id":"musicbrainz_discid","TXXX:ACOUSTID_ID":"acoustid_id","TXXX:Acoustid Id":"acoustid_id","TXXX:Acoustid Fingerprint":"acoustid_fingerprint","TXXX:MusicIP PUID":"musicip_puid","TXXX:MusicMagic Fingerprint":"musicip_fingerprint",WOAR:"website",TDRC:"date",TYER:"year",TDOR:"originaldate","TIPL:arranger":"arranger","TIPL:engineer":"engineer","TIPL:producer":"producer","TIPL:DJ-mix":"djmixer","TIPL:mix":"mixer",TMOO:"mood",SYLT:"lyrics",TSST:"discsubtitle",TKEY:"key",COMM:"comment",TOPE:"originalartist","PRIV:AverageLevel":"averageLevel","PRIV:PeakLevel":"peakLevel","TXXX:DISCOGS_ARTIST_ID":"discogs_artist_id","TXXX:DISCOGS_ARTISTS":"artists","TXXX:DISCOGS_ARTIST_NAME":"artists","TXXX:DISCOGS_ALBUM_ARTISTS":"albumartist","TXXX:DISCOGS_CATALOG":"catalognumber","TXXX:DISCOGS_COUNTRY":"releasecountry","TXXX:DISCOGS_DATE":"originaldate","TXXX:DISCOGS_LABEL":"label","TXXX:DISCOGS_LABEL_ID":"discogs_label_id","TXXX:DISCOGS_MASTER_RELEASE_ID":"discogs_master_release_id","TXXX:DISCOGS_RATING":"discogs_rating","TXXX:DISCOGS_RELEASED":"date","TXXX:DISCOGS_RELEASE_ID":"discogs_release_id","TXXX:DISCOGS_VOTES":"discogs_votes","TXXX:CATALOGID":"catalognumber","TXXX:STYLE":"genre","TXXX:REPLAYGAIN_TRACK_PEAK":"replaygain_track_peak","TXXX:REPLAYGAIN_TRACK_GAIN":"replaygain_track_gain","TXXX:REPLAYGAIN_ALBUM_PEAK":"replaygain_album_peak","TXXX:REPLAYGAIN_ALBUM_GAIN":"replaygain_album_gain","TXXX:MP3GAIN_MINMAX":"replaygain_track_minmax","TXXX:MP3GAIN_ALBUM_MINMAX":"replaygain_album_minmax","TXXX:MP3GAIN_UNDO":"replaygain_undo",MVNM:"movement",MVIN:"movementIndex",PCST:"podcast",TCAT:"category",TDES:"description",TDRL:"releasedate",TGID:"podcastId",TKWD:"keywords",WFED:"podcasturl",GRP1:"grouping",PCNT:"playCounter"},gO=class n extends an{static toRating(t){return{source:t.email,rating:t.rating>0?(t.rating-1)/254*hr.maxRatingScore:void 0}}constructor(){super(["ID3v2.3","ID3v2.4"],uqe)}postMap(t,o){switch(t.id){case"UFID":{let i=t.value;i.owner_identifier==="http://musicbrainz.org"&&(t.id+=`:${i.owner_identifier}`,t.value=da(i.identifier,"latin1"))}break;case"PRIV":{let i=t.value;switch(i.owner_identifier){case"AverageLevel":case"PeakValue":t.id+=`:${i.owner_identifier}`,t.value=i.data.length===4?Le.get(i.data,0):null,t.value===null&&o.addWarning("Failed to parse PRIV:PeakValue");break;default:o.addWarning(`Unknown PRIV owner-identifier: ${i.data}`)}}break;case"POPM":t.value=n.toRating(t.value);break;default:break}}}});var Bqe,cO,Qre=ue(()=>{zg();Bqe={Title:"title",Author:"artist","WM/AlbumArtist":"albumartist","WM/AlbumTitle":"album","WM/Year":"date","WM/OriginalReleaseTime":"originaldate","WM/OriginalReleaseYear":"originalyear",Description:"comment","WM/TrackNumber":"track","WM/PartOfSet":"disk","WM/Genre":"genre","WM/Composer":"composer","WM/Lyrics":"lyrics","WM/AlbumSortOrder":"albumsort","WM/TitleSortOrder":"titlesort","WM/ArtistSortOrder":"artistsort","WM/AlbumArtistSortOrder":"albumartistsort","WM/ComposerSortOrder":"composersort","WM/Writer":"lyricist","WM/Conductor":"conductor","WM/ModifiedBy":"remixer","WM/Engineer":"engineer","WM/Producer":"producer","WM/DJMixer":"djmixer","WM/Mixer":"mixer","WM/Publisher":"label","WM/ContentGroupDescription":"grouping","WM/SubTitle":"subtitle","WM/SetSubTitle":"discsubtitle","WM/IsCompilation":"compilation","WM/SharedUserRating":"rating","WM/BeatsPerMinute":"bpm","WM/Mood":"mood","WM/Media":"media","WM/CatalogNo":"catalognumber","MusicBrainz/Album Status":"releasestatus","MusicBrainz/Album Type":"releasetype","MusicBrainz/Album Release Country":"releasecountry","WM/Script":"script","WM/Language":"language",Copyright:"copyright",LICENSE:"license","WM/EncodedBy":"encodedby","WM/EncodingSettings":"encodersettings","WM/Barcode":"barcode","WM/ISRC":"isrc","MusicBrainz/Track Id":"musicbrainz_recordingid","MusicBrainz/Release Track Id":"musicbrainz_trackid","MusicBrainz/Album Id":"musicbrainz_albumid","MusicBrainz/Artist Id":"musicbrainz_artistid","MusicBrainz/Album Artist Id":"musicbrainz_albumartistid","MusicBrainz/Release Group Id":"musicbrainz_releasegroupid","MusicBrainz/Work Id":"musicbrainz_workid","MusicBrainz/TRM Id":"musicbrainz_trmid","MusicBrainz/Disc Id":"musicbrainz_discid","Acoustid/Id":"acoustid_id","Acoustid/Fingerprint":"acoustid_fingerprint","MusicIP/PUID":"musicip_puid","WM/ARTISTS":"artists","WM/InitialKey":"key",ASIN:"asin","WM/Work":"work","WM/AuthorURL":"website","WM/Picture":"picture"},cO=class n extends hr{static toRating(t){return{rating:Number.parseFloat(t+1)/5}}constructor(){super(["asf"],Bqe)}postMap(t){switch(t.id){case"WM/SharedUserRating":{let o=t.id.split(":");t.value=n.toRating(t.value),t.id=o[0];break}}}}});var fqe,IO,yre=ue(()=>{Hh();fqe={TT2:"title",TP1:"artist",TP2:"albumartist",TAL:"album",TYE:"year",COM:"comment",TRK:"track",TPA:"disk",TCO:"genre",PIC:"picture",TCM:"composer",TOR:"originaldate",TOT:"originalalbum",TXT:"lyricist",TP3:"conductor",TPB:"label",TT1:"grouping",TT3:"subtitle",TLA:"language",TCR:"copyright",WCP:"license",TEN:"encodedby",TSS:"encodersettings",WAR:"website",PCS:"podcast",TCP:"compilation",TDR:"date",TS2:"albumartistsort",TSA:"albumsort",TSC:"composersort",TSP:"artistsort",TST:"titlesort",WFD:"podcasturl",TBP:"bpm",GP1:"grouping"},IO=class extends an{constructor(){super(["ID3v2.2"],fqe)}}});var Qqe,lO,mre=ue(()=>{Hh();Qqe={Title:"title",Artist:"artist",Artists:"artists","Album Artist":"albumartist",Album:"album",Year:"date",Originalyear:"originalyear",Originaldate:"originaldate",Releasedate:"releasedate",Comment:"comment",Track:"track",Disc:"disk",DISCNUMBER:"disk",Genre:"genre","Cover Art (Front)":"picture","Cover Art (Back)":"picture",Composer:"composer",Lyrics:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",Lyricist:"lyricist",Writer:"writer",Conductor:"conductor",MixArtist:"remixer",Arranger:"arranger",Engineer:"engineer",Producer:"producer",DJMixer:"djmixer",Mixer:"mixer",Label:"label",Grouping:"grouping",Subtitle:"subtitle",DiscSubtitle:"discsubtitle",Compilation:"compilation",BPM:"bpm",Mood:"mood",Media:"media",CatalogNumber:"catalognumber",MUSICBRAINZ_ALBUMSTATUS:"releasestatus",MUSICBRAINZ_ALBUMTYPE:"releasetype",RELEASECOUNTRY:"releasecountry",Script:"script",Language:"language",Copyright:"copyright",LICENSE:"license",EncodedBy:"encodedby",EncoderSettings:"encodersettings",Barcode:"barcode",ISRC:"isrc",ASIN:"asin",musicbrainz_trackid:"musicbrainz_recordingid",musicbrainz_releasetrackid:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",Acoustid_Id:"acoustid_id",ACOUSTID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",Weblink:"website",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",MP3GAIN_MINMAX:"replaygain_track_minmax",MP3GAIN_UNDO:"replaygain_undo"},lO=class extends an{constructor(){super(["APEv2"],Qqe)}}});var yqe,mqe,af,Sre=ue(()=>{Hh();yqe={"\xA9nam":"title","\xA9ART":"artist",aART:"albumartist","----:com.apple.iTunes:Band":"albumartist","\xA9alb":"album","\xA9day":"date","\xA9cmt":"comment","\xA9com":"comment",trkn:"track",disk:"disk","\xA9gen":"genre",covr:"picture","\xA9wrt":"composer","\xA9lyr":"lyrics",soal:"albumsort",sonm:"titlesort",soar:"artistsort",soaa:"albumartistsort",soco:"composersort","----:com.apple.iTunes:LYRICIST":"lyricist","----:com.apple.iTunes:CONDUCTOR":"conductor","----:com.apple.iTunes:REMIXER":"remixer","----:com.apple.iTunes:ENGINEER":"engineer","----:com.apple.iTunes:PRODUCER":"producer","----:com.apple.iTunes:DJMIXER":"djmixer","----:com.apple.iTunes:MIXER":"mixer","----:com.apple.iTunes:LABEL":"label","\xA9grp":"grouping","----:com.apple.iTunes:SUBTITLE":"subtitle","----:com.apple.iTunes:DISCSUBTITLE":"discsubtitle",cpil:"compilation",tmpo:"bpm","----:com.apple.iTunes:MOOD":"mood","----:com.apple.iTunes:MEDIA":"media","----:com.apple.iTunes:CATALOGNUMBER":"catalognumber",tvsh:"tvShow",tvsn:"tvSeason",tves:"tvEpisode",sosn:"tvShowSort",tven:"tvEpisodeId",tvnn:"tvNetwork",pcst:"podcast",purl:"podcasturl","----:com.apple.iTunes:MusicBrainz Album Status":"releasestatus","----:com.apple.iTunes:MusicBrainz Album Type":"releasetype","----:com.apple.iTunes:MusicBrainz Album Release Country":"releasecountry","----:com.apple.iTunes:SCRIPT":"script","----:com.apple.iTunes:LANGUAGE":"language",cprt:"copyright","\xA9cpy":"copyright","----:com.apple.iTunes:LICENSE":"license","\xA9too":"encodedby",pgap:"gapless","----:com.apple.iTunes:BARCODE":"barcode","----:com.apple.iTunes:ISRC":"isrc","----:com.apple.iTunes:ASIN":"asin","----:com.apple.iTunes:NOTES":"comment","----:com.apple.iTunes:MusicBrainz Track Id":"musicbrainz_recordingid","----:com.apple.iTunes:MusicBrainz Release Track Id":"musicbrainz_trackid","----:com.apple.iTunes:MusicBrainz Album Id":"musicbrainz_albumid","----:com.apple.iTunes:MusicBrainz Artist Id":"musicbrainz_artistid","----:com.apple.iTunes:MusicBrainz Album Artist Id":"musicbrainz_albumartistid","----:com.apple.iTunes:MusicBrainz Release Group Id":"musicbrainz_releasegroupid","----:com.apple.iTunes:MusicBrainz Work Id":"musicbrainz_workid","----:com.apple.iTunes:MusicBrainz TRM Id":"musicbrainz_trmid","----:com.apple.iTunes:MusicBrainz Disc Id":"musicbrainz_discid","----:com.apple.iTunes:Acoustid Id":"acoustid_id","----:com.apple.iTunes:Acoustid Fingerprint":"acoustid_fingerprint","----:com.apple.iTunes:MusicIP PUID":"musicip_puid","----:com.apple.iTunes:fingerprint":"musicip_fingerprint","----:com.apple.iTunes:replaygain_track_gain":"replaygain_track_gain","----:com.apple.iTunes:replaygain_track_peak":"replaygain_track_peak","----:com.apple.iTunes:replaygain_album_gain":"replaygain_album_gain","----:com.apple.iTunes:replaygain_album_peak":"replaygain_album_peak","----:com.apple.iTunes:replaygain_track_minmax":"replaygain_track_minmax","----:com.apple.iTunes:replaygain_album_minmax":"replaygain_album_minmax","----:com.apple.iTunes:replaygain_undo":"replaygain_undo",gnre:"genre","----:com.apple.iTunes:ALBUMARTISTSORT":"albumartistsort","----:com.apple.iTunes:ARTISTS":"artists","----:com.apple.iTunes:ORIGINALDATE":"originaldate","----:com.apple.iTunes:ORIGINALYEAR":"originalyear","----:com.apple.iTunes:RELEASEDATE":"releasedate",desc:"description",ldes:"longDescription","\xA9mvn":"movement","\xA9mvi":"movementIndex","\xA9mvc":"movementTotal","\xA9wrk":"work",catg:"category",egid:"podcastId",hdvd:"hdVideo",keyw:"keywords",shwm:"showMovement",stik:"stik",rate:"rating"},mqe="iTunes",af=class extends an{constructor(){super([mqe],yqe)}postMap(t,o){switch(t.id){case"rate":t.value={source:void 0,rating:Number.parseFloat(t.value)/100};break}}}});var Sqe,pO,wre=ue(()=>{zg();Sqe={TITLE:"title",ARTIST:"artist",ARTISTS:"artists",ALBUMARTIST:"albumartist","ALBUM ARTIST":"albumartist",ALBUM:"album",DATE:"date",ORIGINALDATE:"originaldate",ORIGINALYEAR:"originalyear",RELEASEDATE:"releasedate",COMMENT:"comment",TRACKNUMBER:"track",DISCNUMBER:"disk",GENRE:"genre",METADATA_BLOCK_PICTURE:"picture",COMPOSER:"composer",LYRICS:"lyrics",ALBUMSORT:"albumsort",TITLESORT:"titlesort",WORK:"work",ARTISTSORT:"artistsort",ALBUMARTISTSORT:"albumartistsort",COMPOSERSORT:"composersort",LYRICIST:"lyricist",WRITER:"writer",CONDUCTOR:"conductor",REMIXER:"remixer",ARRANGER:"arranger",ENGINEER:"engineer",PRODUCER:"producer",DJMIXER:"djmixer",MIXER:"mixer",LABEL:"label",GROUPING:"grouping",SUBTITLE:"subtitle",DISCSUBTITLE:"discsubtitle",TRACKTOTAL:"totaltracks",DISCTOTAL:"totaldiscs",COMPILATION:"compilation",RATING:"rating",BPM:"bpm",KEY:"key",MOOD:"mood",MEDIA:"media",CATALOGNUMBER:"catalognumber",RELEASESTATUS:"releasestatus",RELEASETYPE:"releasetype",RELEASECOUNTRY:"releasecountry",SCRIPT:"script",LANGUAGE:"language",COPYRIGHT:"copyright",LICENSE:"license",ENCODEDBY:"encodedby",ENCODERSETTINGS:"encodersettings",BARCODE:"barcode",ISRC:"isrc",ASIN:"asin",MUSICBRAINZ_TRACKID:"musicbrainz_recordingid",MUSICBRAINZ_RELEASETRACKID:"musicbrainz_trackid",MUSICBRAINZ_ALBUMID:"musicbrainz_albumid",MUSICBRAINZ_ARTISTID:"musicbrainz_artistid",MUSICBRAINZ_ALBUMARTISTID:"musicbrainz_albumartistid",MUSICBRAINZ_RELEASEGROUPID:"musicbrainz_releasegroupid",MUSICBRAINZ_WORKID:"musicbrainz_workid",MUSICBRAINZ_TRMID:"musicbrainz_trmid",MUSICBRAINZ_DISCID:"musicbrainz_discid",ACOUSTID_ID:"acoustid_id",ACOUSTID_ID_FINGERPRINT:"acoustid_fingerprint",MUSICIP_PUID:"musicip_puid",WEBSITE:"website",NOTES:"notes",TOTALTRACKS:"totaltracks",TOTALDISCS:"totaldiscs",DISCOGS_ARTIST_ID:"discogs_artist_id",DISCOGS_ARTISTS:"artists",DISCOGS_ARTIST_NAME:"artists",DISCOGS_ALBUM_ARTISTS:"albumartist",DISCOGS_CATALOG:"catalognumber",DISCOGS_COUNTRY:"releasecountry",DISCOGS_DATE:"originaldate",DISCOGS_LABEL:"label",DISCOGS_LABEL_ID:"discogs_label_id",DISCOGS_MASTER_RELEASE_ID:"discogs_master_release_id",DISCOGS_RATING:"discogs_rating",DISCOGS_RELEASED:"date",DISCOGS_RELEASE_ID:"discogs_release_id",DISCOGS_VOTES:"discogs_votes",CATALOGID:"catalognumber",STYLE:"genre",REPLAYGAIN_TRACK_GAIN:"replaygain_track_gain",REPLAYGAIN_TRACK_PEAK:"replaygain_track_peak",REPLAYGAIN_ALBUM_GAIN:"replaygain_album_gain",REPLAYGAIN_ALBUM_PEAK:"replaygain_album_peak",REPLAYGAIN_MINMAX:"replaygain_track_minmax",REPLAYGAIN_ALBUM_MINMAX:"replaygain_album_minmax",REPLAYGAIN_UNDO:"replaygain_undo"},pO=class n extends hr{static toRating(t,o,i){return{source:t?t.toLowerCase():void 0,rating:Number.parseFloat(o)/i*hr.maxRatingScore}}constructor(){super(["vorbis"],Sqe)}postMap(t){if(t.id==="RATING")t.value=n.toRating(void 0,t.value,100);else if(t.id.indexOf("RATING:")===0){let o=t.id.split(":");t.value=n.toRating(o[1],t.value,1),t.id=o[0]}}}});var wqe,dO,Dre=ue(()=>{zg();wqe={IART:"artist",ICRD:"date",INAM:"title",TITL:"title",IPRD:"album",ITRK:"track",IPRT:"track",COMM:"comment",ICMT:"comment",ICNT:"releasecountry",GNRE:"genre",IWRI:"writer",RATE:"rating",YEAR:"year",ISFT:"encodedby",CODE:"encodedby",TURL:"website",IGNR:"genre",IENG:"engineer",ITCH:"technician",IMED:"media",IRPD:"album"},dO=class extends hr{constructor(){super(["exif"],wqe)}}});var Dqe,hO,Ore=ue(()=>{Hh();Dqe={"segment:title":"title","album:ARTIST":"albumartist","album:ARTISTSORT":"albumartistsort","album:TITLE":"album","album:DATE_RECORDED":"originaldate","album:DATE_RELEASED":"releasedate","album:PART_NUMBER":"disk","album:TOTAL_PARTS":"totaltracks","track:ARTIST":"artist","track:ARTISTSORT":"artistsort","track:TITLE":"title","track:PART_NUMBER":"track","track:MUSICBRAINZ_TRACKID":"musicbrainz_recordingid","track:MUSICBRAINZ_ALBUMID":"musicbrainz_albumid","track:MUSICBRAINZ_ARTISTID":"musicbrainz_artistid","track:PUBLISHER":"label","track:GENRE":"genre","track:ENCODER":"encodedby","track:ENCODER_OPTIONS":"encodersettings","edition:TOTAL_PARTS":"totaldiscs",picture:"picture"},hO=class extends an{constructor(){super(["matroska"],Dqe)}}});var Oqe,EO,bre=ue(()=>{zg();Oqe={NAME:"title",AUTH:"artist","(c) ":"copyright",ANNO:"comment"},EO=class extends hr{constructor(){super(["AIFF"],Oqe)}}});var CO,Mre=ue(()=>{Bre();fre();Qre();yre();mre();Sre();wre();Dre();Ore();bre();er();CO=class{constructor(){this.tagMappers={},[new sO,new IO,new gO,new af,new af,new pO,new lO,new cO,new dO,new hO,new EO].forEach(t=>{this.registerTagMapper(t)})}mapTag(t,o,i){if(this.tagMappers[t])return this.tagMappers[t].mapGenericTag(o,i);throw new jl(`No generic tag mapper defined for tag-format: ${t}`)}registerTagMapper(t){for(let o of t.tagTypes)this.tagMappers[o]=t}}});function _re(n){return h2.test(n)?Mqe(n):bqe(n)}function bqe(n){return{contentType:Fh.lyrics,timeStampFormat:Lh.notSynchronized,text:n.trim(),syncText:[]}}function Mqe(n){let t=n.split(` `),o=[];for(let i of t){let e=i.match(h2);if(e){let a=Number.parseInt(e[1],10),A=Number.parseInt(e[2],10),r=e[3].length===3?Number.parseInt(e[3],10):Number.parseInt(e[3],10)*10,s=(a*60+A)*1e3+r,g=i.replace(h2,"").trim();o.push({timestamp:s,text:g})}}return{contentType:Fh.lyrics,timeStampFormat:Lh.milliseconds,text:o.map(i=>i.text).join(` -`),syncText:o}}var h2,Tre=ue(()=>{Jl();h2=/\[(\d{2}):(\d{2})\.(\d{2,3})]/});function Tqe(n){return n.length>2?`${n.slice(0,n.length-1).join(", ")} & ${n[n.length-1]}`:n.join(" & ")}var Nre,ql,_qe,uO,Rre=ue(()=>{Jl();Nre=qe(ct(),1);ure();Mre();zg();Ar();a2();Tre();ql=(0,Nre.default)("music-metadata:collector"),_qe=["matroska","APEv2","vorbis","ID3v2.4","ID3v2.3","ID3v2.2","exif","asf","iTunes","AIFF","ID3v1"],uO=class{constructor(t){this.format={tagTypes:[],trackInfo:[]},this.native={},this.common={track:{no:null,of:null},disk:{no:null,of:null},movementIndex:{no:null,of:null}},this.quality={warnings:[]},this.commonOrigin={},this.originPriority={},this.tagMapper=new CO,this.opts=t;let o=1;for(let i of _qe)this.originPriority[i]=o++;this.originPriority.artificial=500,this.originPriority.id3v1=600}hasAny(){return Object.keys(this.native).length>0}addStreamInfo(t){ql(`streamInfo: type=${t.type?s2[t.type]:"?"}, codec=${t.codecName}`),this.format.trackInfo.push(t)}setFormat(t,o){ql(`format: ${t} = ${o}`),this.format[t]=o,this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"format",id:t,value:o}})}setAudioOnly(){this.setFormat("hasAudio",!0),this.setFormat("hasVideo",!1)}async addTag(t,o,i){ql(`tag ${t}.${o} = ${i}`),this.native[t]||(this.format.tagTypes.push(t),this.native[t]=[]),this.native[t].push({id:o,value:i}),await this.toCommon(t,o,i)}addWarning(t){this.quality.warnings.push({message:t})}async postMap(t,o){switch(o.id){case"artist":return this.handleSingularArtistTag(t,o,"artist","artists");case"albumartist":return this.handleSingularArtistTag(t,o,"albumartist","albumartists");case"artists":return this.handlePluralArtistTag(t,o,"artist","artists");case"albumartists":return this.handlePluralArtistTag(t,o,"albumartist","albumartists");case"picture":return this.postFixPicture(o.value).then(i=>{i!==null&&(o.value=i,this.setGenericTag(t,o))});case"totaltracks":this.common.track.of=hr.toIntOrNull(o.value);return;case"totaldiscs":this.common.disk.of=hr.toIntOrNull(o.value);return;case"movementTotal":this.common.movementIndex.of=hr.toIntOrNull(o.value);return;case"track":case"disk":case"movementIndex":{let i=this.common[o.id].of;this.common[o.id]=hr.normalizeTrack(o.value),this.common[o.id].of=i??this.common[o.id].of;return}case"bpm":case"year":case"originalyear":o.value=Number.parseInt(o.value,10);break;case"date":{let i=Number.parseInt(o.value.substr(0,4),10);Number.isNaN(i)||(this.common.year=i);break}case"discogs_label_id":case"discogs_release_id":case"discogs_master_release_id":case"discogs_artist_id":case"discogs_votes":o.value=typeof o.value=="string"?Number.parseInt(o.value,10):o.value;break;case"replaygain_track_gain":case"replaygain_track_peak":case"replaygain_album_gain":case"replaygain_album_peak":o.value=hre(o.value);break;case"replaygain_track_minmax":o.value=o.value.split(",").map(i=>Number.parseInt(i,10));break;case"replaygain_undo":{let i=o.value.split(",").map(e=>Number.parseInt(e,10));o.value={leftChannel:i[0],rightChannel:i[1]};break}case"gapless":case"compilation":case"podcast":case"showMovement":o.value=o.value==="1"||o.value===1;break;case"isrc":{let i=this.common[o.id];if(i&&i.indexOf(o.value)!==-1)return;break}case"comment":typeof o.value=="string"&&(o.value={text:o.value}),o.value.descriptor==="iTunPGAP"&&this.setGenericTag(t,{id:"gapless",value:o.value.text==="1"});break;case"lyrics":typeof o.value=="string"&&(o.value=_re(o.value));break;default:}o.value!==null&&this.setGenericTag(t,o)}toCommonMetadata(){return{format:this.format,native:this.native,quality:this.quality,common:this.common}}handleSingularArtistTag(t,o,i,e){if(this.commonOrigin[i]===this.originPriority[t])return this.postMap("artificial",{id:e,value:o.value});this.common[e]||this.setGenericTag("artificial",{id:e,value:o.value}),this.setGenericTag(t,o)}handlePluralArtistTag(t,o,i,e){if((!this.common[i]||this.commonOrigin[i]===this.originPriority.artificial)&&(!this.common[e]||this.common[e].indexOf(o.value)===-1)){let a=(this.common[e]||[]).concat([o.value]),A=Tqe(a);this.setGenericTag("artificial",{id:i,value:A})}this.setGenericTag(t,o)}async postFixPicture(t){if(t.data&&t.data.length>0){if(!t.format){let o=await tf(Uint8Array.from(t.data));if(o)t.format=o.mime;else return null}switch(t.format=t.format.toLocaleLowerCase(),t.format){case"image/jpg":t.format="image/jpeg"}return t}return this.addWarning("Empty picture tag found"),null}async toCommon(t,o,i){let e={id:o,value:i},a=this.tagMapper.mapTag(t,e,this);a&&await this.postMap(t,a)}setGenericTag(t,o){ql(`common.${o.id} = ${o.value}`);let i=this.commonOrigin[o.id]||1e3,e=this.originPriority[t];if(Ere(o.id))if(e<=i)this.common[o.id]=o.value,this.commonOrigin[o.id]=e;else return ql(`Ignore native tag (singleton): ${t}.${o.id} = ${o.value}`);else if(e===i)!Cre(o.id)||this.common[o.id].indexOf(o.value)===-1?this.common[o.id].push(o.value):ql(`Ignore duplicate value: ${t}.${o.id} = ${o.value}`);else if(e{vt=class{constructor(t,o,i){this.metadata=t,this.tokenizer=o,this.options=i}}});var Nqe,rt,ui=ue(()=>{Fs();Ar();er();Nqe=/^[\x21-\x7e©][\x20-\x7e\x00()]{3}/,rt={len:4,get:(n,t)=>{let o=br(n.subarray(t,t+rt.len),"latin1");if(!o.match(Nqe))throw new tn(`FourCC contains invalid characters: ${dre(o)} "${o}"`);return o},put:(n,t,o)=>{let i=Dte(o,"latin1");if(i.length!==4)throw new jl("Invalid length");return n.set(i,t),t+4}}});function vre(n){return{containsHeader:BO(n,31),containsFooter:BO(n,30),isHeader:BO(n,29),readOnly:BO(n,0),dataType:(n&6)>>1}}function BO(n,t){return(n&1<{DA();ui();of={text_utf8:0,binary:1,external_info:2,reserved:3},E2={len:52,get:(n,t)=>({ID:rt.get(n,t),version:Le.get(n,t+4)/1e3,descriptorBytes:Le.get(n,t+8),headerBytes:Le.get(n,t+12),seekTableBytes:Le.get(n,t+16),headerDataBytes:Le.get(n,t+20),apeFrameDataBytes:Le.get(n,t+24),apeFrameDataBytesHigh:Le.get(n,t+28),terminatingDataBytes:Le.get(n,t+32),fileMD5:new Ot(16).get(n,t+36)})},kre={len:24,get:(n,t)=>({compressionLevel:SA.get(n,t),formatFlags:SA.get(n,t+2),blocksPerFrame:Le.get(n,t+4),finalFrameBlocks:Le.get(n,t+8),totalFrames:Le.get(n,t+12),bitsPerSample:SA.get(n,t+16),channel:SA.get(n,t+18),sampleRate:Le.get(n,t+20)})},Vi={len:32,get:(n,t)=>({ID:new Ve(8,"ascii").get(n,t),version:Le.get(n,t+8),size:Le.get(n,t+12),fields:Le.get(n,t+16),flags:vre(Le.get(n,t+20))})},fO={len:8,get:(n,t)=>({size:Le.get(n,t),flags:vre(Le.get(n,t+4))})}});var Ure={};Fr(Ure,{APEv2Parser:()=>dI,ApeContentError:()=>Kh,tryParseApeHeader:()=>zl});function zl(n,t,o){return new dI(n,t,o).tryParseApeHeader()}var Lre,pI,Gre,Fre,Kh,dI,Vl=ue(()=>{Lre=qe(ct(),1);$o();DA();Ar();zi();Pre();er();Fs();pI=(0,Lre.default)("music-metadata:parser:APEv2"),Gre="APEv2",Fre="APETAGEX",Kh=class extends Qt("APEv2"){};dI=class n extends vt{constructor(){super(...arguments),this.ape={}}static calculateDuration(t){let o=t.totalFrames>1?t.blocksPerFrame*(t.totalFrames-1):0;return o+=t.finalFrameBlocks,o/t.sampleRate}static async findApeFooterOffset(t,o){let i=new Uint8Array(Vi.len),e=t.position;if(o<=Vi.len){pI(`Offset is too small to read APE footer: offset=${o}`);return}if(o>Vi.len){await t.readBuffer(i,{position:o-Vi.len}),t.setPosition(e);let a=Vi.get(i,0);if(a.ID==="APETAGEX")return a.flags.isHeader?pI(`APE Header found at offset=${o-Vi.len}`):(pI(`APE Footer found at offset=${o-Vi.len}`),o-=a.size),{footer:a,offset:o}}}static parseTagFooter(t,o,i){let e=Vi.get(o,o.length-Vi.len);if(e.ID!==Fre)throw new Kh("Unexpected APEv2 Footer ID preamble value");return Co(o),new n(t,Co(o),i).parseTags(e)}async tryParseApeHeader(){if(this.tokenizer.fileInfo.size&&this.tokenizer.fileInfo.size-this.tokenizer.position0?this.parseDescriptorExpansion(o):this.parseHeader());return this.metadata.setAudioOnly(),await this.tokenizer.ignore(i.forwardBytes),this.tryParseApeHeader()}async parseTags(t){let o=new Uint8Array(256),i=t.size-Vi.len;pI(`Parse APE tags at offset=${this.tokenizer.position}, size=${i}`);for(let e=0;ethis.metadata.addTag(Gre,r,c)));break}case of.binary:if(this.options.skipCovers)await this.tokenizer.ignore(a.size);else{let s=new Uint8Array(a.size);await this.tokenizer.readBuffer(s),A=js(s);let g=br(s.subarray(0,A),"utf-8"),c=s.subarray(A+1);await this.metadata.addTag(Gre,r,{description:g,data:c})}break;case of.external_info:pI(`Ignore external info ${r}`),await this.tokenizer.ignore(a.size);break;case of.reserved:pI(`Ignore external info ${r}`),this.metadata.addWarning(`APEv2 header declares a reserved datatype for "${r}"`),await this.tokenizer.ignore(a.size);break}}}async parseDescriptorExpansion(t){return await this.tokenizer.ignore(t),this.parseHeader()}async parseHeader(){let t=await this.tokenizer.readToken(kre);if(this.metadata.setFormat("lossless",!0),this.metadata.setFormat("container","Monkey's Audio"),this.metadata.setFormat("bitsPerSample",t.bitsPerSample),this.metadata.setFormat("sampleRate",t.sampleRate),this.metadata.setFormat("numberOfChannels",t.channel),this.metadata.setFormat("duration",n.calculateDuration(t)),!this.ape.descriptor)throw new Kh("Missing APE descriptor");return{forwardBytes:this.ape.descriptor.seekTableBytes+this.ape.descriptor.headerDataBytes+this.ape.descriptor.apeFrameDataBytes+this.ape.descriptor.terminatingDataBytes}}}});async function Kre(n){if(n.fileInfo.size>=128){let t=new Uint8Array(3),o=n.position;return await n.readBuffer(t,{position:n.fileInfo.size-128}),n.setPosition(o),br(t,"latin1")==="TAG"}return!1}var Hre,QO,xh,yO,hI,mO,nf=ue(()=>{Hre=qe(ct(),1);DA();Ar();zi();Vl();Fs();QO=(0,Hre.default)("music-metadata:parser:ID3v1"),xh=["Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge","Hip-Hop","Jazz","Metal","New Age","Oldies","Other","Pop","R&B","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient","Trip-Hop","Vocal","Jazz+Funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound Clip","Gospel","Noise","Alt. Rock","Bass","Soul","Punk","Space","Meditative","Instrumental Pop","Instrumental Rock","Ethnic","Gothic","Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance","Dream","Southern Rock","Comedy","Cult","Gangsta Rap","Top 40","Christian Rap","Pop/Funk","Jungle","Native American","Cabaret","New Wave","Psychedelic","Rave","Showtunes","Trailer","Lo-Fi","Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical","Rock & Roll","Hard Rock","Folk","Folk/Rock","National Folk","Swing","Fast-Fusion","Bebob","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic Rock","Progressive Rock","Psychedelic Rock","Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber Music","Sonata","Symphony","Booty Bass","Primus","Porn Groove","Satire","Slow Jam","Club","Tango","Samba","Folklore","Ballad","Power Ballad","Rhythmic Soul","Freestyle","Duet","Punk Rock","Drum Solo","A Cappella","Euro-House","Dance Hall","Goa","Drum & Bass","Club-House","Hardcore","Terror","Indie","BritPop","Negerpunk","Polsk Punk","Beat","Christian Gangsta Rap","Heavy Metal","Black Metal","Crossover","Contemporary Christian","Christian Rock","Merengue","Salsa","Thrash Metal","Anime","JPop","Synthpop","Abstract","Art Rock","Baroque","Bhangra","Big Beat","Breakbeat","Chillout","Downtempo","Dub","EBM","Eclectic","Electro","Electroclash","Emo","Experimental","Garage","Global","IDM","Illbient","Industro-Goth","Jam Band","Krautrock","Leftfield","Lounge","Math Rock","New Romantic","Nu-Breakz","Post-Punk","Post-Rock","Psytrance","Shoegaze","Space Rock","Trop Rock","World Music","Neoclassical","Audiobook","Audio Theatre","Neue Deutsche Welle","Podcast","Indie Rock","G-Funk","Dubstep","Garage Rock","Psybient"],yO={len:128,get:(n,t)=>{let o=new hI(3).get(n,t);return o==="TAG"?{header:o,title:new hI(30).get(n,t+3),artist:new hI(30).get(n,t+33),album:new hI(30).get(n,t+63),year:new hI(4).get(n,t+93),comment:new hI(28).get(n,t+97),zeroByte:QA.get(n,t+127),track:QA.get(n,t+126),genre:QA.get(n,t+127)}:null}},hI=class{constructor(t){this.len=t,this.stringType=new Ve(t,"latin1")}get(t,o){let i=this.stringType.get(t,o);return i=iO(i),i=i.trim(),i.length>0?i:void 0}},mO=class n extends vt{constructor(t,o,i){super(t,o,i),this.apeHeader=i.apeHeader}static getGenre(t){if(tt){QO("Already consumed the last 128 bytes");return}let o=await this.tokenizer.readToken(yO,t);if(o){QO("ID3v1 header found at: pos=%s",this.tokenizer.fileInfo.size-yO.len);let i=["title","artist","album","comment","track","year"];for(let a of i)o[a]&&o[a]!==""&&await this.addTag(a,o[a]);let e=n.getGenre(o.genre);e&&await this.addTag("genre",e)}else QO("ID3v1 header not found at: pos=%s",this.tokenizer.fileInfo.size-yO.len)}async addTag(t,o){await this.metadata.addTag("ID3v1",t,o)}}});var C2,xre=ue(()=>{DA();C2={len:16,get:(n,t)=>{let o=xe.get(n,t+8),i=xe.get(n,t+12);return{startTime:xe.get(n,t),endTime:xe.get(n,t+4),startOffset:o===4294967295?void 0:o,endOffset:i===4294967295?void 0:i}}}});function sf(n){switch(n){case 2:return 6;case 3:case 4:return 10;default:throw Yre(n)}}function Rqe(n,t){return t===3?{status:{tag_alter_preservation:GA(n,0,7),file_alter_preservation:GA(n,0,6),read_only:GA(n,0,5)},format:{compression:GA(n,1,7),encryption:GA(n,1,6),grouping_identity:GA(n,1,5),unsynchronisation:!1,data_length_indicator:!1}}:{status:{tag_alter_preservation:GA(n,0,6),file_alter_preservation:GA(n,0,5),read_only:GA(n,0,4)},format:{grouping_identity:GA(n,1,6),compression:GA(n,1,3),encryption:GA(n,1,2),unsynchronisation:GA(n,1,1),data_length_indicator:GA(n,1,0)}}}function gf(n,t,o){switch(t){case 2:return kqe(n,t,o);case 3:case 4:return vqe(n,t,o);default:throw Yre(t)}}function kqe(n,t,o){let i={id:br(n.subarray(0,3),"ascii"),length:Pr.get(n,3)};return i.id.match(/^[A-Z0-9]{3}$/)||o.addWarning(`Invalid ID3v2.${t} frame-header-ID: ${i.id}`),i}function vqe(n,t,o){let i={id:br(n.subarray(0,4),"ascii"),length:(t===4?l2:xe).get(n,4),flags:Rqe(n.subarray(8,10),t)};return i.id.match(/^[A-Z0-9]{4}$/)||o.addWarning(`Invalid ID3v2.${t} frame-header-ID: ${i.id}`),i}function Yre(n){throw new EI(`Unexpected majorVer: ${n}`)}var u2=ue(()=>{DA();Ar();lI();Fs();B2()});function Pqe(n){let t=[],o,i="";for(let e of n)if(typeof o=="string")if(e==="("&&o==="")i+="(",o=void 0;else if(e===")"){i!==""&&(t.push(i),i="");let a=jre(o);a&&t.push(a),o=void 0}else o+=e;else e==="("?o="":i+=e;return i&&(t.length===0&&i.match(/^\d*$/)&&(i=jre(i)),i&&t.push(i)),t}function jre(n){if(n==="RX")return"Remix";if(n==="CR")return"Cover";if(n.match(/^\d*$/))return xh[Number.parseInt(n,10)]}function Gqe(n){throw new EI(`Unexpected majorVer: ${n}`)}var Jre,SO,on,f2,wO,EI,B2=ue(()=>{Jre=qe(ct(),1);DA();Ar();lI();nf();er();Ar();xre();u2();SO=(0,Jre.default)("music-metadata:id3v2:frame-parser"),on="latin1",f2={encoding:on,bom:!1};wO=class n{constructor(t,o){this.major=t,this.warningCollector=o}readData(t,o,i){if(t.length===0){this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${o}`);return}let{encoding:e,bom:a}=Uh.get(t,0),A=t.length,r=0,s=[],g=n.getNullTerminatorLength(e),c;switch(SO(`Parsing tag type=${o}, encoding=${e}, bom=${a}`),o!=="TXXX"&&o[0]==="T"?"T*":o){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let I;try{I=n.trimNullPadding(da(t.subarray(1),e))}catch(d){if(d instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${o} header has invalid string value: ${d.message}`);break}throw d}switch(o){case"TMCL":case"TIPL":case"IPLS":s=n.functionList(this.splitValue(o,I));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":s=I;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":s=this.splitValue(o,I);break;case"TCO":case"TCON":s=this.splitValue(o,I).map(d=>Pqe(d)).reduce((d,B)=>d.concat(B),[]);break;case"PCS":case"PCST":s=this.major>=4?this.splitValue(o,I):[I],s=Array.isArray(s)&&s[0]===""?1:0;break;default:s=this.major>=4?this.splitValue(o,I):[I]}break}case"TXXX":{let I=n.readIdentifierAndData(t.subarray(1),e);s={description:I.id,text:this.splitValue(o,da(I.data,e).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(i){let I={};switch(t=t.subarray(1),this.major){case 2:I.format=da(t.subarray(0,3),"latin1"),t=t.subarray(3);break;case 3:case 4:c=js(t,on),I.format=da(t.subarray(0,c),on),t=t.subarray(c+1);break;default:throw Gqe(this.major)}I.format=n.fixPictureMimeType(I.format),I.type=Gh[t[0]],t=t.subarray(1),c=js(t,e),I.description=da(t.subarray(0,c),e),t=t.subarray(c+g),I.data=t,s=I}break;case"CNT":case"PCNT":s=I2(t);break;case"SYLT":{let I=d2.get(t,0);t=t.subarray(d2.len);let d={descriptor:"",language:I.language,contentType:I.contentType,timeStampFormat:I.timeStampFormat,syncText:[]},B=!1;for(;t.length>0;){let f=n.readNullTerminatedString(t,I.encoding);if(t=t.subarray(f.len),B){let Q=xe.get(t,0);t=t.subarray(xe.len),d.syncText.push({text:f.text,timestamp:Q})}else d.descriptor=f.text,B=!0}s=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let I=oO.get(t,r);r+=oO.len;let d=n.readNullTerminatedString(t.subarray(r),I.encoding);r+=d.len;let B=n.readNullTerminatedString(t.subarray(r),I.encoding);s={language:I.language,descriptor:d.text,text:B.text};break}case"UFID":{let I=n.readIdentifierAndData(t,on);s={owner_identifier:I.id,identifier:I.data};break}case"PRIV":{let I=n.readIdentifierAndData(t,on);s={owner_identifier:I.id,data:I.data};break}case"POPM":{t=t.subarray(r);let I=n.readNullTerminatedString(t,f2),d=I.text;if(t=t.subarray(I.len),t.length===0){this.warningCollector.addWarning(`id3v2.${this.major} type=${o} POPM frame missing rating byte`),s={email:d,rating:0,counter:void 0};break}let B=QA.get(t,0),f=t.subarray(QA.len);s={email:d,rating:B,counter:f.length>0?I2(f):void 0};break}case"GEOB":{let I=Uh.get(t,0);t=t.subarray(1);let d=n.readNullTerminatedString(t,f2),B=d.text;t=t.subarray(d.len);let f=n.readNullTerminatedString(t,I),Q=f.text;t=t.subarray(f.len);let y=n.readNullTerminatedString(t,I),m=y.text;t=t.subarray(y.len),s={type:B,filename:Q,description:m,data:t};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":s=n.readNullTerminatedString(t,f2).text;break;case"WXXX":{let I=Uh.get(t,0);t=t.subarray(1);let d=n.readNullTerminatedString(t,I),B=d.text;t=t.subarray(d.len),s={description:B,url:n.trimNullPadding(da(t,on))};break}case"WFD":case"WFED":{let I=Uh.get(t,0);t=t.subarray(1),s=n.readNullTerminatedString(t,I).text;break}case"MCDI":{s=t.subarray(0,A);break}case"CHAP":{SO("Reading CHAP"),c=js(t,on);let I={label:da(t.subarray(0,c),on),info:C2.get(t,c+1),frames:new Map};for(r+=c+1+C2.len;r=a.length)return{text:da(t,o.encoding),len:e};let r=t.subarray(0,i+A);return{text:da(r,o.encoding),len:i+A+n.getNullTerminatorLength(o.encoding)}}static fixPictureMimeType(t){switch(t=t.toLocaleLowerCase(),t){case"jpg":return"image/jpeg";case"png":return"image/png"}return t}static functionList(t){let o={};for(let i=0;i+11?this.warningCollector.addWarning(`ID3v2.${this.major} ${t} uses non standard null-separator.`):i=o.split(/\//g)):i=o.split(/\x00/g),n.trimArray(i)}static trimArray(t){return t.map(o=>n.trimNullPadding(o).trim())}static trimNullPadding(t){let o=t.length;for(;o>0&&t.charCodeAt(o-1)===0;)o--;return o===t.length?t:t.slice(0,o)}static readIdentifierAndData(t,o){let i=n.readNullTerminatedString(t,{encoding:o,bom:!1});return{id:i.text,data:t.subarray(i.len)}}static getNullTerminatorLength(t){return t.startsWith("utf-16")?2:1}},EI=class extends Qt("id3v2"){}});function Fqe(n){throw new EI(`Unexpected majorVer: ${n}`)}var nn,Yh=ue(()=>{DA();B2();lI();u2();nn=class n{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(t){let o=0,i=0;for(;o0?this.parseExtendedHeaderData(o,t.size):this.parseId3Data(this.id3Header.size-t.size)}async parseExtendedHeaderData(t,o){return await this.tokenizer.ignore(t),this.parseId3Data(this.id3Header.size-o)}async parseId3Data(t){let o=await this.tokenizer.readToken(new Ot(t));for(let i of this.parseMetadata(o))switch(i.id){case"TXXX":i.value&&await this.handleTag(i,i.value.text,()=>i.value.description);break;default:await(Array.isArray(i.value)?Promise.all(i.value.map(e=>this.addTag(i.id,e))):this.addTag(i.id,i.value))}}async handleTag(t,o,i,e=a=>a){await Promise.all(o.map(a=>this.addTag(n.makeDescriptionTagName(t.id,i(a)),e(a))))}async addTag(t,o){await this.metadata.addTag(this.headerType,t,o)}parseMetadata(t){let o=0,i=[];for(;o!==t.length;){let e=sf(this.id3Header.version.major);if(o+e>t.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let a=t.subarray(o,o+e);o+=e;let A=gf(a,this.id3Header.version.major,this.metadata),r=t.subarray(o,o+A.length);o+=A.length;let s=n.readFrameData(r,A,this.id3Header.version.major,!this.options.skipCovers,this.metadata);s&&i.push({id:A.id,value:s})}return i}static mapId3v2Chapters(t){if(!t)return;let o=t.filter(g=>g.id==="CHAP");if(!o?.length)return;let e=t.filter(g=>g.id==="CTOC")?.find(g=>g.value.flags?.topLevel),a=new Map;for(let g of o)a.set(g.value.label,g.value);let A=e?.value.childElementIds,r=[],s=A??[...a.keys()];for(let g of s){let c=a.get(g);if(!c)continue;let I=c.frames,d=I.get("TIT2");d&&r.push({id:g,title:d,url:I.get("WXXX"),start:c.info.startTime/1e3,end:c.info.endTime/1e3,image:I.get("APIC")})}return A||r.sort((g,c)=>g.start-c.start),r.length?r:void 0}}});var qre,Q2,Js,cf=ue(()=>{$o();qre=qe(ct(),1);lI();Yh();nf();zi();Q2=(0,qre.default)("music-metadata:parser:ID3"),Js=class extends vt{constructor(){super(...arguments),this.id3parser=new nn}static async startsWithID3v2Header(t){return(await t.peekToken(rf)).fileIdentifier==="ID3"}async parse(){try{await this.parseID3v2()}catch(t){if(t instanceof kA)Q2("End-of-stream");else throw t}}finalize(){}async parseID3v2(){await this.tryReadId3v2Headers(),Q2("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny()?this.finalize():(await new mO(this.metadata,this.tokenizer,this.options).parse(),this.finalize())}async tryReadId3v2Headers(){if((await this.tokenizer.peekToken(rf)).fileIdentifier==="ID3")return Q2("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}});var y2,zre=ue(()=>{Ar();y2={len:2,get:(n,t)=>{let o=ZA(n,t,0,3),i=ZA(n,t,6,1),e=ZA(n,t,7,9)/10;if(o>0)return{type:ZA(n,t,0,3),origin:ZA(n,t,3,3),adjustment:i?-e:e}}}});var Vre,Wre=ue(()=>{DA();Ar();zre();Vre={len:27,get:(n,t)=>{let o=xe.get(n,t+2);return{revision:ZA(n,t,0,4),vbr_method:ZA(n,t,4,4),lowpass_filter:100*QA.get(n,t+1),track_peak:o===0?null:o/2**23,track_gain:y2.get(n,6),album_gain:y2.get(n,8),music_length:xe.get(n,t+20),music_crc:QA.get(n,t+24),header_crc:LA.get(n,t+24)}}}});async function Zre(n){let t=await n.readToken(Lqe),o={numFrames:null,streamSize:null,vbrScale:null};if(t.frames&&(o.numFrames=await n.readToken(xe)),t.bytes&&(o.streamSize=await n.readToken(xe)),t.toc&&(o.toc=new Uint8Array(100),await n.readBuffer(o.toc)),t.vbrScale&&(o.vbrScale=await n.readToken(xe)),await n.peekToken(new Ve(4,"ascii"))==="LAME"){await n.ignore(4),o.lame={version:await n.readToken(new Ve(5,"ascii"))};let e=o.lame.version.match(/\d+.\d+/g);if(e!==null){let A=e[0].split(".").map(r=>Number.parseInt(r,10));A[0]>=3&&A[1]>=90&&(o.lame.extended=await n.readToken(Vre))}}return o}var m2,DO,Lqe,Xre=ue(()=>{DA();Ar();Wre();m2=new Ve(4,"ascii"),DO=new Ve(6,"ascii"),Lqe={len:4,get:(n,t)=>({frames:Na(n,t,31),bytes:Na(n,t,30),toc:Na(n,t,29),vbrScale:Na(n,t,28)})}});var rae={};Fr(rae,{MpegContentError:()=>Wl,MpegParser:()=>S2});function Hqe(n){return`V${Math.floor((100-n)/10)}`}var tae,uo,Wl,$re,eae,Uqe,Bo,Aae,S2,aae=ue(()=>{DA();$o();tae=qe(ct(),1);Ar();cf();Xre();er();uo=(0,tae.default)("music-metadata:parser:mpeg"),Wl=class extends Qt("MPEG"){},$re=1024,eae={AudioObjectTypes:["AAC Main","AAC LC","AAC SSR","AAC LTP"],SamplingFrequencies:[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,null,null,null]},Uqe=[void 0,["front-center"],["front-left","front-right"],["front-center","front-left","front-right"],["front-center","front-left","front-right","back-center"],["front-center","front-left","front-right","back-left","back-right"],["front-center","front-left","front-right","back-left","back-right","LFE-channel"],["front-center","front-left","front-right","side-left","side-right","back-left","back-right","LFE-channel"]],Bo=class n{constructor(t,o){this.bitrateIndex=null,this.sampRateFreqIndex=null,this.padding=null,this.privateBit=null,this.channelModeIndex=null,this.modeExtension=null,this.isOriginalMedia=null,this.version=null,this.bitrate=null,this.samplingRate=null,this.frameLength=0,this.versionIndex=ZA(t,o+1,3,2),this.layer=n.LayerDescription[ZA(t,o+1,5,2)],this.versionIndex>1&&this.layer===0?this.parseAdtsHeader(t,o):this.parseMpegHeader(t,o),this.isProtectedByCRC=!Na(t,o+1,7)}calcDuration(t){return this.samplingRate==null?null:t*this.calcSamplesPerFrame()/this.samplingRate}calcSamplesPerFrame(){return n.samplesInFrameTable[this.version===1?0:1][this.layer]}calculateSideInfoLength(){if(this.layer!==3)return 2;if(this.channelModeIndex===3){if(this.version===1)return 17;if(this.version===2||this.version===2.5)return 9}else{if(this.version===1)return 32;if(this.version===2||this.version===2.5)return 17}return null}calcSlotSize(){return[null,4,1,1][this.layer]}parseMpegHeader(t,o){this.container="MPEG",this.bitrateIndex=ZA(t,o+2,0,4),this.sampRateFreqIndex=ZA(t,o+2,4,2),this.padding=Na(t,o+2,6),this.privateBit=Na(t,o+2,7),this.channelModeIndex=ZA(t,o+3,0,2),this.modeExtension=ZA(t,o+3,2,2),this.isCopyrighted=Na(t,o+3,4),this.isOriginalMedia=Na(t,o+3,5),this.emphasis=ZA(t,o+3,7,2),this.version=n.VersionID[this.versionIndex],this.channelMode=n.ChannelMode[this.channelModeIndex],this.codec=`MPEG ${this.version} Layer ${this.layer}`;let i=this.calcBitrate();if(!i)throw new Wl("Cannot determine bit-rate");if(this.bitrate=i*1e3,this.samplingRate=this.calcSamplingRate(),this.samplingRate==null)throw new Wl("Cannot determine sampling-rate")}parseAdtsHeader(t,o){uo("layer=0 => ADTS"),this.version=this.versionIndex===2?4:2,this.container=`ADTS/MPEG-${this.version}`;let i=ZA(t,o+2,0,2);this.codec="AAC",this.codecProfile=eae.AudioObjectTypes[i],uo(`MPEG-4 audio-codec=${this.codec}`);let e=ZA(t,o+2,2,4);this.samplingRate=eae.SamplingFrequencies[e],uo(`sampling-rate=${this.samplingRate}`);let a=ZA(t,o+2,7,3);this.mp4ChannelConfig=Uqe[a],uo(`channel-config=${this.mp4ChannelConfig?this.mp4ChannelConfig.join("+"):"?"}`),this.frameLength=ZA(t,o+3,6,2)<<11}calcBitrate(){if(this.bitrateIndex===0||this.bitrateIndex===15)return null;if(this.version&&this.bitrateIndex){let t=10*Math.floor(this.version)+this.layer;return n.bitrate_index[this.bitrateIndex][t]}return null}calcSamplingRate(){return this.sampRateFreqIndex===3||this.version===null||this.sampRateFreqIndex==null?null:n.sampling_rate_freq_index[this.version][this.sampRateFreqIndex]}};Bo.SyncByte1=255;Bo.SyncByte2=224;Bo.VersionID=[2.5,null,2,1];Bo.LayerDescription=[0,3,2,1];Bo.ChannelMode=["stereo","joint_stereo","dual_channel","mono"];Bo.bitrate_index={1:{11:32,12:32,13:32,21:32,22:8,23:8},2:{11:64,12:48,13:40,21:48,22:16,23:16},3:{11:96,12:56,13:48,21:56,22:24,23:24},4:{11:128,12:64,13:56,21:64,22:32,23:32},5:{11:160,12:80,13:64,21:80,22:40,23:40},6:{11:192,12:96,13:80,21:96,22:48,23:48},7:{11:224,12:112,13:96,21:112,22:56,23:56},8:{11:256,12:128,13:112,21:128,22:64,23:64},9:{11:288,12:160,13:128,21:144,22:80,23:80},10:{11:320,12:192,13:160,21:160,22:96,23:96},11:{11:352,12:224,13:192,21:176,22:112,23:112},12:{11:384,12:256,13:224,21:192,22:128,23:128},13:{11:416,12:320,13:256,21:224,22:144,23:144},14:{11:448,12:384,13:320,21:256,22:160,23:160}};Bo.sampling_rate_freq_index={1:{0:44100,1:48e3,2:32e3},2:{0:22050,1:24e3,2:16e3},2.5:{0:11025,1:12e3,2:8e3}};Bo.samplesInFrameTable=[[0,384,1152,1152],[0,384,1152,576]];Aae={len:4,get:(n,t)=>new Bo(n,t)};S2=class extends Js{constructor(){super(...arguments),this.frameCount=0,this.syncFrameCount=-1,this.totalDataLength=0,this.bitrates=[],this.offset=0,this.frame_size=0,this.calculateEofDuration=!1,this.samplesPerFrame=null,this.buf_frame_header=new Uint8Array(4),this.mpegOffset=null,this.syncPeek={buf:new Uint8Array($re),len:0}}async postId3v2Parse(){this.metadata.setFormat("lossless",!1),this.metadata.setAudioOnly();try{let t=!1;for(;!t;)await this.sync(),t=await this.parseCommonMpegHeader()}catch(t){if(t instanceof kA){if(uo("End-of-stream"),this.calculateEofDuration&&this.samplesPerFrame!==null){let o=this.frameCount*this.samplesPerFrame;if(this.metadata.setFormat("numberOfSamples",o),this.metadata.format.sampleRate){let i=o/this.metadata.format.sampleRate;uo(`Calculate duration at EOF: ${i} sec.`,i),this.metadata.setFormat("duration",i)}}}else throw t}}finalize(){let t=this.metadata.format,o=!!this.metadata.native.ID3v1;if(this.mpegOffset!==null){if(t.duration&&this.tokenizer.fileInfo.size){let i=this.tokenizer.fileInfo.size-this.mpegOffset-(o?128:0);t.codecProfile&&t.codecProfile[0]==="V"&&this.metadata.setFormat("bitrate",i*8/t.duration)}if(this.tokenizer.fileInfo.size&&t.codecProfile==="CBR"){let i=this.tokenizer.fileInfo.size-this.mpegOffset-(o?128:0);if(this.frame_size!==null&&this.samplesPerFrame!==null){let e=Math.round(i/this.frame_size)*this.samplesPerFrame;if(this.metadata.setFormat("numberOfSamples",e),t.sampleRate&&!t.duration){let a=e/t.sampleRate;uo("Calculate CBR duration based on file size: %s",a),this.metadata.setFormat("duration",a)}}}}}async sync(){let t=!1;for(;;){let o=0;if(this.syncPeek.len=await this.tokenizer.peekBuffer(this.syncPeek.buf,{length:$re,mayBeLess:!0}),this.syncPeek.len<=163)throw new kA;for(;;){if(t&&(this.syncPeek.buf[o]&224)===224){this.buf_frame_header[0]=Bo.SyncByte1,this.buf_frame_header[1]=this.syncPeek.buf[o],await this.tokenizer.ignore(o),uo(`Sync at offset=${this.tokenizer.position-1}, frameCount=${this.frameCount}`),this.syncFrameCount===this.frameCount&&(uo(`Re-synced MPEG stream, frameCount=${this.frameCount}`),this.frameCount=0,this.frame_size=0),this.syncFrameCount=this.frameCount;return}if(t=!1,o=this.syncPeek.buf.indexOf(Bo.SyncByte1,o),o===-1){if(this.syncPeek.len=2&&t.layer===0?this.parseAdts(t):this.parseAudioFrameHeader(t)}async parseAudioFrameHeader(t){this.metadata.setFormat("numberOfChannels",t.channelMode==="mono"?1:2),this.metadata.setFormat("bitrate",t.bitrate),this.frameCount<20*1e4&&uo("offset=%s MP%s bitrate=%s sample-rate=%s",this.tokenizer.position-4,t.layer,t.bitrate,t.samplingRate);let o=t.calcSlotSize();if(o===null)throw new Wl("invalid slot_size");let i=t.calcSamplesPerFrame();uo(`samples_per_frame=${i}`);let e=i/8;if(t.bitrate!==null&&t.samplingRate!=null){let a=e*t.bitrate/t.samplingRate+(t.padding?o:0);this.frame_size=Math.floor(a)}if(this.audioFrameHeader=t,t.bitrate!==null&&this.bitrates.push(t.bitrate),this.frameCount===1)return this.offset=Aae.len,await this.skipSideInformation(),!1;if(this.frameCount===4){if(this.areAllSame(this.bitrates)){if(this.samplesPerFrame=i,this.metadata.setFormat("codecProfile","CBR"),this.tokenizer.fileInfo.size)return!0}else if(this.metadata.format.duration)return!0;if(!this.options.duration)return!0}return this.options.duration&&this.frameCount===4&&(this.samplesPerFrame=i,this.calculateEofDuration=!0),this.offset=4,t.isProtectedByCRC?(await this.parseCrc(),!1):(await this.skipSideInformation(),!1)}async parseAdts(t){let o=new Uint8Array(3);if(await this.tokenizer.readBuffer(o),t.frameLength+=ZA(o,0,0,11),this.totalDataLength+=t.frameLength,this.samplesPerFrame=1024,t.samplingRate!==null){let i=t.samplingRate/this.samplesPerFrame,a=8*(this.frameCount===0?0:this.totalDataLength/this.frameCount)*i+.5;this.metadata.setFormat("bitrate",a),uo(`frame-count=${this.frameCount}, size=${t.frameLength} bytes, bit-rate=${a}`)}if(await this.tokenizer.ignore(t.frameLength>7?t.frameLength-7:1),this.frameCount===3)if(this.metadata.setFormat("codecProfile",t.codecProfile),t.mp4ChannelConfig&&this.metadata.setFormat("numberOfChannels",t.mp4ChannelConfig.length),this.options.duration)this.calculateEofDuration=!0;else return!0;return!1}async parseCrc(){return await this.tokenizer.ignore(en.len),this.offset+=en.len,this.skipSideInformation()}async skipSideInformation(){if(this.audioFrameHeader){let t=this.audioFrameHeader.calculateSideInfoLength();if(t!==null){await this.tokenizer.readToken(new Ot(t)),this.offset+=t,await this.readXtraInfoHeader();return}}}async readXtraInfoHeader(){let t=await this.tokenizer.readToken(m2);switch(this.offset+=m2.len,t){case"Info":return this.metadata.setFormat("codecProfile","CBR"),this.readXingInfoHeader();case"Xing":{let i=await this.readXingInfoHeader();if(i.vbrScale!==null){let e=Hqe(i.vbrScale);this.metadata.setFormat("codecProfile",e)}return null}case"Xtra":break;case"LAME":{let i=await this.tokenizer.readToken(DO);if(this.frame_size!==null&&this.frame_size>=this.offset+DO.len)return this.offset+=DO.len,this.metadata.setFormat("tool",`LAME ${i}`),await this.skipFrameData(this.frame_size-this.offset),null;this.metadata.addWarning("Corrupt LAME header");break}}let o=this.frame_size-this.offset;return o<0?this.metadata.addWarning(`Frame ${this.frameCount}corrupt: negative frameDataLeft`):await this.skipFrameData(o),null}async readXingInfoHeader(){let t=this.tokenizer.position,o=await Zre(this.tokenizer);if(this.offset+=this.tokenizer.position-t,o.lame&&(this.metadata.setFormat("tool",`LAME ${rn(o.lame.version)}`),o.lame.extended&&(this.metadata.setFormat("trackPeakLevel",o.lame.extended.track_peak),o.lame.extended.track_gain&&this.metadata.setFormat("trackGain",o.lame.extended.track_gain.adjustment),o.lame.extended.album_gain&&this.metadata.setFormat("albumGain",o.lame.extended.album_gain.adjustment),this.metadata.setFormat("duration",o.lame.extended.music_length/1e3))),o.streamSize&&this.audioFrameHeader&&o.numFrames!==null){let e=this.audioFrameHeader.calcDuration(o.numFrames);return this.metadata.setFormat("duration",e),uo("Get duration from Xing header: %s",this.metadata.format.duration),o}let i=this.frame_size-this.offset;return await this.skipFrameData(i),o}async skipFrameData(t){if(t<0)throw new Wl("frame-data-left cannot be negative");await this.tokenizer.ignore(t)}areAllSame(t){let o=t[0];return t.every(i=>i===o)}}});var iae,oae=ue(()=>{iae={parserType:"mpeg",extensions:[".mp2",".mp3",".m2a",".aac","aacp"],mimeTypes:["audio/mpeg","audio/mp3","audio/aacs","audio/aacp"],async load(){return(await Promise.resolve().then(()=>(aae(),rae))).MpegParser}}});var nae,sae=ue(()=>{nae={parserType:"apev2",extensions:[".ape"],mimeTypes:["audio/ape","audio/monkeys-audio"],async load(){return(await Promise.resolve().then(()=>(Vl(),Ure))).APEv2Parser}}});function w2(n){let t=n.trim();if(t.length!==36||t[8]!=="-"||t[13]!=="-"||t[18]!=="-"||t[23]!=="-")throw new Error(`Invalid GUID format: ${n}`);let o,i=new Uint8Array(16);o=parseInt(t.slice(0,8),16),i[0]=o&255,i[1]=o>>>8&255,i[2]=o>>>16&255,i[3]=o>>>24&255,o=parseInt(t.slice(9,13),16),i[4]=o&255,i[5]=o>>>8&255,o=parseInt(t.slice(14,18),16),i[6]=o&255,i[7]=o>>>8&255,o=parseInt(t.slice(19,23),16),i[8]=o>>>8&255,i[9]=o&255,o=parseInt(t.slice(24,32),16),i[10]=o>>>24&255,i[11]=o>>>16&255,i[12]=o>>>8&255,i[13]=o&255,o=parseInt(t.slice(32,36),16),i[14]=o>>>8&255,i[15]=o&255;for(let e=0;e<16;e++)if(!Number.isFinite(i[e]))throw new Error(`Invalid GUID format: ${n}`);if(!/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(t))throw new Error(`Invalid GUID format: ${n}`);return i}var OO,gae=ue(()=>{OO=class n{constructor(t){if(t.length!==16)throw new Error("GUID must be exactly 16 bytes");this.bytes=t}static fromString(t){return new n(w2(t))}toString(){let t=this.bytes,o=s=>s.toString(16).padStart(2,"0"),i=o(t[3])+o(t[2])+o(t[1])+o(t[0]),e=o(t[5])+o(t[4]),a=o(t[7])+o(t[6]),A=o(t[8])+o(t[9]),r=o(t[10])+o(t[11])+o(t[12])+o(t[13])+o(t[14])+o(t[15]);return`${i}-${e}-${a}-${A}-${r}`.toUpperCase()}equals(t,o=0){if(o<0||t.length-o<16)return!1;let i=this.bytes;for(let e=0;e<16;e++)if(t[o+e]!==i[e])return!1;return!0}}});var Ye,tr,D2=ue(()=>{gae();Ye=class n{static fromBin(t,o=0){return new n(n.decode(t,o))}static decode(t,o=0){return new OO(t.subarray(o,o+16)).toString()}static decodeMediaType(t){switch(t.str){case n.AudioMedia.str:return"audio";case n.VideoMedia.str:return"video";case n.CommandMedia.str:return"command";case n.Degradable_JPEG_Media.str:return"degradable-jpeg";case n.FileTransferMedia.str:return"file-transfer";case n.BinaryMedia.str:return"binary"}}static encode(t){return w2(t)}constructor(t){this.str=t}equals(t){return this.str===t.str}toBin(){return n.encode(this.str)}};Ye.HeaderObject=new Ye("75B22630-668E-11CF-A6D9-00AA0062CE6C");Ye.DataObject=new Ye("75B22636-668E-11CF-A6D9-00AA0062CE6C");Ye.SimpleIndexObject=new Ye("33000890-E5B1-11CF-89F4-00A0C90349CB");Ye.IndexObject=new Ye("D6E229D3-35DA-11D1-9034-00A0C90349BE");Ye.MediaObjectIndexObject=new Ye("FEB103F8-12AD-4C64-840F-2A1D2F7AD48C");Ye.TimecodeIndexObject=new Ye("3CB73FD0-0C4A-4803-953D-EDF7B6228F0C");Ye.FilePropertiesObject=new Ye("8CABDCA1-A947-11CF-8EE4-00C00C205365");Ye.StreamPropertiesObject=new Ye("B7DC0791-A9B7-11CF-8EE6-00C00C205365");Ye.HeaderExtensionObject=new Ye("5FBF03B5-A92E-11CF-8EE3-00C00C205365");Ye.CodecListObject=new Ye("86D15240-311D-11D0-A3A4-00A0C90348F6");Ye.ScriptCommandObject=new Ye("1EFB1A30-0B62-11D0-A39B-00A0C90348F6");Ye.MarkerObject=new Ye("F487CD01-A951-11CF-8EE6-00C00C205365");Ye.BitrateMutualExclusionObject=new Ye("D6E229DC-35DA-11D1-9034-00A0C90349BE");Ye.ErrorCorrectionObject=new Ye("75B22635-668E-11CF-A6D9-00AA0062CE6C");Ye.ContentDescriptionObject=new Ye("75B22633-668E-11CF-A6D9-00AA0062CE6C");Ye.ExtendedContentDescriptionObject=new Ye("D2D0A440-E307-11D2-97F0-00A0C95EA850");Ye.ContentBrandingObject=new Ye("2211B3FA-BD23-11D2-B4B7-00A0C955FC6E");Ye.StreamBitratePropertiesObject=new Ye("7BF875CE-468D-11D1-8D82-006097C9A2B2");Ye.ContentEncryptionObject=new Ye("2211B3FB-BD23-11D2-B4B7-00A0C955FC6E");Ye.ExtendedContentEncryptionObject=new Ye("298AE614-2622-4C17-B935-DAE07EE9289C");Ye.DigitalSignatureObject=new Ye("2211B3FC-BD23-11D2-B4B7-00A0C955FC6E");Ye.PaddingObject=new Ye("1806D474-CADF-4509-A4BA-9AABCB96AAE8");Ye.ExtendedStreamPropertiesObject=new Ye("14E6A5CB-C672-4332-8399-A96952065B5A");Ye.AdvancedMutualExclusionObject=new Ye("A08649CF-4775-4670-8A16-6E35357566CD");Ye.GroupMutualExclusionObject=new Ye("D1465A40-5A79-4338-B71B-E36B8FD6C249");Ye.StreamPrioritizationObject=new Ye("D4FED15B-88D3-454F-81F0-ED5C45999E24");Ye.BandwidthSharingObject=new Ye("A69609E6-517B-11D2-B6AF-00C04FD908E9");Ye.LanguageListObject=new Ye("7C4346A9-EFE0-4BFC-B229-393EDE415C85");Ye.MetadataObject=new Ye("C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA");Ye.MetadataLibraryObject=new Ye("44231C94-9498-49D1-A141-1D134E457054");Ye.IndexParametersObject=new Ye("D6E229DF-35DA-11D1-9034-00A0C90349BE");Ye.MediaObjectIndexParametersObject=new Ye("6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7");Ye.TimecodeIndexParametersObject=new Ye("F55E496D-9797-4B5D-8C8B-604DFE9BFB24");Ye.CompatibilityObject=new Ye("26F18B5D-4584-47EC-9F5F-0E651F0452C9");Ye.AdvancedContentEncryptionObject=new Ye("43058533-6981-49E6-9B74-AD12CB86D58C");Ye.AudioMedia=new Ye("F8699E40-5B4D-11CF-A8FD-00805F5C442B");Ye.VideoMedia=new Ye("BC19EFC0-5B4D-11CF-A8FD-00805F5C442B");Ye.CommandMedia=new Ye("59DACFC0-59E6-11D0-A3AC-00A0C90348F6");Ye.JFIF_Media=new Ye("B61BE100-5B4E-11CF-A8FD-00805F5C442B");Ye.Degradable_JPEG_Media=new Ye("35907DE0-E415-11CF-A917-00805F5C442B");Ye.FileTransferMedia=new Ye("91BD222C-F21C-497A-8B6D-5AA86BFC0185");Ye.BinaryMedia=new Ye("3AFB65E2-47EF-40F2-AC2C-70A90D71D343");Ye.ASF_Index_Placeholder_Object=new Ye("D9AADE20-7C17-4F9C-BC28-8555DD98E2A2");tr=Ye});function Iae(n){return Kqe[n]}function If(n){return rn(da(n,"utf-16le"))}function cae(n){return new Uint8Array(n)}function xqe(n,t=0){return lae(n,t)===1}function Yqe(n,t=0){return Le.get(n,t)}function jqe(n,t=0){return Gr.get(n,t)}function lae(n,t=0){return SA.get(n,t)}var Kqe,pae=ue(()=>{DA();Ar();Kqe=[If,cae,xqe,Yqe,jqe,lae,cae]});async function dae(n){let t=await n.readNumber(SA);return(await n.readToken(new Ve(t*2,"utf-16le"))).replace("\0","")}async function Eae(n){let t=await n.readToken(Jqe),o=[];for(let i=0;i{DA();Ar();D2();pae();lI();er();jh=class extends Qt("ASF"){},hae={len:30,get:(n,t)=>({objectId:tr.fromBin(n,t),objectSize:Number(Gr.get(n,t+16)),numberOfHeaderObjects:Le.get(n,t+24)})},CI={len:24,get:(n,t)=>({objectId:tr.fromBin(n,t),objectSize:Number(Gr.get(n,t+16))})},Vg=class{constructor(t){this.len=Number(t.objectSize)-CI.len}postProcessTag(t,o,i,e){if(o==="WM/Picture")t.push({id:o,value:O2.fromBuffer(e)});else{let a=Iae(i);if(!a)throw new jh(`unexpected value headerType: ${i}`);t.push({id:o,value:a(e)})}}},lf=class extends Vg{get(t,o){return null}},Jh=class extends Vg{get(t,o){return{fileId:tr.fromBin(t,o),fileSize:Gr.get(t,o+16),creationDate:Gr.get(t,o+24),dataPacketsCount:Gr.get(t,o+32),playDuration:Gr.get(t,o+40),sendDuration:Gr.get(t,o+48),preroll:Gr.get(t,o+56),flags:{broadcast:GA(t,o+64,24),seekable:GA(t,o+64,25)},minimumDataPacketSize:Le.get(t,o+68),maximumDataPacketSize:Le.get(t,o+72),maximumBitrate:Le.get(t,o+76)}}};Jh.guid=tr.FilePropertiesObject;qh=class extends Vg{get(t,o){return{streamType:tr.decodeMediaType(tr.fromBin(t,o)),errorCorrectionType:tr.fromBin(t,o+8)}}};qh.guid=tr.StreamPropertiesObject;zh=class{constructor(){this.len=22}get(t,o){let i=new DataView(t.buffer,o);return{reserved1:tr.fromBin(t,o),reserved2:i.getUint16(16,!0),extensionDataSize:i.getUint16(18,!0)}}};zh.guid=tr.HeaderExtensionObject;Jqe={len:20,get:(n,t)=>({entryCount:new DataView(n.buffer,t).getUint16(16,!0)})};Zl=class n extends Vg{get(t,o){let i=[],e=new DataView(t.buffer,o),a=10;for(let A=0;A0){let s=n.contentDescTags[A],g=a+r;i.push({id:s,value:If(t.subarray(o+a,o+g))}),a=g}}return i}};Zl.guid=tr.ContentDescriptionObject;Zl.contentDescTags=["Title","Author","Copyright","Description","Rating"];Vh=class extends Vg{get(t,o){let i=[],e=new DataView(t.buffer,o),a=e.getUint16(0,!0),A=2;for(let r=0;r_2});var Cae,M2,Wqe,_2,Bae=ue(()=>{Cae=qe(ct(),1);Jl();D2();b2();zi();b2();M2=(0,Cae.default)("music-metadata:parser:ASF"),Wqe="asf",_2=class extends vt{async parse(){let t=await this.tokenizer.readToken(hae);if(!t.objectId.equals(tr.HeaderObject))throw new jh(`expected asf header; but was not found; got: ${t.objectId.str}`);await this.parseObjectHeader(t.numberOfHeaderObjects)}async parseObjectHeader(t){let o;do{let i=await this.tokenizer.readToken(CI);switch(M2("header GUID=%s",i.objectId.str),i.objectId.str){case Jh.guid.str:{let e=await this.tokenizer.readToken(new Jh(i));this.metadata.setFormat("duration",Number(e.playDuration/BigInt(1e3))/1e4-Number(e.preroll)/1e3),this.metadata.setFormat("bitrate",e.maximumBitrate);break}case qh.guid.str:{let e=await this.tokenizer.readToken(new qh(i));this.metadata.setFormat("container",`ASF/${e.streamType}`);break}case zh.guid.str:{let e=await this.tokenizer.readToken(new zh);await this.parseExtensionObject(e.extensionDataSize);break}case Zl.guid.str:o=await this.tokenizer.readToken(new Zl(i)),await this.addTags(o);break;case Vh.guid.str:o=await this.tokenizer.readToken(new Vh(i)),await this.addTags(o);break;case tr.CodecListObject.str:{let e=await Eae(this.tokenizer);e.forEach(A=>{this.metadata.addStreamInfo({type:A.type.videoCodec?pa.video:pa.audio,codecName:A.codecName})});let a=e.filter(A=>A.type.audioCodec).map(A=>A.codecName).join("/");this.metadata.setFormat("codec",a);break}case tr.StreamBitratePropertiesObject.str:await this.tokenizer.ignore(i.objectSize-CI.len);break;case tr.PaddingObject.str:M2("Padding: %s bytes",i.objectSize-CI.len),await this.tokenizer.ignore(i.objectSize-CI.len);break;default:this.metadata.addWarning(`Ignore ASF-Object-GUID: ${i.objectId.str}`),M2("Ignore ASF-Object-GUID: %s",i.objectId.str),await this.tokenizer.readToken(new lf(i))}}while(--t)}async addTags(t){await Promise.all(t.map(({id:o,value:i})=>this.metadata.addTag(Wqe,o,i)))}async parseExtensionObject(t){do{let o=await this.tokenizer.readToken(CI),i=o.objectSize-CI.len;if(i<0)throw new jh(`Invalid ASF header object size: ${o.objectSize}`);switch(o.objectId.str){case Wh.guid.str:await this.tokenizer.readToken(new Wh(o));break;case Xl.guid.str:{let e=await this.tokenizer.readToken(new Xl(o));await this.addTags(e);break}case Zh.guid.str:{let e=await this.tokenizer.readToken(new Zh(o));await this.addTags(e);break}case tr.PaddingObject.str:await this.tokenizer.ignore(i);break;case tr.CompatibilityObject.str:await this.tokenizer.ignore(i);break;case tr.ASF_Index_Placeholder_Object.str:await this.tokenizer.ignore(i);break;default:this.metadata.addWarning(`Ignore ASF-Object-GUID: ${o.objectId.str}`),await this.tokenizer.readToken(new lf(o));break}t-=o.objectSize}while(t>0)}}});var fae,Qae=ue(()=>{fae={parserType:"asf",extensions:[".asf",".wma",".wmv"],mimeTypes:["audio/ms-wma","video/ms-wmv","audio/ms-asf","video/ms-asf","application/vnd.ms-asf"],async load(){return(await Promise.resolve().then(()=>(Bae(),uae))).AsfParser}}});var $l,yae=ue(()=>{DA();ui();$l={len:12,get:(n,t)=>({chunkID:rt.get(n,t),chunkSize:WL.get(n,t+4)})}});var Sae={};Fr(Sae,{DsdiffContentParseError:()=>Xh,DsdiffParser:()=>T2});var mae,Bi,Xh,T2,wae=ue(()=>{DA();mae=qe(ct(),1);$o();ui();zi();Yh();yae();er();Bi=(0,mae.default)("music-metadata:parser:aiff"),Xh=class extends Qt("DSDIFF"){},T2=class extends vt{async parse(){let t=await this.tokenizer.readToken($l);if(t.chunkID!=="FRM8")throw new Xh("Unexpected chunk-ID");this.metadata.setAudioOnly();let o=(await this.tokenizer.readToken(rt)).trim();switch(o){case"DSD":return this.metadata.setFormat("container",`DSDIFF/${o}`),this.metadata.setFormat("lossless",!0),this.readFmt8Chunks(t.chunkSize-BigInt(rt.len));default:throw new Xh(`Unsupported DSDIFF type: ${o}`)}}async readFmt8Chunks(t){for(;t>=$l.len;){let o=await this.tokenizer.readToken($l);Bi(`Chunk id=${o.chunkID}`),await this.readData(o),t-=BigInt($l.len)+o.chunkSize}}async readData(t){Bi(`Reading data of chunk[ID=${t.chunkID}, size=${t.chunkSize}]`);let o=this.tokenizer.position;switch(t.chunkID.trim()){case"FVER":{let e=await this.tokenizer.readToken(Le);Bi(`DSDIFF version=${e}`);break}case"PROP":{if(await this.tokenizer.readToken(rt)!=="SND ")throw new Xh("Unexpected PROP-chunk ID");await this.handleSoundPropertyChunks(t.chunkSize-BigInt(rt.len));break}case"ID3":{let e=await this.tokenizer.readToken(new Ot(Number(t.chunkSize))),a=Co(e);await new nn().parse(this.metadata,a,this.options);break}case"DSD":this.metadata.format.numberOfChannels&&this.metadata.setFormat("numberOfSamples",Number(t.chunkSize*BigInt(8)/BigInt(this.metadata.format.numberOfChannels))),this.metadata.format.numberOfSamples&&this.metadata.format.sampleRate&&this.metadata.setFormat("duration",this.metadata.format.numberOfSamples/this.metadata.format.sampleRate);break;default:Bi(`Ignore chunk[ID=${t.chunkID}, size=${t.chunkSize}]`);break}let i=t.chunkSize-BigInt(this.tokenizer.position-o);i>0&&(Bi(`After Parsing chunk, remaining ${i} bytes`),await this.tokenizer.ignore(Number(i)))}async handleSoundPropertyChunks(t){for(Bi(`Parsing sound-property-chunks, remainingSize=${t}`);t>0;){let o=await this.tokenizer.readToken($l);Bi(`Sound-property-chunk[ID=${o.chunkID}, size=${o.chunkSize}]`);let i=this.tokenizer.position;switch(o.chunkID.trim()){case"FS":{let a=await this.tokenizer.readToken(xe);this.metadata.setFormat("sampleRate",a);break}case"CHNL":{let a=await this.tokenizer.readToken(LA);this.metadata.setFormat("numberOfChannels",a),await this.handleChannelChunks(o.chunkSize-BigInt(LA.len));break}case"CMPR":{let a=(await this.tokenizer.readToken(rt)).trim(),A=await this.tokenizer.readToken(QA),r=await this.tokenizer.readToken(new Ve(A,"ascii"));a==="DSD"&&(this.metadata.setFormat("lossless",!0),this.metadata.setFormat("bitsPerSample",1)),this.metadata.setFormat("codec",`${a} (${r})`);break}case"ABSS":{let a=await this.tokenizer.readToken(LA),A=await this.tokenizer.readToken(QA),r=await this.tokenizer.readToken(QA),s=await this.tokenizer.readToken(xe);Bi(`ABSS ${a}:${A}:${r}.${s}`);break}case"LSCO":{let a=await this.tokenizer.readToken(LA);Bi(`LSCO lsConfig=${a}`);break}default:Bi(`Unknown sound-property-chunk[ID=${o.chunkID}, size=${o.chunkSize}]`),await this.tokenizer.ignore(Number(o.chunkSize))}let e=o.chunkSize-BigInt(this.tokenizer.position-i);e>0&&(Bi(`After Parsing sound-property-chunk ${o.chunkSize}, remaining ${e} bytes`),await this.tokenizer.ignore(Number(e))),t-=BigInt($l.len)+o.chunkSize,Bi(`Parsing sound-property-chunks, remainingSize=${t}`)}if(this.metadata.format.lossless&&this.metadata.format.sampleRate&&this.metadata.format.numberOfChannels&&this.metadata.format.bitsPerSample){let o=this.metadata.format.sampleRate*this.metadata.format.numberOfChannels*this.metadata.format.bitsPerSample;this.metadata.setFormat("bitrate",o)}}async handleChannelChunks(t){Bi(`Parsing channel-chunks, remainingSize=${t}`);let o=[];for(;t>=rt.len;){let i=await this.tokenizer.readToken(rt);Bi(`Channel[ID=${i}]`),o.push(i),t-=BigInt(rt.len)}return Bi(`Channels: ${o.join(", ")}`),o}}});var Dae,Oae=ue(()=>{Dae={parserType:"dsdiff",extensions:[".dff"],mimeTypes:["audio/dsf","audio/dsd"],async load(){return(await Promise.resolve().then(()=>(wae(),Sae))).DsdiffParser}}});var bae,uI,bO,N2=ue(()=>{DA();ui();er();bae={NONE:"not compressed PCM Apple Computer",sowt:"PCM (byte swapped)",fl32:"32-bit floating point IEEE 32-bit float",fl64:"64-bit floating point IEEE 64-bit float Apple Computer",alaw:"ALaw 2:1 8-bit ITU-T G.711 A-law",ulaw:"\xB5Law 2:1 8-bit ITU-T G.711 \xB5-law Apple Computer",ULAW:"CCITT G.711 u-law 8-bit ITU-T G.711 \xB5-law",ALAW:"CCITT G.711 A-law 8-bit ITU-T G.711 A-law",FL32:"Float 32 IEEE 32-bit float "},uI=class extends Qt("AIFF"){},bO=class{constructor(t,o){this.isAifc=o;let i=o?22:18;if(t.chunkSize>Math.abs(i):e<22){let A=QA.get(t,o+22);if(A>0){let r=(A+1)%2;if(23+A+r===this.len)a.compressionName=new Ve(A,"latin1").get(t,o+23);else throw new uI("Illegal pstring length")}else a.compressionName=void 0}}else a.compressionName="PCM";return a}}});var MO,Mae=ue(()=>{DA();ui();MO={len:8,get:(n,t)=>({chunkID:rt.get(n,t),chunkSize:Number(BigInt(xe.get(n,t+4)))})}});var Tae={};Fr(Tae,{AIFFParser:()=>k2});var _ae,R2,k2,Nae=ue(()=>{DA();_ae=qe(ct(),1);$o();Yh();ui();zi();N2();N2();Mae();R2=(0,_ae.default)("music-metadata:parser:aiff"),k2=class extends vt{constructor(){super(...arguments),this.isCompressed=null}async parse(){if((await this.tokenizer.readToken(MO)).chunkID!=="FORM")throw new uI("Invalid Chunk-ID, expected 'FORM'");let o=await this.tokenizer.readToken(rt);switch(o){case"AIFF":this.metadata.setFormat("container",o),this.isCompressed=!1;break;case"AIFC":this.metadata.setFormat("container","AIFF-C"),this.isCompressed=!0;break;default:throw new uI(`Unsupported AIFF type: ${o}`)}this.metadata.setFormat("lossless",!this.isCompressed),this.metadata.setAudioOnly();try{for(;!this.tokenizer.fileInfo.size||this.tokenizer.fileInfo.size-this.tokenizer.position>=MO.len;){R2(`Reading AIFF chunk at offset=${this.tokenizer.position}`);let i=await this.tokenizer.readToken(MO),e=2*Math.round(i.chunkSize/2),a=await this.readData(i);await this.tokenizer.ignore(e-a)}}catch(i){if(i instanceof kA)R2("End-of-stream");else throw i}}async readData(t){switch(t.chunkID){case"COMM":{if(this.isCompressed===null)throw new uI("Failed to parse AIFF.COMM chunk when compression type is unknown");let o=await this.tokenizer.readToken(new bO(t,this.isCompressed));return this.metadata.setFormat("bitsPerSample",o.sampleSize),this.metadata.setFormat("sampleRate",o.sampleRate),this.metadata.setFormat("numberOfChannels",o.numChannels),this.metadata.setFormat("numberOfSamples",o.numSampleFrames),this.metadata.setFormat("duration",o.numSampleFrames/o.sampleRate),(o.compressionName||o.compressionType)&&this.metadata.setFormat("codec",o.compressionName??bae[o.compressionType]),t.chunkSize}case"ID3 ":{let o=await this.tokenizer.readToken(new Ot(t.chunkSize)),i=Co(o);return await new nn().parse(this.metadata,i,this.options),t.chunkSize}case"SSND":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*t.chunkSize/this.metadata.format.duration),0;case"NAME":case"AUTH":case"(c) ":case"ANNO":return this.readTextChunk(t);default:return R2(`Ignore chunk id=${t.chunkID}, size=${t.chunkSize}`),0}}async readTextChunk(t){let i=(await this.tokenizer.readToken(new Ve(t.chunkSize,"ascii"))).split("\0").map(e=>e.trim()).filter(e=>e?.length);return await Promise.all(i.map(e=>this.metadata.addTag("AIFF",t.chunkID,e))),t.chunkSize}}});var Rae,kae=ue(()=>{Rae={parserType:"aiff",extensions:[".aif","aiff","aifc"],mimeTypes:["audio/aiff","audio/aif","audio/aifc","application/aiff"],async load(){return(await Promise.resolve().then(()=>(Nae(),Tae))).AIFFParser}}});var pf,vae,Pae,Gae=ue(()=>{DA();ui();pf={len:12,get:(n,t)=>({id:rt.get(n,t),size:Gr.get(n,t+4)})},vae={len:16,get:(n,t)=>({fileSize:WB.get(n,t),metadataPointer:WB.get(n,t+8)})},Pae={len:40,get:(n,t)=>({formatVersion:dr.get(n,t),formatID:dr.get(n,t+4),channelType:dr.get(n,t+8),channelNum:dr.get(n,t+12),samplingFrequency:dr.get(n,t+16),bitsPerSample:dr.get(n,t+20),sampleCount:WB.get(n,t+24),blockSizePerChannel:dr.get(n,t+32)})}});var Lae={};Fr(Lae,{DsdContentParseError:()=>_O,DsfParser:()=>P2});var Fae,v2,_O,P2,Uae=ue(()=>{Fae=qe(ct(),1);cf();Gae();Yh();er();v2=(0,Fae.default)("music-metadata:parser:DSF"),_O=class extends Qt("DSD"){},P2=class extends Js{async postId3v2Parse(){let t=this.tokenizer.position,o=await this.tokenizer.readToken(pf);if(o.id!=="DSD ")throw new _O("Invalid chunk signature");this.metadata.setFormat("container","DSF"),this.metadata.setFormat("lossless",!0),this.metadata.setAudioOnly();let i=await this.tokenizer.readToken(vae);if(i.metadataPointer===BigInt(0))v2("No ID3v2 tag present");else return v2(`expect ID3v2 at offset=${i.metadataPointer}`),await this.parseChunks(i.fileSize-o.size),await this.tokenizer.ignore(Number(i.metadataPointer)-this.tokenizer.position-t),new nn().parse(this.metadata,this.tokenizer,this.options)}async parseChunks(t){for(;t>=pf.len;){let o=await this.tokenizer.readToken(pf);switch(v2(`Parsing chunk name=${o.id} size=${o.size}`),o.id){case"fmt ":{let i=await this.tokenizer.readToken(Pae);this.metadata.setFormat("numberOfChannels",i.channelNum),this.metadata.setFormat("sampleRate",i.samplingFrequency),this.metadata.setFormat("bitsPerSample",i.bitsPerSample),this.metadata.setFormat("numberOfSamples",i.sampleCount),this.metadata.setFormat("duration",Number(i.sampleCount)/i.samplingFrequency);let e=i.bitsPerSample*i.samplingFrequency*i.channelNum;this.metadata.setFormat("bitrate",e);return}default:this.tokenizer.ignore(Number(o.size)-pf.len);break}t-=o.size}}}});var Hae,Kae=ue(()=>{Hae={parserType:"dsf",extensions:[".dsf"],mimeTypes:["audio/dsf"],async load(){return(await Promise.resolve().then(()=>(Uae(),Lae))).DsfParser}}});var BI,df,xae,TO=ue(()=>{DA();lI();BI=class n{static fromBase64(t){return n.fromBuffer(Uint8Array.from(atob(t),o=>o.charCodeAt(0)))}static fromBuffer(t){return new n(t.length).get(t,0)}constructor(t){this.len=t}get(t,o){let i=Gh[xe.get(t,o)];o+=4;let e=xe.get(t,o);o+=4;let a=new Ve(e,"utf-8").get(t,o);o+=e;let A=xe.get(t,o);o+=4;let r=new Ve(A,"utf-8").get(t,o);o+=A;let s=xe.get(t,o);o+=4;let g=xe.get(t,o);o+=4;let c=xe.get(t,o);o+=4;let I=xe.get(t,o);o+=4;let d=xe.get(t,o);o+=4;let B=t.slice(o,o+d);return{type:i,format:a,description:r,width:s,height:g,colour_depth:c,indexed_color:I,data:B}}},df={len:7,get:(n,t)=>({packetType:QA.get(n,t),vorbis:new Ve(6,"ascii").get(n,t+1)})},xae={len:23,get:(n,t)=>({version:Le.get(n,t+0),channelMode:QA.get(n,t+4),sampleRate:Le.get(n,t+5),bitrateMax:Le.get(n,t+9),bitrateNominal:Le.get(n,t+13),bitrateMin:Le.get(n,t+17)})}});var $h,G2=ue(()=>{DA();Fs();$h=class{constructor(t,o){this.data=t,this.offset=o}readInt32(){let t=Le.get(this.data,this.offset);return this.offset+=4,t}readStringUtf8(){let t=this.readInt32(),o=br(this.data.subarray(this.offset,this.offset+t),"utf-8");return this.offset+=t,o}parseUserComment(){let t=this.offset,o=this.readStringUtf8(),i=o.indexOf("=");return{key:o.substring(0,i).toUpperCase(),value:o.substring(i+1),len:this.offset-t}}}});var Yae,eE,hf,qs,Ef=ue(()=>{DA();Yae=qe(ct(),1);G2();TO();er();eE=(0,Yae.default)("music-metadata:parser:ogg:vorbis1"),hf=class extends Qt("Vorbis"){},qs=class n{constructor(t,o){this.pageSegments=[],this.durationOnLastPage=!0,this.metadata=t,this.options=o}async parsePage(t,o){if(this.lastPageHeader=t,t.headerType.firstPage)this.parseFirstPage(t,o);else{if(t.headerType.continued){if(this.pageSegments.length===0)throw new hf("Cannot continue on previous page");this.pageSegments.push(o)}if(t.headerType.lastPage||!t.headerType.continued){if(this.pageSegments.length>0){let i=n.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(i)}this.pageSegments=t.headerType.lastPage?[]:[o]}}}static mergeUint8Arrays(t){let o=t.reduce((e,a)=>e+a.length,0),i=new Uint8Array(o);return t.forEach((e,a,A)=>{let r=A.slice(0,a).reduce((s,g)=>s+g.length,0);i.set(e,r)}),i}async flush(){await this.parseFullPage(n.mergeUint8Arrays(this.pageSegments))}async parseUserComment(t,o){let e=new $h(t,o).parseUserComment();return await this.addTag(e.key,e.value),e.len}async addTag(t,o){if(t==="METADATA_BLOCK_PICTURE"&&typeof o=="string"){if(this.options.skipCovers){eE("Ignore picture");return}o=BI.fromBase64(o),eE(`Push picture: id=${t}, format=${o.format}`)}else eE(`Push tag: id=${t}, value=${o}`);await this.metadata.addTag("vorbis",t,o)}calculateDuration(t){this.lastPageHeader&&(t||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",this.lastPageHeader.absoluteGranulePosition),this.metadata.setFormat("duration",this.lastPageHeader.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(t,o){this.metadata.setFormat("codec","Vorbis I"),this.metadata.setFormat("hasAudio",!0),eE("Parse first page");let i=df.get(o,0);if(i.vorbis!=="vorbis")throw new hf("Metadata does not look like Vorbis");if(i.packetType===1){let e=xae.get(o,df.len);this.metadata.setFormat("sampleRate",e.sampleRate),this.metadata.setFormat("bitrate",e.bitrateNominal),this.metadata.setFormat("numberOfChannels",e.channelMode),eE("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",e.sampleRate,e.bitrateNominal,e.channelMode)}else throw new hf("First Ogg page should be type 1: the identification header")}async parseFullPage(t){let o=df.get(t,0);switch(eE("Parse full page: type=%s, byteLength=%s",o.packetType,t.byteLength),o.packetType){case 3:return this.parseUserCommentList(t,df.len);case 1:case 5:break}}async parseUserCommentList(t,o){let i=Le.get(t,o);o+=4,o+=i;let e=Le.get(t,o);for(o+=4;e-- >0;)o+=await this.parseUserComment(t,o)}}});var fi,Cf,uf,F2=ue(()=>{Ar();DA();fi={STREAMINFO:0,PADDING:1,APPLICATION:2,SEEKTABLE:3,VORBIS_COMMENT:4,CUESHEET:5,PICTURE:6},Cf={len:4,get:(n,t)=>({lastBlock:GA(n,t,7),type:ZA(n,t,1,7),length:Pr.get(n,t+1)})},uf={len:34,get:(n,t)=>({minimumBlockSize:LA.get(n,t),maximumBlockSize:LA.get(n,t+2)/1e3,minimumFrameSize:Pr.get(n,t+4),maximumFrameSize:Pr.get(n,t+7),sampleRate:Pr.get(n,t+10)>>4,channels:ZA(n,t+12,4,3)+1,bitsPerSample:ZA(n,t+12,7,5)+1,totalSamples:ZA(n,t+13,4,36),fileMD5:new Ot(16).get(n,t+18)})}});var qae={};Fr(qae,{FlacParser:()=>Bf});var Jae,$qe,NO,Bf,L2=ue(()=>{Jae=qe(ct(),1);DA();TO();cf();ui();Ef();G2();er();F2();$qe=(0,Jae.default)("music-metadata:parser:FLAC"),NO=class extends Qt("FLAC"){},Bf=class extends Js{constructor(){super(...arguments),this.vorbisParser=new qs(this.metadata,this.options)}async postId3v2Parse(){if((await this.tokenizer.readToken(rt)).toString()!=="fLaC")throw new NO("Invalid FLAC preamble");let o;do o=await this.tokenizer.readToken(Cf),await this.parseDataBlock(o);while(!o.lastBlock);if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){let i=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*i/this.metadata.format.duration)}}async parseDataBlock(t){switch($qe(`blockHeader type=${t.type}, length=${t.length}`),t.type){case fi.STREAMINFO:return this.readBlockStreamInfo(t.length);case fi.PADDING:break;case fi.APPLICATION:break;case fi.SEEKTABLE:break;case fi.VORBIS_COMMENT:return this.readComment(t.length);case fi.CUESHEET:break;case fi.PICTURE:await this.parsePicture(t.length);return;default:this.metadata.addWarning(`Unknown block type: ${t.type}`)}return this.tokenizer.ignore(t.length).then()}async readBlockStreamInfo(t){if(t!==uf.len)throw new NO("Unexpected block-stream-info length");let o=await this.tokenizer.readToken(uf);this.metadata.setFormat("container","FLAC"),this.processsStreamInfo(o)}processsStreamInfo(t){this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("hasAudio",!0),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",t.channels),this.metadata.setFormat("bitsPerSample",t.bitsPerSample),this.metadata.setFormat("sampleRate",t.sampleRate),t.totalSamples>0&&this.metadata.setFormat("duration",t.totalSamples/t.sampleRate)}async readComment(t){let o=await this.tokenizer.readToken(new Ot(t));return this.parseComment(o)}async parseComment(t){let o=new $h(t,0),i=o.readStringUtf8();i.length>0&&this.metadata.setFormat("tool",i);let e=o.readInt32(),a=new Array(e);for(let A=0;A(A.key==="ENCODER"&&this.metadata.setFormat("tool",A.value),this.addTag(A.key,A.value))))}async parsePicture(t){return this.options.skipCovers?this.tokenizer.ignore(t):this.addPictureTag(await this.tokenizer.readToken(new BI(t)))}addPictureTag(t){return this.addTag("METADATA_BLOCK_PICTURE",t)}addTag(t,o){return this.vorbisParser.addTag(t,o)}}});var zae,Vae=ue(()=>{zae={parserType:"flac",extensions:[".flac"],mimeTypes:["audio/flac"],async load(){return(await Promise.resolve().then(()=>(L2(),qae))).FlacParser}}});var Me,U2=ue(()=>{Me={string:0,uint:1,uid:2,bool:3,binary:4,float:5}});var Wae,Zae=ue(()=>{U2();Wae={name:"dtd",container:{440786851:{name:"ebml",container:{17030:{name:"ebmlVersion",value:Me.uint},17143:{name:"ebmlReadVersion",value:Me.uint},17138:{name:"ebmlMaxIDWidth",value:Me.uint},17139:{name:"ebmlMaxSizeWidth",value:Me.uint},17026:{name:"docType",value:Me.string},17031:{name:"docTypeVersion",value:Me.uint},17029:{name:"docTypeReadVersion",value:Me.uint}}},408125543:{name:"segment",container:{290298740:{name:"seekHead",container:{19899:{name:"seek",multiple:!0,container:{21419:{name:"id",value:Me.binary},21420:{name:"position",value:Me.uint}}}}},357149030:{name:"info",container:{29604:{name:"uid",value:Me.uid},29572:{name:"filename",value:Me.string},3979555:{name:"prevUID",value:Me.uid},3965867:{name:"prevFilename",value:Me.string},4110627:{name:"nextUID",value:Me.uid},4096955:{name:"nextFilename",value:Me.string},2807729:{name:"timecodeScale",value:Me.uint},17545:{name:"duration",value:Me.float},17505:{name:"dateUTC",value:Me.uint},31657:{name:"title",value:Me.string},19840:{name:"muxingApp",value:Me.string},22337:{name:"writingApp",value:Me.string}}},524531317:{name:"cluster",multiple:!0,container:{231:{name:"timecode",value:Me.uid},22743:{name:"silentTracks ",multiple:!0},167:{name:"position",value:Me.uid},171:{name:"prevSize",value:Me.uid},160:{name:"blockGroup"},163:{name:"simpleBlock"}}},374648427:{name:"tracks",container:{174:{name:"entries",multiple:!0,container:{215:{name:"trackNumber",value:Me.uint},29637:{name:"uid",value:Me.uid},131:{name:"trackType",value:Me.uint},185:{name:"flagEnabled",value:Me.bool},136:{name:"flagDefault",value:Me.bool},21930:{name:"flagForced",value:Me.bool},156:{name:"flagLacing",value:Me.bool},28135:{name:"minCache",value:Me.uint},28136:{name:"maxCache",value:Me.uint},2352003:{name:"defaultDuration",value:Me.uint},2306383:{name:"timecodeScale",value:Me.float},21358:{name:"name",value:Me.string},2274716:{name:"language",value:Me.string},134:{name:"codecID",value:Me.string},25506:{name:"codecPrivate",value:Me.binary},2459272:{name:"codecName",value:Me.string},3839639:{name:"codecSettings",value:Me.string},3883072:{name:"codecInfoUrl",value:Me.string},2536e3:{name:"codecDownloadUrl",value:Me.string},170:{name:"codecDecodeAll",value:Me.bool},28587:{name:"trackOverlay",value:Me.uint},224:{name:"video",container:{154:{name:"flagInterlaced",value:Me.bool},21432:{name:"stereoMode",value:Me.uint},176:{name:"pixelWidth",value:Me.uint},186:{name:"pixelHeight",value:Me.uint},21680:{name:"displayWidth",value:Me.uint},21690:{name:"displayHeight",value:Me.uint},21683:{name:"aspectRatioType",value:Me.uint},3061028:{name:"colourSpace",value:Me.uint},3126563:{name:"gammaValue",value:Me.float}}},225:{name:"audio",container:{181:{name:"samplingFrequency",value:Me.float},30901:{name:"outputSamplingFrequency",value:Me.float},159:{name:"channels",value:Me.uint},148:{name:"channels",value:Me.uint},32123:{name:"channelPositions",value:Me.binary},25188:{name:"bitDepth",value:Me.uint}}},28032:{name:"contentEncodings",container:{25152:{name:"contentEncoding",container:{20529:{name:"order",value:Me.uint},20530:{name:"scope",value:Me.bool},20531:{name:"type",value:Me.uint},20532:{name:"contentEncoding",container:{16980:{name:"contentCompAlgo",value:Me.uint},16981:{name:"contentCompSettings",value:Me.binary}}},20533:{name:"contentEncoding",container:{18401:{name:"contentEncAlgo",value:Me.uint},18402:{name:"contentEncKeyID",value:Me.binary},18403:{name:"contentSignature ",value:Me.binary},18404:{name:"ContentSigKeyID ",value:Me.binary},18405:{name:"contentSigAlgo ",value:Me.uint},18406:{name:"contentSigHashAlgo ",value:Me.uint}}},25188:{name:"bitDepth",value:Me.uint}}}}}}}}},475249515:{name:"cues",container:{187:{name:"cuePoint",container:{179:{name:"cueTime",value:Me.uid},183:{name:"positions",container:{247:{name:"track",value:Me.uint},241:{name:"clusterPosition",value:Me.uint},21368:{name:"blockNumber",value:Me.uint},234:{name:"codecState",value:Me.uint},219:{name:"reference",container:{150:{name:"time",value:Me.uint},151:{name:"cluster",value:Me.uint},21343:{name:"number",value:Me.uint},235:{name:"codecState",value:Me.uint}}},240:{name:"relativePosition",value:Me.uint}}}}}}},423732329:{name:"attachments",container:{24999:{name:"attachedFiles",multiple:!0,container:{18046:{name:"description",value:Me.string},18030:{name:"name",value:Me.string},18016:{name:"mimeType",value:Me.string},18012:{name:"data",value:Me.binary},18094:{name:"uid",value:Me.uid}}}}},272869232:{name:"chapters",container:{17849:{name:"editionEntry",container:{182:{name:"chapterAtom",container:{29636:{name:"uid",value:Me.uid},145:{name:"timeStart",value:Me.uint},146:{name:"timeEnd",value:Me.uid},152:{name:"hidden",value:Me.bool},17816:{name:"enabled",value:Me.uid},143:{name:"track",container:{137:{name:"trackNumber",value:Me.uid},128:{name:"display",container:{133:{name:"string",value:Me.string},17276:{name:"language ",value:Me.string},17278:{name:"country ",value:Me.string}}}}}}}}}}},307544935:{name:"tags",container:{29555:{name:"tag",multiple:!0,container:{25536:{name:"target",container:{25541:{name:"tagTrackUID",value:Me.uid},25540:{name:"tagChapterUID",value:Me.uint},25542:{name:"tagAttachmentUID",value:Me.uid},25546:{name:"targetType",value:Me.string},26826:{name:"targetTypeValue",value:Me.uint},25545:{name:"tagEditionUID",value:Me.uid}}},26568:{name:"simpleTags",multiple:!0,container:{17827:{name:"name",value:Me.string},17543:{name:"string",value:Me.string},17541:{name:"binary",value:Me.binary},17530:{name:"language",value:Me.string},17531:{name:"languageIETF",value:Me.string},17540:{name:"default",value:Me.bool}}}}}}}}}}}});function H2(n,t){return Number(e4e(n,t))}function e4e(n,t){let o=new Uint8Array(8),i=n.subarray(0,t);try{return o.set(i,8-t),Hs.get(o,0)}catch{return BigInt(-1)}}function $ae(n){return n.container&&Object.keys(n.container).map(t=>{let o=n.container[t];return o.id=Number.parseInt(t,10),o}).forEach(t=>{t.parent=n,$ae(t)}),n}function ep(n){let t="";return n.parent&&n.parent.name!=="dtd"&&(t+=`${ep(n.parent)}/`),t+n.name}var Xae,AE,RO,zs,kO,eie=ue(()=>{DA();Xae=qe(ct(),1);$o();U2();DA();er();AE=(0,Xae.default)("music-metadata:parser:ebml"),RO=class extends Qt("EBML"){},zs={ReadNext:0,IgnoreElement:2,SkipSiblings:3,TerminateParsing:4,SkipElement:5},kO=class{constructor(t){this.parserMap=new Map,this.ebmlMaxIDLength=4,this.ebmlMaxSizeLength=8,this.tokenizer=t,this.parserMap.set(Me.uint,o=>this.readUint(o)),this.parserMap.set(Me.string,o=>this.readString(o)),this.parserMap.set(Me.binary,o=>this.readBuffer(o)),this.parserMap.set(Me.uid,async o=>this.readBuffer(o)),this.parserMap.set(Me.bool,o=>this.readFlag(o)),this.parserMap.set(Me.float,o=>this.readFloat(o))}async iterate(t,o,i){return this.parseContainer($ae(t),o,i)}async parseContainer(t,o,i){let e={};for(;this.tokenizer.position=0?this.tokenizer.position+a.len:-1,i);r.multiple?(e[r.name]||(e[r.name]=[]),e[r.name].push(g)):e[r.name]=g,await i.elementValue(r,g,A)}else{let g=this.parserMap.get(r.value);if(typeof g=="function"){let c=await g(a);e[r.name]=c,await i.elementValue(r,c,A)}}break;case zs.SkipElement:AE(`Go to next element: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`);break;case zs.IgnoreElement:AE(`Ignore element: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`),await this.tokenizer.ignore(a.len);break;case zs.SkipSiblings:AE(`Ignore remaining container, at: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`),await this.tokenizer.ignore(o-this.tokenizer.position);break;case zs.TerminateParsing:return AE(`Terminate parsing at element: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`),e}else switch(a.id){case 236:await this.tokenizer.ignore(a.len);break;default:AE(`parseEbml: parent=${ep(t)}, unknown child: id=${a.id.toString(16)} at position=${A}`),await this.tokenizer.ignore(a.len)}}return e}async readVintData(t){let o=await this.tokenizer.peekNumber(QA),i=128,e=1;for(;(o&i)===0;){if(e>t)throw new RO("VINT value exceeding maximum size");++e,i>>=1}let a=new Uint8Array(e);return await this.tokenizer.readBuffer(a),a}async readElement(){let t=await this.readVintData(this.ebmlMaxIDLength),o=await this.readVintData(this.ebmlMaxSizeLength);return o[0]^=128>>o.length-1,{id:H2(t,t.length),len:H2(o,o.length)}}async readFloat(t){switch(t.len){case 0:return 0;case 4:return this.tokenizer.readNumber(ZL);case 8:return this.tokenizer.readNumber($D);case 10:return this.tokenizer.readNumber($D);default:throw new RO(`Invalid IEEE-754 float length: ${t.len}`)}}async readFlag(t){return await this.readUint(t)===1}async readUint(t){let o=await this.readBuffer(t);return H2(o,t.len)}async readString(t){return(await this.tokenizer.readToken(new Ve(t.len,"utf-8"))).replace(/\x00.*$/g,"")}async readBuffer(t){let o=new Uint8Array(t.len);return await this.tokenizer.readBuffer(o),o}}});var tie={};Fr(tie,{MatroskaParser:()=>K2});var Aie,vO,K2,rie=ue(()=>{Aie=qe(ct(),1);zi();Zae();g2();eie();vO=(0,Aie.default)("music-metadata:parser:matroska"),K2=class extends vt{constructor(){super(...arguments),this.seekHeadOffset=0,this.flagUseIndexToSkipClusters=this.options.mkvUseIndex??!1}async parse(){let t=this.tokenizer.fileInfo.size??Number.MAX_SAFE_INTEGER,o=new kO(this.tokenizer);vO("Initializing DTD end MatroskaIterator"),await o.iterate(Wae,t,{startNext:i=>{switch(i.id){case 475249515:return vO(`Skip element: name=${i.name}, id=0x${i.id.toString(16)}`),zs.IgnoreElement;case 524531317:if(this.flagUseIndexToSkipClusters&&this.seekHead){let e=this.seekHead.seek.find(a=>a.position+this.seekHeadOffset>this.tokenizer.position);if(e){let a=e.position+this.seekHeadOffset-this.tokenizer.position;return vO(`Use index to go to next position, ignoring ${a} bytes`),this.tokenizer.ignore(a),zs.SkipElement}}return zs.IgnoreElement;default:return zs.ReadNext}},elementValue:async(i,e,a)=>{switch(vO(`Received: name=${i.name}, value=${e}`),i.id){case 17026:this.metadata.setFormat("container",`EBML/${e}`);break;case 290298740:this.seekHead=e,this.seekHeadOffset=a;break;case 357149030:{let A=e,r=A.timecodeScale?A.timecodeScale:1e6;if(typeof A.duration=="number"){let s=A.duration*r/1e9;await this.addTag("segment:title",A.title),this.metadata.setFormat("duration",Number(s))}}break;case 374648427:{let A=e;if(A?.entries){A.entries.forEach(s=>{let g={codecName:s.codecID.replace("A_","").replace("V_",""),codecSettings:s.codecSettings,flagDefault:s.flagDefault,flagLacing:s.flagLacing,flagEnabled:s.flagEnabled,language:s.language,name:s.name,type:s.trackType,audio:s.audio,video:s.video};this.metadata.addStreamInfo(g)});let r=A.entries.filter(s=>s.trackType===pa.audio).reduce((s,g)=>!s||g.flagDefault&&!s.flagDefault||g.trackNumber{let s=r.target,g=s?.targetTypeValue?lre[s.targetTypeValue]:s?.targetType?s.targetType:"track";await Promise.all(r.simpleTags.map(async c=>{let I=c.string?c.string:c.binary;await this.addTag(`${g}:${c.name}`,I)}))}))}break;case 423732329:{let A=e;await Promise.all(A.attachedFiles.filter(r=>r.mimeType.startsWith("image/")).map(r=>this.addTag("picture",{data:r.data,format:r.mimeType,description:r.description,name:r.name})))}break}}})}async addTag(t,o){await this.metadata.addTag("matroska",t,o)}}});var aie,iie=ue(()=>{aie={parserType:"matroska",extensions:[".mka",".mkv",".mk3d",".mks","webm"],mimeTypes:["audio/matroska","video/matroska","audio/webm","video/webm"],async load(){return(await Promise.resolve().then(()=>(rie(),tie))).MatroskaParser}}});function cie(n,t,o,i,e){if(Y2(`remainingLen=${i}, numberOfEntries=${e} * token-len=${t.len}`),i===0)return[];if(i!==e*t.len)throw new Wg("mismatch number-of-entries with remaining atom-length");let a=[];for(let A=0;A{DA();nie=qe(ct(),1);ui();er();Ar();er();Y2=(0,nie.default)("music-metadata:parser:MP4:atom"),Wg=class extends Qt("MP4"){},Ap={len:8,get:(n,t)=>{let o=xe.get(n,t);if(o<0)throw new Wg("Invalid atom header length");return{length:BigInt(o),name:new Ve(4,"latin1").get(n,t+4)}},put:(n,t,o)=>(xe.put(n,t,Number(o.length)),rt.put(n,t+4,o.name))},sie=Hs,j2={len:4,get:(n,t)=>({type:new Ve(4,"ascii").get(n,t)})},PO=class{constructor(t,o,i){if(to&&Y2(`Warning: atom ${i} expected to be ${o}, but was actually ${t} bytes long.`),this.len=t}},tE={len:4,get:(n,t)=>{let o=xe.get(n,t)-2082844800;return new Date(o*1e3)}},rE={len:8,get:(n,t)=>{let o=Number(Hs.get(n,t))-2082844800;return new Date(o*1e3)}},GO=class extends PO{constructor(t){super(t,24,"mdhd")}get(t,o){let i=QA.get(t,o+0),e=Pr.get(t,o+1);switch(i){case 0:return{version:i,flags:e,creationTime:tE.get(t,o+4),modificationTime:tE.get(t,o+8),timeScale:xe.get(t,o+12),duration:xe.get(t,o+16),language:LA.get(t,o+20),quality:LA.get(t,o+22)};case 1:return{version:i,flags:e,creationTime:rE.get(t,o+4),modificationTime:rE.get(t,o+12),timeScale:xe.get(t,o+20),duration:Number(Hs.get(t,o+24)),language:LA.get(t,o+32),quality:LA.get(t,o+34)};default:throw new tn("Invalid mdhd version header")}}},FO=class extends PO{constructor(t){super(t,100,"mvhd")}get(t,o){let i=QA.get(t,o),e=Pr.get(t,o+1);return i===1?{version:i,flags:e,creationTime:rE.get(t,o+4),modificationTime:rE.get(t,o+12),timeScale:xe.get(t,o+20),duration:Number(Hs.get(t,o+24)),preferredRate:xe.get(t,o+32),preferredVolume:LA.get(t,o+36),previewTime:xe.get(t,o+84),previewDuration:xe.get(t,o+88),posterTime:xe.get(t,o+92),selectionTime:xe.get(t,o+96),selectionDuration:xe.get(t,o+100),currentTime:xe.get(t,o+104),nextTrackID:xe.get(t,o+108)}:{version:i,flags:e,creationTime:tE.get(t,o+4),modificationTime:tE.get(t,o+8),timeScale:xe.get(t,o+12),duration:xe.get(t,o+16),preferredRate:xe.get(t,o+20),preferredVolume:LA.get(t,o+24),previewTime:xe.get(t,o+72),previewDuration:xe.get(t,o+76),posterTime:xe.get(t,o+80),selectionTime:xe.get(t,o+84),selectionDuration:xe.get(t,o+88),currentTime:xe.get(t,o+92),nextTrackID:xe.get(t,o+96)}}},LO=class{constructor(t){this.len=t}get(t,o){return{type:{set:QA.get(t,o+0),type:Pr.get(t,o+1)},locale:Pr.get(t,o+4),value:new Ot(this.len-8).get(t,o+8)}}},UO=class{constructor(t){this.len=t}get(t,o){return{version:QA.get(t,o),flags:Pr.get(t,o+1),name:new Ve(this.len-4,"utf-8").get(t,o+4)}}},HO=class{constructor(t){this.len=t}get(t,o){let i=QA.get(t,o),e=Pr.get(t,o+1);switch(i){case 0:return{version:i,flags:e,creationTime:tE.get(t,o+4),modificationTime:tE.get(t,o+8),trackId:xe.get(t,o+12),duration:xe.get(t,o+20),layer:LA.get(t,o+32),alternateGroup:LA.get(t,o+34),volume:LA.get(t,o+36)};case 1:return{version:i,flags:e,creationTime:rE.get(t,o+4),modificationTime:rE.get(t,o+12),trackId:xe.get(t,o+20),duration:Number(Hs.get(t,o+28)),layer:LA.get(t,o+44),alternateGroup:LA.get(t,o+46),volume:LA.get(t,o+48)};default:throw new tn("Invalid tkhd version header")}}},oie={len:8,get:(n,t)=>({version:QA.get(n,t),flags:Pr.get(n,t+1),numberOfEntries:xe.get(n,t+4)})},x2=class{constructor(t){this.len=t}get(t,o){let i=this.len-12;return{dataFormat:rt.get(t,o),dataReferenceIndex:LA.get(t,o+10),description:i>0?new Ot(i).get(t,o+12):void 0}}},ff=class{constructor(t){this.len=t}get(t,o){let i=oie.get(t,o);o+=oie.len;let e=[];for(let a=0;a=this.len){Y2("TrackRunBox size mismatch");break}let r={};e.flags.sampleDurationPresent&&(r.sampleDuration=xe.get(t,a),a+=4),e.flags.sampleSizePresent&&(r.sampleSize=xe.get(t,a),a+=4),e.flags.sampleFlagsPresent&&(r.sampleFlags=xe.get(t,a),a+=4),e.flags.sampleCompositionTimeOffsetsPresent&&(r.sampleCompositionTimeOffset=xe.get(t,a),a+=4),e.samples.push(r)}return e}},zO=class{constructor(t){this.len=t}get(t,o){let i=o+1,e=new Ve(4,"utf-8");return{version:Us.get(t,o),flags:Pr.get(t,o+1),componentType:e.get(t,o+4),handlerType:e.get(t,o+8),componentName:new Ve(this.len-28,"utf-8").get(t,o+28)}}},VO=class{constructor(t){this.len=t}get(t,o){let i=0,e=[];for(;i{pie=qe(ct(),1);mf();mf();lie=(0,pie.default)("music-metadata:parser:MP4:Atom"),WO=class n{static async readAtom(t,o,i,e){let a=t.position;lie(`Reading next token on offset=${a}...`);let A=await t.readToken(Ap),r=A.length===1n;r&&(A.length=await t.readToken(sie));let s=new n(A,r,i),g=s.getPayloadLength(e);return lie(`parse atom name=${s.atomPath}, extended=${s.extended}, offset=${a}, len=${s.header.length}`),await s.readData(t,o,g),s}constructor(t,o,i){this.header=t,this.extended=o,this.parent=i,this.children=[],this.atomPath=(this.parent?`${this.parent.atomPath}.`:"")+this.header.name}getHeaderLength(){return this.extended?16:8}getPayloadLength(t){return(this.header.length===0n?t:Number(this.header.length))-this.getHeaderLength()}async readAtoms(t,o,i){for(;i>0;){let e=await n.readAtom(t,o,this,i);this.children.push(e),i-=e.header.length===0n?i:Number(e.header.length)}}async readData(t,o,i){switch(this.header.name){case"moov":case"udta":case"mdia":case"minf":case"stbl":case"":case"ilst":case"tref":case"moof":return this.readAtoms(t,o,this.getPayloadLength(i));case"meta":{let a=(await t.peekToken(Ap)).name==="hdlr"?0:4;return await t.ignore(a),this.readAtoms(t,o,this.getPayloadLength(i)-a)}default:return o(this,i)}}}});var uie={};Fr(uie,{MP4Parser:()=>q2});function Eie(n,t,o){return o.indexOf(n)===t}var Cie,Wi,r4e,hie,q2,Bie=ue(()=>{Cie=qe(ct(),1);DA();zi();nf();die();mf();mf();Jl();$B();Fs();Wi=(0,Cie.default)("music-metadata:parser:MP4"),r4e="iTunes",hie={raw:{lossy:!1,format:"raw"},MAC3:{lossy:!0,format:"MACE 3:1"},MAC6:{lossy:!0,format:"MACE 6:1"},ima4:{lossy:!0,format:"IMA 4:1"},ulaw:{lossy:!0,format:"uLaw 2:1"},alaw:{lossy:!0,format:"uLaw 2:1"},Qclp:{lossy:!0,format:"QUALCOMM PureVoice"},".mp3":{lossy:!0,format:"MPEG-1 layer 3"},alac:{lossy:!1,format:"ALAC"},"ac-3":{lossy:!0,format:"AC-3"},mp4a:{lossy:!0,format:"MPEG-4/AAC"},mp4s:{lossy:!0,format:"MP4S"},c608:{lossy:!0,format:"CEA-608"},c708:{lossy:!0,format:"CEA-708"}};q2=class n extends vt{constructor(){super(...arguments),this.tracks=new Map,this.hasVideoTrack=!1,this.hasAudioTrack=!0,this.atomParsers={mvhd:async t=>{let o=await this.tokenizer.readToken(new FO(t));this.metadata.setFormat("creationTime",o.creationTime),this.metadata.setFormat("modificationTime",o.modificationTime)},chap:async t=>{let o=this.getTrackDescription(),i=[];for(;t>=xe.len;)i.push(await this.tokenizer.readNumber(xe)),t-=xe.len;o.chapterList=i},mdat:async t=>{if(this.options.includeChapters){let o=[...this.tracks.values()].filter(i=>i.chapterList);if(o.length===1){let i=o[0].chapterList,e=[...this.tracks.values()].filter(a=>i.indexOf(a.header.trackId)!==-1);if(e.length===1)return this.parseChapterTrack(e[0],o[0],t)}}await this.tokenizer.ignore(t)},ftyp:async t=>{let o=[];for(;t>0;){let e=await this.tokenizer.readToken(j2);t-=j2.len;let a=e.type.replace(/\W/g,"");a.length>0&&o.push(a)}Wi(`ftyp: ${o.join("/")}`);let i=o.filter(Eie).join("/");this.metadata.setFormat("container",i)},stsd:async t=>{let o=await this.tokenizer.readToken(new ff(t)),i=this.getTrackDescription();i.soundSampleDescription=o.table.map(e=>this.parseSoundSampleDescription(e))},stsz:async t=>{let o=await this.tokenizer.readToken(new yf(t)),i=this.getTrackDescription();i.sampleSize=o.sampleSize,i.sampleSizeTable=o.entries},date:async t=>{let o=await this.tokenizer.readToken(new Ve(t,"utf-8"));await this.addTag("date",o)}}}static read_BE_Integer(t,o){let i=(o?"INT":"UINT")+t.length*8+(t.length>1?"_BE":""),e=VA[i];if(!e)throw new Wg(`Token for integer type not found: "${i}"`);return Number(e.get(t,0))}async parse(){this.hasVideoTrack=!1,this.hasAudioTrack=!0,this.tracks.clear();let t=this.tokenizer.fileInfo.size||0;for(;!this.tokenizer.fileInfo.size||t>0;){try{if((await this.tokenizer.peekToken(Ap)).name==="\0\0\0\0"){let A=`Error at offset=${this.tokenizer.position}: box.id=0`;Wi(A),this.addWarning(A);break}}catch(a){if(a instanceof Error){let A=`Error at offset=${this.tokenizer.position}: ${a.message}`;Wi(A),this.addWarning(A)}else throw a;break}let e=await WO.readAtom(this.tokenizer,(a,A)=>this.handleAtom(a,A),null,t);t-=e.header.length===BigInt(0)?t:Number(e.header.length)}let o=[];this.tracks.forEach(e=>{let a=[];e.soundSampleDescription.forEach(A=>{let r={},s=hie[A.dataFormat];if(s?(a.push(s.format),r.codecName=s.format):r.codecName=`<${A.dataFormat}>`,A.description){let{description:g}=A;g.sampleRate>0&&(r.type=pa.audio,r.audio={samplingFrequency:g.sampleRate,bitDepth:g.sampleSize,channels:g.numAudioChannels})}this.metadata.addStreamInfo(r)}),a.length>=1&&o.push(a.join("/"))}),o.length>0&&this.metadata.setFormat("codec",o.filter(Eie).join("+"));let i=[...this.tracks.values()].filter(e=>e.soundSampleDescription.length>=1&&e.soundSampleDescription[0].description&&e.soundSampleDescription[0].description.numAudioChannels>0);for(let e of i){if(e.media.header&&e.media.header.timeScale>0)if(e.sampleRate=e.media.header.timeScale,e.media.header.duration>0&&(Wi("Using duration defined on audio track"),e.samples=e.media.header.duration,e.duration=e.samples/e.sampleRate),e.fragments.length>0){Wi("Calculate duration defined in track fragments");let r=0;e.sizeInBytes=0;for(let s of e.fragments)for(let g of s.trackRun.samples){let c=g.sampleDuration??s.header.defaultSampleDuration??0,I=g.sampleSize??s.header.defaultSampleSize??0;if(c===0)throw new Error("Missing sampleDuration and no defaultSampleDuration in track fragment header");if(I===0)throw new Error("Missing sampleSize and no defaultSampleSize in track fragment header");r+=c,e.sizeInBytes+=I}e.samples||(e.samples=r),e.duration||(e.duration=r/e.sampleRate)}else e.sampleSizeTable.length>0&&(e.sizeInBytes=e.sampleSizeTable.reduce((r,s)=>r+s,0));let a=e.soundSampleDescription[0];if(a.description&&e.media.header&&(this.metadata.setFormat("sampleRate",a.description.sampleRate),this.metadata.setFormat("bitsPerSample",a.description.sampleSize),this.metadata.setFormat("numberOfChannels",a.description.numAudioChannels),e.media.header.timeScale===0&&e.timeToSampleTable.length>0)){let r=e.timeToSampleTable.map(s=>s.count*s.duration).reduce((s,g)=>s+g);e.duration=r/a.description.sampleRate}let A=hie[a.dataFormat];A&&this.metadata.setFormat("lossless",!A.lossy)}if(i.length>=1){let e=i[0];e.duration&&(this.metadata.setFormat("duration",e.duration),e.sizeInBytes&&this.metadata.setFormat("bitrate",8*e.sizeInBytes/e.duration))}this.metadata.setFormat("hasAudio",this.hasAudioTrack),this.metadata.setFormat("hasVideo",this.hasVideoTrack)}async handleAtom(t,o){if(t.parent)switch(t.parent.header.name){case"ilst":case"":return this.parseMetadataItemData(t);case"moov":switch(t.header.name){case"trak":return this.parseTrackBox(t);case"udta":return this.parseTrackBox(t)}break;case"moof":switch(t.header.name){case"traf":return this.parseTrackFragmentBox(t)}}if(this.atomParsers[t.header.name])return this.atomParsers[t.header.name](o);Wi(`No parser for atom path=${t.atomPath}, payload-len=${o}, ignoring atom`),await this.tokenizer.ignore(o)}getTrackDescription(){let t=[...this.tracks.values()];return t[t.length-1]}async addTag(t,o){await this.metadata.addTag(r4e,t,o)}addWarning(t){Wi(`Warning: ${t}`),this.metadata.addWarning(t)}parseMetadataItemData(t){let o=t.header.name;return t.readAtoms(this.tokenizer,async(i,e)=>{let a=i.getPayloadLength(e);switch(i.header.name){case"data":return this.parseValueAtom(o,i);case"name":case"mean":case"rate":{let A=await this.tokenizer.readToken(new UO(a));o+=`:${A.name}`;break}default:{let A=await this.tokenizer.readToken(new Ot(a));this.addWarning(`Unsupported meta-item: ${o}[${i.header.name}] => value=${AO(A)} ascii=${br(A,"ascii")}`)}}},t.getPayloadLength(0))}async parseValueAtom(t,o){let i=await this.tokenizer.readToken(new LO(Number(o.header.length)-Ap.len));if(i.type.set!==0)throw new Wg(`Unsupported type-set != 0: ${i.type.set}`);switch(i.type.type){case 0:switch(t){case"trkn":case"disk":{let e=QA.get(i.value,3),a=QA.get(i.value,5);await this.addTag(t,`${e}/${a}`);break}case"gnre":{let e=QA.get(i.value,1),a=xh[e-1];await this.addTag(t,a);break}case"rate":{let e=br(i.value,"ascii");await this.addTag(t,e);break}default:Wi(`unknown proprietary value type for: ${o.atomPath}`)}break;case 1:case 18:await this.addTag(t,br(i.value));break;case 13:if(this.options.skipCovers)break;await this.addTag(t,{format:"image/jpeg",data:Uint8Array.from(i.value)});break;case 14:if(this.options.skipCovers)break;await this.addTag(t,{format:"image/png",data:Uint8Array.from(i.value)});break;case 21:await this.addTag(t,n.read_BE_Integer(i.value,!0));break;case 22:await this.addTag(t,n.read_BE_Integer(i.value,!1));break;case 65:await this.addTag(t,QA.get(i.value,0));break;case 66:await this.addTag(t,LA.get(i.value,0));break;case 67:await this.addTag(t,xe.get(i.value,0));break;default:this.addWarning(`atom key=${t}, has unknown well-known-type (data-type): ${i.type.type}`)}}async parseTrackBox(t){let o={media:{},fragments:[]};await t.readAtoms(this.tokenizer,async(i,e)=>{let a=i.getPayloadLength(e);switch(i.header.name){case"chap":{let A=await this.tokenizer.readToken(new VO(e));o.chapterList=A;break}case"tkhd":o.header=await this.tokenizer.readToken(new HO(a));break;case"hdlr":o.handler=await this.tokenizer.readToken(new zO(a)),o.isAudio=()=>o.handler.handlerType==="audi"||o.handler.handlerType==="soun",o.isVideo=()=>o.handler.handlerType==="vide",o.isAudio()?this.hasAudioTrack=!0:o.isVideo()&&(this.hasVideoTrack=!0);break;case"mdhd":{let A=await this.tokenizer.readToken(new GO(a));o.media.header=A;break}case"stco":{let A=await this.tokenizer.readToken(new YO(a));o.chunkOffsetTable=A.entries;break}case"stsc":{let A=await this.tokenizer.readToken(new xO(a));o.sampleToChunkTable=A.entries;break}case"stsd":{let A=await this.tokenizer.readToken(new ff(a));o.soundSampleDescription=A.table.map(r=>this.parseSoundSampleDescription(r));break}case"stts":{let A=await this.tokenizer.readToken(new KO(a));o.timeToSampleTable=A.entries;break}case"stsz":{let A=await this.tokenizer.readToken(new yf(a));o.sampleSize=A.sampleSize,o.sampleSizeTable=A.entries;break}case"dinf":case"vmhd":case"smhd":Wi(`Ignoring: ${i.header.name}`),await this.tokenizer.ignore(a);break;default:Wi(`Unexpected track box: ${i.header.name}`),await this.tokenizer.ignore(a)}},t.getPayloadLength(0)),this.tracks.set(o.header.trackId,o)}parseTrackFragmentBox(t){let o;return t.readAtoms(this.tokenizer,async(i,e)=>{let a=i.getPayloadLength(e);switch(i.header.name){case"tfhd":{let A=new JO(i.getPayloadLength(e));o=await this.tokenizer.readToken(A);break}case"tfdt":await this.tokenizer.ignore(a);break;case"trun":{let A=new qO(a),r=await this.tokenizer.readToken(A);o&&this.tracks.get(o.trackId)?.fragments.push({header:o,trackRun:r});break}default:Wi(`Unexpected box: ${i.header.name}`),await this.tokenizer.ignore(a)}},t.getPayloadLength(0))}parseSoundSampleDescription(t){let o={dataFormat:t.dataFormat,dataReferenceIndex:t.dataReferenceIndex},i=0;if(t.description){let e=J2.get(t.description,i);i+=J2.len,e.version===0||e.version===1?o.description=gie.get(t.description,i):Wi(`Warning: sound-sample-description ${e} not implemented`)}return o}async parseChapterTrack(t,o,i){if(!t.sampleSize&&t.chunkOffsetTable.length!==t.sampleSizeTable.length)throw new Error("Expected equal chunk-offset-table & sample-size-table length.");let e=[];for(let a=0;a0;++a){let A=t.timeToSampleTable.slice(0,a).reduce((d,B)=>d+B.duration,0),s=t.chunkOffsetTable[a]-this.tokenizer.position,g=t.sampleSize>0?t.sampleSize:t.sampleSizeTable[a];if(i-=s+g,i<0)throw new Wg("Chapter chunk exceeding token length");await this.tokenizer.ignore(s);let c=await this.tokenizer.readToken(new jO(g));Wi(`Chapter ${a+1}: ${c}`);let I={title:c,timeScale:t.media.header?t.media.header.timeScale:0,start:A,sampleOffset:this.findSampleOffset(o,this.tokenizer.position)};Wi(`Chapter title=${I.title}, offset=${I.sampleOffset}/${o.header.duration}`),e.push(I)}this.metadata.setFormat("chapters",e),await this.tokenizer.ignore(i)}findSampleOffset(t,o){let i=0;for(;i=o[i].firstChunk&&t{fie={parserType:"mp4",extensions:[".mp4",".m4a",".m4b",".m4pa","m4v","m4r","3gp",".mov",".movie",".qt"],mimeTypes:["audio/mp4","audio/m4a","video/m4v","video/mp4","video/quicktime"],async load(){return(await Promise.resolve().then(()=>(Bie(),uie))).MP4Parser}}});var wie,yie,a4e,mie,Sie,ZO,Die=ue(()=>{DA();wie=qe(ct(),1);Ar();yie=(0,wie.default)("music-metadata:parser:musepack:sv8"),a4e=new Ve(2,"latin1"),mie={len:5,get:(n,t)=>({crc:Le.get(n,t),streamVersion:QA.get(n,t+4)})},Sie={len:2,get:(n,t)=>({sampleFrequency:[44100,48e3,37800,32e3][ZA(n,t,0,3)],maxUsedBands:ZA(n,t,3,5),channelCount:ZA(n,t+1,0,4)+1,msUsed:Na(n,t+1,4),audioBlockFrames:ZA(n,t+1,5,3)})},ZO=class{get tokenizer(){return this._tokenizer}set tokenizer(t){this._tokenizer=t}constructor(t){this._tokenizer=t}async readPacketHeader(){let t=await this.tokenizer.readToken(a4e),o=await this.readVariableSizeField();return{key:t,payloadLength:o.value-2-o.len}}async readStreamHeader(t){let o={};yie(`Reading SH at offset=${this.tokenizer.position}`);let i=await this.tokenizer.readToken(mie);t-=mie.len,Object.assign(o,i),yie(`SH.streamVersion = ${i.streamVersion}`);let e=await this.readVariableSizeField();t-=e.len,o.sampleCount=e.value;let a=await this.readVariableSizeField();t-=a.len,o.beginningOfSilence=a.value;let A=await this.tokenizer.readToken(Sie);return t-=Sie.len,Object.assign(o,A),await this.tokenizer.ignore(t),o}async readVariableSizeField(t=1,o=0){let i=await this.tokenizer.readNumber(QA);return(i&128)===0?{len:t,value:o+i}:(i&=127,i+=o,this.readVariableSizeField(t+1,i<<7))}}});var Zg,XO=ue(()=>{er();Zg=class extends Qt("Musepack"){}});var Oie,o4e,$O,bie=ue(()=>{Oie=qe(ct(),1);zi();Vl();ui();Die();XO();o4e=(0,Oie.default)("music-metadata:parser:musepack"),$O=class extends vt{constructor(){super(...arguments),this.audioLength=0}async parse(){if(await this.tokenizer.readToken(rt)!=="MPCK")throw new Zg("Invalid Magic number");return this.metadata.setFormat("container","Musepack, SV8"),this.parsePacket()}async parsePacket(){let t=new ZO(this.tokenizer);do{let o=await t.readPacketHeader();switch(o4e(`packet-header key=${o.key}, payloadLength=${o.payloadLength}`),o.key){case"SH":{let i=await t.readStreamHeader(o.payloadLength);this.metadata.setFormat("numberOfSamples",i.sampleCount),this.metadata.setFormat("sampleRate",i.sampleFrequency),this.metadata.setFormat("duration",i.sampleCount/i.sampleFrequency),this.metadata.setFormat("numberOfChannels",i.channelCount);break}case"AP":this.audioLength+=o.payloadLength,await this.tokenizer.ignore(o.payloadLength);break;case"RG":case"EI":case"SO":case"ST":case"CT":await this.tokenizer.ignore(o.payloadLength);break;case"SE":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",this.audioLength*8/this.metadata.format.duration),zl(this.metadata,this.tokenizer,this.options);default:throw new Zg(`Unexpected header: ${o.key}`)}}while(!0)}}});var eb,Mie=ue(()=>{DA();eb=class{constructor(t){this.pos=0,this.dword=null,this.tokenizer=t}async read(t){for(;this.dword===null;)this.dword=await this.tokenizer.readToken(Le);let o=this.dword;return this.pos+=t,this.pos<32?(o>>>=32-this.pos,o&(1<>>32-this.pos),o&(1<0){let e=32-this.pos;this.dword=null,t-=e,this.pos=0}let o=t%32,i=(t-o)/32;return await this.tokenizer.ignore(i*4),this.read(o)}}});var _ie,Tie=ue(()=>{DA();Ar();Fs();_ie={len:24,get:(n,t)=>{let o={signature:br(n.subarray(t,t+3),"latin1"),streamMinorVersion:ZA(n,t+3,0,4),streamMajorVersion:ZA(n,t+3,4,4),frameCount:Le.get(n,t+4),maxLevel:SA.get(n,t+8),sampleFrequency:[44100,48e3,37800,32e3][ZA(n,t+10,0,2)],link:ZA(n,t+10,2,2),profile:ZA(n,t+10,4,4),maxBand:ZA(n,t+11,0,6),intensityStereo:Na(n,t+11,6),midSideStereo:Na(n,t+11,7),titlePeak:SA.get(n,t+12),titleGain:SA.get(n,t+14),albumPeak:SA.get(n,t+16),albumGain:SA.get(n,t+18),lastFrameLength:Le.get(n,t+20)>>>20&2047,trueGapless:Na(n,t+23,0)};return o.lastFrameLength=o.trueGapless?Le.get(n,20)>>>20&2047:0,o}}});var Rie,Nie,Ab,kie=ue(()=>{Rie=qe(ct(),1);zi();Vl();Mie();Tie();XO();Nie=(0,Rie.default)("music-metadata:parser:musepack"),Ab=class extends vt{constructor(){super(...arguments),this.bitreader=null,this.audioLength=0,this.duration=null}async parse(){let t=await this.tokenizer.readToken(_ie);if(t.signature!=="MP+")throw new Zg("Unexpected magic number");Nie(`stream-version=${t.streamMajorVersion}.${t.streamMinorVersion}`),this.metadata.setFormat("container","Musepack, SV7"),this.metadata.setFormat("sampleRate",t.sampleFrequency);let o=1152*(t.frameCount-1)+t.lastFrameLength;this.metadata.setFormat("numberOfSamples",o),this.duration=o/t.sampleFrequency,this.metadata.setFormat("duration",this.duration),this.bitreader=new eb(this.tokenizer),this.metadata.setFormat("numberOfChannels",t.midSideStereo||t.intensityStereo?2:1);let i=await this.bitreader.read(8);return this.metadata.setFormat("codec",(i/100).toFixed(2)),await this.skipAudioData(t.frameCount),Nie(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`),zl(this.metadata,this.tokenizer,this.options)}async skipAudioData(t){for(;t-- >0;){let i=await this.bitreader.read(20);this.audioLength+=20+i,await this.bitreader.ignore(i)}let o=await this.bitreader.read(11);this.audioLength+=o,this.duration!==null&&this.metadata.setFormat("bitrate",this.audioLength/this.duration)}}});var Gie={};Fr(Gie,{MusepackParser:()=>z2});var Pie,vie,z2,Fie=ue(()=>{Pie=qe(ct(),1);DA();cf();bie();kie();XO();vie=(0,Pie.default)("music-metadata:parser:musepack"),z2=class extends Js{async postId3v2Parse(){let t=await this.tokenizer.peekToken(new Ve(3,"latin1")),o;switch(t){case"MP+":{vie("Stream-version 7"),o=new Ab(this.metadata,this.tokenizer,this.options);break}case"MPC":{vie("Stream-version 8"),o=new $O(this.metadata,this.tokenizer,this.options);break}default:throw new Zg("Invalid signature prefix")}return this.metadata.setAudioOnly(),o.parse()}}});var Lie,Uie=ue(()=>{Lie={parserType:"musepack",extensions:[".mpc"],mimeTypes:["audio/musepack"],async load(){return(await Promise.resolve().then(()=>(Fie(),Gie))).MusepackParser}}});var Sf,tb,V2=ue(()=>{DA();er();Sf=class extends Qt("Opus"){},tb=class{constructor(t){if(t<19)throw new Sf("ID-header-page 0 should be at least 19 bytes long");this.len=t}get(t,o){return{magicSignature:new Ve(8,"ascii").get(t,o+0),version:QA.get(t,o+8),channelCount:QA.get(t,o+9),preSkip:SA.get(t,o+10),inputSampleRate:Le.get(t,o+12),outputGain:SA.get(t,o+16),channelMapping:QA.get(t,o+18)}}}});var rb,Hie=ue(()=>{DA();Ef();V2();V2();rb=class extends qs{constructor(t,o,i){super(t,o),this.idHeader=null,this.lastPos=-1,this.tokenizer=i,this.durationOnLastPage=!0}parseFirstPage(t,o){if(this.metadata.setFormat("codec","Opus"),this.idHeader=new tb(o.length).get(o,0),this.idHeader.magicSignature!=="OpusHead")throw new Sf("Illegal ogg/Opus magic-signature");this.metadata.setFormat("sampleRate",this.idHeader.inputSampleRate),this.metadata.setFormat("numberOfChannels",this.idHeader.channelCount),this.metadata.setAudioOnly()}async parseFullPage(t){switch(new Ve(8,"ascii").get(t,0)){case"OpusTags":await this.parseUserCommentList(t,8),this.lastPos=this.tokenizer.position-t.length;break;default:break}}calculateDuration(t){if(this.lastPageHeader&&(t||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0){let o=this.lastPageHeader.absoluteGranulePosition-this.idHeader.preSkip;if(this.metadata.setFormat("numberOfSamples",o),this.metadata.setFormat("duration",o/48e3),this.lastPos!==-1&&this.tokenizer.fileInfo.size&&this.metadata.format.duration){let i=this.tokenizer.fileInfo.size-this.lastPos;this.metadata.setFormat("bitrate",8*i/this.metadata.format.duration)}}}}});var Kie,xie=ue(()=>{DA();Ar();Kie={len:80,get:(n,t)=>({speex:new Ve(8,"ascii").get(n,t+0),version:iO(new Ve(20,"ascii").get(n,t+8)),version_id:dr.get(n,t+28),header_size:dr.get(n,t+32),rate:dr.get(n,t+36),mode:dr.get(n,t+40),mode_bitstream_version:dr.get(n,t+44),nb_channels:dr.get(n,t+48),bitrate:dr.get(n,t+52),frame_size:dr.get(n,t+56),vbr:dr.get(n,t+60),frames_per_packet:dr.get(n,t+64),extra_headers:dr.get(n,t+68),reserved1:dr.get(n,t+72),reserved2:dr.get(n,t+76)})}});var Yie,c4e,ab,jie=ue(()=>{Yie=qe(ct(),1);Ef();xie();c4e=(0,Yie.default)("music-metadata:parser:ogg:speex"),ab=class extends qs{constructor(t,o,i){super(t,o)}parseFirstPage(t,o){c4e("First Ogg/Speex page");let i=Kie.get(o,0);this.metadata.setFormat("codec",`Speex ${i.version}`),this.metadata.setFormat("numberOfChannels",i.nb_channels),this.metadata.setFormat("sampleRate",i.rate),i.bitrate!==-1&&this.metadata.setFormat("bitrate",i.bitrate),this.metadata.setAudioOnly()}}});var Jie,qie=ue(()=>{DA();Jie={len:42,get:(n,t)=>({id:new Ve(7,"ascii").get(n,t),vmaj:QA.get(n,t+7),vmin:QA.get(n,t+8),vrev:QA.get(n,t+9),vmbw:LA.get(n,t+10),vmbh:LA.get(n,t+17),nombr:Pr.get(n,t+37),nqual:QA.get(n,t+40)})}});var Vie,zie,ib,Wie=ue(()=>{Vie=qe(ct(),1);qie();zie=(0,Vie.default)("music-metadata:parser:ogg:theora"),ib=class{constructor(t,o,i){this.durationOnLastPage=!1,this.metadata=t}async parsePage(t,o){t.headerType.firstPage&&await this.parseFirstPage(t,o)}calculateDuration(){zie("duration calculation not implemented")}async parseFirstPage(t,o){zie("First Ogg/Theora page"),this.metadata.setFormat("codec","Theora");let i=Jie.get(o,0);this.metadata.setFormat("bitrate",i.nombr),this.metadata.setFormat("hasVideo",!0)}flush(){return Promise.resolve()}}});var Zie,ob,Xie=ue(()=>{DA();Ar();DA();Zie={len:27,get:(n,t)=>({capturePattern:new Ve(4,"latin1").get(n,t),version:QA.get(n,t+4),headerType:{continued:GA(n,t+5,0),firstPage:GA(n,t+5,1),lastPage:GA(n,t+5,2)},absoluteGranulePosition:Number(Gr.get(n,t+6)),streamSerialNumber:Le.get(n,t+14),pageSequenceNo:Le.get(n,t+18),pageChecksum:Le.get(n,t+22),page_segments:QA.get(n,t+26)})},ob=class n{static sum(t,o,i){let e=new DataView(t.buffer,0),a=0;for(let A=o;A{$ie=qe(ct(),1);F2();L2();ui();TO();W2=(0,$ie.default)("music-metadata:parser:ogg:theora"),nb=class{constructor(t,o,i){this.durationOnLastPage=!1,this.metadata=t,this.options=o,this.tokenizer=i,this.flacParser=new Bf(this.metadata,this.tokenizer,o)}async parsePage(t,o){t.headerType.firstPage&&await this.parseFirstPage(t,o)}calculateDuration(){W2("duration calculation not implemented")}async parseFirstPage(t,o){if(W2("First Ogg/FLAC page"),(await rt.get(o,9)).toString()!=="fLaC")throw new Error("Invalid FLAC preamble");let e=await Cf.get(o,13);await this.parseDataBlock(e,o.subarray(13+Cf.len))}async parseDataBlock(t,o){switch(W2(`blockHeader type=${t.type}, length=${t.length}`),t.type){case fi.STREAMINFO:{let i=uf.get(o,0);return this.flacParser.processsStreamInfo(i)}case fi.PADDING:break;case fi.APPLICATION:break;case fi.SEEKTABLE:break;case fi.VORBIS_COMMENT:return this.flacParser.parseComment(o);case fi.PICTURE:if(!this.options.skipCovers){let i=new BI(o.length).get(o,0);return this.flacParser.addPictureTag(i)}break;default:this.metadata.addWarning(`Unknown block type: ${t.type}`)}return this.tokenizer.ignore(t.length).then()}flush(){return Promise.resolve()}}});var toe={};Fr(toe,{OggContentError:()=>aE,OggParser:()=>X2});var Aoe,aE,Vs,Z2,X2,roe=ue(()=>{DA();$o();Aoe=qe(ct(),1);zi();Ef();Hie();jie();Wie();er();Xie();eoe();aE=class extends Qt("Ogg"){},Vs=(0,Aoe.default)("music-metadata:parser:ogg"),Z2=class{constructor(t,o,i){this.pageNumber=0,this.closed=!1,this.metadata=t,this.streamSerial=o,this.options=i}async parsePage(t,o){this.pageNumber=o.pageSequenceNo,Vs("serial=%s page#=%s, Ogg.id=%s",o.streamSerialNumber,o.pageSequenceNo,o.capturePattern);let i=await t.readToken(new ob(o));Vs("totalPageSize=%s",i.totalPageSize);let e=await t.readToken(new Ot(i.totalPageSize));if(Vs("firstPage=%s, lastPage=%s, continued=%s",o.headerType.firstPage,o.headerType.lastPage,o.headerType.continued),o.headerType.firstPage){this.metadata.setFormat("container","Ogg");let a=e.subarray(0,7),A=Array.from(a).filter(r=>r>=32&&r<=126).map(r=>String.fromCharCode(r)).join("");switch(A){case"vorbis":Vs(`Set Ogg stream serial ${o.streamSerialNumber}, codec=Vorbis`),this.pageConsumer=new qs(this.metadata,this.options);break;case"OpusHea":Vs("Set page consumer to Ogg/Opus"),this.pageConsumer=new rb(this.metadata,this.options,t);break;case"Speex ":Vs("Set page consumer to Ogg/Speex"),this.pageConsumer=new ab(this.metadata,this.options,t);break;case"fishead":case"theora":Vs("Set page consumer to Ogg/Theora"),this.pageConsumer=new ib(this.metadata,this.options,t);break;case"FLAC":Vs("Set page consumer to Vorbis"),this.pageConsumer=new nb(this.metadata,this.options,t);break;default:throw new aE(`Ogg codec not recognized (id=${A}`)}}if(o.headerType.lastPage&&(this.closed=!0),this.pageConsumer)await this.pageConsumer.parsePage(o,e);else throw new Error("pageConsumer should be initialized")}},X2=class extends vt{constructor(){super(...arguments),this.streams=new Map}async parse(){this.streams=new Map;let t=!1,o;try{do{if(o=await this.tokenizer.readToken(Zie),o.capturePattern!=="OggS")throw new aE("Invalid Ogg capture pattern");let i=this.streams.get(o.streamSerialNumber);if(i||(i=new Z2(this.metadata,o.streamSerialNumber,this.options),this.streams.set(o.streamSerialNumber,i)),await i.parsePage(this.tokenizer,o),i.pageNumber>12&&!(this.options.duration&&[...this.streams.values()].find(e=>e.pageConsumer?.durationOnLastPage))){Vs("Stop processing Ogg stream");break}}while(![...this.streams.values()].every(i=>i.closed))}catch(i){if(i instanceof kA)Vs("Reached end-of-stream"),t=!0;else if(i instanceof aE)this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`);else throw i}for(let i of this.streams.values())i.closed||(this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${i.streamSerial}`),await i.pageConsumer?.flush()),i.pageConsumer?.calculateDuration(t)}}});var aoe,ioe=ue(()=>{aoe={parserType:"ogg",extensions:[".ogg",".ogv",".oga",".ogm",".ogx",".opus",".spx"],mimeTypes:["audio/ogg","audio/opus","audio/speex","video/ogg"],async load(){return(await Promise.resolve().then(()=>(roe(),toe))).OggParser}}});function Ws(n,t){return sb(n,t,1)===1}function sb(n,t,o){return n>>>t&4294967295>>>32-o}var I4e,wf,gb,ooe=ue(()=>{DA();ui();I4e=[6e3,8e3,9600,11025,12e3,16e3,22050,24e3,32e3,44100,48e3,64e3,88200,96e3,192e3,-1],wf={len:32,get:(n,t)=>{let o=Le.get(n,t+24),i={BlockID:rt.get(n,t),blockSize:Le.get(n,t+4),version:SA.get(n,t+8),totalSamples:Le.get(n,t+12),blockIndex:Le.get(n,t+16),blockSamples:Le.get(n,t+20),flags:{bitsPerSample:(1+sb(o,0,2))*8,isMono:Ws(o,2),isHybrid:Ws(o,3),isJointStereo:Ws(o,4),crossChannel:Ws(o,5),hybridNoiseShaping:Ws(o,6),floatingPoint:Ws(o,7),samplingRate:I4e[sb(o,23,4)],isDSD:Ws(o,31)},crc:new Ot(4).get(n,t+28)};return i.flags.isDSD&&(i.totalSamples*=8),i}},gb={len:1,get:(n,t)=>({functionId:sb(n[t],0,6),isOptional:Ws(n[t],5),isOddSize:Ws(n[t],6),largeBlock:Ws(n[t],7)})}});var soe={};Fr(soe,{WavPackContentError:()=>iE,WavPackParser:()=>$2});var noe,tp,iE,$2,goe=ue(()=>{DA();Vl();ui();zi();ooe();noe=qe(ct(),1);$B();er();tp=(0,noe.default)("music-metadata:parser:WavPack"),iE=class extends Qt("WavPack"){},$2=class extends vt{constructor(){super(...arguments),this.audioDataSize=0}async parse(){return this.metadata.setAudioOnly(),this.audioDataSize=0,await this.parseWavPackBlocks(),zl(this.metadata,this.tokenizer,this.options)}async parseWavPackBlocks(){do{if(await this.tokenizer.peekToken(rt)!=="wvpk")break;let o=await this.tokenizer.readToken(wf);if(o.BlockID!=="wvpk")throw new iE("Invalid WavPack Block-ID");tp(`WavPack header blockIndex=${o.blockIndex}, len=${wf.len}`),o.blockIndex===0&&!this.metadata.format.container&&(this.metadata.setFormat("container","WavPack"),this.metadata.setFormat("lossless",!o.flags.isHybrid),this.metadata.setFormat("bitsPerSample",o.flags.bitsPerSample),o.flags.isDSD||(this.metadata.setFormat("sampleRate",o.flags.samplingRate),this.metadata.setFormat("duration",o.totalSamples/o.flags.samplingRate)),this.metadata.setFormat("numberOfChannels",o.flags.isMono?1:2),this.metadata.setFormat("numberOfSamples",o.totalSamples),this.metadata.setFormat("codec",o.flags.isDSD?"DSD":"PCM"));let i=o.blockSize-(wf.len-8);await(o.blockIndex===0?this.parseMetadataSubBlock(o,i):this.tokenizer.ignore(i)),o.blockSamples>0&&(this.audioDataSize+=o.blockSize)}while(!this.tokenizer.fileInfo.size||this.tokenizer.fileInfo.size-this.tokenizer.position>=wf.len);this.metadata.format.duration&&this.metadata.setFormat("bitrate",this.audioDataSize*8/this.metadata.format.duration)}async parseMetadataSubBlock(t,o){let i=o;for(;i>gb.len;){let e=await this.tokenizer.readToken(gb),a=await this.tokenizer.readNumber(e.largeBlock?VB:QA),A=new Uint8Array(a*2-(e.isOddSize?1:0));switch(await this.tokenizer.readBuffer(A),tp(`Metadata Sub-Blocks functionId=0x${e.functionId.toString(16)}, id.largeBlock=${e.largeBlock},data-size=${A.length}`),e.functionId){case 0:break;case 14:{tp("ID_DSD_BLOCK");let r=1<{coe={parserType:"wavpack",extensions:[".wv",".wvp"],mimeTypes:["audio/wavpack"],async load(){return(await Promise.resolve().then(()=>(goe(),soe))).WavPackParser}}});var oE,cb,loe=ue(()=>{DA();oE={len:8,get:(n,t)=>({chunkID:new Ve(4,"latin1").get(n,t),chunkSize:Le.get(n,t+4)})},cb=class{constructor(t){this.tagHeader=t,this.len=t.chunkSize,this.len+=this.len&1}get(t,o){return new Ve(this.tagHeader.chunkSize,"ascii").get(t,o)}}});var rp,ha,poe,Ib,lb,eU=ue(()=>{DA();er();rp=class extends Qt("Wave"){},ha={PCM:1,ADPCM:2,IEEE_FLOAT:3,ALAW:6,MULAW:7,DVI_ADPCM:17,GSM610:49,MPEG_ADTS_AAC:5632,MPEG_LOAS:5634,RAW_AAC1:255,DOLBY_AC3_SPDIF:146,DVM:8192,RAW_SPORT:576,ESST_AC3:577,DRM:9,DTS2:8193,MPEG:80,MPEGLAYER3:85},poe={[ha.PCM]:"PCM",[ha.ADPCM]:"ADPCM",[ha.IEEE_FLOAT]:"IEEE_FLOAT",[ha.ALAW]:"ALAW",[ha.MULAW]:"MULAW",[ha.DVI_ADPCM]:"DVI_ADPCM",[ha.GSM610]:"GSM610",[ha.MPEG_ADTS_AAC]:"MPEG_ADTS_AAC",[ha.MPEG_LOAS]:"MPEG_LOAS",[ha.RAW_AAC1]:"RAW_AAC1",[ha.DOLBY_AC3_SPDIF]:"DOLBY_AC3_SPDIF",[ha.DVM]:"DVM",[ha.RAW_SPORT]:"RAW_SPORT",[ha.ESST_AC3]:"ESST_AC3",[ha.DRM]:"DRM",[ha.DTS2]:"DTS2",[ha.MPEG]:"MPEG",[ha.MPEGLAYER3]:"MPEGLAYER3"},Ib=class{constructor(t){if(t.chunkSize<16)throw new rp("Invalid chunk size");this.len=t.chunkSize}get(t,o){return{wFormatTag:SA.get(t,o),nChannels:SA.get(t,o+2),nSamplesPerSec:Le.get(t,o+4),nAvgBytesPerSec:Le.get(t,o+8),nBlockAlign:SA.get(t,o+12),wBitsPerSample:SA.get(t,o+14)}}},lb=class{constructor(t){if(t.chunkSize<4)throw new rp("Invalid fact chunk size.");this.len=t.chunkSize}get(t,o){return{dwSampleLength:Le.get(t,o)}}}});var AU,doe=ue(()=>{DA();Ar();AU={len:420,get:(n,t)=>({description:rn(new Ve(256,"ascii").get(n,t)).trim(),originator:rn(new Ve(32,"ascii").get(n,t+256)).trim(),originatorReference:rn(new Ve(32,"ascii").get(n,t+288)).trim(),originationDate:rn(new Ve(10,"ascii").get(n,t+320)).trim(),originationTime:rn(new Ve(8,"ascii").get(n,t+330)).trim(),timeReferenceLow:Le.get(n,t+338),timeReferenceHigh:Le.get(n,t+342),version:SA.get(n,t+346),umid:new Ot(64).get(n,t+348),loudnessValue:SA.get(n,t+412),maxTruePeakLevel:SA.get(n,t+414),maxMomentaryLoudness:SA.get(n,t+416),maxShortTermLoudness:SA.get(n,t+418)})}});var Eoe={};Fr(Eoe,{WaveParser:()=>tU});var hoe,fI,tU,Coe=ue(()=>{$o();DA();hoe=qe(ct(),1);loe();eU();Yh();Ar();ui();zi();doe();eU();fI=(0,hoe.default)("music-metadata:parser:RIFF"),tU=class extends vt{constructor(){super(...arguments),this.blockAlign=0,this.avgBytesPerSec=0}async parse(){let t=await this.tokenizer.readToken(oE);if(fI(`pos=${this.tokenizer.position}, parse: chunkID=${t.chunkID}`),t.chunkID==="RIFF")return this.metadata.setAudioOnly(),this.parseRiffChunk(t.chunkSize).catch(o=>{if(!(o instanceof kA))throw o})}async parseRiffChunk(t){let o=await this.tokenizer.readToken(rt);switch(this.metadata.setFormat("container",o),o){case"WAVE":return this.readWaveChunk(t-rt.len);default:throw new rp(`Unsupported RIFF format: RIFF/${o}`)}}async readWaveChunk(t){for(;t>=oE.len;){let o=await this.tokenizer.readToken(oE);switch(t-=oE.len+o.chunkSize,o.chunkSize>t&&this.metadata.addWarning("Data chunk size exceeds file size"),this.header=o,fI(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${o.chunkID}`),o.chunkID){case"LIST":await this.parseListTag(o);break;case"fact":this.metadata.setFormat("lossless",!1),this.fact=await this.tokenizer.readToken(new lb(o));break;case"fmt ":{let i=await this.tokenizer.readToken(new Ib(o)),e=poe[i.wFormatTag];e||(fI(`WAVE/non-PCM format=${i.wFormatTag}`),e=`non-PCM (${i.wFormatTag})`),this.metadata.setFormat("codec",e),this.metadata.setFormat("bitsPerSample",i.wBitsPerSample),this.metadata.setFormat("sampleRate",i.nSamplesPerSec),this.metadata.setFormat("numberOfChannels",i.nChannels),this.blockAlign=i.nBlockAlign,this.avgBytesPerSec=i.nAvgBytesPerSec;break}case"id3 ":case"ID3 ":{let i=await this.tokenizer.readToken(new Ot(o.chunkSize)),e=Co(i);await new nn().parse(this.metadata,e,this.options);break}case"data":{this.metadata.format.lossless!==!1&&this.metadata.setFormat("lossless",!0);let i=o.chunkSize;if(this.tokenizer.fileInfo.size){let a=this.tokenizer.fileInfo.size-this.tokenizer.position;a0?this.metadata.setFormat("bitrate",this.avgBytesPerSec*8):this.metadata.format.duration&&this.metadata.setFormat("bitrate",i*8/this.metadata.format.duration),await this.tokenizer.ignore(o.chunkSize);break}case"bext":{let i=await this.tokenizer.readToken(AU);Object.keys(i).forEach(a=>{this.metadata.addTag("exif",`bext.${a}`,i[a])});let e=o.chunkSize-AU.len;await this.tokenizer.ignore(e);break}case"\0\0\0\0":fI(`Ignore padding chunk: RIFF/${o.chunkID} of ${o.chunkSize} bytes`),this.metadata.addWarning(`Ignore chunk: RIFF/${o.chunkID}`),await this.tokenizer.ignore(o.chunkSize);break;default:fI(`Ignore chunk: RIFF/${o.chunkID} of ${o.chunkSize} bytes`),this.metadata.addWarning(`Ignore chunk: RIFF/${o.chunkID}`),await this.tokenizer.ignore(o.chunkSize)}this.header.chunkSize%2===1&&(fI("Read odd padding byte"),await this.tokenizer.ignore(1))}}async parseListTag(t){let o=await this.tokenizer.readToken(new Ve(4,"latin1"));switch(fI("pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s",this.tokenizer.position,o),o){case"INFO":return this.parseRiffInfoTags(t.chunkSize-4);default:return this.metadata.addWarning(`Ignore chunk: RIFF/WAVE/LIST/${o}`),fI(`Ignoring chunkID=RIFF/WAVE/LIST/${o}`),this.tokenizer.ignore(t.chunkSize-4).then()}}async parseRiffInfoTags(t){for(;t>=8;){let o=await this.tokenizer.readToken(oE),i=new cb(o),e=await this.tokenizer.readToken(i);this.addTag(o.chunkID,rn(e)),t-=8+i.len}if(t!==0)throw new rp(`Illegal remaining size: ${t}`)}addTag(t,o){this.metadata.addTag("exif",t,o)}}});var uoe,Boe=ue(()=>{uoe={parserType:"riff",extensions:[".wav","wave",".bwf"],mimeTypes:["audio/vnd.wave","audio/wav","audio/wave"],async load(){return(await Promise.resolve().then(()=>(Coe(),Eoe))).WaveParser}}});function d4e(n){let t=foe.default.parse(n),o=cre(t.type);return{type:o.type,subtype:o.subtype,suffix:o.suffix,parameters:t.parameters}}function h4e(n){let t=n.lastIndexOf(".");return t===-1?"":n.substring(t)}var foe,Qoe,ap,ip,rU=ue(()=>{a2();foe=qe(gre(),1);Ire();Qoe=qe(ct(),1);Rre();Jl();oae();er();sae();Qae();Oae();kae();Kae();Vae();iie();Qie();Uie();ioe();Ioe();Boe();pb();ap=(0,Qoe.default)("music-metadata:parser:factory");ip=class{constructor(){this.parsers=[],[zae,iae,nae,fie,aie,uoe,aoe,fae,Rae,coe,Lie,Hae,Dae].forEach(t=>{this.registerParser(t)})}registerParser(t){this.parsers.push(t)}async parse(t,o,i){if(t.supportsRandomAccess()?(ap("tokenizer supports random-access, scanning for appending headers"),await aU(t,i)):ap("tokenizer does not support random-access, cannot scan for appending headers"),!o){let r=new Uint8Array(4100);if(t.fileInfo.mimeType&&(o=this.findLoaderForContentType(t.fileInfo.mimeType)),!o&&t.fileInfo.path&&(o=this.findLoaderForExtension(t.fileInfo.path)),!o){ap("Guess parser on content..."),await t.peekBuffer(r,{mayBeLess:!0});let s=await tf(r,{mpegOffsetTolerance:10});if(!s||!s.mime)throw new cI("Failed to determine audio format");if(ap(`Guessed file type is mime=${s.mime}, extension=${s.ext}`),o=this.findLoaderForContentType(s.mime),!o)throw new II(`Guessed MIME-type not supported: ${s.mime}`)}}ap(`Loading ${o.parserType} parser...`);let e=new uO(i),a=await o.load(),A=new a(e,t,i??{});return ap(`Parser ${o.parserType} loaded`),await A.parse(),e.format.trackInfo&&(e.format.hasAudio===void 0&&e.setFormat("hasAudio",!!e.format.trackInfo.find(r=>r.type===pa.audio)),e.format.hasVideo===void 0&&e.setFormat("hasVideo",!!e.format.trackInfo.find(r=>r.type===pa.video))),e.toCommonMetadata()}findLoaderForExtension(t){if(!t)return;let o=h4e(t).toLocaleLowerCase()||t;return this.parsers.find(i=>i.extensions.indexOf(o)!==-1)}findLoaderForContentType(t){let o;if(!t)return;try{o=d4e(t)}catch{ap(`Invalid HTTP Content-Type header value: ${t}`);return}let i=o.subtype.indexOf("x-")===0?o.subtype.substring(2):o.subtype;return this.parsers.find(e=>e.mimeTypes.find(a=>a.indexOf(`${o.type}/${i}`)!==-1))}getSupportedMimeTypes(){let t=new Set;return this.parsers.forEach(o=>{o.mimeTypes.forEach(i=>{t.add(i),t.add(i.replace("/","/x-"))})}),Array.from(t)}}});async function yoe(n){let t=n.fileInfo.size;if(t>=143){let o=new Uint8Array(15),i=n.position;await n.readBuffer(o,{position:t-143}),n.setPosition(i);let e=br(o,"latin1");if(e.substring(6)===E4e)return Number.parseInt(e.substring(0,6),10)+15}return 0}var E4e,moe=ue(()=>{Fs();E4e="LYRICS200"});async function C4e(n,t={}){let o=zD(n);try{return await nE(o,t)}finally{await o.close()}}async function u4e(n,t,o={}){let i=qD(n,{fileInfo:typeof t=="string"?{mimeType:t}:t});try{return await nE(i,o)}finally{await i.close()}}async function B4e(n,t,o={}){let i=Co(n,{fileInfo:typeof t=="string"?{mimeType:t}:t});return nE(i,o)}function nE(n,t){return new ip().parse(n,void 0,t)}function f4e(n){let t={};for(let{id:o,value:i}of n)(t[o]||(t[o]=[])).push(i);return t}function Q4e(n){return n===void 0?0:1+Math.round(n*4)}function y4e(n){return n?n.reduce((t,o)=>o.name&&o.name.toLowerCase()in["front","cover","cover (front)"]?o:t):null}async function aU(n,t={}){let o=n.fileInfo.size;if(await Kre(n)){o-=128;let i=await yoe(n);o-=i}t.apeHeader=await dI.findApeFooterOffset(n,o)}function m4e(){return new ip().getSupportedMimeTypes()}var pb=ue(()=>{$o();rU();Vl();nf();moe();Jl();er();er()});var Doe={};Fr(Doe,{CouldNotDetermineFileTypeError:()=>cI,FieldDecodingError:()=>tn,InternalParserError:()=>jl,LyricsContentType:()=>Fh,TimestampFormat:()=>Lh,UnsupportedFileTypeError:()=>II,getSupportedMimeTypes:()=>m4e,makeParseError:()=>Ph,makeUnexpectedFileContentError:()=>Qt,orderTags:()=>f4e,parseBlob:()=>C4e,parseBuffer:()=>B4e,parseFile:()=>w4e,parseFromTokenizer:()=>nE,parseStream:()=>S4e,parseWebStream:()=>u4e,ratingToStars:()=>Q4e,scanAppendingHeaders:()=>aU,selectCover:()=>y4e});async function S4e(n,t,o={}){let i=await YL(n,{fileInfo:typeof t=="string"?{mimeType:t}:t});try{return await nE(i,o)}finally{await i.close()}}async function w4e(n,t={}){Soe(`parseFile: ${n}`);let o=await mte(n),i=new ip;try{let e=i.findLoaderForExtension(n);e||Soe("Parser could not be determined by file extension");try{return await i.parse(o,e,t)}catch(a){throw(a instanceof cI||a instanceof II)&&(a.message+=`: ${n}`),a}}finally{await o.close()}}var woe,Soe,Ooe=ue(()=>{$o();woe=qe(ct(),1);pb();rU();pb();Soe=(0,woe.default)("music-metadata:parser")});var Hne=ee((uNA,FU)=>{"use strict";var k8e=Object.prototype.hasOwnProperty,Qi="~";function Ff(){}Object.create&&(Ff.prototype=Object.create(null),new Ff().__proto__||(Qi=!1));function v8e(n,t,o){this.fn=n,this.context=t,this.once=o||!1}function Une(n,t,o,i,e){if(typeof o!="function")throw new TypeError("The listener must be a function");var a=new v8e(o,i||n,e),A=Qi?Qi+t:t;return n._events[A]?n._events[A].fn?n._events[A]=[n._events[A],a]:n._events[A].push(a):(n._events[A]=a,n._eventsCount++),n}function Ob(n,t){--n._eventsCount===0?n._events=new Ff:delete n._events[t]}function ii(){this._events=new Ff,this._eventsCount=0}ii.prototype.eventNames=function(){var t=[],o,i;if(this._eventsCount===0)return t;for(i in o=this._events)k8e.call(o,i)&&t.push(Qi?i.slice(1):i);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(o)):t};ii.prototype.listeners=function(t){var o=Qi?Qi+t:t,i=this._events[o];if(!i)return[];if(i.fn)return[i.fn];for(var e=0,a=i.length,A=new Array(a);e{"use strict";var Kf=n=>n&&typeof n.message=="string",XU=n=>{if(!n)return;let t=n.cause;if(typeof t=="function"){let o=n.cause();return Kf(o)?o:void 0}else return Kf(t)?t:void 0},hse=(n,t)=>{if(!Kf(n))return"";let o=n.stack||"";if(t.has(n))return o+` +`),syncText:o}}var h2,Tre=ue(()=>{Jl();h2=/\[(\d{2}):(\d{2})\.(\d{2,3})]/});function Tqe(n){return n.length>2?`${n.slice(0,n.length-1).join(", ")} & ${n[n.length-1]}`:n.join(" & ")}var Nre,ql,_qe,uO,Rre=ue(()=>{Jl();Nre=qe(ct(),1);ure();Mre();zg();Ar();a2();Tre();ql=(0,Nre.default)("music-metadata:collector"),_qe=["matroska","APEv2","vorbis","ID3v2.4","ID3v2.3","ID3v2.2","exif","asf","iTunes","AIFF","ID3v1"],uO=class{constructor(t){this.format={tagTypes:[],trackInfo:[]},this.native={},this.common={track:{no:null,of:null},disk:{no:null,of:null},movementIndex:{no:null,of:null}},this.quality={warnings:[]},this.commonOrigin={},this.originPriority={},this.tagMapper=new CO,this.opts=t;let o=1;for(let i of _qe)this.originPriority[i]=o++;this.originPriority.artificial=500,this.originPriority.id3v1=600}hasAny(){return Object.keys(this.native).length>0}addStreamInfo(t){ql(`streamInfo: type=${t.type?s2[t.type]:"?"}, codec=${t.codecName}`),this.format.trackInfo.push(t)}setFormat(t,o){ql(`format: ${t} = ${o}`),this.format[t]=o,this.opts?.observer&&this.opts.observer({metadata:this,tag:{type:"format",id:t,value:o}})}setAudioOnly(){this.setFormat("hasAudio",!0),this.setFormat("hasVideo",!1)}async addTag(t,o,i){ql(`tag ${t}.${o} = ${i}`),this.native[t]||(this.format.tagTypes.push(t),this.native[t]=[]),this.native[t].push({id:o,value:i}),await this.toCommon(t,o,i)}addWarning(t){this.quality.warnings.push({message:t})}async postMap(t,o){switch(o.id){case"artist":return this.handleSingularArtistTag(t,o,"artist","artists");case"albumartist":return this.handleSingularArtistTag(t,o,"albumartist","albumartists");case"artists":return this.handlePluralArtistTag(t,o,"artist","artists");case"albumartists":return this.handlePluralArtistTag(t,o,"albumartist","albumartists");case"picture":return this.postFixPicture(o.value).then(i=>{i!==null&&(o.value=i,this.setGenericTag(t,o))});case"totaltracks":this.common.track.of=hr.toIntOrNull(o.value);return;case"totaldiscs":this.common.disk.of=hr.toIntOrNull(o.value);return;case"movementTotal":this.common.movementIndex.of=hr.toIntOrNull(o.value);return;case"track":case"disk":case"movementIndex":{let i=this.common[o.id].of;this.common[o.id]=hr.normalizeTrack(o.value),this.common[o.id].of=i??this.common[o.id].of;return}case"bpm":case"year":case"originalyear":o.value=Number.parseInt(o.value,10);break;case"date":{let i=Number.parseInt(o.value.substr(0,4),10);Number.isNaN(i)||(this.common.year=i);break}case"discogs_label_id":case"discogs_release_id":case"discogs_master_release_id":case"discogs_artist_id":case"discogs_votes":o.value=typeof o.value=="string"?Number.parseInt(o.value,10):o.value;break;case"replaygain_track_gain":case"replaygain_track_peak":case"replaygain_album_gain":case"replaygain_album_peak":o.value=hre(o.value);break;case"replaygain_track_minmax":o.value=o.value.split(",").map(i=>Number.parseInt(i,10));break;case"replaygain_undo":{let i=o.value.split(",").map(e=>Number.parseInt(e,10));o.value={leftChannel:i[0],rightChannel:i[1]};break}case"gapless":case"compilation":case"podcast":case"showMovement":o.value=o.value==="1"||o.value===1;break;case"isrc":{let i=this.common[o.id];if(i&&i.indexOf(o.value)!==-1)return;break}case"comment":typeof o.value=="string"&&(o.value={text:o.value}),o.value.descriptor==="iTunPGAP"&&this.setGenericTag(t,{id:"gapless",value:o.value.text==="1"});break;case"lyrics":typeof o.value=="string"&&(o.value=_re(o.value));break;default:}o.value!==null&&this.setGenericTag(t,o)}toCommonMetadata(){return{format:this.format,native:this.native,quality:this.quality,common:this.common}}handleSingularArtistTag(t,o,i,e){if(this.commonOrigin[i]===this.originPriority[t])return this.postMap("artificial",{id:e,value:o.value});this.common[e]||this.setGenericTag("artificial",{id:e,value:o.value}),this.setGenericTag(t,o)}handlePluralArtistTag(t,o,i,e){if((!this.common[i]||this.commonOrigin[i]===this.originPriority.artificial)&&(!this.common[e]||this.common[e].indexOf(o.value)===-1)){let a=(this.common[e]||[]).concat([o.value]),A=Tqe(a);this.setGenericTag("artificial",{id:i,value:A})}this.setGenericTag(t,o)}async postFixPicture(t){if(t.data&&t.data.length>0){if(!t.format){let o=await tf(Uint8Array.from(t.data));if(o)t.format=o.mime;else return null}switch(t.format=t.format.toLocaleLowerCase(),t.format){case"image/jpg":t.format="image/jpeg"}return t}return this.addWarning("Empty picture tag found"),null}async toCommon(t,o,i){let e={id:o,value:i},a=this.tagMapper.mapTag(t,e,this);a&&await this.postMap(t,a)}setGenericTag(t,o){ql(`common.${o.id} = ${o.value}`);let i=this.commonOrigin[o.id]||1e3,e=this.originPriority[t];if(Ere(o.id))if(e<=i)this.common[o.id]=o.value,this.commonOrigin[o.id]=e;else return ql(`Ignore native tag (singleton): ${t}.${o.id} = ${o.value}`);else if(e===i)!Cre(o.id)||this.common[o.id].indexOf(o.value)===-1?this.common[o.id].push(o.value):ql(`Ignore duplicate value: ${t}.${o.id} = ${o.value}`);else if(e{vt=class{constructor(t,o,i){this.metadata=t,this.tokenizer=o,this.options=i}}});var Nqe,rt,ui=ue(()=>{Fs();Ar();er();Nqe=/^[\x21-\x7e©][\x20-\x7e\x00()]{3}/,rt={len:4,get:(n,t)=>{let o=br(n.subarray(t,t+rt.len),"latin1");if(!o.match(Nqe))throw new tn(`FourCC contains invalid characters: ${dre(o)} "${o}"`);return o},put:(n,t,o)=>{let i=Dte(o,"latin1");if(i.length!==4)throw new jl("Invalid length");return n.set(i,t),t+4}}});function vre(n){return{containsHeader:BO(n,31),containsFooter:BO(n,30),isHeader:BO(n,29),readOnly:BO(n,0),dataType:(n&6)>>1}}function BO(n,t){return(n&1<{DA();ui();of={text_utf8:0,binary:1,external_info:2,reserved:3},E2={len:52,get:(n,t)=>({ID:rt.get(n,t),version:Le.get(n,t+4)/1e3,descriptorBytes:Le.get(n,t+8),headerBytes:Le.get(n,t+12),seekTableBytes:Le.get(n,t+16),headerDataBytes:Le.get(n,t+20),apeFrameDataBytes:Le.get(n,t+24),apeFrameDataBytesHigh:Le.get(n,t+28),terminatingDataBytes:Le.get(n,t+32),fileMD5:new Ot(16).get(n,t+36)})},kre={len:24,get:(n,t)=>({compressionLevel:SA.get(n,t),formatFlags:SA.get(n,t+2),blocksPerFrame:Le.get(n,t+4),finalFrameBlocks:Le.get(n,t+8),totalFrames:Le.get(n,t+12),bitsPerSample:SA.get(n,t+16),channel:SA.get(n,t+18),sampleRate:Le.get(n,t+20)})},Vi={len:32,get:(n,t)=>({ID:new Ve(8,"ascii").get(n,t),version:Le.get(n,t+8),size:Le.get(n,t+12),fields:Le.get(n,t+16),flags:vre(Le.get(n,t+20))})},fO={len:8,get:(n,t)=>({size:Le.get(n,t),flags:vre(Le.get(n,t+4))})}});var Ure={};Fr(Ure,{APEv2Parser:()=>dI,ApeContentError:()=>Kh,tryParseApeHeader:()=>zl});function zl(n,t,o){return new dI(n,t,o).tryParseApeHeader()}var Lre,pI,Gre,Fre,Kh,dI,Vl=ue(()=>{Lre=qe(ct(),1);$o();DA();Ar();zi();Pre();er();Fs();pI=(0,Lre.default)("music-metadata:parser:APEv2"),Gre="APEv2",Fre="APETAGEX",Kh=class extends Qt("APEv2"){};dI=class n extends vt{constructor(){super(...arguments),this.ape={}}static calculateDuration(t){let o=t.totalFrames>1?t.blocksPerFrame*(t.totalFrames-1):0;return o+=t.finalFrameBlocks,o/t.sampleRate}static async findApeFooterOffset(t,o){let i=new Uint8Array(Vi.len),e=t.position;if(o<=Vi.len){pI(`Offset is too small to read APE footer: offset=${o}`);return}if(o>Vi.len){await t.readBuffer(i,{position:o-Vi.len}),t.setPosition(e);let a=Vi.get(i,0);if(a.ID==="APETAGEX")return a.flags.isHeader?pI(`APE Header found at offset=${o-Vi.len}`):(pI(`APE Footer found at offset=${o-Vi.len}`),o-=a.size),{footer:a,offset:o}}}static parseTagFooter(t,o,i){let e=Vi.get(o,o.length-Vi.len);if(e.ID!==Fre)throw new Kh("Unexpected APEv2 Footer ID preamble value");return Co(o),new n(t,Co(o),i).parseTags(e)}async tryParseApeHeader(){if(this.tokenizer.fileInfo.size&&this.tokenizer.fileInfo.size-this.tokenizer.position0?this.parseDescriptorExpansion(o):this.parseHeader());return this.metadata.setAudioOnly(),await this.tokenizer.ignore(i.forwardBytes),this.tryParseApeHeader()}async parseTags(t){let o=new Uint8Array(256),i=t.size-Vi.len;pI(`Parse APE tags at offset=${this.tokenizer.position}, size=${i}`);for(let e=0;ethis.metadata.addTag(Gre,r,c)));break}case of.binary:if(this.options.skipCovers)await this.tokenizer.ignore(a.size);else{let s=new Uint8Array(a.size);await this.tokenizer.readBuffer(s),A=js(s);let g=br(s.subarray(0,A),"utf-8"),c=s.subarray(A+1);await this.metadata.addTag(Gre,r,{description:g,data:c})}break;case of.external_info:pI(`Ignore external info ${r}`),await this.tokenizer.ignore(a.size);break;case of.reserved:pI(`Ignore external info ${r}`),this.metadata.addWarning(`APEv2 header declares a reserved datatype for "${r}"`),await this.tokenizer.ignore(a.size);break}}}async parseDescriptorExpansion(t){return await this.tokenizer.ignore(t),this.parseHeader()}async parseHeader(){let t=await this.tokenizer.readToken(kre);if(this.metadata.setFormat("lossless",!0),this.metadata.setFormat("container","Monkey's Audio"),this.metadata.setFormat("bitsPerSample",t.bitsPerSample),this.metadata.setFormat("sampleRate",t.sampleRate),this.metadata.setFormat("numberOfChannels",t.channel),this.metadata.setFormat("duration",n.calculateDuration(t)),!this.ape.descriptor)throw new Kh("Missing APE descriptor");return{forwardBytes:this.ape.descriptor.seekTableBytes+this.ape.descriptor.headerDataBytes+this.ape.descriptor.apeFrameDataBytes+this.ape.descriptor.terminatingDataBytes}}}});async function Kre(n){if(n.fileInfo.size>=128){let t=new Uint8Array(3),o=n.position;return await n.readBuffer(t,{position:n.fileInfo.size-128}),n.setPosition(o),br(t,"latin1")==="TAG"}return!1}var Hre,QO,xh,yO,hI,mO,nf=ue(()=>{Hre=qe(ct(),1);DA();Ar();zi();Vl();Fs();QO=(0,Hre.default)("music-metadata:parser:ID3v1"),xh=["Blues","Classic Rock","Country","Dance","Disco","Funk","Grunge","Hip-Hop","Jazz","Metal","New Age","Oldies","Other","Pop","R&B","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death Metal","Pranks","Soundtrack","Euro-Techno","Ambient","Trip-Hop","Vocal","Jazz+Funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound Clip","Gospel","Noise","Alt. Rock","Bass","Soul","Punk","Space","Meditative","Instrumental Pop","Instrumental Rock","Ethnic","Gothic","Darkwave","Techno-Industrial","Electronic","Pop-Folk","Eurodance","Dream","Southern Rock","Comedy","Cult","Gangsta Rap","Top 40","Christian Rap","Pop/Funk","Jungle","Native American","Cabaret","New Wave","Psychedelic","Rave","Showtunes","Trailer","Lo-Fi","Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical","Rock & Roll","Hard Rock","Folk","Folk/Rock","National Folk","Swing","Fast-Fusion","Bebob","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic Rock","Progressive Rock","Psychedelic Rock","Symphonic Rock","Slow Rock","Big Band","Chorus","Easy Listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber Music","Sonata","Symphony","Booty Bass","Primus","Porn Groove","Satire","Slow Jam","Club","Tango","Samba","Folklore","Ballad","Power Ballad","Rhythmic Soul","Freestyle","Duet","Punk Rock","Drum Solo","A Cappella","Euro-House","Dance Hall","Goa","Drum & Bass","Club-House","Hardcore","Terror","Indie","BritPop","Negerpunk","Polsk Punk","Beat","Christian Gangsta Rap","Heavy Metal","Black Metal","Crossover","Contemporary Christian","Christian Rock","Merengue","Salsa","Thrash Metal","Anime","JPop","Synthpop","Abstract","Art Rock","Baroque","Bhangra","Big Beat","Breakbeat","Chillout","Downtempo","Dub","EBM","Eclectic","Electro","Electroclash","Emo","Experimental","Garage","Global","IDM","Illbient","Industro-Goth","Jam Band","Krautrock","Leftfield","Lounge","Math Rock","New Romantic","Nu-Breakz","Post-Punk","Post-Rock","Psytrance","Shoegaze","Space Rock","Trop Rock","World Music","Neoclassical","Audiobook","Audio Theatre","Neue Deutsche Welle","Podcast","Indie Rock","G-Funk","Dubstep","Garage Rock","Psybient"],yO={len:128,get:(n,t)=>{let o=new hI(3).get(n,t);return o==="TAG"?{header:o,title:new hI(30).get(n,t+3),artist:new hI(30).get(n,t+33),album:new hI(30).get(n,t+63),year:new hI(4).get(n,t+93),comment:new hI(28).get(n,t+97),zeroByte:QA.get(n,t+127),track:QA.get(n,t+126),genre:QA.get(n,t+127)}:null}},hI=class{constructor(t){this.len=t,this.stringType=new Ve(t,"latin1")}get(t,o){let i=this.stringType.get(t,o);return i=iO(i),i=i.trim(),i.length>0?i:void 0}},mO=class n extends vt{constructor(t,o,i){super(t,o,i),this.apeHeader=i.apeHeader}static getGenre(t){if(tt){QO("Already consumed the last 128 bytes");return}let o=await this.tokenizer.readToken(yO,t);if(o){QO("ID3v1 header found at: pos=%s",this.tokenizer.fileInfo.size-yO.len);let i=["title","artist","album","comment","track","year"];for(let a of i)o[a]&&o[a]!==""&&await this.addTag(a,o[a]);let e=n.getGenre(o.genre);e&&await this.addTag("genre",e)}else QO("ID3v1 header not found at: pos=%s",this.tokenizer.fileInfo.size-yO.len)}async addTag(t,o){await this.metadata.addTag("ID3v1",t,o)}}});var C2,xre=ue(()=>{DA();C2={len:16,get:(n,t)=>{let o=xe.get(n,t+8),i=xe.get(n,t+12);return{startTime:xe.get(n,t),endTime:xe.get(n,t+4),startOffset:o===4294967295?void 0:o,endOffset:i===4294967295?void 0:i}}}});function sf(n){switch(n){case 2:return 6;case 3:case 4:return 10;default:throw Yre(n)}}function Rqe(n,t){return t===3?{status:{tag_alter_preservation:GA(n,0,7),file_alter_preservation:GA(n,0,6),read_only:GA(n,0,5)},format:{compression:GA(n,1,7),encryption:GA(n,1,6),grouping_identity:GA(n,1,5),unsynchronisation:!1,data_length_indicator:!1}}:{status:{tag_alter_preservation:GA(n,0,6),file_alter_preservation:GA(n,0,5),read_only:GA(n,0,4)},format:{grouping_identity:GA(n,1,6),compression:GA(n,1,3),encryption:GA(n,1,2),unsynchronisation:GA(n,1,1),data_length_indicator:GA(n,1,0)}}}function gf(n,t,o){switch(t){case 2:return kqe(n,t,o);case 3:case 4:return vqe(n,t,o);default:throw Yre(t)}}function kqe(n,t,o){let i={id:br(n.subarray(0,3),"ascii"),length:Pr.get(n,3)};return i.id.match(/^[A-Z0-9]{3}$/)||o.addWarning(`Invalid ID3v2.${t} frame-header-ID: ${i.id}`),i}function vqe(n,t,o){let i={id:br(n.subarray(0,4),"ascii"),length:(t===4?l2:xe).get(n,4),flags:Rqe(n.subarray(8,10),t)};return i.id.match(/^[A-Z0-9]{4}$/)||o.addWarning(`Invalid ID3v2.${t} frame-header-ID: ${i.id}`),i}function Yre(n){throw new EI(`Unexpected majorVer: ${n}`)}var u2=ue(()=>{DA();Ar();lI();Fs();B2()});function Pqe(n){let t=[],o,i="";for(let e of n)if(typeof o=="string")if(e==="("&&o==="")i+="(",o=void 0;else if(e===")"){i!==""&&(t.push(i),i="");let a=jre(o);a&&t.push(a),o=void 0}else o+=e;else e==="("?o="":i+=e;return i&&(t.length===0&&i.match(/^\d*$/)&&(i=jre(i)),i&&t.push(i)),t}function jre(n){if(n==="RX")return"Remix";if(n==="CR")return"Cover";if(n.match(/^\d*$/))return xh[Number.parseInt(n,10)]}function Gqe(n){throw new EI(`Unexpected majorVer: ${n}`)}var Jre,SO,on,f2,wO,EI,B2=ue(()=>{Jre=qe(ct(),1);DA();Ar();lI();nf();er();Ar();xre();u2();SO=(0,Jre.default)("music-metadata:id3v2:frame-parser"),on="latin1",f2={encoding:on,bom:!1};wO=class n{constructor(t,o){this.major=t,this.warningCollector=o}readData(t,o,i){if(t.length===0){this.warningCollector.addWarning(`id3v2.${this.major} header has empty tag type=${o}`);return}let{encoding:e,bom:a}=Uh.get(t,0),A=t.length,r=0,s=[],g=n.getNullTerminatorLength(e),c;switch(SO(`Parsing tag type=${o}, encoding=${e}, bom=${a}`),o!=="TXXX"&&o[0]==="T"?"T*":o){case"T*":case"GRP1":case"GP1":case"IPLS":case"MVIN":case"MVNM":case"PCS":case"PCST":{let I;try{I=n.trimNullPadding(da(t.subarray(1),e))}catch(d){if(d instanceof Error){this.warningCollector.addWarning(`id3v2.${this.major} type=${o} header has invalid string value: ${d.message}`);break}throw d}switch(o){case"TMCL":case"TIPL":case"IPLS":s=n.functionList(this.splitValue(o,I));break;case"TRK":case"TRCK":case"TPOS":case"TIT1":case"TIT2":case"TIT3":s=I;break;case"TCOM":case"TEXT":case"TOLY":case"TOPE":case"TPE1":case"TSRC":s=this.splitValue(o,I);break;case"TCO":case"TCON":s=this.splitValue(o,I).map(d=>Pqe(d)).reduce((d,B)=>d.concat(B),[]);break;case"PCS":case"PCST":s=this.major>=4?this.splitValue(o,I):[I],s=Array.isArray(s)&&s[0]===""?1:0;break;default:s=this.major>=4?this.splitValue(o,I):[I]}break}case"TXXX":{let I=n.readIdentifierAndData(t.subarray(1),e);s={description:I.id,text:this.splitValue(o,da(I.data,e).replace(/\x00+$/,""))};break}case"PIC":case"APIC":if(i){let I={};switch(t=t.subarray(1),this.major){case 2:I.format=da(t.subarray(0,3),"latin1"),t=t.subarray(3);break;case 3:case 4:c=js(t,on),I.format=da(t.subarray(0,c),on),t=t.subarray(c+1);break;default:throw Gqe(this.major)}I.format=n.fixPictureMimeType(I.format),I.type=Gh[t[0]],t=t.subarray(1),c=js(t,e),I.description=da(t.subarray(0,c),e),t=t.subarray(c+g),I.data=t,s=I}break;case"CNT":case"PCNT":s=I2(t);break;case"SYLT":{let I=d2.get(t,0);t=t.subarray(d2.len);let d={descriptor:"",language:I.language,contentType:I.contentType,timeStampFormat:I.timeStampFormat,syncText:[]},B=!1;for(;t.length>0;){let f=n.readNullTerminatedString(t,I.encoding);if(t=t.subarray(f.len),B){let Q=xe.get(t,0);t=t.subarray(xe.len),d.syncText.push({text:f.text,timestamp:Q})}else d.descriptor=f.text,B=!0}s=d;break}case"ULT":case"USLT":case"COM":case"COMM":{let I=oO.get(t,r);r+=oO.len;let d=n.readNullTerminatedString(t.subarray(r),I.encoding);r+=d.len;let B=n.readNullTerminatedString(t.subarray(r),I.encoding);s={language:I.language,descriptor:d.text,text:B.text};break}case"UFID":{let I=n.readIdentifierAndData(t,on);s={owner_identifier:I.id,identifier:I.data};break}case"PRIV":{let I=n.readIdentifierAndData(t,on);s={owner_identifier:I.id,data:I.data};break}case"POPM":{t=t.subarray(r);let I=n.readNullTerminatedString(t,f2),d=I.text;if(t=t.subarray(I.len),t.length===0){this.warningCollector.addWarning(`id3v2.${this.major} type=${o} POPM frame missing rating byte`),s={email:d,rating:0,counter:void 0};break}let B=QA.get(t,0),f=t.subarray(QA.len);s={email:d,rating:B,counter:f.length>0?I2(f):void 0};break}case"GEOB":{let I=Uh.get(t,0);t=t.subarray(1);let d=n.readNullTerminatedString(t,f2),B=d.text;t=t.subarray(d.len);let f=n.readNullTerminatedString(t,I),Q=f.text;t=t.subarray(f.len);let y=n.readNullTerminatedString(t,I),m=y.text;t=t.subarray(y.len),s={type:B,filename:Q,description:m,data:t};break}case"WCOM":case"WCOP":case"WOAF":case"WOAR":case"WOAS":case"WORS":case"WPAY":case"WPUB":s=n.readNullTerminatedString(t,f2).text;break;case"WXXX":{let I=Uh.get(t,0);t=t.subarray(1);let d=n.readNullTerminatedString(t,I),B=d.text;t=t.subarray(d.len),s={description:B,url:n.trimNullPadding(da(t,on))};break}case"WFD":case"WFED":{let I=Uh.get(t,0);t=t.subarray(1),s=n.readNullTerminatedString(t,I).text;break}case"MCDI":{s=t.subarray(0,A);break}case"CHAP":{SO("Reading CHAP"),c=js(t,on);let I={label:da(t.subarray(0,c),on),info:C2.get(t,c+1),frames:new Map};for(r+=c+1+C2.len;r=a.length)return{text:da(t,o.encoding),len:e};let r=t.subarray(0,i+A);return{text:da(r,o.encoding),len:i+A+n.getNullTerminatorLength(o.encoding)}}static fixPictureMimeType(t){switch(t=t.toLocaleLowerCase(),t){case"jpg":return"image/jpeg";case"png":return"image/png"}return t}static functionList(t){let o={};for(let i=0;i+11?this.warningCollector.addWarning(`ID3v2.${this.major} ${t} uses non standard null-separator.`):i=o.split(/\//g)):i=o.split(/\x00/g),n.trimArray(i)}static trimArray(t){return t.map(o=>n.trimNullPadding(o).trim())}static trimNullPadding(t){let o=t.length;for(;o>0&&t.charCodeAt(o-1)===0;)o--;return o===t.length?t:t.slice(0,o)}static readIdentifierAndData(t,o){let i=n.readNullTerminatedString(t,{encoding:o,bom:!1});return{id:i.text,data:t.subarray(i.len)}}static getNullTerminatorLength(t){return t.startsWith("utf-16")?2:1}},EI=class extends Qt("id3v2"){}});function Fqe(n){throw new EI(`Unexpected majorVer: ${n}`)}var nn,Yh=ue(()=>{DA();B2();lI();u2();nn=class n{constructor(){this.tokenizer=void 0,this.id3Header=void 0,this.metadata=void 0,this.headerType=void 0,this.options=void 0}static removeUnsyncBytes(t){let o=0,i=0;for(;o0?this.parseExtendedHeaderData(o,t.size):this.parseId3Data(this.id3Header.size-t.size)}async parseExtendedHeaderData(t,o){return await this.tokenizer.ignore(t),this.parseId3Data(this.id3Header.size-o)}async parseId3Data(t){let o=await this.tokenizer.readToken(new Ot(t));for(let i of this.parseMetadata(o))switch(i.id){case"TXXX":i.value&&await this.handleTag(i,i.value.text,()=>i.value.description);break;default:await(Array.isArray(i.value)?Promise.all(i.value.map(e=>this.addTag(i.id,e))):this.addTag(i.id,i.value))}}async handleTag(t,o,i,e=a=>a){await Promise.all(o.map(a=>this.addTag(n.makeDescriptionTagName(t.id,i(a)),e(a))))}async addTag(t,o){await this.metadata.addTag(this.headerType,t,o)}parseMetadata(t){let o=0,i=[];for(;o!==t.length;){let e=sf(this.id3Header.version.major);if(o+e>t.length){this.metadata.addWarning("Illegal ID3v2 tag length");break}let a=t.subarray(o,o+e);o+=e;let A=gf(a,this.id3Header.version.major,this.metadata),r=t.subarray(o,o+A.length);o+=A.length;let s=n.readFrameData(r,A,this.id3Header.version.major,!this.options.skipCovers,this.metadata);s&&i.push({id:A.id,value:s})}return i}static mapId3v2Chapters(t){if(!t)return;let o=t.filter(g=>g.id==="CHAP");if(!o?.length)return;let e=t.filter(g=>g.id==="CTOC")?.find(g=>g.value.flags?.topLevel),a=new Map;for(let g of o)a.set(g.value.label,g.value);let A=e?.value.childElementIds,r=[],s=A??[...a.keys()];for(let g of s){let c=a.get(g);if(!c)continue;let I=c.frames,d=I.get("TIT2");d&&r.push({id:g,title:d,url:I.get("WXXX"),start:c.info.startTime/1e3,end:c.info.endTime/1e3,image:I.get("APIC")})}return A||r.sort((g,c)=>g.start-c.start),r.length?r:void 0}}});var qre,Q2,Js,cf=ue(()=>{$o();qre=qe(ct(),1);lI();Yh();nf();zi();Q2=(0,qre.default)("music-metadata:parser:ID3"),Js=class extends vt{constructor(){super(...arguments),this.id3parser=new nn}static async startsWithID3v2Header(t){return(await t.peekToken(rf)).fileIdentifier==="ID3"}async parse(){try{await this.parseID3v2()}catch(t){if(t instanceof kA)Q2("End-of-stream");else throw t}}finalize(){}async parseID3v2(){await this.tryReadId3v2Headers(),Q2("End of ID3v2 header, go to MPEG-parser: pos=%s",this.tokenizer.position),await this.postId3v2Parse(),this.options.skipPostHeaders&&this.metadata.hasAny()?this.finalize():(await new mO(this.metadata,this.tokenizer,this.options).parse(),this.finalize())}async tryReadId3v2Headers(){if((await this.tokenizer.peekToken(rf)).fileIdentifier==="ID3")return Q2("Found ID3v2 header, pos=%s",this.tokenizer.position),await this.id3parser.parse(this.metadata,this.tokenizer,this.options),this.tryReadId3v2Headers()}}});var y2,zre=ue(()=>{Ar();y2={len:2,get:(n,t)=>{let o=ZA(n,t,0,3),i=ZA(n,t,6,1),e=ZA(n,t,7,9)/10;if(o>0)return{type:ZA(n,t,0,3),origin:ZA(n,t,3,3),adjustment:i?-e:e}}}});var Vre,Wre=ue(()=>{DA();Ar();zre();Vre={len:27,get:(n,t)=>{let o=xe.get(n,t+2);return{revision:ZA(n,t,0,4),vbr_method:ZA(n,t,4,4),lowpass_filter:100*QA.get(n,t+1),track_peak:o===0?null:o/2**23,track_gain:y2.get(n,6),album_gain:y2.get(n,8),music_length:xe.get(n,t+20),music_crc:QA.get(n,t+24),header_crc:LA.get(n,t+24)}}}});async function Zre(n){let t=await n.readToken(Lqe),o={numFrames:null,streamSize:null,vbrScale:null};if(t.frames&&(o.numFrames=await n.readToken(xe)),t.bytes&&(o.streamSize=await n.readToken(xe)),t.toc&&(o.toc=new Uint8Array(100),await n.readBuffer(o.toc)),t.vbrScale&&(o.vbrScale=await n.readToken(xe)),await n.peekToken(new Ve(4,"ascii"))==="LAME"){await n.ignore(4),o.lame={version:await n.readToken(new Ve(5,"ascii"))};let e=o.lame.version.match(/\d+.\d+/g);if(e!==null){let A=e[0].split(".").map(r=>Number.parseInt(r,10));A[0]>=3&&A[1]>=90&&(o.lame.extended=await n.readToken(Vre))}}return o}var m2,DO,Lqe,Xre=ue(()=>{DA();Ar();Wre();m2=new Ve(4,"ascii"),DO=new Ve(6,"ascii"),Lqe={len:4,get:(n,t)=>({frames:Na(n,t,31),bytes:Na(n,t,30),toc:Na(n,t,29),vbrScale:Na(n,t,28)})}});var rae={};Fr(rae,{MpegContentError:()=>Wl,MpegParser:()=>S2});function Hqe(n){return`V${Math.floor((100-n)/10)}`}var tae,uo,Wl,$re,eae,Uqe,Bo,Aae,S2,aae=ue(()=>{DA();$o();tae=qe(ct(),1);Ar();cf();Xre();er();uo=(0,tae.default)("music-metadata:parser:mpeg"),Wl=class extends Qt("MPEG"){},$re=1024,eae={AudioObjectTypes:["AAC Main","AAC LC","AAC SSR","AAC LTP"],SamplingFrequencies:[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,null,null,null]},Uqe=[void 0,["front-center"],["front-left","front-right"],["front-center","front-left","front-right"],["front-center","front-left","front-right","back-center"],["front-center","front-left","front-right","back-left","back-right"],["front-center","front-left","front-right","back-left","back-right","LFE-channel"],["front-center","front-left","front-right","side-left","side-right","back-left","back-right","LFE-channel"]],Bo=class n{constructor(t,o){this.bitrateIndex=null,this.sampRateFreqIndex=null,this.padding=null,this.privateBit=null,this.channelModeIndex=null,this.modeExtension=null,this.isOriginalMedia=null,this.version=null,this.bitrate=null,this.samplingRate=null,this.frameLength=0,this.versionIndex=ZA(t,o+1,3,2),this.layer=n.LayerDescription[ZA(t,o+1,5,2)],this.versionIndex>1&&this.layer===0?this.parseAdtsHeader(t,o):this.parseMpegHeader(t,o),this.isProtectedByCRC=!Na(t,o+1,7)}calcDuration(t){return this.samplingRate==null?null:t*this.calcSamplesPerFrame()/this.samplingRate}calcSamplesPerFrame(){return n.samplesInFrameTable[this.version===1?0:1][this.layer]}calculateSideInfoLength(){if(this.layer!==3)return 2;if(this.channelModeIndex===3){if(this.version===1)return 17;if(this.version===2||this.version===2.5)return 9}else{if(this.version===1)return 32;if(this.version===2||this.version===2.5)return 17}return null}calcSlotSize(){return[null,4,1,1][this.layer]}parseMpegHeader(t,o){this.container="MPEG",this.bitrateIndex=ZA(t,o+2,0,4),this.sampRateFreqIndex=ZA(t,o+2,4,2),this.padding=Na(t,o+2,6),this.privateBit=Na(t,o+2,7),this.channelModeIndex=ZA(t,o+3,0,2),this.modeExtension=ZA(t,o+3,2,2),this.isCopyrighted=Na(t,o+3,4),this.isOriginalMedia=Na(t,o+3,5),this.emphasis=ZA(t,o+3,7,2),this.version=n.VersionID[this.versionIndex],this.channelMode=n.ChannelMode[this.channelModeIndex],this.codec=`MPEG ${this.version} Layer ${this.layer}`;let i=this.calcBitrate();if(!i)throw new Wl("Cannot determine bit-rate");if(this.bitrate=i*1e3,this.samplingRate=this.calcSamplingRate(),this.samplingRate==null)throw new Wl("Cannot determine sampling-rate")}parseAdtsHeader(t,o){uo("layer=0 => ADTS"),this.version=this.versionIndex===2?4:2,this.container=`ADTS/MPEG-${this.version}`;let i=ZA(t,o+2,0,2);this.codec="AAC",this.codecProfile=eae.AudioObjectTypes[i],uo(`MPEG-4 audio-codec=${this.codec}`);let e=ZA(t,o+2,2,4);this.samplingRate=eae.SamplingFrequencies[e],uo(`sampling-rate=${this.samplingRate}`);let a=ZA(t,o+2,7,3);this.mp4ChannelConfig=Uqe[a],uo(`channel-config=${this.mp4ChannelConfig?this.mp4ChannelConfig.join("+"):"?"}`),this.frameLength=ZA(t,o+3,6,2)<<11}calcBitrate(){if(this.bitrateIndex===0||this.bitrateIndex===15)return null;if(this.version&&this.bitrateIndex){let t=10*Math.floor(this.version)+this.layer;return n.bitrate_index[this.bitrateIndex][t]}return null}calcSamplingRate(){return this.sampRateFreqIndex===3||this.version===null||this.sampRateFreqIndex==null?null:n.sampling_rate_freq_index[this.version][this.sampRateFreqIndex]}};Bo.SyncByte1=255;Bo.SyncByte2=224;Bo.VersionID=[2.5,null,2,1];Bo.LayerDescription=[0,3,2,1];Bo.ChannelMode=["stereo","joint_stereo","dual_channel","mono"];Bo.bitrate_index={1:{11:32,12:32,13:32,21:32,22:8,23:8},2:{11:64,12:48,13:40,21:48,22:16,23:16},3:{11:96,12:56,13:48,21:56,22:24,23:24},4:{11:128,12:64,13:56,21:64,22:32,23:32},5:{11:160,12:80,13:64,21:80,22:40,23:40},6:{11:192,12:96,13:80,21:96,22:48,23:48},7:{11:224,12:112,13:96,21:112,22:56,23:56},8:{11:256,12:128,13:112,21:128,22:64,23:64},9:{11:288,12:160,13:128,21:144,22:80,23:80},10:{11:320,12:192,13:160,21:160,22:96,23:96},11:{11:352,12:224,13:192,21:176,22:112,23:112},12:{11:384,12:256,13:224,21:192,22:128,23:128},13:{11:416,12:320,13:256,21:224,22:144,23:144},14:{11:448,12:384,13:320,21:256,22:160,23:160}};Bo.sampling_rate_freq_index={1:{0:44100,1:48e3,2:32e3},2:{0:22050,1:24e3,2:16e3},2.5:{0:11025,1:12e3,2:8e3}};Bo.samplesInFrameTable=[[0,384,1152,1152],[0,384,1152,576]];Aae={len:4,get:(n,t)=>new Bo(n,t)};S2=class extends Js{constructor(){super(...arguments),this.frameCount=0,this.syncFrameCount=-1,this.totalDataLength=0,this.bitrates=[],this.offset=0,this.frame_size=0,this.calculateEofDuration=!1,this.samplesPerFrame=null,this.buf_frame_header=new Uint8Array(4),this.mpegOffset=null,this.syncPeek={buf:new Uint8Array($re),len:0}}async postId3v2Parse(){this.metadata.setFormat("lossless",!1),this.metadata.setAudioOnly();try{let t=!1;for(;!t;)await this.sync(),t=await this.parseCommonMpegHeader()}catch(t){if(t instanceof kA){if(uo("End-of-stream"),this.calculateEofDuration&&this.samplesPerFrame!==null){let o=this.frameCount*this.samplesPerFrame;if(this.metadata.setFormat("numberOfSamples",o),this.metadata.format.sampleRate){let i=o/this.metadata.format.sampleRate;uo(`Calculate duration at EOF: ${i} sec.`,i),this.metadata.setFormat("duration",i)}}}else throw t}}finalize(){let t=this.metadata.format,o=!!this.metadata.native.ID3v1;if(this.mpegOffset!==null){if(t.duration&&this.tokenizer.fileInfo.size){let i=this.tokenizer.fileInfo.size-this.mpegOffset-(o?128:0);t.codecProfile&&t.codecProfile[0]==="V"&&this.metadata.setFormat("bitrate",i*8/t.duration)}if(this.tokenizer.fileInfo.size&&t.codecProfile==="CBR"){let i=this.tokenizer.fileInfo.size-this.mpegOffset-(o?128:0);if(this.frame_size!==null&&this.samplesPerFrame!==null){let e=Math.round(i/this.frame_size)*this.samplesPerFrame;if(this.metadata.setFormat("numberOfSamples",e),t.sampleRate&&!t.duration){let a=e/t.sampleRate;uo("Calculate CBR duration based on file size: %s",a),this.metadata.setFormat("duration",a)}}}}}async sync(){let t=!1;for(;;){let o=0;if(this.syncPeek.len=await this.tokenizer.peekBuffer(this.syncPeek.buf,{length:$re,mayBeLess:!0}),this.syncPeek.len<=163)throw new kA;for(;;){if(t&&(this.syncPeek.buf[o]&224)===224){this.buf_frame_header[0]=Bo.SyncByte1,this.buf_frame_header[1]=this.syncPeek.buf[o],await this.tokenizer.ignore(o),uo(`Sync at offset=${this.tokenizer.position-1}, frameCount=${this.frameCount}`),this.syncFrameCount===this.frameCount&&(uo(`Re-synced MPEG stream, frameCount=${this.frameCount}`),this.frameCount=0,this.frame_size=0),this.syncFrameCount=this.frameCount;return}if(t=!1,o=this.syncPeek.buf.indexOf(Bo.SyncByte1,o),o===-1){if(this.syncPeek.len=2&&t.layer===0?this.parseAdts(t):this.parseAudioFrameHeader(t)}async parseAudioFrameHeader(t){this.metadata.setFormat("numberOfChannels",t.channelMode==="mono"?1:2),this.metadata.setFormat("bitrate",t.bitrate),this.frameCount<20*1e4&&uo("offset=%s MP%s bitrate=%s sample-rate=%s",this.tokenizer.position-4,t.layer,t.bitrate,t.samplingRate);let o=t.calcSlotSize();if(o===null)throw new Wl("invalid slot_size");let i=t.calcSamplesPerFrame();uo(`samples_per_frame=${i}`);let e=i/8;if(t.bitrate!==null&&t.samplingRate!=null){let a=e*t.bitrate/t.samplingRate+(t.padding?o:0);this.frame_size=Math.floor(a)}if(this.audioFrameHeader=t,t.bitrate!==null&&this.bitrates.push(t.bitrate),this.frameCount===1)return this.offset=Aae.len,await this.skipSideInformation(),!1;if(this.frameCount===4){if(this.areAllSame(this.bitrates)){if(this.samplesPerFrame=i,this.metadata.setFormat("codecProfile","CBR"),this.tokenizer.fileInfo.size)return!0}else if(this.metadata.format.duration)return!0;if(!this.options.duration)return!0}return this.options.duration&&this.frameCount===4&&(this.samplesPerFrame=i,this.calculateEofDuration=!0),this.offset=4,t.isProtectedByCRC?(await this.parseCrc(),!1):(await this.skipSideInformation(),!1)}async parseAdts(t){let o=new Uint8Array(3);if(await this.tokenizer.readBuffer(o),t.frameLength+=ZA(o,0,0,11),this.totalDataLength+=t.frameLength,this.samplesPerFrame=1024,t.samplingRate!==null){let i=t.samplingRate/this.samplesPerFrame,a=8*(this.frameCount===0?0:this.totalDataLength/this.frameCount)*i+.5;this.metadata.setFormat("bitrate",a),uo(`frame-count=${this.frameCount}, size=${t.frameLength} bytes, bit-rate=${a}`)}if(await this.tokenizer.ignore(t.frameLength>7?t.frameLength-7:1),this.frameCount===3)if(this.metadata.setFormat("codecProfile",t.codecProfile),t.mp4ChannelConfig&&this.metadata.setFormat("numberOfChannels",t.mp4ChannelConfig.length),this.options.duration)this.calculateEofDuration=!0;else return!0;return!1}async parseCrc(){return await this.tokenizer.ignore(en.len),this.offset+=en.len,this.skipSideInformation()}async skipSideInformation(){if(this.audioFrameHeader){let t=this.audioFrameHeader.calculateSideInfoLength();if(t!==null){await this.tokenizer.readToken(new Ot(t)),this.offset+=t,await this.readXtraInfoHeader();return}}}async readXtraInfoHeader(){let t=await this.tokenizer.readToken(m2);switch(this.offset+=m2.len,t){case"Info":return this.metadata.setFormat("codecProfile","CBR"),this.readXingInfoHeader();case"Xing":{let i=await this.readXingInfoHeader();if(i.vbrScale!==null){let e=Hqe(i.vbrScale);this.metadata.setFormat("codecProfile",e)}return null}case"Xtra":break;case"LAME":{let i=await this.tokenizer.readToken(DO);if(this.frame_size!==null&&this.frame_size>=this.offset+DO.len)return this.offset+=DO.len,this.metadata.setFormat("tool",`LAME ${i}`),await this.skipFrameData(this.frame_size-this.offset),null;this.metadata.addWarning("Corrupt LAME header");break}}let o=this.frame_size-this.offset;return o<0?this.metadata.addWarning(`Frame ${this.frameCount}corrupt: negative frameDataLeft`):await this.skipFrameData(o),null}async readXingInfoHeader(){let t=this.tokenizer.position,o=await Zre(this.tokenizer);if(this.offset+=this.tokenizer.position-t,o.lame&&(this.metadata.setFormat("tool",`LAME ${rn(o.lame.version)}`),o.lame.extended&&(this.metadata.setFormat("trackPeakLevel",o.lame.extended.track_peak),o.lame.extended.track_gain&&this.metadata.setFormat("trackGain",o.lame.extended.track_gain.adjustment),o.lame.extended.album_gain&&this.metadata.setFormat("albumGain",o.lame.extended.album_gain.adjustment),this.metadata.setFormat("duration",o.lame.extended.music_length/1e3))),o.streamSize&&this.audioFrameHeader&&o.numFrames!==null){let e=this.audioFrameHeader.calcDuration(o.numFrames);return this.metadata.setFormat("duration",e),uo("Get duration from Xing header: %s",this.metadata.format.duration),o}let i=this.frame_size-this.offset;return await this.skipFrameData(i),o}async skipFrameData(t){if(t<0)throw new Wl("frame-data-left cannot be negative");await this.tokenizer.ignore(t)}areAllSame(t){let o=t[0];return t.every(i=>i===o)}}});var iae,oae=ue(()=>{iae={parserType:"mpeg",extensions:[".mp2",".mp3",".m2a",".aac","aacp"],mimeTypes:["audio/mpeg","audio/mp3","audio/aacs","audio/aacp"],async load(){return(await Promise.resolve().then(()=>(aae(),rae))).MpegParser}}});var nae,sae=ue(()=>{nae={parserType:"apev2",extensions:[".ape"],mimeTypes:["audio/ape","audio/monkeys-audio"],async load(){return(await Promise.resolve().then(()=>(Vl(),Ure))).APEv2Parser}}});function w2(n){let t=n.trim();if(t.length!==36||t[8]!=="-"||t[13]!=="-"||t[18]!=="-"||t[23]!=="-")throw new Error(`Invalid GUID format: ${n}`);let o,i=new Uint8Array(16);o=parseInt(t.slice(0,8),16),i[0]=o&255,i[1]=o>>>8&255,i[2]=o>>>16&255,i[3]=o>>>24&255,o=parseInt(t.slice(9,13),16),i[4]=o&255,i[5]=o>>>8&255,o=parseInt(t.slice(14,18),16),i[6]=o&255,i[7]=o>>>8&255,o=parseInt(t.slice(19,23),16),i[8]=o>>>8&255,i[9]=o&255,o=parseInt(t.slice(24,32),16),i[10]=o>>>24&255,i[11]=o>>>16&255,i[12]=o>>>8&255,i[13]=o&255,o=parseInt(t.slice(32,36),16),i[14]=o>>>8&255,i[15]=o&255;for(let e=0;e<16;e++)if(!Number.isFinite(i[e]))throw new Error(`Invalid GUID format: ${n}`);if(!/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(t))throw new Error(`Invalid GUID format: ${n}`);return i}var OO,gae=ue(()=>{OO=class n{constructor(t){if(t.length!==16)throw new Error("GUID must be exactly 16 bytes");this.bytes=t}static fromString(t){return new n(w2(t))}toString(){let t=this.bytes,o=s=>s.toString(16).padStart(2,"0"),i=o(t[3])+o(t[2])+o(t[1])+o(t[0]),e=o(t[5])+o(t[4]),a=o(t[7])+o(t[6]),A=o(t[8])+o(t[9]),r=o(t[10])+o(t[11])+o(t[12])+o(t[13])+o(t[14])+o(t[15]);return`${i}-${e}-${a}-${A}-${r}`.toUpperCase()}equals(t,o=0){if(o<0||t.length-o<16)return!1;let i=this.bytes;for(let e=0;e<16;e++)if(t[o+e]!==i[e])return!1;return!0}}});var Ye,tr,D2=ue(()=>{gae();Ye=class n{static fromBin(t,o=0){return new n(n.decode(t,o))}static decode(t,o=0){return new OO(t.subarray(o,o+16)).toString()}static decodeMediaType(t){switch(t.str){case n.AudioMedia.str:return"audio";case n.VideoMedia.str:return"video";case n.CommandMedia.str:return"command";case n.Degradable_JPEG_Media.str:return"degradable-jpeg";case n.FileTransferMedia.str:return"file-transfer";case n.BinaryMedia.str:return"binary"}}static encode(t){return w2(t)}constructor(t){this.str=t}equals(t){return this.str===t.str}toBin(){return n.encode(this.str)}};Ye.HeaderObject=new Ye("75B22630-668E-11CF-A6D9-00AA0062CE6C");Ye.DataObject=new Ye("75B22636-668E-11CF-A6D9-00AA0062CE6C");Ye.SimpleIndexObject=new Ye("33000890-E5B1-11CF-89F4-00A0C90349CB");Ye.IndexObject=new Ye("D6E229D3-35DA-11D1-9034-00A0C90349BE");Ye.MediaObjectIndexObject=new Ye("FEB103F8-12AD-4C64-840F-2A1D2F7AD48C");Ye.TimecodeIndexObject=new Ye("3CB73FD0-0C4A-4803-953D-EDF7B6228F0C");Ye.FilePropertiesObject=new Ye("8CABDCA1-A947-11CF-8EE4-00C00C205365");Ye.StreamPropertiesObject=new Ye("B7DC0791-A9B7-11CF-8EE6-00C00C205365");Ye.HeaderExtensionObject=new Ye("5FBF03B5-A92E-11CF-8EE3-00C00C205365");Ye.CodecListObject=new Ye("86D15240-311D-11D0-A3A4-00A0C90348F6");Ye.ScriptCommandObject=new Ye("1EFB1A30-0B62-11D0-A39B-00A0C90348F6");Ye.MarkerObject=new Ye("F487CD01-A951-11CF-8EE6-00C00C205365");Ye.BitrateMutualExclusionObject=new Ye("D6E229DC-35DA-11D1-9034-00A0C90349BE");Ye.ErrorCorrectionObject=new Ye("75B22635-668E-11CF-A6D9-00AA0062CE6C");Ye.ContentDescriptionObject=new Ye("75B22633-668E-11CF-A6D9-00AA0062CE6C");Ye.ExtendedContentDescriptionObject=new Ye("D2D0A440-E307-11D2-97F0-00A0C95EA850");Ye.ContentBrandingObject=new Ye("2211B3FA-BD23-11D2-B4B7-00A0C955FC6E");Ye.StreamBitratePropertiesObject=new Ye("7BF875CE-468D-11D1-8D82-006097C9A2B2");Ye.ContentEncryptionObject=new Ye("2211B3FB-BD23-11D2-B4B7-00A0C955FC6E");Ye.ExtendedContentEncryptionObject=new Ye("298AE614-2622-4C17-B935-DAE07EE9289C");Ye.DigitalSignatureObject=new Ye("2211B3FC-BD23-11D2-B4B7-00A0C955FC6E");Ye.PaddingObject=new Ye("1806D474-CADF-4509-A4BA-9AABCB96AAE8");Ye.ExtendedStreamPropertiesObject=new Ye("14E6A5CB-C672-4332-8399-A96952065B5A");Ye.AdvancedMutualExclusionObject=new Ye("A08649CF-4775-4670-8A16-6E35357566CD");Ye.GroupMutualExclusionObject=new Ye("D1465A40-5A79-4338-B71B-E36B8FD6C249");Ye.StreamPrioritizationObject=new Ye("D4FED15B-88D3-454F-81F0-ED5C45999E24");Ye.BandwidthSharingObject=new Ye("A69609E6-517B-11D2-B6AF-00C04FD908E9");Ye.LanguageListObject=new Ye("7C4346A9-EFE0-4BFC-B229-393EDE415C85");Ye.MetadataObject=new Ye("C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA");Ye.MetadataLibraryObject=new Ye("44231C94-9498-49D1-A141-1D134E457054");Ye.IndexParametersObject=new Ye("D6E229DF-35DA-11D1-9034-00A0C90349BE");Ye.MediaObjectIndexParametersObject=new Ye("6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7");Ye.TimecodeIndexParametersObject=new Ye("F55E496D-9797-4B5D-8C8B-604DFE9BFB24");Ye.CompatibilityObject=new Ye("26F18B5D-4584-47EC-9F5F-0E651F0452C9");Ye.AdvancedContentEncryptionObject=new Ye("43058533-6981-49E6-9B74-AD12CB86D58C");Ye.AudioMedia=new Ye("F8699E40-5B4D-11CF-A8FD-00805F5C442B");Ye.VideoMedia=new Ye("BC19EFC0-5B4D-11CF-A8FD-00805F5C442B");Ye.CommandMedia=new Ye("59DACFC0-59E6-11D0-A3AC-00A0C90348F6");Ye.JFIF_Media=new Ye("B61BE100-5B4E-11CF-A8FD-00805F5C442B");Ye.Degradable_JPEG_Media=new Ye("35907DE0-E415-11CF-A917-00805F5C442B");Ye.FileTransferMedia=new Ye("91BD222C-F21C-497A-8B6D-5AA86BFC0185");Ye.BinaryMedia=new Ye("3AFB65E2-47EF-40F2-AC2C-70A90D71D343");Ye.ASF_Index_Placeholder_Object=new Ye("D9AADE20-7C17-4F9C-BC28-8555DD98E2A2");tr=Ye});function Iae(n){return Kqe[n]}function If(n){return rn(da(n,"utf-16le"))}function cae(n){return new Uint8Array(n)}function xqe(n,t=0){return lae(n,t)===1}function Yqe(n,t=0){return Le.get(n,t)}function jqe(n,t=0){return Gr.get(n,t)}function lae(n,t=0){return SA.get(n,t)}var Kqe,pae=ue(()=>{DA();Ar();Kqe=[If,cae,xqe,Yqe,jqe,lae,cae]});async function dae(n){let t=await n.readNumber(SA);return(await n.readToken(new Ve(t*2,"utf-16le"))).replace("\0","")}async function Eae(n){let t=await n.readToken(Jqe),o=[];for(let i=0;i{DA();Ar();D2();pae();lI();er();jh=class extends Qt("ASF"){},hae={len:30,get:(n,t)=>({objectId:tr.fromBin(n,t),objectSize:Number(Gr.get(n,t+16)),numberOfHeaderObjects:Le.get(n,t+24)})},CI={len:24,get:(n,t)=>({objectId:tr.fromBin(n,t),objectSize:Number(Gr.get(n,t+16))})},Vg=class{constructor(t){this.len=Number(t.objectSize)-CI.len}postProcessTag(t,o,i,e){if(o==="WM/Picture")t.push({id:o,value:O2.fromBuffer(e)});else{let a=Iae(i);if(!a)throw new jh(`unexpected value headerType: ${i}`);t.push({id:o,value:a(e)})}}},lf=class extends Vg{get(t,o){return null}},Jh=class extends Vg{get(t,o){return{fileId:tr.fromBin(t,o),fileSize:Gr.get(t,o+16),creationDate:Gr.get(t,o+24),dataPacketsCount:Gr.get(t,o+32),playDuration:Gr.get(t,o+40),sendDuration:Gr.get(t,o+48),preroll:Gr.get(t,o+56),flags:{broadcast:GA(t,o+64,24),seekable:GA(t,o+64,25)},minimumDataPacketSize:Le.get(t,o+68),maximumDataPacketSize:Le.get(t,o+72),maximumBitrate:Le.get(t,o+76)}}};Jh.guid=tr.FilePropertiesObject;qh=class extends Vg{get(t,o){return{streamType:tr.decodeMediaType(tr.fromBin(t,o)),errorCorrectionType:tr.fromBin(t,o+8)}}};qh.guid=tr.StreamPropertiesObject;zh=class{constructor(){this.len=22}get(t,o){let i=new DataView(t.buffer,o);return{reserved1:tr.fromBin(t,o),reserved2:i.getUint16(16,!0),extensionDataSize:i.getUint16(18,!0)}}};zh.guid=tr.HeaderExtensionObject;Jqe={len:20,get:(n,t)=>({entryCount:new DataView(n.buffer,t).getUint16(16,!0)})};Zl=class n extends Vg{get(t,o){let i=[],e=new DataView(t.buffer,o),a=10;for(let A=0;A0){let s=n.contentDescTags[A],g=a+r;i.push({id:s,value:If(t.subarray(o+a,o+g))}),a=g}}return i}};Zl.guid=tr.ContentDescriptionObject;Zl.contentDescTags=["Title","Author","Copyright","Description","Rating"];Vh=class extends Vg{get(t,o){let i=[],e=new DataView(t.buffer,o),a=e.getUint16(0,!0),A=2;for(let r=0;r_2});var Cae,M2,Wqe,_2,Bae=ue(()=>{Cae=qe(ct(),1);Jl();D2();b2();zi();b2();M2=(0,Cae.default)("music-metadata:parser:ASF"),Wqe="asf",_2=class extends vt{async parse(){let t=await this.tokenizer.readToken(hae);if(!t.objectId.equals(tr.HeaderObject))throw new jh(`expected asf header; but was not found; got: ${t.objectId.str}`);await this.parseObjectHeader(t.numberOfHeaderObjects)}async parseObjectHeader(t){let o;do{let i=await this.tokenizer.readToken(CI);switch(M2("header GUID=%s",i.objectId.str),i.objectId.str){case Jh.guid.str:{let e=await this.tokenizer.readToken(new Jh(i));this.metadata.setFormat("duration",Number(e.playDuration/BigInt(1e3))/1e4-Number(e.preroll)/1e3),this.metadata.setFormat("bitrate",e.maximumBitrate);break}case qh.guid.str:{let e=await this.tokenizer.readToken(new qh(i));this.metadata.setFormat("container",`ASF/${e.streamType}`);break}case zh.guid.str:{let e=await this.tokenizer.readToken(new zh);await this.parseExtensionObject(e.extensionDataSize);break}case Zl.guid.str:o=await this.tokenizer.readToken(new Zl(i)),await this.addTags(o);break;case Vh.guid.str:o=await this.tokenizer.readToken(new Vh(i)),await this.addTags(o);break;case tr.CodecListObject.str:{let e=await Eae(this.tokenizer);e.forEach(A=>{this.metadata.addStreamInfo({type:A.type.videoCodec?pa.video:pa.audio,codecName:A.codecName})});let a=e.filter(A=>A.type.audioCodec).map(A=>A.codecName).join("/");this.metadata.setFormat("codec",a);break}case tr.StreamBitratePropertiesObject.str:await this.tokenizer.ignore(i.objectSize-CI.len);break;case tr.PaddingObject.str:M2("Padding: %s bytes",i.objectSize-CI.len),await this.tokenizer.ignore(i.objectSize-CI.len);break;default:this.metadata.addWarning(`Ignore ASF-Object-GUID: ${i.objectId.str}`),M2("Ignore ASF-Object-GUID: %s",i.objectId.str),await this.tokenizer.readToken(new lf(i))}}while(--t)}async addTags(t){await Promise.all(t.map(({id:o,value:i})=>this.metadata.addTag(Wqe,o,i)))}async parseExtensionObject(t){do{let o=await this.tokenizer.readToken(CI),i=o.objectSize-CI.len;if(i<0)throw new jh(`Invalid ASF header object size: ${o.objectSize}`);switch(o.objectId.str){case Wh.guid.str:await this.tokenizer.readToken(new Wh(o));break;case Xl.guid.str:{let e=await this.tokenizer.readToken(new Xl(o));await this.addTags(e);break}case Zh.guid.str:{let e=await this.tokenizer.readToken(new Zh(o));await this.addTags(e);break}case tr.PaddingObject.str:await this.tokenizer.ignore(i);break;case tr.CompatibilityObject.str:await this.tokenizer.ignore(i);break;case tr.ASF_Index_Placeholder_Object.str:await this.tokenizer.ignore(i);break;default:this.metadata.addWarning(`Ignore ASF-Object-GUID: ${o.objectId.str}`),await this.tokenizer.readToken(new lf(o));break}t-=o.objectSize}while(t>0)}}});var fae,Qae=ue(()=>{fae={parserType:"asf",extensions:[".asf",".wma",".wmv"],mimeTypes:["audio/ms-wma","video/ms-wmv","audio/ms-asf","video/ms-asf","application/vnd.ms-asf"],async load(){return(await Promise.resolve().then(()=>(Bae(),uae))).AsfParser}}});var $l,yae=ue(()=>{DA();ui();$l={len:12,get:(n,t)=>({chunkID:rt.get(n,t),chunkSize:WL.get(n,t+4)})}});var Sae={};Fr(Sae,{DsdiffContentParseError:()=>Xh,DsdiffParser:()=>T2});var mae,Bi,Xh,T2,wae=ue(()=>{DA();mae=qe(ct(),1);$o();ui();zi();Yh();yae();er();Bi=(0,mae.default)("music-metadata:parser:aiff"),Xh=class extends Qt("DSDIFF"){},T2=class extends vt{async parse(){let t=await this.tokenizer.readToken($l);if(t.chunkID!=="FRM8")throw new Xh("Unexpected chunk-ID");this.metadata.setAudioOnly();let o=(await this.tokenizer.readToken(rt)).trim();switch(o){case"DSD":return this.metadata.setFormat("container",`DSDIFF/${o}`),this.metadata.setFormat("lossless",!0),this.readFmt8Chunks(t.chunkSize-BigInt(rt.len));default:throw new Xh(`Unsupported DSDIFF type: ${o}`)}}async readFmt8Chunks(t){for(;t>=$l.len;){let o=await this.tokenizer.readToken($l);Bi(`Chunk id=${o.chunkID}`),await this.readData(o),t-=BigInt($l.len)+o.chunkSize}}async readData(t){Bi(`Reading data of chunk[ID=${t.chunkID}, size=${t.chunkSize}]`);let o=this.tokenizer.position;switch(t.chunkID.trim()){case"FVER":{let e=await this.tokenizer.readToken(Le);Bi(`DSDIFF version=${e}`);break}case"PROP":{if(await this.tokenizer.readToken(rt)!=="SND ")throw new Xh("Unexpected PROP-chunk ID");await this.handleSoundPropertyChunks(t.chunkSize-BigInt(rt.len));break}case"ID3":{let e=await this.tokenizer.readToken(new Ot(Number(t.chunkSize))),a=Co(e);await new nn().parse(this.metadata,a,this.options);break}case"DSD":this.metadata.format.numberOfChannels&&this.metadata.setFormat("numberOfSamples",Number(t.chunkSize*BigInt(8)/BigInt(this.metadata.format.numberOfChannels))),this.metadata.format.numberOfSamples&&this.metadata.format.sampleRate&&this.metadata.setFormat("duration",this.metadata.format.numberOfSamples/this.metadata.format.sampleRate);break;default:Bi(`Ignore chunk[ID=${t.chunkID}, size=${t.chunkSize}]`);break}let i=t.chunkSize-BigInt(this.tokenizer.position-o);i>0&&(Bi(`After Parsing chunk, remaining ${i} bytes`),await this.tokenizer.ignore(Number(i)))}async handleSoundPropertyChunks(t){for(Bi(`Parsing sound-property-chunks, remainingSize=${t}`);t>0;){let o=await this.tokenizer.readToken($l);Bi(`Sound-property-chunk[ID=${o.chunkID}, size=${o.chunkSize}]`);let i=this.tokenizer.position;switch(o.chunkID.trim()){case"FS":{let a=await this.tokenizer.readToken(xe);this.metadata.setFormat("sampleRate",a);break}case"CHNL":{let a=await this.tokenizer.readToken(LA);this.metadata.setFormat("numberOfChannels",a),await this.handleChannelChunks(o.chunkSize-BigInt(LA.len));break}case"CMPR":{let a=(await this.tokenizer.readToken(rt)).trim(),A=await this.tokenizer.readToken(QA),r=await this.tokenizer.readToken(new Ve(A,"ascii"));a==="DSD"&&(this.metadata.setFormat("lossless",!0),this.metadata.setFormat("bitsPerSample",1)),this.metadata.setFormat("codec",`${a} (${r})`);break}case"ABSS":{let a=await this.tokenizer.readToken(LA),A=await this.tokenizer.readToken(QA),r=await this.tokenizer.readToken(QA),s=await this.tokenizer.readToken(xe);Bi(`ABSS ${a}:${A}:${r}.${s}`);break}case"LSCO":{let a=await this.tokenizer.readToken(LA);Bi(`LSCO lsConfig=${a}`);break}default:Bi(`Unknown sound-property-chunk[ID=${o.chunkID}, size=${o.chunkSize}]`),await this.tokenizer.ignore(Number(o.chunkSize))}let e=o.chunkSize-BigInt(this.tokenizer.position-i);e>0&&(Bi(`After Parsing sound-property-chunk ${o.chunkSize}, remaining ${e} bytes`),await this.tokenizer.ignore(Number(e))),t-=BigInt($l.len)+o.chunkSize,Bi(`Parsing sound-property-chunks, remainingSize=${t}`)}if(this.metadata.format.lossless&&this.metadata.format.sampleRate&&this.metadata.format.numberOfChannels&&this.metadata.format.bitsPerSample){let o=this.metadata.format.sampleRate*this.metadata.format.numberOfChannels*this.metadata.format.bitsPerSample;this.metadata.setFormat("bitrate",o)}}async handleChannelChunks(t){Bi(`Parsing channel-chunks, remainingSize=${t}`);let o=[];for(;t>=rt.len;){let i=await this.tokenizer.readToken(rt);Bi(`Channel[ID=${i}]`),o.push(i),t-=BigInt(rt.len)}return Bi(`Channels: ${o.join(", ")}`),o}}});var Dae,Oae=ue(()=>{Dae={parserType:"dsdiff",extensions:[".dff"],mimeTypes:["audio/dsf","audio/dsd"],async load(){return(await Promise.resolve().then(()=>(wae(),Sae))).DsdiffParser}}});var bae,uI,bO,N2=ue(()=>{DA();ui();er();bae={NONE:"not compressed PCM Apple Computer",sowt:"PCM (byte swapped)",fl32:"32-bit floating point IEEE 32-bit float",fl64:"64-bit floating point IEEE 64-bit float Apple Computer",alaw:"ALaw 2:1 8-bit ITU-T G.711 A-law",ulaw:"\xB5Law 2:1 8-bit ITU-T G.711 \xB5-law Apple Computer",ULAW:"CCITT G.711 u-law 8-bit ITU-T G.711 \xB5-law",ALAW:"CCITT G.711 A-law 8-bit ITU-T G.711 A-law",FL32:"Float 32 IEEE 32-bit float "},uI=class extends Qt("AIFF"){},bO=class{constructor(t,o){this.isAifc=o;let i=o?22:18;if(t.chunkSize>Math.abs(i):e<22){let A=QA.get(t,o+22);if(A>0){let r=(A+1)%2;if(23+A+r===this.len)a.compressionName=new Ve(A,"latin1").get(t,o+23);else throw new uI("Illegal pstring length")}else a.compressionName=void 0}}else a.compressionName="PCM";return a}}});var MO,Mae=ue(()=>{DA();ui();MO={len:8,get:(n,t)=>({chunkID:rt.get(n,t),chunkSize:Number(BigInt(xe.get(n,t+4)))})}});var Tae={};Fr(Tae,{AIFFParser:()=>k2});var _ae,R2,k2,Nae=ue(()=>{DA();_ae=qe(ct(),1);$o();Yh();ui();zi();N2();N2();Mae();R2=(0,_ae.default)("music-metadata:parser:aiff"),k2=class extends vt{constructor(){super(...arguments),this.isCompressed=null}async parse(){if((await this.tokenizer.readToken(MO)).chunkID!=="FORM")throw new uI("Invalid Chunk-ID, expected 'FORM'");let o=await this.tokenizer.readToken(rt);switch(o){case"AIFF":this.metadata.setFormat("container",o),this.isCompressed=!1;break;case"AIFC":this.metadata.setFormat("container","AIFF-C"),this.isCompressed=!0;break;default:throw new uI(`Unsupported AIFF type: ${o}`)}this.metadata.setFormat("lossless",!this.isCompressed),this.metadata.setAudioOnly();try{for(;!this.tokenizer.fileInfo.size||this.tokenizer.fileInfo.size-this.tokenizer.position>=MO.len;){R2(`Reading AIFF chunk at offset=${this.tokenizer.position}`);let i=await this.tokenizer.readToken(MO),e=2*Math.round(i.chunkSize/2),a=await this.readData(i);await this.tokenizer.ignore(e-a)}}catch(i){if(i instanceof kA)R2("End-of-stream");else throw i}}async readData(t){switch(t.chunkID){case"COMM":{if(this.isCompressed===null)throw new uI("Failed to parse AIFF.COMM chunk when compression type is unknown");let o=await this.tokenizer.readToken(new bO(t,this.isCompressed));return this.metadata.setFormat("bitsPerSample",o.sampleSize),this.metadata.setFormat("sampleRate",o.sampleRate),this.metadata.setFormat("numberOfChannels",o.numChannels),this.metadata.setFormat("numberOfSamples",o.numSampleFrames),this.metadata.setFormat("duration",o.numSampleFrames/o.sampleRate),(o.compressionName||o.compressionType)&&this.metadata.setFormat("codec",o.compressionName??bae[o.compressionType]),t.chunkSize}case"ID3 ":{let o=await this.tokenizer.readToken(new Ot(t.chunkSize)),i=Co(o);return await new nn().parse(this.metadata,i,this.options),t.chunkSize}case"SSND":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*t.chunkSize/this.metadata.format.duration),0;case"NAME":case"AUTH":case"(c) ":case"ANNO":return this.readTextChunk(t);default:return R2(`Ignore chunk id=${t.chunkID}, size=${t.chunkSize}`),0}}async readTextChunk(t){let i=(await this.tokenizer.readToken(new Ve(t.chunkSize,"ascii"))).split("\0").map(e=>e.trim()).filter(e=>e?.length);return await Promise.all(i.map(e=>this.metadata.addTag("AIFF",t.chunkID,e))),t.chunkSize}}});var Rae,kae=ue(()=>{Rae={parserType:"aiff",extensions:[".aif","aiff","aifc"],mimeTypes:["audio/aiff","audio/aif","audio/aifc","application/aiff"],async load(){return(await Promise.resolve().then(()=>(Nae(),Tae))).AIFFParser}}});var pf,vae,Pae,Gae=ue(()=>{DA();ui();pf={len:12,get:(n,t)=>({id:rt.get(n,t),size:Gr.get(n,t+4)})},vae={len:16,get:(n,t)=>({fileSize:WB.get(n,t),metadataPointer:WB.get(n,t+8)})},Pae={len:40,get:(n,t)=>({formatVersion:dr.get(n,t),formatID:dr.get(n,t+4),channelType:dr.get(n,t+8),channelNum:dr.get(n,t+12),samplingFrequency:dr.get(n,t+16),bitsPerSample:dr.get(n,t+20),sampleCount:WB.get(n,t+24),blockSizePerChannel:dr.get(n,t+32)})}});var Lae={};Fr(Lae,{DsdContentParseError:()=>_O,DsfParser:()=>P2});var Fae,v2,_O,P2,Uae=ue(()=>{Fae=qe(ct(),1);cf();Gae();Yh();er();v2=(0,Fae.default)("music-metadata:parser:DSF"),_O=class extends Qt("DSD"){},P2=class extends Js{async postId3v2Parse(){let t=this.tokenizer.position,o=await this.tokenizer.readToken(pf);if(o.id!=="DSD ")throw new _O("Invalid chunk signature");this.metadata.setFormat("container","DSF"),this.metadata.setFormat("lossless",!0),this.metadata.setAudioOnly();let i=await this.tokenizer.readToken(vae);if(i.metadataPointer===BigInt(0))v2("No ID3v2 tag present");else return v2(`expect ID3v2 at offset=${i.metadataPointer}`),await this.parseChunks(i.fileSize-o.size),await this.tokenizer.ignore(Number(i.metadataPointer)-this.tokenizer.position-t),new nn().parse(this.metadata,this.tokenizer,this.options)}async parseChunks(t){for(;t>=pf.len;){let o=await this.tokenizer.readToken(pf);switch(v2(`Parsing chunk name=${o.id} size=${o.size}`),o.id){case"fmt ":{let i=await this.tokenizer.readToken(Pae);this.metadata.setFormat("numberOfChannels",i.channelNum),this.metadata.setFormat("sampleRate",i.samplingFrequency),this.metadata.setFormat("bitsPerSample",i.bitsPerSample),this.metadata.setFormat("numberOfSamples",i.sampleCount),this.metadata.setFormat("duration",Number(i.sampleCount)/i.samplingFrequency);let e=i.bitsPerSample*i.samplingFrequency*i.channelNum;this.metadata.setFormat("bitrate",e);return}default:this.tokenizer.ignore(Number(o.size)-pf.len);break}t-=o.size}}}});var Hae,Kae=ue(()=>{Hae={parserType:"dsf",extensions:[".dsf"],mimeTypes:["audio/dsf"],async load(){return(await Promise.resolve().then(()=>(Uae(),Lae))).DsfParser}}});var BI,df,xae,TO=ue(()=>{DA();lI();BI=class n{static fromBase64(t){return n.fromBuffer(Uint8Array.from(atob(t),o=>o.charCodeAt(0)))}static fromBuffer(t){return new n(t.length).get(t,0)}constructor(t){this.len=t}get(t,o){let i=Gh[xe.get(t,o)];o+=4;let e=xe.get(t,o);o+=4;let a=new Ve(e,"utf-8").get(t,o);o+=e;let A=xe.get(t,o);o+=4;let r=new Ve(A,"utf-8").get(t,o);o+=A;let s=xe.get(t,o);o+=4;let g=xe.get(t,o);o+=4;let c=xe.get(t,o);o+=4;let I=xe.get(t,o);o+=4;let d=xe.get(t,o);o+=4;let B=t.slice(o,o+d);return{type:i,format:a,description:r,width:s,height:g,colour_depth:c,indexed_color:I,data:B}}},df={len:7,get:(n,t)=>({packetType:QA.get(n,t),vorbis:new Ve(6,"ascii").get(n,t+1)})},xae={len:23,get:(n,t)=>({version:Le.get(n,t+0),channelMode:QA.get(n,t+4),sampleRate:Le.get(n,t+5),bitrateMax:Le.get(n,t+9),bitrateNominal:Le.get(n,t+13),bitrateMin:Le.get(n,t+17)})}});var $h,G2=ue(()=>{DA();Fs();$h=class{constructor(t,o){this.data=t,this.offset=o}readInt32(){let t=Le.get(this.data,this.offset);return this.offset+=4,t}readStringUtf8(){let t=this.readInt32(),o=br(this.data.subarray(this.offset,this.offset+t),"utf-8");return this.offset+=t,o}parseUserComment(){let t=this.offset,o=this.readStringUtf8(),i=o.indexOf("=");return{key:o.substring(0,i).toUpperCase(),value:o.substring(i+1),len:this.offset-t}}}});var Yae,eE,hf,qs,Ef=ue(()=>{DA();Yae=qe(ct(),1);G2();TO();er();eE=(0,Yae.default)("music-metadata:parser:ogg:vorbis1"),hf=class extends Qt("Vorbis"){},qs=class n{constructor(t,o){this.pageSegments=[],this.durationOnLastPage=!0,this.metadata=t,this.options=o}async parsePage(t,o){if(this.lastPageHeader=t,t.headerType.firstPage)this.parseFirstPage(t,o);else{if(t.headerType.continued){if(this.pageSegments.length===0)throw new hf("Cannot continue on previous page");this.pageSegments.push(o)}if(t.headerType.lastPage||!t.headerType.continued){if(this.pageSegments.length>0){let i=n.mergeUint8Arrays(this.pageSegments);await this.parseFullPage(i)}this.pageSegments=t.headerType.lastPage?[]:[o]}}}static mergeUint8Arrays(t){let o=t.reduce((e,a)=>e+a.length,0),i=new Uint8Array(o);return t.forEach((e,a,A)=>{let r=A.slice(0,a).reduce((s,g)=>s+g.length,0);i.set(e,r)}),i}async flush(){await this.parseFullPage(n.mergeUint8Arrays(this.pageSegments))}async parseUserComment(t,o){let e=new $h(t,o).parseUserComment();return await this.addTag(e.key,e.value),e.len}async addTag(t,o){if(t==="METADATA_BLOCK_PICTURE"&&typeof o=="string"){if(this.options.skipCovers){eE("Ignore picture");return}o=BI.fromBase64(o),eE(`Push picture: id=${t}, format=${o.format}`)}else eE(`Push tag: id=${t}, value=${o}`);await this.metadata.addTag("vorbis",t,o)}calculateDuration(t){this.lastPageHeader&&(t||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0&&(this.metadata.setFormat("numberOfSamples",this.lastPageHeader.absoluteGranulePosition),this.metadata.setFormat("duration",this.lastPageHeader.absoluteGranulePosition/this.metadata.format.sampleRate))}parseFirstPage(t,o){this.metadata.setFormat("codec","Vorbis I"),this.metadata.setFormat("hasAudio",!0),eE("Parse first page");let i=df.get(o,0);if(i.vorbis!=="vorbis")throw new hf("Metadata does not look like Vorbis");if(i.packetType===1){let e=xae.get(o,df.len);this.metadata.setFormat("sampleRate",e.sampleRate),this.metadata.setFormat("bitrate",e.bitrateNominal),this.metadata.setFormat("numberOfChannels",e.channelMode),eE("sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s",e.sampleRate,e.bitrateNominal,e.channelMode)}else throw new hf("First Ogg page should be type 1: the identification header")}async parseFullPage(t){let o=df.get(t,0);switch(eE("Parse full page: type=%s, byteLength=%s",o.packetType,t.byteLength),o.packetType){case 3:return this.parseUserCommentList(t,df.len);case 1:case 5:break}}async parseUserCommentList(t,o){let i=Le.get(t,o);o+=4,o+=i;let e=Le.get(t,o);for(o+=4;e-- >0;)o+=await this.parseUserComment(t,o)}}});var fi,Cf,uf,F2=ue(()=>{Ar();DA();fi={STREAMINFO:0,PADDING:1,APPLICATION:2,SEEKTABLE:3,VORBIS_COMMENT:4,CUESHEET:5,PICTURE:6},Cf={len:4,get:(n,t)=>({lastBlock:GA(n,t,7),type:ZA(n,t,1,7),length:Pr.get(n,t+1)})},uf={len:34,get:(n,t)=>({minimumBlockSize:LA.get(n,t),maximumBlockSize:LA.get(n,t+2)/1e3,minimumFrameSize:Pr.get(n,t+4),maximumFrameSize:Pr.get(n,t+7),sampleRate:Pr.get(n,t+10)>>4,channels:ZA(n,t+12,4,3)+1,bitsPerSample:ZA(n,t+12,7,5)+1,totalSamples:ZA(n,t+13,4,36),fileMD5:new Ot(16).get(n,t+18)})}});var qae={};Fr(qae,{FlacParser:()=>Bf});var Jae,$qe,NO,Bf,L2=ue(()=>{Jae=qe(ct(),1);DA();TO();cf();ui();Ef();G2();er();F2();$qe=(0,Jae.default)("music-metadata:parser:FLAC"),NO=class extends Qt("FLAC"){},Bf=class extends Js{constructor(){super(...arguments),this.vorbisParser=new qs(this.metadata,this.options)}async postId3v2Parse(){if((await this.tokenizer.readToken(rt)).toString()!=="fLaC")throw new NO("Invalid FLAC preamble");let o;do o=await this.tokenizer.readToken(Cf),await this.parseDataBlock(o);while(!o.lastBlock);if(this.tokenizer.fileInfo.size&&this.metadata.format.duration){let i=this.tokenizer.fileInfo.size-this.tokenizer.position;this.metadata.setFormat("bitrate",8*i/this.metadata.format.duration)}}async parseDataBlock(t){switch($qe(`blockHeader type=${t.type}, length=${t.length}`),t.type){case fi.STREAMINFO:return this.readBlockStreamInfo(t.length);case fi.PADDING:break;case fi.APPLICATION:break;case fi.SEEKTABLE:break;case fi.VORBIS_COMMENT:return this.readComment(t.length);case fi.CUESHEET:break;case fi.PICTURE:await this.parsePicture(t.length);return;default:this.metadata.addWarning(`Unknown block type: ${t.type}`)}return this.tokenizer.ignore(t.length).then()}async readBlockStreamInfo(t){if(t!==uf.len)throw new NO("Unexpected block-stream-info length");let o=await this.tokenizer.readToken(uf);this.metadata.setFormat("container","FLAC"),this.processsStreamInfo(o)}processsStreamInfo(t){this.metadata.setFormat("codec","FLAC"),this.metadata.setFormat("hasAudio",!0),this.metadata.setFormat("lossless",!0),this.metadata.setFormat("numberOfChannels",t.channels),this.metadata.setFormat("bitsPerSample",t.bitsPerSample),this.metadata.setFormat("sampleRate",t.sampleRate),t.totalSamples>0&&this.metadata.setFormat("duration",t.totalSamples/t.sampleRate)}async readComment(t){let o=await this.tokenizer.readToken(new Ot(t));return this.parseComment(o)}async parseComment(t){let o=new $h(t,0),i=o.readStringUtf8();i.length>0&&this.metadata.setFormat("tool",i);let e=o.readInt32(),a=new Array(e);for(let A=0;A(A.key==="ENCODER"&&this.metadata.setFormat("tool",A.value),this.addTag(A.key,A.value))))}async parsePicture(t){return this.options.skipCovers?this.tokenizer.ignore(t):this.addPictureTag(await this.tokenizer.readToken(new BI(t)))}addPictureTag(t){return this.addTag("METADATA_BLOCK_PICTURE",t)}addTag(t,o){return this.vorbisParser.addTag(t,o)}}});var zae,Vae=ue(()=>{zae={parserType:"flac",extensions:[".flac"],mimeTypes:["audio/flac"],async load(){return(await Promise.resolve().then(()=>(L2(),qae))).FlacParser}}});var _e,U2=ue(()=>{_e={string:0,uint:1,uid:2,bool:3,binary:4,float:5}});var Wae,Zae=ue(()=>{U2();Wae={name:"dtd",container:{440786851:{name:"ebml",container:{17030:{name:"ebmlVersion",value:_e.uint},17143:{name:"ebmlReadVersion",value:_e.uint},17138:{name:"ebmlMaxIDWidth",value:_e.uint},17139:{name:"ebmlMaxSizeWidth",value:_e.uint},17026:{name:"docType",value:_e.string},17031:{name:"docTypeVersion",value:_e.uint},17029:{name:"docTypeReadVersion",value:_e.uint}}},408125543:{name:"segment",container:{290298740:{name:"seekHead",container:{19899:{name:"seek",multiple:!0,container:{21419:{name:"id",value:_e.binary},21420:{name:"position",value:_e.uint}}}}},357149030:{name:"info",container:{29604:{name:"uid",value:_e.uid},29572:{name:"filename",value:_e.string},3979555:{name:"prevUID",value:_e.uid},3965867:{name:"prevFilename",value:_e.string},4110627:{name:"nextUID",value:_e.uid},4096955:{name:"nextFilename",value:_e.string},2807729:{name:"timecodeScale",value:_e.uint},17545:{name:"duration",value:_e.float},17505:{name:"dateUTC",value:_e.uint},31657:{name:"title",value:_e.string},19840:{name:"muxingApp",value:_e.string},22337:{name:"writingApp",value:_e.string}}},524531317:{name:"cluster",multiple:!0,container:{231:{name:"timecode",value:_e.uid},22743:{name:"silentTracks ",multiple:!0},167:{name:"position",value:_e.uid},171:{name:"prevSize",value:_e.uid},160:{name:"blockGroup"},163:{name:"simpleBlock"}}},374648427:{name:"tracks",container:{174:{name:"entries",multiple:!0,container:{215:{name:"trackNumber",value:_e.uint},29637:{name:"uid",value:_e.uid},131:{name:"trackType",value:_e.uint},185:{name:"flagEnabled",value:_e.bool},136:{name:"flagDefault",value:_e.bool},21930:{name:"flagForced",value:_e.bool},156:{name:"flagLacing",value:_e.bool},28135:{name:"minCache",value:_e.uint},28136:{name:"maxCache",value:_e.uint},2352003:{name:"defaultDuration",value:_e.uint},2306383:{name:"timecodeScale",value:_e.float},21358:{name:"name",value:_e.string},2274716:{name:"language",value:_e.string},134:{name:"codecID",value:_e.string},25506:{name:"codecPrivate",value:_e.binary},2459272:{name:"codecName",value:_e.string},3839639:{name:"codecSettings",value:_e.string},3883072:{name:"codecInfoUrl",value:_e.string},2536e3:{name:"codecDownloadUrl",value:_e.string},170:{name:"codecDecodeAll",value:_e.bool},28587:{name:"trackOverlay",value:_e.uint},224:{name:"video",container:{154:{name:"flagInterlaced",value:_e.bool},21432:{name:"stereoMode",value:_e.uint},176:{name:"pixelWidth",value:_e.uint},186:{name:"pixelHeight",value:_e.uint},21680:{name:"displayWidth",value:_e.uint},21690:{name:"displayHeight",value:_e.uint},21683:{name:"aspectRatioType",value:_e.uint},3061028:{name:"colourSpace",value:_e.uint},3126563:{name:"gammaValue",value:_e.float}}},225:{name:"audio",container:{181:{name:"samplingFrequency",value:_e.float},30901:{name:"outputSamplingFrequency",value:_e.float},159:{name:"channels",value:_e.uint},148:{name:"channels",value:_e.uint},32123:{name:"channelPositions",value:_e.binary},25188:{name:"bitDepth",value:_e.uint}}},28032:{name:"contentEncodings",container:{25152:{name:"contentEncoding",container:{20529:{name:"order",value:_e.uint},20530:{name:"scope",value:_e.bool},20531:{name:"type",value:_e.uint},20532:{name:"contentEncoding",container:{16980:{name:"contentCompAlgo",value:_e.uint},16981:{name:"contentCompSettings",value:_e.binary}}},20533:{name:"contentEncoding",container:{18401:{name:"contentEncAlgo",value:_e.uint},18402:{name:"contentEncKeyID",value:_e.binary},18403:{name:"contentSignature ",value:_e.binary},18404:{name:"ContentSigKeyID ",value:_e.binary},18405:{name:"contentSigAlgo ",value:_e.uint},18406:{name:"contentSigHashAlgo ",value:_e.uint}}},25188:{name:"bitDepth",value:_e.uint}}}}}}}}},475249515:{name:"cues",container:{187:{name:"cuePoint",container:{179:{name:"cueTime",value:_e.uid},183:{name:"positions",container:{247:{name:"track",value:_e.uint},241:{name:"clusterPosition",value:_e.uint},21368:{name:"blockNumber",value:_e.uint},234:{name:"codecState",value:_e.uint},219:{name:"reference",container:{150:{name:"time",value:_e.uint},151:{name:"cluster",value:_e.uint},21343:{name:"number",value:_e.uint},235:{name:"codecState",value:_e.uint}}},240:{name:"relativePosition",value:_e.uint}}}}}}},423732329:{name:"attachments",container:{24999:{name:"attachedFiles",multiple:!0,container:{18046:{name:"description",value:_e.string},18030:{name:"name",value:_e.string},18016:{name:"mimeType",value:_e.string},18012:{name:"data",value:_e.binary},18094:{name:"uid",value:_e.uid}}}}},272869232:{name:"chapters",container:{17849:{name:"editionEntry",container:{182:{name:"chapterAtom",container:{29636:{name:"uid",value:_e.uid},145:{name:"timeStart",value:_e.uint},146:{name:"timeEnd",value:_e.uid},152:{name:"hidden",value:_e.bool},17816:{name:"enabled",value:_e.uid},143:{name:"track",container:{137:{name:"trackNumber",value:_e.uid},128:{name:"display",container:{133:{name:"string",value:_e.string},17276:{name:"language ",value:_e.string},17278:{name:"country ",value:_e.string}}}}}}}}}}},307544935:{name:"tags",container:{29555:{name:"tag",multiple:!0,container:{25536:{name:"target",container:{25541:{name:"tagTrackUID",value:_e.uid},25540:{name:"tagChapterUID",value:_e.uint},25542:{name:"tagAttachmentUID",value:_e.uid},25546:{name:"targetType",value:_e.string},26826:{name:"targetTypeValue",value:_e.uint},25545:{name:"tagEditionUID",value:_e.uid}}},26568:{name:"simpleTags",multiple:!0,container:{17827:{name:"name",value:_e.string},17543:{name:"string",value:_e.string},17541:{name:"binary",value:_e.binary},17530:{name:"language",value:_e.string},17531:{name:"languageIETF",value:_e.string},17540:{name:"default",value:_e.bool}}}}}}}}}}}});function H2(n,t){return Number(e4e(n,t))}function e4e(n,t){let o=new Uint8Array(8),i=n.subarray(0,t);try{return o.set(i,8-t),Hs.get(o,0)}catch{return BigInt(-1)}}function $ae(n){return n.container&&Object.keys(n.container).map(t=>{let o=n.container[t];return o.id=Number.parseInt(t,10),o}).forEach(t=>{t.parent=n,$ae(t)}),n}function ep(n){let t="";return n.parent&&n.parent.name!=="dtd"&&(t+=`${ep(n.parent)}/`),t+n.name}var Xae,AE,RO,zs,kO,eie=ue(()=>{DA();Xae=qe(ct(),1);$o();U2();DA();er();AE=(0,Xae.default)("music-metadata:parser:ebml"),RO=class extends Qt("EBML"){},zs={ReadNext:0,IgnoreElement:2,SkipSiblings:3,TerminateParsing:4,SkipElement:5},kO=class{constructor(t){this.parserMap=new Map,this.ebmlMaxIDLength=4,this.ebmlMaxSizeLength=8,this.tokenizer=t,this.parserMap.set(_e.uint,o=>this.readUint(o)),this.parserMap.set(_e.string,o=>this.readString(o)),this.parserMap.set(_e.binary,o=>this.readBuffer(o)),this.parserMap.set(_e.uid,async o=>this.readBuffer(o)),this.parserMap.set(_e.bool,o=>this.readFlag(o)),this.parserMap.set(_e.float,o=>this.readFloat(o))}async iterate(t,o,i){return this.parseContainer($ae(t),o,i)}async parseContainer(t,o,i){let e={};for(;this.tokenizer.position=0?this.tokenizer.position+a.len:-1,i);r.multiple?(e[r.name]||(e[r.name]=[]),e[r.name].push(g)):e[r.name]=g,await i.elementValue(r,g,A)}else{let g=this.parserMap.get(r.value);if(typeof g=="function"){let c=await g(a);e[r.name]=c,await i.elementValue(r,c,A)}}break;case zs.SkipElement:AE(`Go to next element: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`);break;case zs.IgnoreElement:AE(`Ignore element: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`),await this.tokenizer.ignore(a.len);break;case zs.SkipSiblings:AE(`Ignore remaining container, at: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`),await this.tokenizer.ignore(o-this.tokenizer.position);break;case zs.TerminateParsing:return AE(`Terminate parsing at element: name=${ep(r)}, element.id=0x${a.id}, container=${!!r.container} at position=${A}`),e}else switch(a.id){case 236:await this.tokenizer.ignore(a.len);break;default:AE(`parseEbml: parent=${ep(t)}, unknown child: id=${a.id.toString(16)} at position=${A}`),await this.tokenizer.ignore(a.len)}}return e}async readVintData(t){let o=await this.tokenizer.peekNumber(QA),i=128,e=1;for(;(o&i)===0;){if(e>t)throw new RO("VINT value exceeding maximum size");++e,i>>=1}let a=new Uint8Array(e);return await this.tokenizer.readBuffer(a),a}async readElement(){let t=await this.readVintData(this.ebmlMaxIDLength),o=await this.readVintData(this.ebmlMaxSizeLength);return o[0]^=128>>o.length-1,{id:H2(t,t.length),len:H2(o,o.length)}}async readFloat(t){switch(t.len){case 0:return 0;case 4:return this.tokenizer.readNumber(ZL);case 8:return this.tokenizer.readNumber($D);case 10:return this.tokenizer.readNumber($D);default:throw new RO(`Invalid IEEE-754 float length: ${t.len}`)}}async readFlag(t){return await this.readUint(t)===1}async readUint(t){let o=await this.readBuffer(t);return H2(o,t.len)}async readString(t){return(await this.tokenizer.readToken(new Ve(t.len,"utf-8"))).replace(/\x00.*$/g,"")}async readBuffer(t){let o=new Uint8Array(t.len);return await this.tokenizer.readBuffer(o),o}}});var tie={};Fr(tie,{MatroskaParser:()=>K2});var Aie,vO,K2,rie=ue(()=>{Aie=qe(ct(),1);zi();Zae();g2();eie();vO=(0,Aie.default)("music-metadata:parser:matroska"),K2=class extends vt{constructor(){super(...arguments),this.seekHeadOffset=0,this.flagUseIndexToSkipClusters=this.options.mkvUseIndex??!1}async parse(){let t=this.tokenizer.fileInfo.size??Number.MAX_SAFE_INTEGER,o=new kO(this.tokenizer);vO("Initializing DTD end MatroskaIterator"),await o.iterate(Wae,t,{startNext:i=>{switch(i.id){case 475249515:return vO(`Skip element: name=${i.name}, id=0x${i.id.toString(16)}`),zs.IgnoreElement;case 524531317:if(this.flagUseIndexToSkipClusters&&this.seekHead){let e=this.seekHead.seek.find(a=>a.position+this.seekHeadOffset>this.tokenizer.position);if(e){let a=e.position+this.seekHeadOffset-this.tokenizer.position;return vO(`Use index to go to next position, ignoring ${a} bytes`),this.tokenizer.ignore(a),zs.SkipElement}}return zs.IgnoreElement;default:return zs.ReadNext}},elementValue:async(i,e,a)=>{switch(vO(`Received: name=${i.name}, value=${e}`),i.id){case 17026:this.metadata.setFormat("container",`EBML/${e}`);break;case 290298740:this.seekHead=e,this.seekHeadOffset=a;break;case 357149030:{let A=e,r=A.timecodeScale?A.timecodeScale:1e6;if(typeof A.duration=="number"){let s=A.duration*r/1e9;await this.addTag("segment:title",A.title),this.metadata.setFormat("duration",Number(s))}}break;case 374648427:{let A=e;if(A?.entries){A.entries.forEach(s=>{let g={codecName:s.codecID.replace("A_","").replace("V_",""),codecSettings:s.codecSettings,flagDefault:s.flagDefault,flagLacing:s.flagLacing,flagEnabled:s.flagEnabled,language:s.language,name:s.name,type:s.trackType,audio:s.audio,video:s.video};this.metadata.addStreamInfo(g)});let r=A.entries.filter(s=>s.trackType===pa.audio).reduce((s,g)=>!s||g.flagDefault&&!s.flagDefault||g.trackNumber{let s=r.target,g=s?.targetTypeValue?lre[s.targetTypeValue]:s?.targetType?s.targetType:"track";await Promise.all(r.simpleTags.map(async c=>{let I=c.string?c.string:c.binary;await this.addTag(`${g}:${c.name}`,I)}))}))}break;case 423732329:{let A=e;await Promise.all(A.attachedFiles.filter(r=>r.mimeType.startsWith("image/")).map(r=>this.addTag("picture",{data:r.data,format:r.mimeType,description:r.description,name:r.name})))}break}}})}async addTag(t,o){await this.metadata.addTag("matroska",t,o)}}});var aie,iie=ue(()=>{aie={parserType:"matroska",extensions:[".mka",".mkv",".mk3d",".mks","webm"],mimeTypes:["audio/matroska","video/matroska","audio/webm","video/webm"],async load(){return(await Promise.resolve().then(()=>(rie(),tie))).MatroskaParser}}});function cie(n,t,o,i,e){if(Y2(`remainingLen=${i}, numberOfEntries=${e} * token-len=${t.len}`),i===0)return[];if(i!==e*t.len)throw new Wg("mismatch number-of-entries with remaining atom-length");let a=[];for(let A=0;A{DA();nie=qe(ct(),1);ui();er();Ar();er();Y2=(0,nie.default)("music-metadata:parser:MP4:atom"),Wg=class extends Qt("MP4"){},Ap={len:8,get:(n,t)=>{let o=xe.get(n,t);if(o<0)throw new Wg("Invalid atom header length");return{length:BigInt(o),name:new Ve(4,"latin1").get(n,t+4)}},put:(n,t,o)=>(xe.put(n,t,Number(o.length)),rt.put(n,t+4,o.name))},sie=Hs,j2={len:4,get:(n,t)=>({type:new Ve(4,"ascii").get(n,t)})},PO=class{constructor(t,o,i){if(to&&Y2(`Warning: atom ${i} expected to be ${o}, but was actually ${t} bytes long.`),this.len=t}},tE={len:4,get:(n,t)=>{let o=xe.get(n,t)-2082844800;return new Date(o*1e3)}},rE={len:8,get:(n,t)=>{let o=Number(Hs.get(n,t))-2082844800;return new Date(o*1e3)}},GO=class extends PO{constructor(t){super(t,24,"mdhd")}get(t,o){let i=QA.get(t,o+0),e=Pr.get(t,o+1);switch(i){case 0:return{version:i,flags:e,creationTime:tE.get(t,o+4),modificationTime:tE.get(t,o+8),timeScale:xe.get(t,o+12),duration:xe.get(t,o+16),language:LA.get(t,o+20),quality:LA.get(t,o+22)};case 1:return{version:i,flags:e,creationTime:rE.get(t,o+4),modificationTime:rE.get(t,o+12),timeScale:xe.get(t,o+20),duration:Number(Hs.get(t,o+24)),language:LA.get(t,o+32),quality:LA.get(t,o+34)};default:throw new tn("Invalid mdhd version header")}}},FO=class extends PO{constructor(t){super(t,100,"mvhd")}get(t,o){let i=QA.get(t,o),e=Pr.get(t,o+1);return i===1?{version:i,flags:e,creationTime:rE.get(t,o+4),modificationTime:rE.get(t,o+12),timeScale:xe.get(t,o+20),duration:Number(Hs.get(t,o+24)),preferredRate:xe.get(t,o+32),preferredVolume:LA.get(t,o+36),previewTime:xe.get(t,o+84),previewDuration:xe.get(t,o+88),posterTime:xe.get(t,o+92),selectionTime:xe.get(t,o+96),selectionDuration:xe.get(t,o+100),currentTime:xe.get(t,o+104),nextTrackID:xe.get(t,o+108)}:{version:i,flags:e,creationTime:tE.get(t,o+4),modificationTime:tE.get(t,o+8),timeScale:xe.get(t,o+12),duration:xe.get(t,o+16),preferredRate:xe.get(t,o+20),preferredVolume:LA.get(t,o+24),previewTime:xe.get(t,o+72),previewDuration:xe.get(t,o+76),posterTime:xe.get(t,o+80),selectionTime:xe.get(t,o+84),selectionDuration:xe.get(t,o+88),currentTime:xe.get(t,o+92),nextTrackID:xe.get(t,o+96)}}},LO=class{constructor(t){this.len=t}get(t,o){return{type:{set:QA.get(t,o+0),type:Pr.get(t,o+1)},locale:Pr.get(t,o+4),value:new Ot(this.len-8).get(t,o+8)}}},UO=class{constructor(t){this.len=t}get(t,o){return{version:QA.get(t,o),flags:Pr.get(t,o+1),name:new Ve(this.len-4,"utf-8").get(t,o+4)}}},HO=class{constructor(t){this.len=t}get(t,o){let i=QA.get(t,o),e=Pr.get(t,o+1);switch(i){case 0:return{version:i,flags:e,creationTime:tE.get(t,o+4),modificationTime:tE.get(t,o+8),trackId:xe.get(t,o+12),duration:xe.get(t,o+20),layer:LA.get(t,o+32),alternateGroup:LA.get(t,o+34),volume:LA.get(t,o+36)};case 1:return{version:i,flags:e,creationTime:rE.get(t,o+4),modificationTime:rE.get(t,o+12),trackId:xe.get(t,o+20),duration:Number(Hs.get(t,o+28)),layer:LA.get(t,o+44),alternateGroup:LA.get(t,o+46),volume:LA.get(t,o+48)};default:throw new tn("Invalid tkhd version header")}}},oie={len:8,get:(n,t)=>({version:QA.get(n,t),flags:Pr.get(n,t+1),numberOfEntries:xe.get(n,t+4)})},x2=class{constructor(t){this.len=t}get(t,o){let i=this.len-12;return{dataFormat:rt.get(t,o),dataReferenceIndex:LA.get(t,o+10),description:i>0?new Ot(i).get(t,o+12):void 0}}},ff=class{constructor(t){this.len=t}get(t,o){let i=oie.get(t,o);o+=oie.len;let e=[];for(let a=0;a=this.len){Y2("TrackRunBox size mismatch");break}let r={};e.flags.sampleDurationPresent&&(r.sampleDuration=xe.get(t,a),a+=4),e.flags.sampleSizePresent&&(r.sampleSize=xe.get(t,a),a+=4),e.flags.sampleFlagsPresent&&(r.sampleFlags=xe.get(t,a),a+=4),e.flags.sampleCompositionTimeOffsetsPresent&&(r.sampleCompositionTimeOffset=xe.get(t,a),a+=4),e.samples.push(r)}return e}},zO=class{constructor(t){this.len=t}get(t,o){let i=o+1,e=new Ve(4,"utf-8");return{version:Us.get(t,o),flags:Pr.get(t,o+1),componentType:e.get(t,o+4),handlerType:e.get(t,o+8),componentName:new Ve(this.len-28,"utf-8").get(t,o+28)}}},VO=class{constructor(t){this.len=t}get(t,o){let i=0,e=[];for(;i{pie=qe(ct(),1);mf();mf();lie=(0,pie.default)("music-metadata:parser:MP4:Atom"),WO=class n{static async readAtom(t,o,i,e){let a=t.position;lie(`Reading next token on offset=${a}...`);let A=await t.readToken(Ap),r=A.length===1n;r&&(A.length=await t.readToken(sie));let s=new n(A,r,i),g=s.getPayloadLength(e);return lie(`parse atom name=${s.atomPath}, extended=${s.extended}, offset=${a}, len=${s.header.length}`),await s.readData(t,o,g),s}constructor(t,o,i){this.header=t,this.extended=o,this.parent=i,this.children=[],this.atomPath=(this.parent?`${this.parent.atomPath}.`:"")+this.header.name}getHeaderLength(){return this.extended?16:8}getPayloadLength(t){return(this.header.length===0n?t:Number(this.header.length))-this.getHeaderLength()}async readAtoms(t,o,i){for(;i>0;){let e=await n.readAtom(t,o,this,i);this.children.push(e),i-=e.header.length===0n?i:Number(e.header.length)}}async readData(t,o,i){switch(this.header.name){case"moov":case"udta":case"mdia":case"minf":case"stbl":case"":case"ilst":case"tref":case"moof":return this.readAtoms(t,o,this.getPayloadLength(i));case"meta":{let a=(await t.peekToken(Ap)).name==="hdlr"?0:4;return await t.ignore(a),this.readAtoms(t,o,this.getPayloadLength(i)-a)}default:return o(this,i)}}}});var uie={};Fr(uie,{MP4Parser:()=>q2});function Eie(n,t,o){return o.indexOf(n)===t}var Cie,Wi,r4e,hie,q2,Bie=ue(()=>{Cie=qe(ct(),1);DA();zi();nf();die();mf();mf();Jl();$B();Fs();Wi=(0,Cie.default)("music-metadata:parser:MP4"),r4e="iTunes",hie={raw:{lossy:!1,format:"raw"},MAC3:{lossy:!0,format:"MACE 3:1"},MAC6:{lossy:!0,format:"MACE 6:1"},ima4:{lossy:!0,format:"IMA 4:1"},ulaw:{lossy:!0,format:"uLaw 2:1"},alaw:{lossy:!0,format:"uLaw 2:1"},Qclp:{lossy:!0,format:"QUALCOMM PureVoice"},".mp3":{lossy:!0,format:"MPEG-1 layer 3"},alac:{lossy:!1,format:"ALAC"},"ac-3":{lossy:!0,format:"AC-3"},mp4a:{lossy:!0,format:"MPEG-4/AAC"},mp4s:{lossy:!0,format:"MP4S"},c608:{lossy:!0,format:"CEA-608"},c708:{lossy:!0,format:"CEA-708"}};q2=class n extends vt{constructor(){super(...arguments),this.tracks=new Map,this.hasVideoTrack=!1,this.hasAudioTrack=!0,this.atomParsers={mvhd:async t=>{let o=await this.tokenizer.readToken(new FO(t));this.metadata.setFormat("creationTime",o.creationTime),this.metadata.setFormat("modificationTime",o.modificationTime)},chap:async t=>{let o=this.getTrackDescription(),i=[];for(;t>=xe.len;)i.push(await this.tokenizer.readNumber(xe)),t-=xe.len;o.chapterList=i},mdat:async t=>{if(this.options.includeChapters){let o=[...this.tracks.values()].filter(i=>i.chapterList);if(o.length===1){let i=o[0].chapterList,e=[...this.tracks.values()].filter(a=>i.indexOf(a.header.trackId)!==-1);if(e.length===1)return this.parseChapterTrack(e[0],o[0],t)}}await this.tokenizer.ignore(t)},ftyp:async t=>{let o=[];for(;t>0;){let e=await this.tokenizer.readToken(j2);t-=j2.len;let a=e.type.replace(/\W/g,"");a.length>0&&o.push(a)}Wi(`ftyp: ${o.join("/")}`);let i=o.filter(Eie).join("/");this.metadata.setFormat("container",i)},stsd:async t=>{let o=await this.tokenizer.readToken(new ff(t)),i=this.getTrackDescription();i.soundSampleDescription=o.table.map(e=>this.parseSoundSampleDescription(e))},stsz:async t=>{let o=await this.tokenizer.readToken(new yf(t)),i=this.getTrackDescription();i.sampleSize=o.sampleSize,i.sampleSizeTable=o.entries},date:async t=>{let o=await this.tokenizer.readToken(new Ve(t,"utf-8"));await this.addTag("date",o)}}}static read_BE_Integer(t,o){let i=(o?"INT":"UINT")+t.length*8+(t.length>1?"_BE":""),e=VA[i];if(!e)throw new Wg(`Token for integer type not found: "${i}"`);return Number(e.get(t,0))}async parse(){this.hasVideoTrack=!1,this.hasAudioTrack=!0,this.tracks.clear();let t=this.tokenizer.fileInfo.size||0;for(;!this.tokenizer.fileInfo.size||t>0;){try{if((await this.tokenizer.peekToken(Ap)).name==="\0\0\0\0"){let A=`Error at offset=${this.tokenizer.position}: box.id=0`;Wi(A),this.addWarning(A);break}}catch(a){if(a instanceof Error){let A=`Error at offset=${this.tokenizer.position}: ${a.message}`;Wi(A),this.addWarning(A)}else throw a;break}let e=await WO.readAtom(this.tokenizer,(a,A)=>this.handleAtom(a,A),null,t);t-=e.header.length===BigInt(0)?t:Number(e.header.length)}let o=[];this.tracks.forEach(e=>{let a=[];e.soundSampleDescription.forEach(A=>{let r={},s=hie[A.dataFormat];if(s?(a.push(s.format),r.codecName=s.format):r.codecName=`<${A.dataFormat}>`,A.description){let{description:g}=A;g.sampleRate>0&&(r.type=pa.audio,r.audio={samplingFrequency:g.sampleRate,bitDepth:g.sampleSize,channels:g.numAudioChannels})}this.metadata.addStreamInfo(r)}),a.length>=1&&o.push(a.join("/"))}),o.length>0&&this.metadata.setFormat("codec",o.filter(Eie).join("+"));let i=[...this.tracks.values()].filter(e=>e.soundSampleDescription.length>=1&&e.soundSampleDescription[0].description&&e.soundSampleDescription[0].description.numAudioChannels>0);for(let e of i){if(e.media.header&&e.media.header.timeScale>0)if(e.sampleRate=e.media.header.timeScale,e.media.header.duration>0&&(Wi("Using duration defined on audio track"),e.samples=e.media.header.duration,e.duration=e.samples/e.sampleRate),e.fragments.length>0){Wi("Calculate duration defined in track fragments");let r=0;e.sizeInBytes=0;for(let s of e.fragments)for(let g of s.trackRun.samples){let c=g.sampleDuration??s.header.defaultSampleDuration??0,I=g.sampleSize??s.header.defaultSampleSize??0;if(c===0)throw new Error("Missing sampleDuration and no defaultSampleDuration in track fragment header");if(I===0)throw new Error("Missing sampleSize and no defaultSampleSize in track fragment header");r+=c,e.sizeInBytes+=I}e.samples||(e.samples=r),e.duration||(e.duration=r/e.sampleRate)}else e.sampleSizeTable.length>0&&(e.sizeInBytes=e.sampleSizeTable.reduce((r,s)=>r+s,0));let a=e.soundSampleDescription[0];if(a.description&&e.media.header&&(this.metadata.setFormat("sampleRate",a.description.sampleRate),this.metadata.setFormat("bitsPerSample",a.description.sampleSize),this.metadata.setFormat("numberOfChannels",a.description.numAudioChannels),e.media.header.timeScale===0&&e.timeToSampleTable.length>0)){let r=e.timeToSampleTable.map(s=>s.count*s.duration).reduce((s,g)=>s+g);e.duration=r/a.description.sampleRate}let A=hie[a.dataFormat];A&&this.metadata.setFormat("lossless",!A.lossy)}if(i.length>=1){let e=i[0];e.duration&&(this.metadata.setFormat("duration",e.duration),e.sizeInBytes&&this.metadata.setFormat("bitrate",8*e.sizeInBytes/e.duration))}this.metadata.setFormat("hasAudio",this.hasAudioTrack),this.metadata.setFormat("hasVideo",this.hasVideoTrack)}async handleAtom(t,o){if(t.parent)switch(t.parent.header.name){case"ilst":case"":return this.parseMetadataItemData(t);case"moov":switch(t.header.name){case"trak":return this.parseTrackBox(t);case"udta":return this.parseTrackBox(t)}break;case"moof":switch(t.header.name){case"traf":return this.parseTrackFragmentBox(t)}}if(this.atomParsers[t.header.name])return this.atomParsers[t.header.name](o);Wi(`No parser for atom path=${t.atomPath}, payload-len=${o}, ignoring atom`),await this.tokenizer.ignore(o)}getTrackDescription(){let t=[...this.tracks.values()];return t[t.length-1]}async addTag(t,o){await this.metadata.addTag(r4e,t,o)}addWarning(t){Wi(`Warning: ${t}`),this.metadata.addWarning(t)}parseMetadataItemData(t){let o=t.header.name;return t.readAtoms(this.tokenizer,async(i,e)=>{let a=i.getPayloadLength(e);switch(i.header.name){case"data":return this.parseValueAtom(o,i);case"name":case"mean":case"rate":{let A=await this.tokenizer.readToken(new UO(a));o+=`:${A.name}`;break}default:{let A=await this.tokenizer.readToken(new Ot(a));this.addWarning(`Unsupported meta-item: ${o}[${i.header.name}] => value=${AO(A)} ascii=${br(A,"ascii")}`)}}},t.getPayloadLength(0))}async parseValueAtom(t,o){let i=await this.tokenizer.readToken(new LO(Number(o.header.length)-Ap.len));if(i.type.set!==0)throw new Wg(`Unsupported type-set != 0: ${i.type.set}`);switch(i.type.type){case 0:switch(t){case"trkn":case"disk":{let e=QA.get(i.value,3),a=QA.get(i.value,5);await this.addTag(t,`${e}/${a}`);break}case"gnre":{let e=QA.get(i.value,1),a=xh[e-1];await this.addTag(t,a);break}case"rate":{let e=br(i.value,"ascii");await this.addTag(t,e);break}default:Wi(`unknown proprietary value type for: ${o.atomPath}`)}break;case 1:case 18:await this.addTag(t,br(i.value));break;case 13:if(this.options.skipCovers)break;await this.addTag(t,{format:"image/jpeg",data:Uint8Array.from(i.value)});break;case 14:if(this.options.skipCovers)break;await this.addTag(t,{format:"image/png",data:Uint8Array.from(i.value)});break;case 21:await this.addTag(t,n.read_BE_Integer(i.value,!0));break;case 22:await this.addTag(t,n.read_BE_Integer(i.value,!1));break;case 65:await this.addTag(t,QA.get(i.value,0));break;case 66:await this.addTag(t,LA.get(i.value,0));break;case 67:await this.addTag(t,xe.get(i.value,0));break;default:this.addWarning(`atom key=${t}, has unknown well-known-type (data-type): ${i.type.type}`)}}async parseTrackBox(t){let o={media:{},fragments:[]};await t.readAtoms(this.tokenizer,async(i,e)=>{let a=i.getPayloadLength(e);switch(i.header.name){case"chap":{let A=await this.tokenizer.readToken(new VO(e));o.chapterList=A;break}case"tkhd":o.header=await this.tokenizer.readToken(new HO(a));break;case"hdlr":o.handler=await this.tokenizer.readToken(new zO(a)),o.isAudio=()=>o.handler.handlerType==="audi"||o.handler.handlerType==="soun",o.isVideo=()=>o.handler.handlerType==="vide",o.isAudio()?this.hasAudioTrack=!0:o.isVideo()&&(this.hasVideoTrack=!0);break;case"mdhd":{let A=await this.tokenizer.readToken(new GO(a));o.media.header=A;break}case"stco":{let A=await this.tokenizer.readToken(new YO(a));o.chunkOffsetTable=A.entries;break}case"stsc":{let A=await this.tokenizer.readToken(new xO(a));o.sampleToChunkTable=A.entries;break}case"stsd":{let A=await this.tokenizer.readToken(new ff(a));o.soundSampleDescription=A.table.map(r=>this.parseSoundSampleDescription(r));break}case"stts":{let A=await this.tokenizer.readToken(new KO(a));o.timeToSampleTable=A.entries;break}case"stsz":{let A=await this.tokenizer.readToken(new yf(a));o.sampleSize=A.sampleSize,o.sampleSizeTable=A.entries;break}case"dinf":case"vmhd":case"smhd":Wi(`Ignoring: ${i.header.name}`),await this.tokenizer.ignore(a);break;default:Wi(`Unexpected track box: ${i.header.name}`),await this.tokenizer.ignore(a)}},t.getPayloadLength(0)),this.tracks.set(o.header.trackId,o)}parseTrackFragmentBox(t){let o;return t.readAtoms(this.tokenizer,async(i,e)=>{let a=i.getPayloadLength(e);switch(i.header.name){case"tfhd":{let A=new JO(i.getPayloadLength(e));o=await this.tokenizer.readToken(A);break}case"tfdt":await this.tokenizer.ignore(a);break;case"trun":{let A=new qO(a),r=await this.tokenizer.readToken(A);o&&this.tracks.get(o.trackId)?.fragments.push({header:o,trackRun:r});break}default:Wi(`Unexpected box: ${i.header.name}`),await this.tokenizer.ignore(a)}},t.getPayloadLength(0))}parseSoundSampleDescription(t){let o={dataFormat:t.dataFormat,dataReferenceIndex:t.dataReferenceIndex},i=0;if(t.description){let e=J2.get(t.description,i);i+=J2.len,e.version===0||e.version===1?o.description=gie.get(t.description,i):Wi(`Warning: sound-sample-description ${e} not implemented`)}return o}async parseChapterTrack(t,o,i){if(!t.sampleSize&&t.chunkOffsetTable.length!==t.sampleSizeTable.length)throw new Error("Expected equal chunk-offset-table & sample-size-table length.");let e=[];for(let a=0;a0;++a){let A=t.timeToSampleTable.slice(0,a).reduce((d,B)=>d+B.duration,0),s=t.chunkOffsetTable[a]-this.tokenizer.position,g=t.sampleSize>0?t.sampleSize:t.sampleSizeTable[a];if(i-=s+g,i<0)throw new Wg("Chapter chunk exceeding token length");await this.tokenizer.ignore(s);let c=await this.tokenizer.readToken(new jO(g));Wi(`Chapter ${a+1}: ${c}`);let I={title:c,timeScale:t.media.header?t.media.header.timeScale:0,start:A,sampleOffset:this.findSampleOffset(o,this.tokenizer.position)};Wi(`Chapter title=${I.title}, offset=${I.sampleOffset}/${o.header.duration}`),e.push(I)}this.metadata.setFormat("chapters",e),await this.tokenizer.ignore(i)}findSampleOffset(t,o){let i=0;for(;i=o[i].firstChunk&&t{fie={parserType:"mp4",extensions:[".mp4",".m4a",".m4b",".m4pa","m4v","m4r","3gp",".mov",".movie",".qt"],mimeTypes:["audio/mp4","audio/m4a","video/m4v","video/mp4","video/quicktime"],async load(){return(await Promise.resolve().then(()=>(Bie(),uie))).MP4Parser}}});var wie,yie,a4e,mie,Sie,ZO,Die=ue(()=>{DA();wie=qe(ct(),1);Ar();yie=(0,wie.default)("music-metadata:parser:musepack:sv8"),a4e=new Ve(2,"latin1"),mie={len:5,get:(n,t)=>({crc:Le.get(n,t),streamVersion:QA.get(n,t+4)})},Sie={len:2,get:(n,t)=>({sampleFrequency:[44100,48e3,37800,32e3][ZA(n,t,0,3)],maxUsedBands:ZA(n,t,3,5),channelCount:ZA(n,t+1,0,4)+1,msUsed:Na(n,t+1,4),audioBlockFrames:ZA(n,t+1,5,3)})},ZO=class{get tokenizer(){return this._tokenizer}set tokenizer(t){this._tokenizer=t}constructor(t){this._tokenizer=t}async readPacketHeader(){let t=await this.tokenizer.readToken(a4e),o=await this.readVariableSizeField();return{key:t,payloadLength:o.value-2-o.len}}async readStreamHeader(t){let o={};yie(`Reading SH at offset=${this.tokenizer.position}`);let i=await this.tokenizer.readToken(mie);t-=mie.len,Object.assign(o,i),yie(`SH.streamVersion = ${i.streamVersion}`);let e=await this.readVariableSizeField();t-=e.len,o.sampleCount=e.value;let a=await this.readVariableSizeField();t-=a.len,o.beginningOfSilence=a.value;let A=await this.tokenizer.readToken(Sie);return t-=Sie.len,Object.assign(o,A),await this.tokenizer.ignore(t),o}async readVariableSizeField(t=1,o=0){let i=await this.tokenizer.readNumber(QA);return(i&128)===0?{len:t,value:o+i}:(i&=127,i+=o,this.readVariableSizeField(t+1,i<<7))}}});var Zg,XO=ue(()=>{er();Zg=class extends Qt("Musepack"){}});var Oie,o4e,$O,bie=ue(()=>{Oie=qe(ct(),1);zi();Vl();ui();Die();XO();o4e=(0,Oie.default)("music-metadata:parser:musepack"),$O=class extends vt{constructor(){super(...arguments),this.audioLength=0}async parse(){if(await this.tokenizer.readToken(rt)!=="MPCK")throw new Zg("Invalid Magic number");return this.metadata.setFormat("container","Musepack, SV8"),this.parsePacket()}async parsePacket(){let t=new ZO(this.tokenizer);do{let o=await t.readPacketHeader();switch(o4e(`packet-header key=${o.key}, payloadLength=${o.payloadLength}`),o.key){case"SH":{let i=await t.readStreamHeader(o.payloadLength);this.metadata.setFormat("numberOfSamples",i.sampleCount),this.metadata.setFormat("sampleRate",i.sampleFrequency),this.metadata.setFormat("duration",i.sampleCount/i.sampleFrequency),this.metadata.setFormat("numberOfChannels",i.channelCount);break}case"AP":this.audioLength+=o.payloadLength,await this.tokenizer.ignore(o.payloadLength);break;case"RG":case"EI":case"SO":case"ST":case"CT":await this.tokenizer.ignore(o.payloadLength);break;case"SE":return this.metadata.format.duration&&this.metadata.setFormat("bitrate",this.audioLength*8/this.metadata.format.duration),zl(this.metadata,this.tokenizer,this.options);default:throw new Zg(`Unexpected header: ${o.key}`)}}while(!0)}}});var eb,Mie=ue(()=>{DA();eb=class{constructor(t){this.pos=0,this.dword=null,this.tokenizer=t}async read(t){for(;this.dword===null;)this.dword=await this.tokenizer.readToken(Le);let o=this.dword;return this.pos+=t,this.pos<32?(o>>>=32-this.pos,o&(1<>>32-this.pos),o&(1<0){let e=32-this.pos;this.dword=null,t-=e,this.pos=0}let o=t%32,i=(t-o)/32;return await this.tokenizer.ignore(i*4),this.read(o)}}});var _ie,Tie=ue(()=>{DA();Ar();Fs();_ie={len:24,get:(n,t)=>{let o={signature:br(n.subarray(t,t+3),"latin1"),streamMinorVersion:ZA(n,t+3,0,4),streamMajorVersion:ZA(n,t+3,4,4),frameCount:Le.get(n,t+4),maxLevel:SA.get(n,t+8),sampleFrequency:[44100,48e3,37800,32e3][ZA(n,t+10,0,2)],link:ZA(n,t+10,2,2),profile:ZA(n,t+10,4,4),maxBand:ZA(n,t+11,0,6),intensityStereo:Na(n,t+11,6),midSideStereo:Na(n,t+11,7),titlePeak:SA.get(n,t+12),titleGain:SA.get(n,t+14),albumPeak:SA.get(n,t+16),albumGain:SA.get(n,t+18),lastFrameLength:Le.get(n,t+20)>>>20&2047,trueGapless:Na(n,t+23,0)};return o.lastFrameLength=o.trueGapless?Le.get(n,20)>>>20&2047:0,o}}});var Rie,Nie,Ab,kie=ue(()=>{Rie=qe(ct(),1);zi();Vl();Mie();Tie();XO();Nie=(0,Rie.default)("music-metadata:parser:musepack"),Ab=class extends vt{constructor(){super(...arguments),this.bitreader=null,this.audioLength=0,this.duration=null}async parse(){let t=await this.tokenizer.readToken(_ie);if(t.signature!=="MP+")throw new Zg("Unexpected magic number");Nie(`stream-version=${t.streamMajorVersion}.${t.streamMinorVersion}`),this.metadata.setFormat("container","Musepack, SV7"),this.metadata.setFormat("sampleRate",t.sampleFrequency);let o=1152*(t.frameCount-1)+t.lastFrameLength;this.metadata.setFormat("numberOfSamples",o),this.duration=o/t.sampleFrequency,this.metadata.setFormat("duration",this.duration),this.bitreader=new eb(this.tokenizer),this.metadata.setFormat("numberOfChannels",t.midSideStereo||t.intensityStereo?2:1);let i=await this.bitreader.read(8);return this.metadata.setFormat("codec",(i/100).toFixed(2)),await this.skipAudioData(t.frameCount),Nie(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`),zl(this.metadata,this.tokenizer,this.options)}async skipAudioData(t){for(;t-- >0;){let i=await this.bitreader.read(20);this.audioLength+=20+i,await this.bitreader.ignore(i)}let o=await this.bitreader.read(11);this.audioLength+=o,this.duration!==null&&this.metadata.setFormat("bitrate",this.audioLength/this.duration)}}});var Gie={};Fr(Gie,{MusepackParser:()=>z2});var Pie,vie,z2,Fie=ue(()=>{Pie=qe(ct(),1);DA();cf();bie();kie();XO();vie=(0,Pie.default)("music-metadata:parser:musepack"),z2=class extends Js{async postId3v2Parse(){let t=await this.tokenizer.peekToken(new Ve(3,"latin1")),o;switch(t){case"MP+":{vie("Stream-version 7"),o=new Ab(this.metadata,this.tokenizer,this.options);break}case"MPC":{vie("Stream-version 8"),o=new $O(this.metadata,this.tokenizer,this.options);break}default:throw new Zg("Invalid signature prefix")}return this.metadata.setAudioOnly(),o.parse()}}});var Lie,Uie=ue(()=>{Lie={parserType:"musepack",extensions:[".mpc"],mimeTypes:["audio/musepack"],async load(){return(await Promise.resolve().then(()=>(Fie(),Gie))).MusepackParser}}});var Sf,tb,V2=ue(()=>{DA();er();Sf=class extends Qt("Opus"){},tb=class{constructor(t){if(t<19)throw new Sf("ID-header-page 0 should be at least 19 bytes long");this.len=t}get(t,o){return{magicSignature:new Ve(8,"ascii").get(t,o+0),version:QA.get(t,o+8),channelCount:QA.get(t,o+9),preSkip:SA.get(t,o+10),inputSampleRate:Le.get(t,o+12),outputGain:SA.get(t,o+16),channelMapping:QA.get(t,o+18)}}}});var rb,Hie=ue(()=>{DA();Ef();V2();V2();rb=class extends qs{constructor(t,o,i){super(t,o),this.idHeader=null,this.lastPos=-1,this.tokenizer=i,this.durationOnLastPage=!0}parseFirstPage(t,o){if(this.metadata.setFormat("codec","Opus"),this.idHeader=new tb(o.length).get(o,0),this.idHeader.magicSignature!=="OpusHead")throw new Sf("Illegal ogg/Opus magic-signature");this.metadata.setFormat("sampleRate",this.idHeader.inputSampleRate),this.metadata.setFormat("numberOfChannels",this.idHeader.channelCount),this.metadata.setAudioOnly()}async parseFullPage(t){switch(new Ve(8,"ascii").get(t,0)){case"OpusTags":await this.parseUserCommentList(t,8),this.lastPos=this.tokenizer.position-t.length;break;default:break}}calculateDuration(t){if(this.lastPageHeader&&(t||this.lastPageHeader.headerType.lastPage)&&this.metadata.format.sampleRate&&this.lastPageHeader.absoluteGranulePosition>=0){let o=this.lastPageHeader.absoluteGranulePosition-this.idHeader.preSkip;if(this.metadata.setFormat("numberOfSamples",o),this.metadata.setFormat("duration",o/48e3),this.lastPos!==-1&&this.tokenizer.fileInfo.size&&this.metadata.format.duration){let i=this.tokenizer.fileInfo.size-this.lastPos;this.metadata.setFormat("bitrate",8*i/this.metadata.format.duration)}}}}});var Kie,xie=ue(()=>{DA();Ar();Kie={len:80,get:(n,t)=>({speex:new Ve(8,"ascii").get(n,t+0),version:iO(new Ve(20,"ascii").get(n,t+8)),version_id:dr.get(n,t+28),header_size:dr.get(n,t+32),rate:dr.get(n,t+36),mode:dr.get(n,t+40),mode_bitstream_version:dr.get(n,t+44),nb_channels:dr.get(n,t+48),bitrate:dr.get(n,t+52),frame_size:dr.get(n,t+56),vbr:dr.get(n,t+60),frames_per_packet:dr.get(n,t+64),extra_headers:dr.get(n,t+68),reserved1:dr.get(n,t+72),reserved2:dr.get(n,t+76)})}});var Yie,c4e,ab,jie=ue(()=>{Yie=qe(ct(),1);Ef();xie();c4e=(0,Yie.default)("music-metadata:parser:ogg:speex"),ab=class extends qs{constructor(t,o,i){super(t,o)}parseFirstPage(t,o){c4e("First Ogg/Speex page");let i=Kie.get(o,0);this.metadata.setFormat("codec",`Speex ${i.version}`),this.metadata.setFormat("numberOfChannels",i.nb_channels),this.metadata.setFormat("sampleRate",i.rate),i.bitrate!==-1&&this.metadata.setFormat("bitrate",i.bitrate),this.metadata.setAudioOnly()}}});var Jie,qie=ue(()=>{DA();Jie={len:42,get:(n,t)=>({id:new Ve(7,"ascii").get(n,t),vmaj:QA.get(n,t+7),vmin:QA.get(n,t+8),vrev:QA.get(n,t+9),vmbw:LA.get(n,t+10),vmbh:LA.get(n,t+17),nombr:Pr.get(n,t+37),nqual:QA.get(n,t+40)})}});var Vie,zie,ib,Wie=ue(()=>{Vie=qe(ct(),1);qie();zie=(0,Vie.default)("music-metadata:parser:ogg:theora"),ib=class{constructor(t,o,i){this.durationOnLastPage=!1,this.metadata=t}async parsePage(t,o){t.headerType.firstPage&&await this.parseFirstPage(t,o)}calculateDuration(){zie("duration calculation not implemented")}async parseFirstPage(t,o){zie("First Ogg/Theora page"),this.metadata.setFormat("codec","Theora");let i=Jie.get(o,0);this.metadata.setFormat("bitrate",i.nombr),this.metadata.setFormat("hasVideo",!0)}flush(){return Promise.resolve()}}});var Zie,ob,Xie=ue(()=>{DA();Ar();DA();Zie={len:27,get:(n,t)=>({capturePattern:new Ve(4,"latin1").get(n,t),version:QA.get(n,t+4),headerType:{continued:GA(n,t+5,0),firstPage:GA(n,t+5,1),lastPage:GA(n,t+5,2)},absoluteGranulePosition:Number(Gr.get(n,t+6)),streamSerialNumber:Le.get(n,t+14),pageSequenceNo:Le.get(n,t+18),pageChecksum:Le.get(n,t+22),page_segments:QA.get(n,t+26)})},ob=class n{static sum(t,o,i){let e=new DataView(t.buffer,0),a=0;for(let A=o;A{$ie=qe(ct(),1);F2();L2();ui();TO();W2=(0,$ie.default)("music-metadata:parser:ogg:theora"),nb=class{constructor(t,o,i){this.durationOnLastPage=!1,this.metadata=t,this.options=o,this.tokenizer=i,this.flacParser=new Bf(this.metadata,this.tokenizer,o)}async parsePage(t,o){t.headerType.firstPage&&await this.parseFirstPage(t,o)}calculateDuration(){W2("duration calculation not implemented")}async parseFirstPage(t,o){if(W2("First Ogg/FLAC page"),(await rt.get(o,9)).toString()!=="fLaC")throw new Error("Invalid FLAC preamble");let e=await Cf.get(o,13);await this.parseDataBlock(e,o.subarray(13+Cf.len))}async parseDataBlock(t,o){switch(W2(`blockHeader type=${t.type}, length=${t.length}`),t.type){case fi.STREAMINFO:{let i=uf.get(o,0);return this.flacParser.processsStreamInfo(i)}case fi.PADDING:break;case fi.APPLICATION:break;case fi.SEEKTABLE:break;case fi.VORBIS_COMMENT:return this.flacParser.parseComment(o);case fi.PICTURE:if(!this.options.skipCovers){let i=new BI(o.length).get(o,0);return this.flacParser.addPictureTag(i)}break;default:this.metadata.addWarning(`Unknown block type: ${t.type}`)}return this.tokenizer.ignore(t.length).then()}flush(){return Promise.resolve()}}});var toe={};Fr(toe,{OggContentError:()=>aE,OggParser:()=>X2});var Aoe,aE,Vs,Z2,X2,roe=ue(()=>{DA();$o();Aoe=qe(ct(),1);zi();Ef();Hie();jie();Wie();er();Xie();eoe();aE=class extends Qt("Ogg"){},Vs=(0,Aoe.default)("music-metadata:parser:ogg"),Z2=class{constructor(t,o,i){this.pageNumber=0,this.closed=!1,this.metadata=t,this.streamSerial=o,this.options=i}async parsePage(t,o){this.pageNumber=o.pageSequenceNo,Vs("serial=%s page#=%s, Ogg.id=%s",o.streamSerialNumber,o.pageSequenceNo,o.capturePattern);let i=await t.readToken(new ob(o));Vs("totalPageSize=%s",i.totalPageSize);let e=await t.readToken(new Ot(i.totalPageSize));if(Vs("firstPage=%s, lastPage=%s, continued=%s",o.headerType.firstPage,o.headerType.lastPage,o.headerType.continued),o.headerType.firstPage){this.metadata.setFormat("container","Ogg");let a=e.subarray(0,7),A=Array.from(a).filter(r=>r>=32&&r<=126).map(r=>String.fromCharCode(r)).join("");switch(A){case"vorbis":Vs(`Set Ogg stream serial ${o.streamSerialNumber}, codec=Vorbis`),this.pageConsumer=new qs(this.metadata,this.options);break;case"OpusHea":Vs("Set page consumer to Ogg/Opus"),this.pageConsumer=new rb(this.metadata,this.options,t);break;case"Speex ":Vs("Set page consumer to Ogg/Speex"),this.pageConsumer=new ab(this.metadata,this.options,t);break;case"fishead":case"theora":Vs("Set page consumer to Ogg/Theora"),this.pageConsumer=new ib(this.metadata,this.options,t);break;case"FLAC":Vs("Set page consumer to Vorbis"),this.pageConsumer=new nb(this.metadata,this.options,t);break;default:throw new aE(`Ogg codec not recognized (id=${A}`)}}if(o.headerType.lastPage&&(this.closed=!0),this.pageConsumer)await this.pageConsumer.parsePage(o,e);else throw new Error("pageConsumer should be initialized")}},X2=class extends vt{constructor(){super(...arguments),this.streams=new Map}async parse(){this.streams=new Map;let t=!1,o;try{do{if(o=await this.tokenizer.readToken(Zie),o.capturePattern!=="OggS")throw new aE("Invalid Ogg capture pattern");let i=this.streams.get(o.streamSerialNumber);if(i||(i=new Z2(this.metadata,o.streamSerialNumber,this.options),this.streams.set(o.streamSerialNumber,i)),await i.parsePage(this.tokenizer,o),i.pageNumber>12&&!(this.options.duration&&[...this.streams.values()].find(e=>e.pageConsumer?.durationOnLastPage))){Vs("Stop processing Ogg stream");break}}while(![...this.streams.values()].every(i=>i.closed))}catch(i){if(i instanceof kA)Vs("Reached end-of-stream"),t=!0;else if(i instanceof aE)this.metadata.addWarning(`Corrupt Ogg content at ${this.tokenizer.position}`);else throw i}for(let i of this.streams.values())i.closed||(this.metadata.addWarning(`End-of-stream reached before reaching last page in Ogg stream serial=${i.streamSerial}`),await i.pageConsumer?.flush()),i.pageConsumer?.calculateDuration(t)}}});var aoe,ioe=ue(()=>{aoe={parserType:"ogg",extensions:[".ogg",".ogv",".oga",".ogm",".ogx",".opus",".spx"],mimeTypes:["audio/ogg","audio/opus","audio/speex","video/ogg"],async load(){return(await Promise.resolve().then(()=>(roe(),toe))).OggParser}}});function Ws(n,t){return sb(n,t,1)===1}function sb(n,t,o){return n>>>t&4294967295>>>32-o}var I4e,wf,gb,ooe=ue(()=>{DA();ui();I4e=[6e3,8e3,9600,11025,12e3,16e3,22050,24e3,32e3,44100,48e3,64e3,88200,96e3,192e3,-1],wf={len:32,get:(n,t)=>{let o=Le.get(n,t+24),i={BlockID:rt.get(n,t),blockSize:Le.get(n,t+4),version:SA.get(n,t+8),totalSamples:Le.get(n,t+12),blockIndex:Le.get(n,t+16),blockSamples:Le.get(n,t+20),flags:{bitsPerSample:(1+sb(o,0,2))*8,isMono:Ws(o,2),isHybrid:Ws(o,3),isJointStereo:Ws(o,4),crossChannel:Ws(o,5),hybridNoiseShaping:Ws(o,6),floatingPoint:Ws(o,7),samplingRate:I4e[sb(o,23,4)],isDSD:Ws(o,31)},crc:new Ot(4).get(n,t+28)};return i.flags.isDSD&&(i.totalSamples*=8),i}},gb={len:1,get:(n,t)=>({functionId:sb(n[t],0,6),isOptional:Ws(n[t],5),isOddSize:Ws(n[t],6),largeBlock:Ws(n[t],7)})}});var soe={};Fr(soe,{WavPackContentError:()=>iE,WavPackParser:()=>$2});var noe,tp,iE,$2,goe=ue(()=>{DA();Vl();ui();zi();ooe();noe=qe(ct(),1);$B();er();tp=(0,noe.default)("music-metadata:parser:WavPack"),iE=class extends Qt("WavPack"){},$2=class extends vt{constructor(){super(...arguments),this.audioDataSize=0}async parse(){return this.metadata.setAudioOnly(),this.audioDataSize=0,await this.parseWavPackBlocks(),zl(this.metadata,this.tokenizer,this.options)}async parseWavPackBlocks(){do{if(await this.tokenizer.peekToken(rt)!=="wvpk")break;let o=await this.tokenizer.readToken(wf);if(o.BlockID!=="wvpk")throw new iE("Invalid WavPack Block-ID");tp(`WavPack header blockIndex=${o.blockIndex}, len=${wf.len}`),o.blockIndex===0&&!this.metadata.format.container&&(this.metadata.setFormat("container","WavPack"),this.metadata.setFormat("lossless",!o.flags.isHybrid),this.metadata.setFormat("bitsPerSample",o.flags.bitsPerSample),o.flags.isDSD||(this.metadata.setFormat("sampleRate",o.flags.samplingRate),this.metadata.setFormat("duration",o.totalSamples/o.flags.samplingRate)),this.metadata.setFormat("numberOfChannels",o.flags.isMono?1:2),this.metadata.setFormat("numberOfSamples",o.totalSamples),this.metadata.setFormat("codec",o.flags.isDSD?"DSD":"PCM"));let i=o.blockSize-(wf.len-8);await(o.blockIndex===0?this.parseMetadataSubBlock(o,i):this.tokenizer.ignore(i)),o.blockSamples>0&&(this.audioDataSize+=o.blockSize)}while(!this.tokenizer.fileInfo.size||this.tokenizer.fileInfo.size-this.tokenizer.position>=wf.len);this.metadata.format.duration&&this.metadata.setFormat("bitrate",this.audioDataSize*8/this.metadata.format.duration)}async parseMetadataSubBlock(t,o){let i=o;for(;i>gb.len;){let e=await this.tokenizer.readToken(gb),a=await this.tokenizer.readNumber(e.largeBlock?VB:QA),A=new Uint8Array(a*2-(e.isOddSize?1:0));switch(await this.tokenizer.readBuffer(A),tp(`Metadata Sub-Blocks functionId=0x${e.functionId.toString(16)}, id.largeBlock=${e.largeBlock},data-size=${A.length}`),e.functionId){case 0:break;case 14:{tp("ID_DSD_BLOCK");let r=1<{coe={parserType:"wavpack",extensions:[".wv",".wvp"],mimeTypes:["audio/wavpack"],async load(){return(await Promise.resolve().then(()=>(goe(),soe))).WavPackParser}}});var oE,cb,loe=ue(()=>{DA();oE={len:8,get:(n,t)=>({chunkID:new Ve(4,"latin1").get(n,t),chunkSize:Le.get(n,t+4)})},cb=class{constructor(t){this.tagHeader=t,this.len=t.chunkSize,this.len+=this.len&1}get(t,o){return new Ve(this.tagHeader.chunkSize,"ascii").get(t,o)}}});var rp,ha,poe,Ib,lb,eU=ue(()=>{DA();er();rp=class extends Qt("Wave"){},ha={PCM:1,ADPCM:2,IEEE_FLOAT:3,ALAW:6,MULAW:7,DVI_ADPCM:17,GSM610:49,MPEG_ADTS_AAC:5632,MPEG_LOAS:5634,RAW_AAC1:255,DOLBY_AC3_SPDIF:146,DVM:8192,RAW_SPORT:576,ESST_AC3:577,DRM:9,DTS2:8193,MPEG:80,MPEGLAYER3:85},poe={[ha.PCM]:"PCM",[ha.ADPCM]:"ADPCM",[ha.IEEE_FLOAT]:"IEEE_FLOAT",[ha.ALAW]:"ALAW",[ha.MULAW]:"MULAW",[ha.DVI_ADPCM]:"DVI_ADPCM",[ha.GSM610]:"GSM610",[ha.MPEG_ADTS_AAC]:"MPEG_ADTS_AAC",[ha.MPEG_LOAS]:"MPEG_LOAS",[ha.RAW_AAC1]:"RAW_AAC1",[ha.DOLBY_AC3_SPDIF]:"DOLBY_AC3_SPDIF",[ha.DVM]:"DVM",[ha.RAW_SPORT]:"RAW_SPORT",[ha.ESST_AC3]:"ESST_AC3",[ha.DRM]:"DRM",[ha.DTS2]:"DTS2",[ha.MPEG]:"MPEG",[ha.MPEGLAYER3]:"MPEGLAYER3"},Ib=class{constructor(t){if(t.chunkSize<16)throw new rp("Invalid chunk size");this.len=t.chunkSize}get(t,o){return{wFormatTag:SA.get(t,o),nChannels:SA.get(t,o+2),nSamplesPerSec:Le.get(t,o+4),nAvgBytesPerSec:Le.get(t,o+8),nBlockAlign:SA.get(t,o+12),wBitsPerSample:SA.get(t,o+14)}}},lb=class{constructor(t){if(t.chunkSize<4)throw new rp("Invalid fact chunk size.");this.len=t.chunkSize}get(t,o){return{dwSampleLength:Le.get(t,o)}}}});var AU,doe=ue(()=>{DA();Ar();AU={len:420,get:(n,t)=>({description:rn(new Ve(256,"ascii").get(n,t)).trim(),originator:rn(new Ve(32,"ascii").get(n,t+256)).trim(),originatorReference:rn(new Ve(32,"ascii").get(n,t+288)).trim(),originationDate:rn(new Ve(10,"ascii").get(n,t+320)).trim(),originationTime:rn(new Ve(8,"ascii").get(n,t+330)).trim(),timeReferenceLow:Le.get(n,t+338),timeReferenceHigh:Le.get(n,t+342),version:SA.get(n,t+346),umid:new Ot(64).get(n,t+348),loudnessValue:SA.get(n,t+412),maxTruePeakLevel:SA.get(n,t+414),maxMomentaryLoudness:SA.get(n,t+416),maxShortTermLoudness:SA.get(n,t+418)})}});var Eoe={};Fr(Eoe,{WaveParser:()=>tU});var hoe,fI,tU,Coe=ue(()=>{$o();DA();hoe=qe(ct(),1);loe();eU();Yh();Ar();ui();zi();doe();eU();fI=(0,hoe.default)("music-metadata:parser:RIFF"),tU=class extends vt{constructor(){super(...arguments),this.blockAlign=0,this.avgBytesPerSec=0}async parse(){let t=await this.tokenizer.readToken(oE);if(fI(`pos=${this.tokenizer.position}, parse: chunkID=${t.chunkID}`),t.chunkID==="RIFF")return this.metadata.setAudioOnly(),this.parseRiffChunk(t.chunkSize).catch(o=>{if(!(o instanceof kA))throw o})}async parseRiffChunk(t){let o=await this.tokenizer.readToken(rt);switch(this.metadata.setFormat("container",o),o){case"WAVE":return this.readWaveChunk(t-rt.len);default:throw new rp(`Unsupported RIFF format: RIFF/${o}`)}}async readWaveChunk(t){for(;t>=oE.len;){let o=await this.tokenizer.readToken(oE);switch(t-=oE.len+o.chunkSize,o.chunkSize>t&&this.metadata.addWarning("Data chunk size exceeds file size"),this.header=o,fI(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${o.chunkID}`),o.chunkID){case"LIST":await this.parseListTag(o);break;case"fact":this.metadata.setFormat("lossless",!1),this.fact=await this.tokenizer.readToken(new lb(o));break;case"fmt ":{let i=await this.tokenizer.readToken(new Ib(o)),e=poe[i.wFormatTag];e||(fI(`WAVE/non-PCM format=${i.wFormatTag}`),e=`non-PCM (${i.wFormatTag})`),this.metadata.setFormat("codec",e),this.metadata.setFormat("bitsPerSample",i.wBitsPerSample),this.metadata.setFormat("sampleRate",i.nSamplesPerSec),this.metadata.setFormat("numberOfChannels",i.nChannels),this.blockAlign=i.nBlockAlign,this.avgBytesPerSec=i.nAvgBytesPerSec;break}case"id3 ":case"ID3 ":{let i=await this.tokenizer.readToken(new Ot(o.chunkSize)),e=Co(i);await new nn().parse(this.metadata,e,this.options);break}case"data":{this.metadata.format.lossless!==!1&&this.metadata.setFormat("lossless",!0);let i=o.chunkSize;if(this.tokenizer.fileInfo.size){let a=this.tokenizer.fileInfo.size-this.tokenizer.position;a0?this.metadata.setFormat("bitrate",this.avgBytesPerSec*8):this.metadata.format.duration&&this.metadata.setFormat("bitrate",i*8/this.metadata.format.duration),await this.tokenizer.ignore(o.chunkSize);break}case"bext":{let i=await this.tokenizer.readToken(AU);Object.keys(i).forEach(a=>{this.metadata.addTag("exif",`bext.${a}`,i[a])});let e=o.chunkSize-AU.len;await this.tokenizer.ignore(e);break}case"\0\0\0\0":fI(`Ignore padding chunk: RIFF/${o.chunkID} of ${o.chunkSize} bytes`),this.metadata.addWarning(`Ignore chunk: RIFF/${o.chunkID}`),await this.tokenizer.ignore(o.chunkSize);break;default:fI(`Ignore chunk: RIFF/${o.chunkID} of ${o.chunkSize} bytes`),this.metadata.addWarning(`Ignore chunk: RIFF/${o.chunkID}`),await this.tokenizer.ignore(o.chunkSize)}this.header.chunkSize%2===1&&(fI("Read odd padding byte"),await this.tokenizer.ignore(1))}}async parseListTag(t){let o=await this.tokenizer.readToken(new Ve(4,"latin1"));switch(fI("pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s",this.tokenizer.position,o),o){case"INFO":return this.parseRiffInfoTags(t.chunkSize-4);default:return this.metadata.addWarning(`Ignore chunk: RIFF/WAVE/LIST/${o}`),fI(`Ignoring chunkID=RIFF/WAVE/LIST/${o}`),this.tokenizer.ignore(t.chunkSize-4).then()}}async parseRiffInfoTags(t){for(;t>=8;){let o=await this.tokenizer.readToken(oE),i=new cb(o),e=await this.tokenizer.readToken(i);this.addTag(o.chunkID,rn(e)),t-=8+i.len}if(t!==0)throw new rp(`Illegal remaining size: ${t}`)}addTag(t,o){this.metadata.addTag("exif",t,o)}}});var uoe,Boe=ue(()=>{uoe={parserType:"riff",extensions:[".wav","wave",".bwf"],mimeTypes:["audio/vnd.wave","audio/wav","audio/wave"],async load(){return(await Promise.resolve().then(()=>(Coe(),Eoe))).WaveParser}}});function d4e(n){let t=foe.default.parse(n),o=cre(t.type);return{type:o.type,subtype:o.subtype,suffix:o.suffix,parameters:t.parameters}}function h4e(n){let t=n.lastIndexOf(".");return t===-1?"":n.substring(t)}var foe,Qoe,ap,ip,rU=ue(()=>{a2();foe=qe(gre(),1);Ire();Qoe=qe(ct(),1);Rre();Jl();oae();er();sae();Qae();Oae();kae();Kae();Vae();iie();Qie();Uie();ioe();Ioe();Boe();pb();ap=(0,Qoe.default)("music-metadata:parser:factory");ip=class{constructor(){this.parsers=[],[zae,iae,nae,fie,aie,uoe,aoe,fae,Rae,coe,Lie,Hae,Dae].forEach(t=>{this.registerParser(t)})}registerParser(t){this.parsers.push(t)}async parse(t,o,i){if(t.supportsRandomAccess()?(ap("tokenizer supports random-access, scanning for appending headers"),await aU(t,i)):ap("tokenizer does not support random-access, cannot scan for appending headers"),!o){let r=new Uint8Array(4100);if(t.fileInfo.mimeType&&(o=this.findLoaderForContentType(t.fileInfo.mimeType)),!o&&t.fileInfo.path&&(o=this.findLoaderForExtension(t.fileInfo.path)),!o){ap("Guess parser on content..."),await t.peekBuffer(r,{mayBeLess:!0});let s=await tf(r,{mpegOffsetTolerance:10});if(!s||!s.mime)throw new cI("Failed to determine audio format");if(ap(`Guessed file type is mime=${s.mime}, extension=${s.ext}`),o=this.findLoaderForContentType(s.mime),!o)throw new II(`Guessed MIME-type not supported: ${s.mime}`)}}ap(`Loading ${o.parserType} parser...`);let e=new uO(i),a=await o.load(),A=new a(e,t,i??{});return ap(`Parser ${o.parserType} loaded`),await A.parse(),e.format.trackInfo&&(e.format.hasAudio===void 0&&e.setFormat("hasAudio",!!e.format.trackInfo.find(r=>r.type===pa.audio)),e.format.hasVideo===void 0&&e.setFormat("hasVideo",!!e.format.trackInfo.find(r=>r.type===pa.video))),e.toCommonMetadata()}findLoaderForExtension(t){if(!t)return;let o=h4e(t).toLocaleLowerCase()||t;return this.parsers.find(i=>i.extensions.indexOf(o)!==-1)}findLoaderForContentType(t){let o;if(!t)return;try{o=d4e(t)}catch{ap(`Invalid HTTP Content-Type header value: ${t}`);return}let i=o.subtype.indexOf("x-")===0?o.subtype.substring(2):o.subtype;return this.parsers.find(e=>e.mimeTypes.find(a=>a.indexOf(`${o.type}/${i}`)!==-1))}getSupportedMimeTypes(){let t=new Set;return this.parsers.forEach(o=>{o.mimeTypes.forEach(i=>{t.add(i),t.add(i.replace("/","/x-"))})}),Array.from(t)}}});async function yoe(n){let t=n.fileInfo.size;if(t>=143){let o=new Uint8Array(15),i=n.position;await n.readBuffer(o,{position:t-143}),n.setPosition(i);let e=br(o,"latin1");if(e.substring(6)===E4e)return Number.parseInt(e.substring(0,6),10)+15}return 0}var E4e,moe=ue(()=>{Fs();E4e="LYRICS200"});async function C4e(n,t={}){let o=zD(n);try{return await nE(o,t)}finally{await o.close()}}async function u4e(n,t,o={}){let i=qD(n,{fileInfo:typeof t=="string"?{mimeType:t}:t});try{return await nE(i,o)}finally{await i.close()}}async function B4e(n,t,o={}){let i=Co(n,{fileInfo:typeof t=="string"?{mimeType:t}:t});return nE(i,o)}function nE(n,t){return new ip().parse(n,void 0,t)}function f4e(n){let t={};for(let{id:o,value:i}of n)(t[o]||(t[o]=[])).push(i);return t}function Q4e(n){return n===void 0?0:1+Math.round(n*4)}function y4e(n){return n?n.reduce((t,o)=>o.name&&o.name.toLowerCase()in["front","cover","cover (front)"]?o:t):null}async function aU(n,t={}){let o=n.fileInfo.size;if(await Kre(n)){o-=128;let i=await yoe(n);o-=i}t.apeHeader=await dI.findApeFooterOffset(n,o)}function m4e(){return new ip().getSupportedMimeTypes()}var pb=ue(()=>{$o();rU();Vl();nf();moe();Jl();er();er()});var Doe={};Fr(Doe,{CouldNotDetermineFileTypeError:()=>cI,FieldDecodingError:()=>tn,InternalParserError:()=>jl,LyricsContentType:()=>Fh,TimestampFormat:()=>Lh,UnsupportedFileTypeError:()=>II,getSupportedMimeTypes:()=>m4e,makeParseError:()=>Ph,makeUnexpectedFileContentError:()=>Qt,orderTags:()=>f4e,parseBlob:()=>C4e,parseBuffer:()=>B4e,parseFile:()=>w4e,parseFromTokenizer:()=>nE,parseStream:()=>S4e,parseWebStream:()=>u4e,ratingToStars:()=>Q4e,scanAppendingHeaders:()=>aU,selectCover:()=>y4e});async function S4e(n,t,o={}){let i=await YL(n,{fileInfo:typeof t=="string"?{mimeType:t}:t});try{return await nE(i,o)}finally{await i.close()}}async function w4e(n,t={}){Soe(`parseFile: ${n}`);let o=await mte(n),i=new ip;try{let e=i.findLoaderForExtension(n);e||Soe("Parser could not be determined by file extension");try{return await i.parse(o,e,t)}catch(a){throw(a instanceof cI||a instanceof II)&&(a.message+=`: ${n}`),a}}finally{await o.close()}}var woe,Soe,Ooe=ue(()=>{$o();woe=qe(ct(),1);pb();rU();pb();Soe=(0,woe.default)("music-metadata:parser")});var Hne=ee((uNA,FU)=>{"use strict";var k8e=Object.prototype.hasOwnProperty,Qi="~";function Ff(){}Object.create&&(Ff.prototype=Object.create(null),new Ff().__proto__||(Qi=!1));function v8e(n,t,o){this.fn=n,this.context=t,this.once=o||!1}function Une(n,t,o,i,e){if(typeof o!="function")throw new TypeError("The listener must be a function");var a=new v8e(o,i||n,e),A=Qi?Qi+t:t;return n._events[A]?n._events[A].fn?n._events[A]=[n._events[A],a]:n._events[A].push(a):(n._events[A]=a,n._eventsCount++),n}function Ob(n,t){--n._eventsCount===0?n._events=new Ff:delete n._events[t]}function ii(){this._events=new Ff,this._eventsCount=0}ii.prototype.eventNames=function(){var t=[],o,i;if(this._eventsCount===0)return t;for(i in o=this._events)k8e.call(o,i)&&t.push(Qi?i.slice(1):i);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(o)):t};ii.prototype.listeners=function(t){var o=Qi?Qi+t:t,i=this._events[o];if(!i)return[];if(i.fn)return[i.fn];for(var e=0,a=i.length,A=new Array(a);e{"use strict";var Kf=n=>n&&typeof n.message=="string",XU=n=>{if(!n)return;let t=n.cause;if(typeof t=="function"){let o=n.cause();return Kf(o)?o:void 0}else return Kf(t)?t:void 0},hse=(n,t)=>{if(!Kf(n))return"";let o=n.stack||"";if(t.has(n))return o+` causes have become circular...`;let i=XU(n);return i?(t.add(n),o+` -caused by: `+hse(i,t)):o},Cze=n=>hse(n,new Set),Ese=(n,t,o)=>{if(!Kf(n))return"";let i=o?"":n.message||"";if(t.has(n))return i+": ...";let e=XU(n);if(e){t.add(n);let a=typeof n.cause=="function";return i+(a?"":": ")+Ese(e,t,a)}else return i},uze=n=>Ese(n,new Set);Cse.exports={isErrorLike:Kf,getErrorCause:XU,stackWithCauses:Cze,messageWithCauses:uze}});var eH=ee((qkA,Bse)=>{"use strict";var Bze=Symbol("circular-ref-tag"),Lb=Symbol("pino-raw-err-ref"),use=Object.create({},{type:{enumerable:!0,writable:!0,value:void 0},message:{enumerable:!0,writable:!0,value:void 0},stack:{enumerable:!0,writable:!0,value:void 0},aggregateErrors:{enumerable:!0,writable:!0,value:void 0},raw:{enumerable:!1,get:function(){return this[Lb]},set:function(n){this[Lb]=n}}});Object.defineProperty(use,Lb,{writable:!0,value:{}});Bse.exports={pinoErrProto:use,pinoErrorSymbols:{seen:Bze,rawSymbol:Lb}}});var yse=ee((zkA,Qse)=>{"use strict";Qse.exports=tH;var{messageWithCauses:fze,stackWithCauses:Qze,isErrorLike:fse}=$U(),{pinoErrProto:yze,pinoErrorSymbols:mze}=eH(),{seen:AH}=mze,{toString:Sze}=Object.prototype;function tH(n){if(!fse(n))return n;n[AH]=void 0;let t=Object.create(yze);t.type=Sze.call(n.constructor)==="[object Function]"?n.constructor.name:n.name,t.message=fze(n),t.stack=Qze(n),Array.isArray(n.errors)&&(t.aggregateErrors=n.errors.map(o=>tH(o)));for(let o in n)if(t[o]===void 0){let i=n[o];fse(i)?o!=="cause"&&!Object.prototype.hasOwnProperty.call(i,AH)&&(t[o]=tH(i)):t[o]=i}return delete n[AH],t.raw=n,t}});var Sse=ee((VkA,mse)=>{"use strict";mse.exports=Hb;var{isErrorLike:rH}=$U(),{pinoErrProto:wze,pinoErrorSymbols:Dze}=eH(),{seen:Ub}=Dze,{toString:Oze}=Object.prototype;function Hb(n){if(!rH(n))return n;n[Ub]=void 0;let t=Object.create(wze);t.type=Oze.call(n.constructor)==="[object Function]"?n.constructor.name:n.name,t.message=n.message,t.stack=n.stack,Array.isArray(n.errors)&&(t.aggregateErrors=n.errors.map(o=>Hb(o))),rH(n.cause)&&!Object.prototype.hasOwnProperty.call(n.cause,Ub)&&(t.cause=Hb(n.cause));for(let o in n)if(t[o]===void 0){let i=n[o];rH(i)?Object.prototype.hasOwnProperty.call(i,Ub)||(t[o]=Hb(i)):t[o]=i}return delete n[Ub],t.raw=n,t}});var bse=ee((WkA,Ose)=>{"use strict";Ose.exports={mapHttpRequest:bze,reqSerializer:Dse};var aH=Symbol("pino-raw-req-ref"),wse=Object.create({},{id:{enumerable:!0,writable:!0,value:""},method:{enumerable:!0,writable:!0,value:""},url:{enumerable:!0,writable:!0,value:""},query:{enumerable:!0,writable:!0,value:""},params:{enumerable:!0,writable:!0,value:""},headers:{enumerable:!0,writable:!0,value:{}},remoteAddress:{enumerable:!0,writable:!0,value:""},remotePort:{enumerable:!0,writable:!0,value:""},raw:{enumerable:!1,get:function(){return this[aH]},set:function(n){this[aH]=n}}});Object.defineProperty(wse,aH,{writable:!0,value:{}});function Dse(n){let t=n.info||n.socket,o=Object.create(wse);if(o.id=typeof n.id=="function"?n.id():n.id||(n.info?n.info.id:void 0),o.method=n.method,n.originalUrl)o.url=n.originalUrl;else{let i=n.path;o.url=typeof i=="string"?i:n.url?n.url.path||n.url:void 0}return n.query&&(o.query=n.query),n.params&&(o.params=n.params),o.headers=n.headers,o.remoteAddress=t&&t.remoteAddress,o.remotePort=t&&t.remotePort,o.raw=n.raw||n,o}function bze(n){return{req:Dse(n)}}});var Nse=ee((ZkA,Tse)=>{"use strict";Tse.exports={mapHttpResponse:Mze,resSerializer:_se};var iH=Symbol("pino-raw-res-ref"),Mse=Object.create({},{statusCode:{enumerable:!0,writable:!0,value:0},headers:{enumerable:!0,writable:!0,value:""},raw:{enumerable:!1,get:function(){return this[iH]},set:function(n){this[iH]=n}}});Object.defineProperty(Mse,iH,{writable:!0,value:{}});function _se(n){let t=Object.create(Mse);return t.statusCode=n.headersSent?n.statusCode:null,t.headers=n.getHeaders?n.getHeaders():n._headers,t.raw=n,t}function Mze(n){return{res:_se(n)}}});var nH=ee((XkA,Rse)=>{"use strict";var oH=yse(),_ze=Sse(),Kb=bse(),xb=Nse();Rse.exports={err:oH,errWithCause:_ze,mapHttpRequest:Kb.mapHttpRequest,mapHttpResponse:xb.mapHttpResponse,req:Kb.reqSerializer,res:xb.resSerializer,wrapErrorSerializer:function(t){return t===oH?t:function(i){return t(oH(i))}},wrapRequestSerializer:function(t){return t===Kb.reqSerializer?t:function(i){return t(Kb.reqSerializer(i))}},wrapResponseSerializer:function(t){return t===xb.resSerializer?t:function(i){return t(xb.resSerializer(i))}}}});var sH=ee(($kA,kse)=>{"use strict";function Tze(n,t){return t}kse.exports=function(){let t=Error.prepareStackTrace;Error.prepareStackTrace=Tze;let o=new Error().stack;if(Error.prepareStackTrace=t,!Array.isArray(o))return;let i=o.slice(2),e=[];for(let a of i)a&&e.push(a.getFileName());return e}});var Use=ee((evA,Lse)=>{"use strict";function gH(n){if(n===null||typeof n!="object")return n;if(n instanceof Date)return new Date(n.getTime());if(n instanceof Array){let t=[];for(let o=0;o{let Q=[...s.slice(0,I),...f];return o(B,Q)}:o,e,a);else if(a)Gse(c,r);else{let d=typeof o=="function"?o(Rze(c,r),[...s.slice(0,I),...r]):o;Pse(c,r,d)}}if(A.length===0)g(n,0);else{let c=n;for(let I=0;I0)o?a===i&&(o=!1,i=""):(o=!0,i=a);else if(a==="["&&!o)t++;else if(a==="]"&&!o&&(t--,t<0))throw new Error(`Invalid redaction path (${n})`)}if(t!==0)throw new Error(`Invalid redaction path (${n})`)}function Lze(n){if(!Array.isArray(n))throw new TypeError("paths must be an array");for(let t of n)Fze(t)}function Uze(n={}){let{paths:t=[],censor:o="[REDACTED]",serialize:i=JSON.stringify,strict:e=!0,remove:a=!1}=n;Lze(t);let A=Pze(t);return function(s){if(e&&(s===null||typeof s!="object")&&(s==null||typeof s!="object"))return i?i(s):s;let g=Gze(s,A),c=s,I=o;return typeof o=="function"&&(I=o),kze(g,t,I,a),i===!1?(g.restore=function(){return gH(c)},g):typeof i=="function"?i(g):JSON.stringify(g)}}Lse.exports=Uze});var fE=ee((AvA,Hse)=>{"use strict";var Hze=Symbol("pino.setLevel"),Kze=Symbol("pino.getLevel"),xze=Symbol("pino.levelVal"),Yze=Symbol("pino.levelComp"),jze=Symbol("pino.useLevelLabels"),Jze=Symbol("pino.useOnlyCustomLevels"),qze=Symbol("pino.mixin"),zze=Symbol("pino.lsCache"),Vze=Symbol("pino.chindings"),Wze=Symbol("pino.asJson"),Zze=Symbol("pino.write"),Xze=Symbol("pino.redactFmt"),$ze=Symbol("pino.time"),eVe=Symbol("pino.timeSliceIndex"),AVe=Symbol("pino.stream"),tVe=Symbol("pino.stringify"),rVe=Symbol("pino.stringifySafe"),aVe=Symbol("pino.stringifiers"),iVe=Symbol("pino.end"),oVe=Symbol("pino.formatOpts"),nVe=Symbol("pino.messageKey"),sVe=Symbol("pino.errorKey"),gVe=Symbol("pino.nestedKey"),cVe=Symbol("pino.nestedKeyStr"),IVe=Symbol("pino.mixinMergeStrategy"),lVe=Symbol("pino.msgPrefix"),pVe=Symbol("pino.wildcardFirst"),dVe=Symbol.for("pino.serializers"),hVe=Symbol.for("pino.formatters"),EVe=Symbol.for("pino.hooks"),CVe=Symbol.for("pino.metadata");Hse.exports={setLevelSym:Hze,getLevelSym:Kze,levelValSym:xze,levelCompSym:Yze,useLevelLabelsSym:jze,mixinSym:qze,lsCacheSym:zze,chindingsSym:Vze,asJsonSym:Wze,writeSym:Zze,serializersSym:dVe,redactFmtSym:Xze,timeSym:$ze,timeSliceIndexSym:eVe,streamSym:AVe,stringifySym:tVe,stringifySafeSym:rVe,stringifiersSym:aVe,endSym:iVe,formatOptsSym:oVe,messageKeySym:nVe,errorKeySym:sVe,nestedKeySym:gVe,wildcardFirstSym:pVe,needsMetadataGsym:CVe,useOnlyCustomLevelsSym:Jze,formattersSym:hVe,hooksSym:EVe,nestedKeyStrSym:cVe,mixinMergeStrategySym:IVe,msgPrefixSym:lVe}});var IH=ee((tvA,jse)=>{"use strict";var Kse=Use(),{redactFmtSym:uVe,wildcardFirstSym:jb}=fE(),cH=/[^.[\]]+|\[([^[\]]*?)\]/g,xse="[Redacted]",Yse=!1;function BVe(n,t){let{paths:o,censor:i,remove:e}=fVe(n),a=o.reduce((s,g)=>{cH.lastIndex=0;let c=cH.exec(g),I=cH.exec(g),d=c[1]!==void 0?c[1].replace(/^(?:"|'|`)(.*)(?:"|'|`)$/,"$1"):c[0];if(d==="*"&&(d=jb),I===null)return s[d]=null,s;if(s[d]===null)return s;let{index:B}=I,f=`${g.substr(B,g.length-1)}`;return s[d]=s[d]||[],d!==jb&&s[d].length===0&&s[d].push(...s[jb]||[]),d===jb&&Object.keys(s).forEach(function(Q){s[Q]&&s[Q].push(f)}),s[d].push(f),s},{}),A={[uVe]:Kse({paths:o,censor:i,serialize:t,strict:Yse,remove:e})},r=(...s)=>t(typeof i=="function"?i(...s):i);return[...Object.keys(a),...Object.getOwnPropertySymbols(a)].reduce((s,g)=>{if(a[g]===null)s[g]=c=>r(c,[g]);else{let c=typeof i=="function"?(I,d)=>i(I,[g,...d]):i;s[g]=Kse({paths:a[g],censor:c,serialize:t,strict:Yse,remove:e})}return s},A)}function fVe(n){if(Array.isArray(n))return n={paths:n,censor:xse},n;let{paths:t,censor:o=xse,remove:i}=n;if(Array.isArray(t)===!1)throw Error("pino \u2013 redact must contain an array of strings");return i===!0&&(o=void 0),{paths:t,censor:o,remove:i}}jse.exports=BVe});var zse=ee((rvA,qse)=>{"use strict";var QVe=()=>"",yVe=()=>`,"time":${Date.now()}`,mVe=()=>`,"time":${Math.round(Date.now()/1e3)}`,SVe=()=>`,"time":"${new Date(Date.now()).toISOString()}"`,wVe=1000000n,Jse=1000000000n,DVe=BigInt(Date.now())*wVe,OVe=process.hrtime.bigint(),bVe=()=>{let n=process.hrtime.bigint()-OVe,t=DVe+n,o=t/Jse,i=t%Jse,e=Number(o*1000n+i/1000000n),a=new Date(e),A=a.getUTCFullYear(),r=(a.getUTCMonth()+1).toString().padStart(2,"0"),s=a.getUTCDate().toString().padStart(2,"0"),g=a.getUTCHours().toString().padStart(2,"0"),c=a.getUTCMinutes().toString().padStart(2,"0"),I=a.getUTCSeconds().toString().padStart(2,"0");return`,"time":"${A}-${r}-${s}T${g}:${c}:${I}.${i.toString().padStart(9,"0")}Z"`};qse.exports={nullTime:QVe,epochTime:yVe,unixTime:mVe,isoTime:SVe,isoTimeNano:bVe}});var Wse=ee((avA,Vse)=>{"use strict";function MVe(n){try{return JSON.stringify(n)}catch{return'"[Circular]"'}}Vse.exports=_Ve;function _Ve(n,t,o){var i=o&&o.stringify||MVe,e=1;if(typeof n=="object"&&n!==null){var a=t.length+e;if(a===1)return n;var A=new Array(a);A[0]=i(n);for(var r=1;r-1?I:0,n.charCodeAt(B+1)){case 100:case 102:if(c>=s||t[c]==null)break;I=s||t[c]==null)break;I=s||t[c]===void 0)break;I",I=B+2,B++;break}g+=i(t[c]),I=B+2,B++;break;case 115:if(c>=s)break;I{"use strict";if(typeof SharedArrayBuffer<"u"&&typeof Atomics<"u"){let t=function(o){if((o>0&&o<1/0)===!1)throw typeof o!="number"&&typeof o!="bigint"?TypeError("sleep: ms must be a number"):RangeError("sleep: ms must be a number that is greater than 0 but less than Infinity");Atomics.wait(n,0,0,Number(o))},n=new Int32Array(new SharedArrayBuffer(4));lH.exports=t}else{let n=function(t){if((t>0&&t<1/0)===!1)throw typeof t!="number"&&typeof t!="bigint"?TypeError("sleep: ms must be a number"):RangeError("sleep: ms must be a number that is greater than 0 but less than Infinity");let i=Date.now()+Number(t);for(;i>Date.now(););};lH.exports=n}});var age=ee((ovA,rge)=>{"use strict";var zt=$e("fs"),TVe=$e("events"),NVe=$e("util").inherits,Zse=$e("path"),hH=pH(),RVe=$e("assert"),Jb=100,qb=Buffer.allocUnsafe(0),kVe=16*1024,Xse="buffer",$se="utf8",[vVe,PVe]=(process.versions.node||"0.0").split(".").map(Number),GVe=vVe>=22&&PVe>=7;function ege(n,t){t._opening=!0,t._writing=!0,t._asyncDrainScheduled=!1;function o(a,A){if(a){t._reopening=!1,t._writing=!1,t._opening=!1,t.sync?process.nextTick(()=>{t.listenerCount("error")>0&&t.emit("error",a)}):t.emit("error",a);return}let r=t._reopening;t.fd=A,t.file=n,t._reopening=!1,t._opening=!1,t._writing=!1,t.sync?process.nextTick(()=>t.emit("ready")):t.emit("ready"),!t.destroyed&&(!t._writing&&t._len>t.minLength||t._flushPending?t._actualWrite():r&&process.nextTick(()=>t.emit("drain")))}let i=t.append?"a":"w",e=t.mode;if(t.sync)try{t.mkdir&&zt.mkdirSync(Zse.dirname(n),{recursive:!0});let a=zt.openSync(n,i,e);o(null,a)}catch(a){throw o(a),a}else t.mkdir?zt.mkdir(Zse.dirname(n),{recursive:!0},a=>{if(a)return o(a);zt.open(n,i,e,o)}):zt.open(n,i,e,o)}function Jn(n){if(!(this instanceof Jn))return new Jn(n);let{fd:t,dest:o,minLength:i,maxLength:e,maxWrite:a,periodicFlush:A,sync:r,append:s=!0,mkdir:g,retryEAGAIN:c,fsync:I,contentMode:d,mode:B}=n||{};t=t||o,this._len=0,this.fd=-1,this._bufs=[],this._lens=[],this._writing=!1,this._ending=!1,this._reopening=!1,this._asyncDrainScheduled=!1,this._flushPending=!1,this._hwm=Math.max(i||0,16387),this.file=null,this.destroyed=!1,this.minLength=i||0,this.maxLength=e||0,this.maxWrite=a||kVe,this._periodicFlush=A||0,this._periodicFlushTimer=void 0,this.sync=r||!1,this.writable=!0,this._fsync=I||!1,this.append=s||!1,this.mode=B,this.retryEAGAIN=c||(()=>!0),this.mkdir=g||!1;let f,Q;if(d===Xse)this._writingBuf=qb,this.write=UVe,this.flush=KVe,this.flushSync=YVe,this._actualWrite=JVe,f=()=>zt.writeSync(this.fd,this._writingBuf),Q=()=>zt.write(this.fd,this._writingBuf,this.release);else if(d===void 0||d===$se)this._writingBuf="",this.write=LVe,this.flush=HVe,this.flushSync=xVe,this._actualWrite=jVe,f=()=>Buffer.isBuffer(this._writingBuf)?zt.writeSync(this.fd,this._writingBuf):zt.writeSync(this.fd,this._writingBuf,"utf8"),Q=()=>Buffer.isBuffer(this._writingBuf)?zt.write(this.fd,this._writingBuf,this.release):zt.write(this.fd,this._writingBuf,"utf8",this.release);else throw new Error(`SonicBoom supports "${$se}" and "${Xse}", but passed ${d}`);if(typeof t=="number")this.fd=t,process.nextTick(()=>this.emit("ready"));else if(typeof t=="string")ege(t,this);else throw new Error("SonicBoom supports only file descriptors and files");if(this.minLength>=this.maxWrite)throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`);this.release=(y,m)=>{if(y){if((y.code==="EAGAIN"||y.code==="EBUSY")&&this.retryEAGAIN(y,this._writingBuf.length,this._len-this._writingBuf.length))if(this.sync)try{hH(Jb),this.release(void 0,0)}catch(R){this.release(R)}else setTimeout(Q,Jb);else this._writing=!1,this.emit("error",y);return}this.emit("write",m);let _=dH(this._writingBuf,this._len,m);if(this._len=_.len,this._writingBuf=_.writingBuf,this._writingBuf.length){if(!this.sync){Q();return}try{do{let R=f(),K=dH(this._writingBuf,this._len,R);this._len=K.len,this._writingBuf=K.writingBuf}while(this._writingBuf.length)}catch(R){this.release(R);return}}this._fsync&&zt.fsyncSync(this.fd);let T=this._len;this._reopening?(this._writing=!1,this._reopening=!1,this.reopen()):T>this.minLength?this._actualWrite():this._ending?T>0?this._actualWrite():(this._writing=!1,zb(this)):(this._writing=!1,this.sync?this._asyncDrainScheduled||(this._asyncDrainScheduled=!0,process.nextTick(FVe,this)):this.emit("drain"))},this.on("newListener",function(y){y==="drain"&&(this._asyncDrainScheduled=!1)}),this._periodicFlush!==0&&(this._periodicFlushTimer=setInterval(()=>this.flush(null),this._periodicFlush),this._periodicFlushTimer.unref())}function dH(n,t,o){return typeof n=="string"&&(n=Buffer.from(n)),t=Math.max(t-o,0),n=n.subarray(o),{writingBuf:n,len:t}}function FVe(n){n.listenerCount("drain")>0&&(n._asyncDrainScheduled=!1,n.emit("drain"))}NVe(Jn,TVe);function Age(n,t){return n.length===0?qb:n.length===1?n[0]:Buffer.concat(n,t)}function LVe(n){if(this.destroyed)throw new Error("SonicBoom destroyed");n=""+n;let t=Buffer.byteLength(n),o=this._len+t,i=this._bufs;return this.maxLength&&o>this.maxLength?(this.emit("drop",n),this._lenthis.maxWrite?i.push(n):i[i.length-1]+=n,this._len=o,!this._writing&&this._len>=this.minLength&&this._actualWrite(),this._lenthis.maxLength?(this.emit("drop",n),this._lenthis.maxWrite?(o.push([n]),i.push(n.length)):(o[o.length-1].push(n),i[i.length-1]+=n.length),this._len=t,!this._writing&&this._len>=this.minLength&&this._actualWrite(),this._len{if(this._fsync)this._flushPending=!1,n();else try{zt.fsync(this.fd,i=>{this._flushPending=!1,n(i)})}catch(i){n(i)}this.off("error",o)},o=i=>{this._flushPending=!1,n(i),this.off("drain",t)};this.once("drain",t),this.once("error",o)}function HVe(n){if(n!=null&&typeof n!="function")throw new Error("flush cb must be a function");if(this.destroyed){let t=new Error("SonicBoom destroyed");if(n){n(t);return}throw t}if(this.minLength<=0){n?.();return}n&&tge.call(this,n),!this._writing&&(this._bufs.length===0&&this._bufs.push(""),this._actualWrite())}function KVe(n){if(n!=null&&typeof n!="function")throw new Error("flush cb must be a function");if(this.destroyed){let t=new Error("SonicBoom destroyed");if(n){n(t);return}throw t}if(this.minLength<=0){n?.();return}n&&tge.call(this,n),!this._writing&&(this._bufs.length===0&&(this._bufs.push([]),this._lens.push(0)),this._actualWrite())}Jn.prototype.reopen=function(n){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this._opening){this.once("ready",()=>{this.reopen(n)});return}if(this._ending)return;if(!this.file)throw new Error("Unable to reopen a file descriptor, you must pass a file to SonicBoom");if(n&&(this.file=n),this._reopening=!0,this._writing)return;let t=this.fd;this.once("ready",()=>{t!==this.fd&&zt.close(t,o=>{if(o)return this.emit("error",o)})}),ege(this.file,this)};Jn.prototype.end=function(){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this._opening){this.once("ready",()=>{this.end()});return}this._ending||(this._ending=!0,!this._writing&&(this._len>0&&this.fd>=0?this._actualWrite():zb(this)))};function xVe(){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this.fd<0)throw new Error("sonic boom is not ready yet");!this._writing&&this._writingBuf.length>0&&(this._bufs.unshift(this._writingBuf),this._writingBuf="");let n="";for(;this._bufs.length||n.length;){n.length<=0&&(n=this._bufs[0]);try{let t=Buffer.isBuffer(n)?zt.writeSync(this.fd,n):zt.writeSync(this.fd,n,"utf8"),o=dH(n,this._len,t);n=o.writingBuf,this._len=o.len,n.length<=0&&this._bufs.shift()}catch(t){if((t.code==="EAGAIN"||t.code==="EBUSY")&&!this.retryEAGAIN(t,n.length,this._len-n.length))throw t;hH(Jb)}}try{zt.fsyncSync(this.fd)}catch{}}function YVe(){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this.fd<0)throw new Error("sonic boom is not ready yet");!this._writing&&this._writingBuf.length>0&&(this._bufs.unshift([this._writingBuf]),this._writingBuf=qb);let n=qb;for(;this._bufs.length||n.length;){n.length<=0&&(n=Age(this._bufs[0],this._lens[0]));try{let t=zt.writeSync(this.fd,n);n=n.subarray(t),this._len=Math.max(this._len-t,0),n.length<=0&&(this._bufs.shift(),this._lens.shift())}catch(t){if((t.code==="EAGAIN"||t.code==="EBUSY")&&!this.retryEAGAIN(t,n.length,this._len-n.length))throw t;hH(Jb)}}}Jn.prototype.destroy=function(){this.destroyed||zb(this)};function jVe(){let n=this.release;if(this._writing=!0,this._writingBuf=this._writingBuf.length?this._writingBuf:this._bufs.shift()||"",this.sync)try{let t=Buffer.isBuffer(this._writingBuf)?zt.writeSync(this.fd,this._writingBuf):zt.writeSync(this.fd,this._writingBuf,"utf8");n(null,t)}catch(t){n(t)}else zt.write(this.fd,this._writingBuf,n)}function JVe(){let n=this.release;if(this._writing=!0,this._writingBuf=this._writingBuf.length?this._writingBuf:Age(this._bufs.shift(),this._lens.shift()),this.sync)try{let t=zt.writeSync(this.fd,this._writingBuf);n(null,t)}catch(t){n(t)}else GVe&&(this._writingBuf=Buffer.from(this._writingBuf)),zt.write(this.fd,this._writingBuf,n)}function zb(n){if(n.fd===-1){n.once("ready",zb.bind(null,n));return}n._periodicFlushTimer!==void 0&&clearInterval(n._periodicFlushTimer),n.destroyed=!0,n._bufs=[],n._lens=[],RVe(typeof n.fd=="number",`sonic.fd must be a number, got ${typeof n.fd}`);try{zt.fsync(n.fd,t)}catch{}function t(){n.fd!==1&&n.fd!==2?zt.close(n.fd,o):o()}function o(i){if(i){n.emit("error",i);return}n._ending&&!n._writing&&n.emit("finish"),n.emit("close")}}Jn.SonicBoom=Jn;Jn.default=Jn;rge.exports=Jn});var EH=ee((nvA,gge)=>{"use strict";var qn={exit:[],beforeExit:[]},ige={exit:VVe,beforeExit:WVe},QE;function qVe(){QE===void 0&&(QE=new FinalizationRegistry(ZVe))}function zVe(n){qn[n].length>0||process.on(n,ige[n])}function oge(n){qn[n].length>0||(process.removeListener(n,ige[n]),qn.exit.length===0&&qn.beforeExit.length===0&&(QE=void 0))}function VVe(){nge("exit")}function WVe(){nge("beforeExit")}function nge(n){for(let t of qn[n]){let o=t.deref(),i=t.fn;o!==void 0&&i(o,n)}qn[n]=[]}function ZVe(n){for(let t of["exit","beforeExit"]){let o=qn[t].indexOf(n);qn[t].splice(o,o+1),oge(t)}}function sge(n,t,o){if(t===void 0)throw new Error("the object can't be undefined");zVe(n);let i=new WeakRef(t);i.fn=o,qVe(),QE.register(t,i),qn[n].push(i)}function XVe(n,t){sge("exit",n,t)}function $Ve(n,t){sge("beforeExit",n,t)}function eWe(n){if(QE!==void 0){QE.unregister(n);for(let t of["exit","beforeExit"])qn[t]=qn[t].filter(o=>{let i=o.deref();return i&&i!==n}),oge(t)}}gge.exports={register:XVe,registerBeforeExit:$Ve,unregister:eWe}});var cge=ee((svA,AWe)=>{AWe.exports={name:"thread-stream",version:"3.2.0",description:"A streaming way to send data to a Node.js Worker Thread",main:"index.js",types:"index.d.ts",dependencies:{"real-require":"^0.2.0"},devDependencies:{"@types/node":"^20.1.0","@types/tap":"^15.0.0","@yao-pkg/pkg":"^5.11.5",desm:"^1.3.0",fastbench:"^1.0.1",husky:"^9.0.6","pino-elasticsearch":"^8.0.0","sonic-boom":"^4.0.1",standard:"^17.0.0",tap:"^16.2.0","ts-node":"^10.8.0",typescript:"^5.3.2","why-is-node-running":"^2.2.2"},scripts:{build:"tsc --noEmit",test:'standard && npm run build && npm run transpile && tap "test/**/*.test.*js" && tap --ts test/*.test.*ts',"test:ci":"standard && npm run transpile && npm run test:ci:js && npm run test:ci:ts","test:ci:js":'tap --no-check-coverage --timeout=120 --coverage-report=lcovonly "test/**/*.test.*js"',"test:ci:ts":'tap --ts --no-check-coverage --coverage-report=lcovonly "test/**/*.test.*ts"',"test:yarn":'npm run transpile && tap "test/**/*.test.js" --no-check-coverage',transpile:"sh ./test/ts/transpile.sh",prepare:"husky install"},standard:{ignore:["test/ts/**/*","test/syntax-error.mjs"]},repository:{type:"git",url:"git+https://github.com/mcollina/thread-stream.git"},keywords:["worker","thread","threads","stream"],author:"Matteo Collina ",license:"MIT",bugs:{url:"https://github.com/mcollina/thread-stream/issues"},homepage:"https://github.com/mcollina/thread-stream#readme"}});var lge=ee((gvA,Ige)=>{"use strict";function tWe(n,t,o,i,e){let a=Date.now()+i,A=Atomics.load(n,t);if(A===o){e(null,"ok");return}let r=A,s=g=>{Date.now()>a?e(null,"timed-out"):setTimeout(()=>{r=A,A=Atomics.load(n,t),A===r?s(g>=1e3?1e3:g*2):A===o?e(null,"ok"):e(null,"not-equal")},g)};s(1)}function rWe(n,t,o,i,e){let a=Date.now()+i,A=Atomics.load(n,t);if(A!==o){e(null,"ok");return}let r=s=>{Date.now()>a?e(null,"timed-out"):setTimeout(()=>{A=Atomics.load(n,t),A!==o?e(null,"ok"):r(s>=1e3?1e3:s*2)},s)};r(1)}Ige.exports={wait:tWe,waitDiff:rWe}});var dge=ee((cvA,pge)=>{"use strict";pge.exports={WRITE_INDEX:4,READ_INDEX:8,SEQ_INDEX:2}});var Bge=ee((IvA,uge)=>{"use strict";var{version:aWe}=cge(),{EventEmitter:iWe}=$e("events"),{Worker:oWe}=$e("worker_threads"),{join:nWe}=$e("path"),{pathToFileURL:sWe}=$e("url"),{wait:gWe}=lge(),{WRITE_INDEX:gn,READ_INDEX:Zi,SEQ_INDEX:CH}=dge(),cWe=$e("buffer"),IWe=$e("assert"),_e=Symbol("kImpl"),lWe=cWe.constants.MAX_STRING_LENGTH;function yE(n,t){Atomics.add(n[_e].state,CH,1),t(),Atomics.add(n[_e].state,CH,1),Atomics.notify(n[_e].state,CH)}var xf=class{constructor(t){this._value=t}deref(){return this._value}},Wb=class{register(){}unregister(){}},pWe=process.env.NODE_V8_COVERAGE?Wb:global.FinalizationRegistry||Wb,dWe=process.env.NODE_V8_COVERAGE?xf:global.WeakRef||xf,hge=new pWe(n=>{n.exited||n.terminate()});function hWe(n,t){let{filename:o,workerData:i}=t,a=("__bundlerPathsOverrides"in globalThis?globalThis.__bundlerPathsOverrides:{})["thread-stream-worker"]||nWe(__dirname,"lib","worker.js"),A=new oWe(a,{...t.workerOpts,trackUnmanagedFds:!1,workerData:{filename:o.indexOf("file://")===0?o:sWe(o).href,dataBuf:n[_e].dataBuf,stateBuf:n[_e].stateBuf,workerData:{$context:{threadStreamVersion:aWe},...i}}});return A.stream=new xf(n),A.on("message",EWe),A.on("exit",Cge),hge.register(n,A),A}function Ege(n){IWe(!n[_e].sync),n[_e].needDrain&&(n[_e].needDrain=!1,n.emit("drain"))}function Vb(n){let t=Atomics.load(n[_e].state,gn),o=n[_e].data.length-t;if(o>0){if(n[_e].buf.length===0){n[_e].flushing=!1,n[_e].ending?yH(n):n[_e].needDrain&&process.nextTick(Ege,n);return}let i=n[_e].buf.slice(0,o),e=Buffer.byteLength(i);e<=o?(n[_e].buf=n[_e].buf.slice(o),Zb(n,i,Vb.bind(null,n))):n.flush(()=>{if(!n.destroyed){for(yE(n,()=>{Atomics.store(n[_e].state,Zi,0),Atomics.store(n[_e].state,gn,0)}),Atomics.notify(n[_e].state,Zi);e>n[_e].data.length;)o=o/2,i=n[_e].buf.slice(0,o),e=Buffer.byteLength(i);n[_e].buf=n[_e].buf.slice(o),Zb(n,i,Vb.bind(null,n))}})}else if(o===0){if(t===0&&n[_e].buf.length===0)return;n.flush(()=>{yE(n,()=>{Atomics.store(n[_e].state,Zi,0),Atomics.store(n[_e].state,gn,0)}),Atomics.notify(n[_e].state,Zi),Vb(n)})}else eg(n,new Error("overwritten"))}function EWe(n){let t=this.stream.deref();if(t===void 0){this.exited=!0,this.terminate();return}if(n?.code!=null)switch(n.code){case"READY":this.stream=new dWe(t),t.flush(()=>{t[_e].ready=!0,t.emit("ready")});break;case"ERROR":eg(t,n.err);break;case"EVENT":Array.isArray(n.args)?t.emit(n.name,...n.args):t.emit(n.name,n.args);break;case"WARNING":process.emitWarning(n.err);break;default:eg(t,new Error("this should not happen: "+n.code))}}function Cge(n){let t=this.stream.deref();t!==void 0&&(hge.unregister(t),t.worker.exited=!0,t.worker.off("exit",Cge),eg(t,n!==0?new Error("the worker thread exited"):null))}var BH=class extends iWe{constructor(t={}){if(super(),t.bufferSize<4)throw new Error("bufferSize must at least fit a 4-byte utf-8 char");this[_e]={},this[_e].stateBuf=new SharedArrayBuffer(128),this[_e].state=new Int32Array(this[_e].stateBuf),this[_e].dataBuf=new SharedArrayBuffer(t.bufferSize||4*1024*1024),this[_e].data=Buffer.from(this[_e].dataBuf),this[_e].sync=t.sync||!1,this[_e].ending=!1,this[_e].ended=!1,this[_e].needDrain=!1,this[_e].destroyed=!1,this[_e].flushing=!1,this[_e].ready=!1,this[_e].finished=!1,this[_e].errored=null,this[_e].closed=!1,this[_e].buf="",this.worker=hWe(this,t),this.on("message",(o,i)=>{this.worker.postMessage(o,i)})}write(t){if(this[_e].destroyed)return fH(this,new Error("the worker has exited")),!1;if(this[_e].ending)return fH(this,new Error("the worker is ending")),!1;if(this[_e].flushing&&this[_e].buf.length+t.length>=lWe)try{uH(this),this[_e].flushing=!0}catch(o){return eg(this,o),!1}if(this[_e].buf+=t,this[_e].sync)try{return uH(this),!0}catch(o){return eg(this,o),!1}return this[_e].flushing||(this[_e].flushing=!0,setImmediate(Vb,this)),this[_e].needDrain=this[_e].data.length-this[_e].buf.length-Atomics.load(this[_e].state,gn)<=0,!this[_e].needDrain}end(){this[_e].destroyed||(this[_e].ending=!0,yH(this))}flush(t){if(this[_e].destroyed){typeof t=="function"&&process.nextTick(t,new Error("the worker has exited"));return}let o=Atomics.load(this[_e].state,gn);gWe(this[_e].state,Zi,o,1/0,(i,e)=>{if(i){eg(this,i),process.nextTick(t,i);return}if(e==="not-equal"){this.flush(t);return}process.nextTick(t)})}flushSync(){this[_e].destroyed||(uH(this),QH(this))}unref(){this.worker.unref()}ref(){this.worker.ref()}get ready(){return this[_e].ready}get destroyed(){return this[_e].destroyed}get closed(){return this[_e].closed}get writable(){return!this[_e].destroyed&&!this[_e].ending}get writableEnded(){return this[_e].ending}get writableFinished(){return this[_e].finished}get writableNeedDrain(){return this[_e].needDrain}get writableObjectMode(){return!1}get writableErrored(){return this[_e].errored}};function fH(n,t){setImmediate(()=>{n.emit("error",t)})}function eg(n,t){n[_e].destroyed||(n[_e].destroyed=!0,t&&(n[_e].errored=t,fH(n,t)),n.worker.exited?setImmediate(()=>{n[_e].closed=!0,n.emit("close")}):n.worker.terminate().catch(()=>{}).then(()=>{n[_e].closed=!0,n.emit("close")}))}function Zb(n,t,o){let i=Atomics.load(n[_e].state,gn),e=Buffer.byteLength(t);return n[_e].data.write(t,i),yE(n,()=>{Atomics.store(n[_e].state,gn,i+e)}),o(),!0}function yH(n){if(!(n[_e].ended||!n[_e].ending||n[_e].flushing)){n[_e].ended=!0;try{n.flushSync();let t=Atomics.load(n[_e].state,Zi);yE(n,()=>{Atomics.store(n[_e].state,gn,-1)});let o=0;for(;t!==-1;){if(Atomics.wait(n[_e].state,Zi,t,1e3),t=Atomics.load(n[_e].state,Zi),t===-2){eg(n,new Error("end() failed"));return}if(++o===10){eg(n,new Error("end() took too long (10s)"));return}}process.nextTick(()=>{n[_e].finished=!0,n.emit("finish")})}catch(t){eg(n,t)}}}function uH(n){let t=()=>{n[_e].ending?yH(n):n[_e].needDrain&&process.nextTick(Ege,n)};for(n[_e].flushing=!1;n[_e].buf.length!==0;){let o=Atomics.load(n[_e].state,gn),i=n[_e].data.length-o;if(i===0){QH(n),yE(n,()=>{Atomics.store(n[_e].state,Zi,0),Atomics.store(n[_e].state,gn,0)}),Atomics.notify(n[_e].state,Zi);continue}else if(i<0)throw new Error("overwritten");let e=n[_e].buf.slice(0,i),a=Buffer.byteLength(e);if(a<=i)n[_e].buf=n[_e].buf.slice(i),Zb(n,e,t);else{for(QH(n),yE(n,()=>{Atomics.store(n[_e].state,Zi,0),Atomics.store(n[_e].state,gn,0)}),Atomics.notify(n[_e].state,Zi);a>n[_e].buf.length;)i=i/2,e=n[_e].buf.slice(0,i),a=Buffer.byteLength(e);n[_e].buf=n[_e].buf.slice(i),Zb(n,e,t)}}}function QH(n){if(n[_e].flushing)throw new Error("unable to flush while flushing");let t=Atomics.load(n[_e].state,gn),o=0;for(;;){let i=Atomics.load(n[_e].state,Zi);if(i===-2)throw Error("_flushSync failed");if(i!==t)Atomics.wait(n[_e].state,Zi,i,1e3);else break;if(++o===10)throw new Error("_flushSync took too long (10s)")}}uge.exports=BH});var wH=ee((lvA,fge)=>{"use strict";var{createRequire:CWe}=$e("module"),uWe=sH(),{join:mH,isAbsolute:BWe,sep:fWe}=$e("node:path"),QWe=pH(),SH=EH(),yWe=Bge();function mWe(n){SH.register(n,wWe),SH.registerBeforeExit(n,DWe),n.on("close",function(){SH.unregister(n)})}function SWe(n,t,o,i){let e=new yWe({filename:n,workerData:t,workerOpts:o,sync:i});e.on("ready",a),e.on("close",function(){process.removeListener("exit",A)}),process.on("exit",A);function a(){process.removeListener("exit",A),e.unref(),o.autoEnd!==!1&&mWe(e)}function A(){e.closed||(e.flushSync(),QWe(100),e.end())}return e}function wWe(n){n.ref(),n.flushSync(),n.end(),n.once("close",function(){n.unref()})}function DWe(n){n.flushSync()}function OWe(n){let{pipeline:t,targets:o,levels:i,dedupe:e,worker:a={},caller:A=uWe(),sync:r=!1}=n,s={...n.options},g=typeof A=="string"?[A]:A,c="__bundlerPathsOverrides"in globalThis?globalThis.__bundlerPathsOverrides:{},I=n.target;if(I&&o)throw new Error("only one of target or targets can be specified");return o?(I=c["pino-worker"]||mH(__dirname,"worker.js"),s.targets=o.filter(B=>B.target).map(B=>({...B,target:d(B.target)})),s.pipelines=o.filter(B=>B.pipeline).map(B=>B.pipeline.map(f=>({...f,level:B.level,target:d(f.target)})))):t&&(I=c["pino-worker"]||mH(__dirname,"worker.js"),s.pipelines=[t.map(B=>({...B,target:d(B.target)}))]),i&&(s.levels=i),e&&(s.dedupe=e),s.pinoWillSendConfig=!0,SWe(d(I),s,a,r);function d(B){if(B=c[B]||B,BWe(B)||B.indexOf("file://")===0)return B;if(B==="pino/file")return mH(__dirname,"..","file.js");let f;for(let Q of g)try{let y=Q==="node:repl"?process.cwd()+fWe:Q;f=CWe(y).resolve(B);break}catch{continue}if(!f)throw new Error(`unable to determine transport target for "${B}"`);return f}}fge.exports=OWe});var AM=ee((pvA,Rge)=>{"use strict";var Qge=$e("node:diagnostics_channel"),yge=Wse(),{mapHttpRequest:bWe,mapHttpResponse:MWe}=nH(),OH=age(),mge=EH(),{lsCacheSym:_We,chindingsSym:Oge,writeSym:Sge,serializersSym:bge,formatOptsSym:wge,endSym:TWe,stringifiersSym:Mge,stringifySym:_ge,stringifySafeSym:bH,wildcardFirstSym:Tge,nestedKeySym:NWe,formattersSym:Nge,messageKeySym:RWe,errorKeySym:kWe,nestedKeyStrSym:vWe,msgPrefixSym:Xb}=fE(),{isMainThread:PWe}=$e("worker_threads"),GWe=wH(),eM;typeof Qge.tracingChannel=="function"?eM=Qge.tracingChannel("pino_asJson"):eM={hasSubscribers:!1,traceSync(n,t,o,...i){return n.call(o,...i)}};function mE(){}function FWe(n,t){if(!t)return o;return function(...e){t.call(this,e,o,n)};function o(i,...e){if(typeof i=="object"){let a=i;i!==null&&(i.method&&i.headers&&i.socket?i=bWe(i):typeof i.setHeader=="function"&&(i=MWe(i)));let A;a===null&&e.length===0?A=[null]:(a=e.shift(),A=e),typeof this[Xb]=="string"&&a!==void 0&&a!==null&&(a=this[Xb]+a),this[Sge](i,yge(a,A,this[wge]),n)}else{let a=i===void 0?e.shift():i;typeof this[Xb]=="string"&&a!==void 0&&a!==null&&(a=this[Xb]+a),this[Sge](null,yge(a,e,this[wge]),n)}}}function DH(n){let t="",o=0,i=!1,e=255,a=n.length;if(a>100)return JSON.stringify(n);for(var A=0;A=32;A++)e=n.charCodeAt(A),(e===34||e===92)&&(t+=n.slice(o,A)+"\\",o=A,i=!0);return i?t+=n.slice(o):t=n,e<32?JSON.stringify(n):'"'+t+'"'}function LWe(n,t,o,i){if(eM.hasSubscribers===!1)return Dge.call(this,n,t,o,i);let e={instance:this,arguments};return eM.traceSync(Dge,e,this,n,t,o,i)}function Dge(n,t,o,i){let e=this[_ge],a=this[bH],A=this[Mge],r=this[TWe],s=this[Oge],g=this[bge],c=this[Nge],I=this[RWe],d=this[kWe],B=this[_We][o]+i;B=B+s;let f;c.log&&(n=c.log(n));let Q=A[Tge],y="";for(let _ in n)if(f=n[_],Object.prototype.hasOwnProperty.call(n,_)&&f!==void 0){g[_]?f=g[_](f):_===d&&g.err&&(f=g.err(f));let T=A[_]||Q;switch(typeof f){case"undefined":case"function":continue;case"number":Number.isFinite(f)===!1&&(f=null);case"boolean":T&&(f=T(f));break;case"string":f=(T||DH)(f);break;default:f=(T||e)(f,a)}if(f===void 0)continue;let R=DH(_);y+=","+R+":"+f}let m="";if(t!==void 0){f=g[I]?g[I](t):t;let _=A[I]||Q;switch(typeof f){case"function":break;case"number":Number.isFinite(f)===!1&&(f=null);case"boolean":_&&(f=_(f)),m=',"'+I+'":'+f;break;case"string":f=(_||DH)(f),m=',"'+I+'":'+f;break;default:f=(_||e)(f,a),m=',"'+I+'":'+f}}return this[NWe]&&y?B+this[vWe]+y.slice(1)+"}"+m+r:B+y+m+r}function UWe(n,t){let o,i=n[Oge],e=n[_ge],a=n[bH],A=n[Mge],r=A[Tge],s=n[bge],g=n[Nge].bindings;t=g(t);for(let c in t)if(o=t[c],((c.length<5||c!=="level"&&c!=="serializers"&&c!=="formatters"&&c!=="customLevels")&&t.hasOwnProperty(c)&&o!==void 0)===!0){if(o=s[c]?s[c](o):o,o=(A[c]||r||e)(o,a),o===void 0)continue;i+=',"'+c+'":'+o}return i}function HWe(n){return n.write!==n.constructor.prototype.write}function $b(n){let t=new OH(n);return t.on("error",o),!n.sync&&PWe&&(mge.register(t,KWe),t.on("close",function(){mge.unregister(t)})),t;function o(i){if(i.code==="EPIPE"){t.write=mE,t.end=mE,t.flushSync=mE,t.destroy=mE;return}t.removeListener("error",o),t.emit("error",i)}}function KWe(n,t){n.destroyed||(t==="beforeExit"?(n.flush(),n.on("drain",function(){n.end()})):n.flushSync())}function xWe(n){return function(o,i,e={},a){if(typeof e=="string")a=$b({dest:e}),e={};else if(typeof a=="string"){if(e&&e.transport)throw Error("only one of option.transport or stream can be specified");a=$b({dest:a})}else if(e instanceof OH||e.writable||e._writableState)a=e,e={};else if(e.transport){if(e.transport instanceof OH||e.transport.writable||e.transport._writableState)throw Error("option.transport do not allow stream, please pass to option directly. e.g. pino(transport)");if(e.transport.targets&&e.transport.targets.length&&e.formatters&&typeof e.formatters.level=="function")throw Error("option.transport.targets do not allow custom level formatters");let s;e.customLevels&&(s=e.useOnlyCustomLevels?e.customLevels:Object.assign({},e.levels,e.customLevels)),a=GWe({caller:i,...e.transport,levels:s})}if(e=Object.assign({},n,e),e.serializers=Object.assign({},n.serializers,e.serializers),e.formatters=Object.assign({},n.formatters,e.formatters),e.prettyPrint)throw new Error("prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)");let{enabled:A,onChild:r}=e;return A===!1&&(e.level="silent"),r||(e.onChild=mE),a||(HWe(process.stdout)?a=process.stdout:a=$b({fd:process.stdout.fd||1})),{opts:e,stream:a}}}function YWe(n,t){try{return JSON.stringify(n)}catch{try{return(t||this[bH])(n)}catch{return'"[unable to serialize, circular reference is too complex to analyze]"'}}}function jWe(n,t,o){return{level:n,bindings:t,log:o}}function JWe(n){let t=Number(n);return typeof n=="string"&&Number.isFinite(t)?t:n===void 0?1:n}Rge.exports={noop:mE,buildSafeSonicBoom:$b,asChindings:UWe,asJson:LWe,genLog:FWe,createArgsNormalizer:xWe,stringify:YWe,buildFormatters:jWe,normalizeDestFileDescriptor:JWe}});var tM=ee((dvA,kge)=>{var qWe={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},zWe={ASC:"ASC",DESC:"DESC"};kge.exports={DEFAULT_LEVELS:qWe,SORTING_ORDER:zWe}});var TH=ee((hvA,Fge)=>{"use strict";var{lsCacheSym:VWe,levelValSym:MH,useOnlyCustomLevelsSym:WWe,streamSym:ZWe,formattersSym:XWe,hooksSym:$We,levelCompSym:vge}=fE(),{noop:e6e,genLog:dp}=AM(),{DEFAULT_LEVELS:Ag,SORTING_ORDER:Pge}=tM(),Gge={fatal:n=>{let t=dp(Ag.fatal,n);return function(...o){let i=this[ZWe];if(t.call(this,...o),typeof i.flushSync=="function")try{i.flushSync()}catch{}}},error:n=>dp(Ag.error,n),warn:n=>dp(Ag.warn,n),info:n=>dp(Ag.info,n),debug:n=>dp(Ag.debug,n),trace:n=>dp(Ag.trace,n)},_H=Object.keys(Ag).reduce((n,t)=>(n[Ag[t]]=t,n),{}),A6e=Object.keys(_H).reduce((n,t)=>(n[t]='{"level":'+Number(t),n),{});function t6e(n){let t=n[XWe].level,{labels:o}=n.levels,i={};for(let e in o){let a=t(o[e],Number(e));i[e]=JSON.stringify(a).slice(0,-1)}return n[VWe]=i,n}function r6e(n,t){if(t)return!1;switch(n){case"fatal":case"error":case"warn":case"info":case"debug":case"trace":return!0;default:return!1}}function a6e(n){let{labels:t,values:o}=this.levels;if(typeof n=="number"){if(t[n]===void 0)throw Error("unknown level value"+n);n=t[n]}if(o[n]===void 0)throw Error("unknown level "+n);let i=this[MH],e=this[MH]=o[n],a=this[WWe],A=this[vge],r=this[$We].logMethod;for(let s in o){if(A(o[s],e)===!1){this[s]=e6e;continue}this[s]=r6e(s,a)?Gge[s](r):dp(o[s],r)}this.emit("level-change",n,e,t[i],i,this)}function i6e(n){let{levels:t,levelVal:o}=this;return t&&t.labels?t.labels[o]:""}function o6e(n){let{values:t}=this.levels,o=t[n];return o!==void 0&&this[vge](o,this[MH])}function n6e(n,t,o){return n===Pge.DESC?t<=o:t>=o}function s6e(n){return typeof n=="string"?n6e.bind(null,n):n}function g6e(n=null,t=!1){let o=n?Object.keys(n).reduce((a,A)=>(a[n[A]]=A,a),{}):null,i=Object.assign(Object.create(Object.prototype,{Infinity:{value:"silent"}}),t?null:_H,o),e=Object.assign(Object.create(Object.prototype,{silent:{value:1/0}}),t?null:Ag,n);return{labels:i,values:e}}function c6e(n,t,o){if(typeof n=="number"){if(![].concat(Object.keys(t||{}).map(a=>t[a]),o?[]:Object.keys(_H).map(a=>+a),1/0).includes(n))throw Error(`default level:${n} must be included in custom levels`);return}let i=Object.assign(Object.create(Object.prototype,{silent:{value:1/0}}),o?null:Ag,t);if(!(n in i))throw Error(`default level:${n} must be included in custom levels`)}function I6e(n,t){let{labels:o,values:i}=n;for(let e in t){if(e in i)throw Error("levels cannot be overridden");if(t[e]in o)throw Error("pre-existing level values cannot be used for new levels")}}function l6e(n){if(typeof n!="function"&&!(typeof n=="string"&&Object.values(Pge).includes(n)))throw new Error('Levels comparison should be one of "ASC", "DESC" or "function" type')}Fge.exports={initialLsCache:A6e,genLsCache:t6e,levelMethods:Gge,getLevel:i6e,setLevel:a6e,isLevelEnabled:o6e,mappings:g6e,assertNoLevelCollisions:I6e,assertDefaultLevelFound:c6e,genLevelComparison:s6e,assertLevelComparison:l6e}});var NH=ee((EvA,Lge)=>{"use strict";Lge.exports={version:"9.14.0"}});var qge=ee((uvA,Jge)=>{"use strict";var{EventEmitter:p6e}=$e("node:events"),{lsCacheSym:d6e,levelValSym:h6e,setLevelSym:aM,getLevelSym:Uge,chindingsSym:iM,parsedChindingsSym:E6e,mixinSym:C6e,asJsonSym:Kge,writeSym:u6e,mixinMergeStrategySym:B6e,timeSym:f6e,timeSliceIndexSym:Q6e,streamSym:xge,serializersSym:hp,formattersSym:Yf,errorKeySym:y6e,messageKeySym:m6e,useOnlyCustomLevelsSym:S6e,needsMetadataGsym:w6e,redactFmtSym:D6e,stringifySym:O6e,formatOptsSym:b6e,stringifiersSym:M6e,msgPrefixSym:kH,hooksSym:_6e}=fE(),{getLevel:T6e,setLevel:N6e,isLevelEnabled:R6e,mappings:k6e,initialLsCache:v6e,genLsCache:P6e,assertNoLevelCollisions:G6e}=TH(),{asChindings:vH,asJson:F6e,buildFormatters:RH,stringify:Hge,noop:Yge}=AM(),{version:L6e}=NH(),U6e=IH(),H6e=class{},jge={constructor:H6e,child:K6e,bindings:x6e,setBindings:Y6e,flush:q6e,isLevelEnabled:R6e,version:L6e,get level(){return this[Uge]()},set level(n){this[aM](n)},get levelVal(){return this[h6e]},set levelVal(n){throw Error("levelVal is read-only")},get msgPrefix(){return this[kH]},get[Symbol.toStringTag](){return"Pino"},[d6e]:v6e,[u6e]:J6e,[Kge]:F6e,[Uge]:T6e,[aM]:N6e};Object.setPrototypeOf(jge,p6e.prototype);Jge.exports=function(){return Object.create(jge)};var rM=n=>n;function K6e(n,t){if(!n)throw Error("missing bindings for child Pino");let o=this[hp],i=this[Yf],e=Object.create(this);if(t==null)return e[Yf].bindings!==rM&&(e[Yf]=RH(i.level,rM,i.log)),e[iM]=vH(e,n),e[aM](this.level),this.onChild!==Yge&&this.onChild(e),e;if(t.hasOwnProperty("serializers")===!0){e[hp]=Object.create(null);for(let c in o)e[hp][c]=o[c];let s=Object.getOwnPropertySymbols(o);for(var a=0;a{"use strict";var{hasOwnProperty:jf}=Object.prototype,Cp=FH();Cp.configure=FH;Cp.stringify=Cp;Cp.default=Cp;LH.stringify=Cp;LH.configure=FH;Wge.exports=Cp;var z6e=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]/;function wI(n){return n.length<5e3&&!z6e.test(n)?`"${n}"`:JSON.stringify(n)}function PH(n,t){if(n.length>200||t)return n.sort(t);for(let o=1;oi;)n[e]=n[e-1],e--;n[e]=i}return n}var V6e=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function GH(n){return V6e.call(n)!==void 0&&n.length!==0}function zge(n,t,o){n.length= 1`)}return o===void 0?1/0:o}function Ep(n){return n===1?"1 item":`${n} items`}function $6e(n){let t=new Set;for(let o of n)(typeof o=="string"||typeof o=="number")&&t.add(String(o));return t}function e5e(n){if(jf.call(n,"strict")){let t=n.strict;if(typeof t!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(t)return o=>{let i=`Object can not safely be stringified. Received type ${typeof o}`;throw typeof o!="function"&&(i+=` (${o.toString()})`),new Error(i)}}}function FH(n){n={...n};let t=e5e(n);t&&(n.bigint===void 0&&(n.bigint=!1),"circularValue"in n||(n.circularValue=Error));let o=W6e(n),i=X6e(n,"bigint"),e=Z6e(n),a=typeof e=="function"?e:void 0,A=Vge(n,"maximumDepth"),r=Vge(n,"maximumBreadth");function s(B,f,Q,y,m,_){let T=f[B];switch(typeof T=="object"&&T!==null&&typeof T.toJSON=="function"&&(T=T.toJSON(B)),T=y.call(f,B,T),typeof T){case"string":return wI(T);case"object":{if(T===null)return"null";if(Q.indexOf(T)!==-1)return o;let R="",K=",",L=_;if(Array.isArray(T)){if(T.length===0)return"[]";if(Ahse(n,new Set),Ese=(n,t,o)=>{if(!Kf(n))return"";let i=o?"":n.message||"";if(t.has(n))return i+": ...";let e=XU(n);if(e){t.add(n);let a=typeof n.cause=="function";return i+(a?"":": ")+Ese(e,t,a)}else return i},uze=n=>Ese(n,new Set);Cse.exports={isErrorLike:Kf,getErrorCause:XU,stackWithCauses:Cze,messageWithCauses:uze}});var eH=ee((qkA,Bse)=>{"use strict";var Bze=Symbol("circular-ref-tag"),Lb=Symbol("pino-raw-err-ref"),use=Object.create({},{type:{enumerable:!0,writable:!0,value:void 0},message:{enumerable:!0,writable:!0,value:void 0},stack:{enumerable:!0,writable:!0,value:void 0},aggregateErrors:{enumerable:!0,writable:!0,value:void 0},raw:{enumerable:!1,get:function(){return this[Lb]},set:function(n){this[Lb]=n}}});Object.defineProperty(use,Lb,{writable:!0,value:{}});Bse.exports={pinoErrProto:use,pinoErrorSymbols:{seen:Bze,rawSymbol:Lb}}});var yse=ee((zkA,Qse)=>{"use strict";Qse.exports=tH;var{messageWithCauses:fze,stackWithCauses:Qze,isErrorLike:fse}=$U(),{pinoErrProto:yze,pinoErrorSymbols:mze}=eH(),{seen:AH}=mze,{toString:Sze}=Object.prototype;function tH(n){if(!fse(n))return n;n[AH]=void 0;let t=Object.create(yze);t.type=Sze.call(n.constructor)==="[object Function]"?n.constructor.name:n.name,t.message=fze(n),t.stack=Qze(n),Array.isArray(n.errors)&&(t.aggregateErrors=n.errors.map(o=>tH(o)));for(let o in n)if(t[o]===void 0){let i=n[o];fse(i)?o!=="cause"&&!Object.prototype.hasOwnProperty.call(i,AH)&&(t[o]=tH(i)):t[o]=i}return delete n[AH],t.raw=n,t}});var Sse=ee((VkA,mse)=>{"use strict";mse.exports=Hb;var{isErrorLike:rH}=$U(),{pinoErrProto:wze,pinoErrorSymbols:Dze}=eH(),{seen:Ub}=Dze,{toString:Oze}=Object.prototype;function Hb(n){if(!rH(n))return n;n[Ub]=void 0;let t=Object.create(wze);t.type=Oze.call(n.constructor)==="[object Function]"?n.constructor.name:n.name,t.message=n.message,t.stack=n.stack,Array.isArray(n.errors)&&(t.aggregateErrors=n.errors.map(o=>Hb(o))),rH(n.cause)&&!Object.prototype.hasOwnProperty.call(n.cause,Ub)&&(t.cause=Hb(n.cause));for(let o in n)if(t[o]===void 0){let i=n[o];rH(i)?Object.prototype.hasOwnProperty.call(i,Ub)||(t[o]=Hb(i)):t[o]=i}return delete n[Ub],t.raw=n,t}});var bse=ee((WkA,Ose)=>{"use strict";Ose.exports={mapHttpRequest:bze,reqSerializer:Dse};var aH=Symbol("pino-raw-req-ref"),wse=Object.create({},{id:{enumerable:!0,writable:!0,value:""},method:{enumerable:!0,writable:!0,value:""},url:{enumerable:!0,writable:!0,value:""},query:{enumerable:!0,writable:!0,value:""},params:{enumerable:!0,writable:!0,value:""},headers:{enumerable:!0,writable:!0,value:{}},remoteAddress:{enumerable:!0,writable:!0,value:""},remotePort:{enumerable:!0,writable:!0,value:""},raw:{enumerable:!1,get:function(){return this[aH]},set:function(n){this[aH]=n}}});Object.defineProperty(wse,aH,{writable:!0,value:{}});function Dse(n){let t=n.info||n.socket,o=Object.create(wse);if(o.id=typeof n.id=="function"?n.id():n.id||(n.info?n.info.id:void 0),o.method=n.method,n.originalUrl)o.url=n.originalUrl;else{let i=n.path;o.url=typeof i=="string"?i:n.url?n.url.path||n.url:void 0}return n.query&&(o.query=n.query),n.params&&(o.params=n.params),o.headers=n.headers,o.remoteAddress=t&&t.remoteAddress,o.remotePort=t&&t.remotePort,o.raw=n.raw||n,o}function bze(n){return{req:Dse(n)}}});var Nse=ee((ZkA,Tse)=>{"use strict";Tse.exports={mapHttpResponse:Mze,resSerializer:_se};var iH=Symbol("pino-raw-res-ref"),Mse=Object.create({},{statusCode:{enumerable:!0,writable:!0,value:0},headers:{enumerable:!0,writable:!0,value:""},raw:{enumerable:!1,get:function(){return this[iH]},set:function(n){this[iH]=n}}});Object.defineProperty(Mse,iH,{writable:!0,value:{}});function _se(n){let t=Object.create(Mse);return t.statusCode=n.headersSent?n.statusCode:null,t.headers=n.getHeaders?n.getHeaders():n._headers,t.raw=n,t}function Mze(n){return{res:_se(n)}}});var nH=ee((XkA,Rse)=>{"use strict";var oH=yse(),_ze=Sse(),Kb=bse(),xb=Nse();Rse.exports={err:oH,errWithCause:_ze,mapHttpRequest:Kb.mapHttpRequest,mapHttpResponse:xb.mapHttpResponse,req:Kb.reqSerializer,res:xb.resSerializer,wrapErrorSerializer:function(t){return t===oH?t:function(i){return t(oH(i))}},wrapRequestSerializer:function(t){return t===Kb.reqSerializer?t:function(i){return t(Kb.reqSerializer(i))}},wrapResponseSerializer:function(t){return t===xb.resSerializer?t:function(i){return t(xb.resSerializer(i))}}}});var sH=ee(($kA,kse)=>{"use strict";function Tze(n,t){return t}kse.exports=function(){let t=Error.prepareStackTrace;Error.prepareStackTrace=Tze;let o=new Error().stack;if(Error.prepareStackTrace=t,!Array.isArray(o))return;let i=o.slice(2),e=[];for(let a of i)a&&e.push(a.getFileName());return e}});var Use=ee((evA,Lse)=>{"use strict";function gH(n){if(n===null||typeof n!="object")return n;if(n instanceof Date)return new Date(n.getTime());if(n instanceof Array){let t=[];for(let o=0;o{let Q=[...s.slice(0,I),...f];return o(B,Q)}:o,e,a);else if(a)Gse(c,r);else{let d=typeof o=="function"?o(Rze(c,r),[...s.slice(0,I),...r]):o;Pse(c,r,d)}}if(A.length===0)g(n,0);else{let c=n;for(let I=0;I0)o?a===i&&(o=!1,i=""):(o=!0,i=a);else if(a==="["&&!o)t++;else if(a==="]"&&!o&&(t--,t<0))throw new Error(`Invalid redaction path (${n})`)}if(t!==0)throw new Error(`Invalid redaction path (${n})`)}function Lze(n){if(!Array.isArray(n))throw new TypeError("paths must be an array");for(let t of n)Fze(t)}function Uze(n={}){let{paths:t=[],censor:o="[REDACTED]",serialize:i=JSON.stringify,strict:e=!0,remove:a=!1}=n;Lze(t);let A=Pze(t);return function(s){if(e&&(s===null||typeof s!="object")&&(s==null||typeof s!="object"))return i?i(s):s;let g=Gze(s,A),c=s,I=o;return typeof o=="function"&&(I=o),kze(g,t,I,a),i===!1?(g.restore=function(){return gH(c)},g):typeof i=="function"?i(g):JSON.stringify(g)}}Lse.exports=Uze});var fE=ee((AvA,Hse)=>{"use strict";var Hze=Symbol("pino.setLevel"),Kze=Symbol("pino.getLevel"),xze=Symbol("pino.levelVal"),Yze=Symbol("pino.levelComp"),jze=Symbol("pino.useLevelLabels"),Jze=Symbol("pino.useOnlyCustomLevels"),qze=Symbol("pino.mixin"),zze=Symbol("pino.lsCache"),Vze=Symbol("pino.chindings"),Wze=Symbol("pino.asJson"),Zze=Symbol("pino.write"),Xze=Symbol("pino.redactFmt"),$ze=Symbol("pino.time"),eVe=Symbol("pino.timeSliceIndex"),AVe=Symbol("pino.stream"),tVe=Symbol("pino.stringify"),rVe=Symbol("pino.stringifySafe"),aVe=Symbol("pino.stringifiers"),iVe=Symbol("pino.end"),oVe=Symbol("pino.formatOpts"),nVe=Symbol("pino.messageKey"),sVe=Symbol("pino.errorKey"),gVe=Symbol("pino.nestedKey"),cVe=Symbol("pino.nestedKeyStr"),IVe=Symbol("pino.mixinMergeStrategy"),lVe=Symbol("pino.msgPrefix"),pVe=Symbol("pino.wildcardFirst"),dVe=Symbol.for("pino.serializers"),hVe=Symbol.for("pino.formatters"),EVe=Symbol.for("pino.hooks"),CVe=Symbol.for("pino.metadata");Hse.exports={setLevelSym:Hze,getLevelSym:Kze,levelValSym:xze,levelCompSym:Yze,useLevelLabelsSym:jze,mixinSym:qze,lsCacheSym:zze,chindingsSym:Vze,asJsonSym:Wze,writeSym:Zze,serializersSym:dVe,redactFmtSym:Xze,timeSym:$ze,timeSliceIndexSym:eVe,streamSym:AVe,stringifySym:tVe,stringifySafeSym:rVe,stringifiersSym:aVe,endSym:iVe,formatOptsSym:oVe,messageKeySym:nVe,errorKeySym:sVe,nestedKeySym:gVe,wildcardFirstSym:pVe,needsMetadataGsym:CVe,useOnlyCustomLevelsSym:Jze,formattersSym:hVe,hooksSym:EVe,nestedKeyStrSym:cVe,mixinMergeStrategySym:IVe,msgPrefixSym:lVe}});var IH=ee((tvA,jse)=>{"use strict";var Kse=Use(),{redactFmtSym:uVe,wildcardFirstSym:jb}=fE(),cH=/[^.[\]]+|\[([^[\]]*?)\]/g,xse="[Redacted]",Yse=!1;function BVe(n,t){let{paths:o,censor:i,remove:e}=fVe(n),a=o.reduce((s,g)=>{cH.lastIndex=0;let c=cH.exec(g),I=cH.exec(g),d=c[1]!==void 0?c[1].replace(/^(?:"|'|`)(.*)(?:"|'|`)$/,"$1"):c[0];if(d==="*"&&(d=jb),I===null)return s[d]=null,s;if(s[d]===null)return s;let{index:B}=I,f=`${g.substr(B,g.length-1)}`;return s[d]=s[d]||[],d!==jb&&s[d].length===0&&s[d].push(...s[jb]||[]),d===jb&&Object.keys(s).forEach(function(Q){s[Q]&&s[Q].push(f)}),s[d].push(f),s},{}),A={[uVe]:Kse({paths:o,censor:i,serialize:t,strict:Yse,remove:e})},r=(...s)=>t(typeof i=="function"?i(...s):i);return[...Object.keys(a),...Object.getOwnPropertySymbols(a)].reduce((s,g)=>{if(a[g]===null)s[g]=c=>r(c,[g]);else{let c=typeof i=="function"?(I,d)=>i(I,[g,...d]):i;s[g]=Kse({paths:a[g],censor:c,serialize:t,strict:Yse,remove:e})}return s},A)}function fVe(n){if(Array.isArray(n))return n={paths:n,censor:xse},n;let{paths:t,censor:o=xse,remove:i}=n;if(Array.isArray(t)===!1)throw Error("pino \u2013 redact must contain an array of strings");return i===!0&&(o=void 0),{paths:t,censor:o,remove:i}}jse.exports=BVe});var zse=ee((rvA,qse)=>{"use strict";var QVe=()=>"",yVe=()=>`,"time":${Date.now()}`,mVe=()=>`,"time":${Math.round(Date.now()/1e3)}`,SVe=()=>`,"time":"${new Date(Date.now()).toISOString()}"`,wVe=1000000n,Jse=1000000000n,DVe=BigInt(Date.now())*wVe,OVe=process.hrtime.bigint(),bVe=()=>{let n=process.hrtime.bigint()-OVe,t=DVe+n,o=t/Jse,i=t%Jse,e=Number(o*1000n+i/1000000n),a=new Date(e),A=a.getUTCFullYear(),r=(a.getUTCMonth()+1).toString().padStart(2,"0"),s=a.getUTCDate().toString().padStart(2,"0"),g=a.getUTCHours().toString().padStart(2,"0"),c=a.getUTCMinutes().toString().padStart(2,"0"),I=a.getUTCSeconds().toString().padStart(2,"0");return`,"time":"${A}-${r}-${s}T${g}:${c}:${I}.${i.toString().padStart(9,"0")}Z"`};qse.exports={nullTime:QVe,epochTime:yVe,unixTime:mVe,isoTime:SVe,isoTimeNano:bVe}});var Wse=ee((avA,Vse)=>{"use strict";function MVe(n){try{return JSON.stringify(n)}catch{return'"[Circular]"'}}Vse.exports=_Ve;function _Ve(n,t,o){var i=o&&o.stringify||MVe,e=1;if(typeof n=="object"&&n!==null){var a=t.length+e;if(a===1)return n;var A=new Array(a);A[0]=i(n);for(var r=1;r-1?I:0,n.charCodeAt(B+1)){case 100:case 102:if(c>=s||t[c]==null)break;I=s||t[c]==null)break;I=s||t[c]===void 0)break;I",I=B+2,B++;break}g+=i(t[c]),I=B+2,B++;break;case 115:if(c>=s)break;I{"use strict";if(typeof SharedArrayBuffer<"u"&&typeof Atomics<"u"){let t=function(o){if((o>0&&o<1/0)===!1)throw typeof o!="number"&&typeof o!="bigint"?TypeError("sleep: ms must be a number"):RangeError("sleep: ms must be a number that is greater than 0 but less than Infinity");Atomics.wait(n,0,0,Number(o))},n=new Int32Array(new SharedArrayBuffer(4));lH.exports=t}else{let n=function(t){if((t>0&&t<1/0)===!1)throw typeof t!="number"&&typeof t!="bigint"?TypeError("sleep: ms must be a number"):RangeError("sleep: ms must be a number that is greater than 0 but less than Infinity");let i=Date.now()+Number(t);for(;i>Date.now(););};lH.exports=n}});var age=ee((ovA,rge)=>{"use strict";var zt=$e("fs"),TVe=$e("events"),NVe=$e("util").inherits,Zse=$e("path"),hH=pH(),RVe=$e("assert"),Jb=100,qb=Buffer.allocUnsafe(0),kVe=16*1024,Xse="buffer",$se="utf8",[vVe,PVe]=(process.versions.node||"0.0").split(".").map(Number),GVe=vVe>=22&&PVe>=7;function ege(n,t){t._opening=!0,t._writing=!0,t._asyncDrainScheduled=!1;function o(a,A){if(a){t._reopening=!1,t._writing=!1,t._opening=!1,t.sync?process.nextTick(()=>{t.listenerCount("error")>0&&t.emit("error",a)}):t.emit("error",a);return}let r=t._reopening;t.fd=A,t.file=n,t._reopening=!1,t._opening=!1,t._writing=!1,t.sync?process.nextTick(()=>t.emit("ready")):t.emit("ready"),!t.destroyed&&(!t._writing&&t._len>t.minLength||t._flushPending?t._actualWrite():r&&process.nextTick(()=>t.emit("drain")))}let i=t.append?"a":"w",e=t.mode;if(t.sync)try{t.mkdir&&zt.mkdirSync(Zse.dirname(n),{recursive:!0});let a=zt.openSync(n,i,e);o(null,a)}catch(a){throw o(a),a}else t.mkdir?zt.mkdir(Zse.dirname(n),{recursive:!0},a=>{if(a)return o(a);zt.open(n,i,e,o)}):zt.open(n,i,e,o)}function Jn(n){if(!(this instanceof Jn))return new Jn(n);let{fd:t,dest:o,minLength:i,maxLength:e,maxWrite:a,periodicFlush:A,sync:r,append:s=!0,mkdir:g,retryEAGAIN:c,fsync:I,contentMode:d,mode:B}=n||{};t=t||o,this._len=0,this.fd=-1,this._bufs=[],this._lens=[],this._writing=!1,this._ending=!1,this._reopening=!1,this._asyncDrainScheduled=!1,this._flushPending=!1,this._hwm=Math.max(i||0,16387),this.file=null,this.destroyed=!1,this.minLength=i||0,this.maxLength=e||0,this.maxWrite=a||kVe,this._periodicFlush=A||0,this._periodicFlushTimer=void 0,this.sync=r||!1,this.writable=!0,this._fsync=I||!1,this.append=s||!1,this.mode=B,this.retryEAGAIN=c||(()=>!0),this.mkdir=g||!1;let f,Q;if(d===Xse)this._writingBuf=qb,this.write=UVe,this.flush=KVe,this.flushSync=YVe,this._actualWrite=JVe,f=()=>zt.writeSync(this.fd,this._writingBuf),Q=()=>zt.write(this.fd,this._writingBuf,this.release);else if(d===void 0||d===$se)this._writingBuf="",this.write=LVe,this.flush=HVe,this.flushSync=xVe,this._actualWrite=jVe,f=()=>Buffer.isBuffer(this._writingBuf)?zt.writeSync(this.fd,this._writingBuf):zt.writeSync(this.fd,this._writingBuf,"utf8"),Q=()=>Buffer.isBuffer(this._writingBuf)?zt.write(this.fd,this._writingBuf,this.release):zt.write(this.fd,this._writingBuf,"utf8",this.release);else throw new Error(`SonicBoom supports "${$se}" and "${Xse}", but passed ${d}`);if(typeof t=="number")this.fd=t,process.nextTick(()=>this.emit("ready"));else if(typeof t=="string")ege(t,this);else throw new Error("SonicBoom supports only file descriptors and files");if(this.minLength>=this.maxWrite)throw new Error(`minLength should be smaller than maxWrite (${this.maxWrite})`);this.release=(y,m)=>{if(y){if((y.code==="EAGAIN"||y.code==="EBUSY")&&this.retryEAGAIN(y,this._writingBuf.length,this._len-this._writingBuf.length))if(this.sync)try{hH(Jb),this.release(void 0,0)}catch(R){this.release(R)}else setTimeout(Q,Jb);else this._writing=!1,this.emit("error",y);return}this.emit("write",m);let _=dH(this._writingBuf,this._len,m);if(this._len=_.len,this._writingBuf=_.writingBuf,this._writingBuf.length){if(!this.sync){Q();return}try{do{let R=f(),K=dH(this._writingBuf,this._len,R);this._len=K.len,this._writingBuf=K.writingBuf}while(this._writingBuf.length)}catch(R){this.release(R);return}}this._fsync&&zt.fsyncSync(this.fd);let T=this._len;this._reopening?(this._writing=!1,this._reopening=!1,this.reopen()):T>this.minLength?this._actualWrite():this._ending?T>0?this._actualWrite():(this._writing=!1,zb(this)):(this._writing=!1,this.sync?this._asyncDrainScheduled||(this._asyncDrainScheduled=!0,process.nextTick(FVe,this)):this.emit("drain"))},this.on("newListener",function(y){y==="drain"&&(this._asyncDrainScheduled=!1)}),this._periodicFlush!==0&&(this._periodicFlushTimer=setInterval(()=>this.flush(null),this._periodicFlush),this._periodicFlushTimer.unref())}function dH(n,t,o){return typeof n=="string"&&(n=Buffer.from(n)),t=Math.max(t-o,0),n=n.subarray(o),{writingBuf:n,len:t}}function FVe(n){n.listenerCount("drain")>0&&(n._asyncDrainScheduled=!1,n.emit("drain"))}NVe(Jn,TVe);function Age(n,t){return n.length===0?qb:n.length===1?n[0]:Buffer.concat(n,t)}function LVe(n){if(this.destroyed)throw new Error("SonicBoom destroyed");n=""+n;let t=Buffer.byteLength(n),o=this._len+t,i=this._bufs;return this.maxLength&&o>this.maxLength?(this.emit("drop",n),this._lenthis.maxWrite?i.push(n):i[i.length-1]+=n,this._len=o,!this._writing&&this._len>=this.minLength&&this._actualWrite(),this._lenthis.maxLength?(this.emit("drop",n),this._lenthis.maxWrite?(o.push([n]),i.push(n.length)):(o[o.length-1].push(n),i[i.length-1]+=n.length),this._len=t,!this._writing&&this._len>=this.minLength&&this._actualWrite(),this._len{if(this._fsync)this._flushPending=!1,n();else try{zt.fsync(this.fd,i=>{this._flushPending=!1,n(i)})}catch(i){n(i)}this.off("error",o)},o=i=>{this._flushPending=!1,n(i),this.off("drain",t)};this.once("drain",t),this.once("error",o)}function HVe(n){if(n!=null&&typeof n!="function")throw new Error("flush cb must be a function");if(this.destroyed){let t=new Error("SonicBoom destroyed");if(n){n(t);return}throw t}if(this.minLength<=0){n?.();return}n&&tge.call(this,n),!this._writing&&(this._bufs.length===0&&this._bufs.push(""),this._actualWrite())}function KVe(n){if(n!=null&&typeof n!="function")throw new Error("flush cb must be a function");if(this.destroyed){let t=new Error("SonicBoom destroyed");if(n){n(t);return}throw t}if(this.minLength<=0){n?.();return}n&&tge.call(this,n),!this._writing&&(this._bufs.length===0&&(this._bufs.push([]),this._lens.push(0)),this._actualWrite())}Jn.prototype.reopen=function(n){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this._opening){this.once("ready",()=>{this.reopen(n)});return}if(this._ending)return;if(!this.file)throw new Error("Unable to reopen a file descriptor, you must pass a file to SonicBoom");if(n&&(this.file=n),this._reopening=!0,this._writing)return;let t=this.fd;this.once("ready",()=>{t!==this.fd&&zt.close(t,o=>{if(o)return this.emit("error",o)})}),ege(this.file,this)};Jn.prototype.end=function(){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this._opening){this.once("ready",()=>{this.end()});return}this._ending||(this._ending=!0,!this._writing&&(this._len>0&&this.fd>=0?this._actualWrite():zb(this)))};function xVe(){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this.fd<0)throw new Error("sonic boom is not ready yet");!this._writing&&this._writingBuf.length>0&&(this._bufs.unshift(this._writingBuf),this._writingBuf="");let n="";for(;this._bufs.length||n.length;){n.length<=0&&(n=this._bufs[0]);try{let t=Buffer.isBuffer(n)?zt.writeSync(this.fd,n):zt.writeSync(this.fd,n,"utf8"),o=dH(n,this._len,t);n=o.writingBuf,this._len=o.len,n.length<=0&&this._bufs.shift()}catch(t){if((t.code==="EAGAIN"||t.code==="EBUSY")&&!this.retryEAGAIN(t,n.length,this._len-n.length))throw t;hH(Jb)}}try{zt.fsyncSync(this.fd)}catch{}}function YVe(){if(this.destroyed)throw new Error("SonicBoom destroyed");if(this.fd<0)throw new Error("sonic boom is not ready yet");!this._writing&&this._writingBuf.length>0&&(this._bufs.unshift([this._writingBuf]),this._writingBuf=qb);let n=qb;for(;this._bufs.length||n.length;){n.length<=0&&(n=Age(this._bufs[0],this._lens[0]));try{let t=zt.writeSync(this.fd,n);n=n.subarray(t),this._len=Math.max(this._len-t,0),n.length<=0&&(this._bufs.shift(),this._lens.shift())}catch(t){if((t.code==="EAGAIN"||t.code==="EBUSY")&&!this.retryEAGAIN(t,n.length,this._len-n.length))throw t;hH(Jb)}}}Jn.prototype.destroy=function(){this.destroyed||zb(this)};function jVe(){let n=this.release;if(this._writing=!0,this._writingBuf=this._writingBuf.length?this._writingBuf:this._bufs.shift()||"",this.sync)try{let t=Buffer.isBuffer(this._writingBuf)?zt.writeSync(this.fd,this._writingBuf):zt.writeSync(this.fd,this._writingBuf,"utf8");n(null,t)}catch(t){n(t)}else zt.write(this.fd,this._writingBuf,n)}function JVe(){let n=this.release;if(this._writing=!0,this._writingBuf=this._writingBuf.length?this._writingBuf:Age(this._bufs.shift(),this._lens.shift()),this.sync)try{let t=zt.writeSync(this.fd,this._writingBuf);n(null,t)}catch(t){n(t)}else GVe&&(this._writingBuf=Buffer.from(this._writingBuf)),zt.write(this.fd,this._writingBuf,n)}function zb(n){if(n.fd===-1){n.once("ready",zb.bind(null,n));return}n._periodicFlushTimer!==void 0&&clearInterval(n._periodicFlushTimer),n.destroyed=!0,n._bufs=[],n._lens=[],RVe(typeof n.fd=="number",`sonic.fd must be a number, got ${typeof n.fd}`);try{zt.fsync(n.fd,t)}catch{}function t(){n.fd!==1&&n.fd!==2?zt.close(n.fd,o):o()}function o(i){if(i){n.emit("error",i);return}n._ending&&!n._writing&&n.emit("finish"),n.emit("close")}}Jn.SonicBoom=Jn;Jn.default=Jn;rge.exports=Jn});var EH=ee((nvA,gge)=>{"use strict";var qn={exit:[],beforeExit:[]},ige={exit:VVe,beforeExit:WVe},QE;function qVe(){QE===void 0&&(QE=new FinalizationRegistry(ZVe))}function zVe(n){qn[n].length>0||process.on(n,ige[n])}function oge(n){qn[n].length>0||(process.removeListener(n,ige[n]),qn.exit.length===0&&qn.beforeExit.length===0&&(QE=void 0))}function VVe(){nge("exit")}function WVe(){nge("beforeExit")}function nge(n){for(let t of qn[n]){let o=t.deref(),i=t.fn;o!==void 0&&i(o,n)}qn[n]=[]}function ZVe(n){for(let t of["exit","beforeExit"]){let o=qn[t].indexOf(n);qn[t].splice(o,o+1),oge(t)}}function sge(n,t,o){if(t===void 0)throw new Error("the object can't be undefined");zVe(n);let i=new WeakRef(t);i.fn=o,qVe(),QE.register(t,i),qn[n].push(i)}function XVe(n,t){sge("exit",n,t)}function $Ve(n,t){sge("beforeExit",n,t)}function eWe(n){if(QE!==void 0){QE.unregister(n);for(let t of["exit","beforeExit"])qn[t]=qn[t].filter(o=>{let i=o.deref();return i&&i!==n}),oge(t)}}gge.exports={register:XVe,registerBeforeExit:$Ve,unregister:eWe}});var cge=ee((svA,AWe)=>{AWe.exports={name:"thread-stream",version:"3.2.0",description:"A streaming way to send data to a Node.js Worker Thread",main:"index.js",types:"index.d.ts",dependencies:{"real-require":"^0.2.0"},devDependencies:{"@types/node":"^20.1.0","@types/tap":"^15.0.0","@yao-pkg/pkg":"^5.11.5",desm:"^1.3.0",fastbench:"^1.0.1",husky:"^9.0.6","pino-elasticsearch":"^8.0.0","sonic-boom":"^4.0.1",standard:"^17.0.0",tap:"^16.2.0","ts-node":"^10.8.0",typescript:"^5.3.2","why-is-node-running":"^2.2.2"},scripts:{build:"tsc --noEmit",test:'standard && npm run build && npm run transpile && tap "test/**/*.test.*js" && tap --ts test/*.test.*ts',"test:ci":"standard && npm run transpile && npm run test:ci:js && npm run test:ci:ts","test:ci:js":'tap --no-check-coverage --timeout=120 --coverage-report=lcovonly "test/**/*.test.*js"',"test:ci:ts":'tap --ts --no-check-coverage --coverage-report=lcovonly "test/**/*.test.*ts"',"test:yarn":'npm run transpile && tap "test/**/*.test.js" --no-check-coverage',transpile:"sh ./test/ts/transpile.sh",prepare:"husky install"},standard:{ignore:["test/ts/**/*","test/syntax-error.mjs"]},repository:{type:"git",url:"git+https://github.com/mcollina/thread-stream.git"},keywords:["worker","thread","threads","stream"],author:"Matteo Collina ",license:"MIT",bugs:{url:"https://github.com/mcollina/thread-stream/issues"},homepage:"https://github.com/mcollina/thread-stream#readme"}});var lge=ee((gvA,Ige)=>{"use strict";function tWe(n,t,o,i,e){let a=Date.now()+i,A=Atomics.load(n,t);if(A===o){e(null,"ok");return}let r=A,s=g=>{Date.now()>a?e(null,"timed-out"):setTimeout(()=>{r=A,A=Atomics.load(n,t),A===r?s(g>=1e3?1e3:g*2):A===o?e(null,"ok"):e(null,"not-equal")},g)};s(1)}function rWe(n,t,o,i,e){let a=Date.now()+i,A=Atomics.load(n,t);if(A!==o){e(null,"ok");return}let r=s=>{Date.now()>a?e(null,"timed-out"):setTimeout(()=>{A=Atomics.load(n,t),A!==o?e(null,"ok"):r(s>=1e3?1e3:s*2)},s)};r(1)}Ige.exports={wait:tWe,waitDiff:rWe}});var dge=ee((cvA,pge)=>{"use strict";pge.exports={WRITE_INDEX:4,READ_INDEX:8,SEQ_INDEX:2}});var Bge=ee((IvA,uge)=>{"use strict";var{version:aWe}=cge(),{EventEmitter:iWe}=$e("events"),{Worker:oWe}=$e("worker_threads"),{join:nWe}=$e("path"),{pathToFileURL:sWe}=$e("url"),{wait:gWe}=lge(),{WRITE_INDEX:gn,READ_INDEX:Zi,SEQ_INDEX:CH}=dge(),cWe=$e("buffer"),IWe=$e("assert"),Te=Symbol("kImpl"),lWe=cWe.constants.MAX_STRING_LENGTH;function yE(n,t){Atomics.add(n[Te].state,CH,1),t(),Atomics.add(n[Te].state,CH,1),Atomics.notify(n[Te].state,CH)}var xf=class{constructor(t){this._value=t}deref(){return this._value}},Wb=class{register(){}unregister(){}},pWe=process.env.NODE_V8_COVERAGE?Wb:global.FinalizationRegistry||Wb,dWe=process.env.NODE_V8_COVERAGE?xf:global.WeakRef||xf,hge=new pWe(n=>{n.exited||n.terminate()});function hWe(n,t){let{filename:o,workerData:i}=t,a=("__bundlerPathsOverrides"in globalThis?globalThis.__bundlerPathsOverrides:{})["thread-stream-worker"]||nWe(__dirname,"lib","worker.js"),A=new oWe(a,{...t.workerOpts,trackUnmanagedFds:!1,workerData:{filename:o.indexOf("file://")===0?o:sWe(o).href,dataBuf:n[Te].dataBuf,stateBuf:n[Te].stateBuf,workerData:{$context:{threadStreamVersion:aWe},...i}}});return A.stream=new xf(n),A.on("message",EWe),A.on("exit",Cge),hge.register(n,A),A}function Ege(n){IWe(!n[Te].sync),n[Te].needDrain&&(n[Te].needDrain=!1,n.emit("drain"))}function Vb(n){let t=Atomics.load(n[Te].state,gn),o=n[Te].data.length-t;if(o>0){if(n[Te].buf.length===0){n[Te].flushing=!1,n[Te].ending?yH(n):n[Te].needDrain&&process.nextTick(Ege,n);return}let i=n[Te].buf.slice(0,o),e=Buffer.byteLength(i);e<=o?(n[Te].buf=n[Te].buf.slice(o),Zb(n,i,Vb.bind(null,n))):n.flush(()=>{if(!n.destroyed){for(yE(n,()=>{Atomics.store(n[Te].state,Zi,0),Atomics.store(n[Te].state,gn,0)}),Atomics.notify(n[Te].state,Zi);e>n[Te].data.length;)o=o/2,i=n[Te].buf.slice(0,o),e=Buffer.byteLength(i);n[Te].buf=n[Te].buf.slice(o),Zb(n,i,Vb.bind(null,n))}})}else if(o===0){if(t===0&&n[Te].buf.length===0)return;n.flush(()=>{yE(n,()=>{Atomics.store(n[Te].state,Zi,0),Atomics.store(n[Te].state,gn,0)}),Atomics.notify(n[Te].state,Zi),Vb(n)})}else eg(n,new Error("overwritten"))}function EWe(n){let t=this.stream.deref();if(t===void 0){this.exited=!0,this.terminate();return}if(n?.code!=null)switch(n.code){case"READY":this.stream=new dWe(t),t.flush(()=>{t[Te].ready=!0,t.emit("ready")});break;case"ERROR":eg(t,n.err);break;case"EVENT":Array.isArray(n.args)?t.emit(n.name,...n.args):t.emit(n.name,n.args);break;case"WARNING":process.emitWarning(n.err);break;default:eg(t,new Error("this should not happen: "+n.code))}}function Cge(n){let t=this.stream.deref();t!==void 0&&(hge.unregister(t),t.worker.exited=!0,t.worker.off("exit",Cge),eg(t,n!==0?new Error("the worker thread exited"):null))}var BH=class extends iWe{constructor(t={}){if(super(),t.bufferSize<4)throw new Error("bufferSize must at least fit a 4-byte utf-8 char");this[Te]={},this[Te].stateBuf=new SharedArrayBuffer(128),this[Te].state=new Int32Array(this[Te].stateBuf),this[Te].dataBuf=new SharedArrayBuffer(t.bufferSize||4*1024*1024),this[Te].data=Buffer.from(this[Te].dataBuf),this[Te].sync=t.sync||!1,this[Te].ending=!1,this[Te].ended=!1,this[Te].needDrain=!1,this[Te].destroyed=!1,this[Te].flushing=!1,this[Te].ready=!1,this[Te].finished=!1,this[Te].errored=null,this[Te].closed=!1,this[Te].buf="",this.worker=hWe(this,t),this.on("message",(o,i)=>{this.worker.postMessage(o,i)})}write(t){if(this[Te].destroyed)return fH(this,new Error("the worker has exited")),!1;if(this[Te].ending)return fH(this,new Error("the worker is ending")),!1;if(this[Te].flushing&&this[Te].buf.length+t.length>=lWe)try{uH(this),this[Te].flushing=!0}catch(o){return eg(this,o),!1}if(this[Te].buf+=t,this[Te].sync)try{return uH(this),!0}catch(o){return eg(this,o),!1}return this[Te].flushing||(this[Te].flushing=!0,setImmediate(Vb,this)),this[Te].needDrain=this[Te].data.length-this[Te].buf.length-Atomics.load(this[Te].state,gn)<=0,!this[Te].needDrain}end(){this[Te].destroyed||(this[Te].ending=!0,yH(this))}flush(t){if(this[Te].destroyed){typeof t=="function"&&process.nextTick(t,new Error("the worker has exited"));return}let o=Atomics.load(this[Te].state,gn);gWe(this[Te].state,Zi,o,1/0,(i,e)=>{if(i){eg(this,i),process.nextTick(t,i);return}if(e==="not-equal"){this.flush(t);return}process.nextTick(t)})}flushSync(){this[Te].destroyed||(uH(this),QH(this))}unref(){this.worker.unref()}ref(){this.worker.ref()}get ready(){return this[Te].ready}get destroyed(){return this[Te].destroyed}get closed(){return this[Te].closed}get writable(){return!this[Te].destroyed&&!this[Te].ending}get writableEnded(){return this[Te].ending}get writableFinished(){return this[Te].finished}get writableNeedDrain(){return this[Te].needDrain}get writableObjectMode(){return!1}get writableErrored(){return this[Te].errored}};function fH(n,t){setImmediate(()=>{n.emit("error",t)})}function eg(n,t){n[Te].destroyed||(n[Te].destroyed=!0,t&&(n[Te].errored=t,fH(n,t)),n.worker.exited?setImmediate(()=>{n[Te].closed=!0,n.emit("close")}):n.worker.terminate().catch(()=>{}).then(()=>{n[Te].closed=!0,n.emit("close")}))}function Zb(n,t,o){let i=Atomics.load(n[Te].state,gn),e=Buffer.byteLength(t);return n[Te].data.write(t,i),yE(n,()=>{Atomics.store(n[Te].state,gn,i+e)}),o(),!0}function yH(n){if(!(n[Te].ended||!n[Te].ending||n[Te].flushing)){n[Te].ended=!0;try{n.flushSync();let t=Atomics.load(n[Te].state,Zi);yE(n,()=>{Atomics.store(n[Te].state,gn,-1)});let o=0;for(;t!==-1;){if(Atomics.wait(n[Te].state,Zi,t,1e3),t=Atomics.load(n[Te].state,Zi),t===-2){eg(n,new Error("end() failed"));return}if(++o===10){eg(n,new Error("end() took too long (10s)"));return}}process.nextTick(()=>{n[Te].finished=!0,n.emit("finish")})}catch(t){eg(n,t)}}}function uH(n){let t=()=>{n[Te].ending?yH(n):n[Te].needDrain&&process.nextTick(Ege,n)};for(n[Te].flushing=!1;n[Te].buf.length!==0;){let o=Atomics.load(n[Te].state,gn),i=n[Te].data.length-o;if(i===0){QH(n),yE(n,()=>{Atomics.store(n[Te].state,Zi,0),Atomics.store(n[Te].state,gn,0)}),Atomics.notify(n[Te].state,Zi);continue}else if(i<0)throw new Error("overwritten");let e=n[Te].buf.slice(0,i),a=Buffer.byteLength(e);if(a<=i)n[Te].buf=n[Te].buf.slice(i),Zb(n,e,t);else{for(QH(n),yE(n,()=>{Atomics.store(n[Te].state,Zi,0),Atomics.store(n[Te].state,gn,0)}),Atomics.notify(n[Te].state,Zi);a>n[Te].buf.length;)i=i/2,e=n[Te].buf.slice(0,i),a=Buffer.byteLength(e);n[Te].buf=n[Te].buf.slice(i),Zb(n,e,t)}}}function QH(n){if(n[Te].flushing)throw new Error("unable to flush while flushing");let t=Atomics.load(n[Te].state,gn),o=0;for(;;){let i=Atomics.load(n[Te].state,Zi);if(i===-2)throw Error("_flushSync failed");if(i!==t)Atomics.wait(n[Te].state,Zi,i,1e3);else break;if(++o===10)throw new Error("_flushSync took too long (10s)")}}uge.exports=BH});var wH=ee((lvA,fge)=>{"use strict";var{createRequire:CWe}=$e("module"),uWe=sH(),{join:mH,isAbsolute:BWe,sep:fWe}=$e("node:path"),QWe=pH(),SH=EH(),yWe=Bge();function mWe(n){SH.register(n,wWe),SH.registerBeforeExit(n,DWe),n.on("close",function(){SH.unregister(n)})}function SWe(n,t,o,i){let e=new yWe({filename:n,workerData:t,workerOpts:o,sync:i});e.on("ready",a),e.on("close",function(){process.removeListener("exit",A)}),process.on("exit",A);function a(){process.removeListener("exit",A),e.unref(),o.autoEnd!==!1&&mWe(e)}function A(){e.closed||(e.flushSync(),QWe(100),e.end())}return e}function wWe(n){n.ref(),n.flushSync(),n.end(),n.once("close",function(){n.unref()})}function DWe(n){n.flushSync()}function OWe(n){let{pipeline:t,targets:o,levels:i,dedupe:e,worker:a={},caller:A=uWe(),sync:r=!1}=n,s={...n.options},g=typeof A=="string"?[A]:A,c="__bundlerPathsOverrides"in globalThis?globalThis.__bundlerPathsOverrides:{},I=n.target;if(I&&o)throw new Error("only one of target or targets can be specified");return o?(I=c["pino-worker"]||mH(__dirname,"worker.js"),s.targets=o.filter(B=>B.target).map(B=>({...B,target:d(B.target)})),s.pipelines=o.filter(B=>B.pipeline).map(B=>B.pipeline.map(f=>({...f,level:B.level,target:d(f.target)})))):t&&(I=c["pino-worker"]||mH(__dirname,"worker.js"),s.pipelines=[t.map(B=>({...B,target:d(B.target)}))]),i&&(s.levels=i),e&&(s.dedupe=e),s.pinoWillSendConfig=!0,SWe(d(I),s,a,r);function d(B){if(B=c[B]||B,BWe(B)||B.indexOf("file://")===0)return B;if(B==="pino/file")return mH(__dirname,"..","file.js");let f;for(let Q of g)try{let y=Q==="node:repl"?process.cwd()+fWe:Q;f=CWe(y).resolve(B);break}catch{continue}if(!f)throw new Error(`unable to determine transport target for "${B}"`);return f}}fge.exports=OWe});var AM=ee((pvA,Rge)=>{"use strict";var Qge=$e("node:diagnostics_channel"),yge=Wse(),{mapHttpRequest:bWe,mapHttpResponse:MWe}=nH(),OH=age(),mge=EH(),{lsCacheSym:_We,chindingsSym:Oge,writeSym:Sge,serializersSym:bge,formatOptsSym:wge,endSym:TWe,stringifiersSym:Mge,stringifySym:_ge,stringifySafeSym:bH,wildcardFirstSym:Tge,nestedKeySym:NWe,formattersSym:Nge,messageKeySym:RWe,errorKeySym:kWe,nestedKeyStrSym:vWe,msgPrefixSym:Xb}=fE(),{isMainThread:PWe}=$e("worker_threads"),GWe=wH(),eM;typeof Qge.tracingChannel=="function"?eM=Qge.tracingChannel("pino_asJson"):eM={hasSubscribers:!1,traceSync(n,t,o,...i){return n.call(o,...i)}};function mE(){}function FWe(n,t){if(!t)return o;return function(...e){t.call(this,e,o,n)};function o(i,...e){if(typeof i=="object"){let a=i;i!==null&&(i.method&&i.headers&&i.socket?i=bWe(i):typeof i.setHeader=="function"&&(i=MWe(i)));let A;a===null&&e.length===0?A=[null]:(a=e.shift(),A=e),typeof this[Xb]=="string"&&a!==void 0&&a!==null&&(a=this[Xb]+a),this[Sge](i,yge(a,A,this[wge]),n)}else{let a=i===void 0?e.shift():i;typeof this[Xb]=="string"&&a!==void 0&&a!==null&&(a=this[Xb]+a),this[Sge](null,yge(a,e,this[wge]),n)}}}function DH(n){let t="",o=0,i=!1,e=255,a=n.length;if(a>100)return JSON.stringify(n);for(var A=0;A=32;A++)e=n.charCodeAt(A),(e===34||e===92)&&(t+=n.slice(o,A)+"\\",o=A,i=!0);return i?t+=n.slice(o):t=n,e<32?JSON.stringify(n):'"'+t+'"'}function LWe(n,t,o,i){if(eM.hasSubscribers===!1)return Dge.call(this,n,t,o,i);let e={instance:this,arguments};return eM.traceSync(Dge,e,this,n,t,o,i)}function Dge(n,t,o,i){let e=this[_ge],a=this[bH],A=this[Mge],r=this[TWe],s=this[Oge],g=this[bge],c=this[Nge],I=this[RWe],d=this[kWe],B=this[_We][o]+i;B=B+s;let f;c.log&&(n=c.log(n));let Q=A[Tge],y="";for(let _ in n)if(f=n[_],Object.prototype.hasOwnProperty.call(n,_)&&f!==void 0){g[_]?f=g[_](f):_===d&&g.err&&(f=g.err(f));let T=A[_]||Q;switch(typeof f){case"undefined":case"function":continue;case"number":Number.isFinite(f)===!1&&(f=null);case"boolean":T&&(f=T(f));break;case"string":f=(T||DH)(f);break;default:f=(T||e)(f,a)}if(f===void 0)continue;let R=DH(_);y+=","+R+":"+f}let m="";if(t!==void 0){f=g[I]?g[I](t):t;let _=A[I]||Q;switch(typeof f){case"function":break;case"number":Number.isFinite(f)===!1&&(f=null);case"boolean":_&&(f=_(f)),m=',"'+I+'":'+f;break;case"string":f=(_||DH)(f),m=',"'+I+'":'+f;break;default:f=(_||e)(f,a),m=',"'+I+'":'+f}}return this[NWe]&&y?B+this[vWe]+y.slice(1)+"}"+m+r:B+y+m+r}function UWe(n,t){let o,i=n[Oge],e=n[_ge],a=n[bH],A=n[Mge],r=A[Tge],s=n[bge],g=n[Nge].bindings;t=g(t);for(let c in t)if(o=t[c],((c.length<5||c!=="level"&&c!=="serializers"&&c!=="formatters"&&c!=="customLevels")&&t.hasOwnProperty(c)&&o!==void 0)===!0){if(o=s[c]?s[c](o):o,o=(A[c]||r||e)(o,a),o===void 0)continue;i+=',"'+c+'":'+o}return i}function HWe(n){return n.write!==n.constructor.prototype.write}function $b(n){let t=new OH(n);return t.on("error",o),!n.sync&&PWe&&(mge.register(t,KWe),t.on("close",function(){mge.unregister(t)})),t;function o(i){if(i.code==="EPIPE"){t.write=mE,t.end=mE,t.flushSync=mE,t.destroy=mE;return}t.removeListener("error",o),t.emit("error",i)}}function KWe(n,t){n.destroyed||(t==="beforeExit"?(n.flush(),n.on("drain",function(){n.end()})):n.flushSync())}function xWe(n){return function(o,i,e={},a){if(typeof e=="string")a=$b({dest:e}),e={};else if(typeof a=="string"){if(e&&e.transport)throw Error("only one of option.transport or stream can be specified");a=$b({dest:a})}else if(e instanceof OH||e.writable||e._writableState)a=e,e={};else if(e.transport){if(e.transport instanceof OH||e.transport.writable||e.transport._writableState)throw Error("option.transport do not allow stream, please pass to option directly. e.g. pino(transport)");if(e.transport.targets&&e.transport.targets.length&&e.formatters&&typeof e.formatters.level=="function")throw Error("option.transport.targets do not allow custom level formatters");let s;e.customLevels&&(s=e.useOnlyCustomLevels?e.customLevels:Object.assign({},e.levels,e.customLevels)),a=GWe({caller:i,...e.transport,levels:s})}if(e=Object.assign({},n,e),e.serializers=Object.assign({},n.serializers,e.serializers),e.formatters=Object.assign({},n.formatters,e.formatters),e.prettyPrint)throw new Error("prettyPrint option is no longer supported, see the pino-pretty package (https://github.com/pinojs/pino-pretty)");let{enabled:A,onChild:r}=e;return A===!1&&(e.level="silent"),r||(e.onChild=mE),a||(HWe(process.stdout)?a=process.stdout:a=$b({fd:process.stdout.fd||1})),{opts:e,stream:a}}}function YWe(n,t){try{return JSON.stringify(n)}catch{try{return(t||this[bH])(n)}catch{return'"[unable to serialize, circular reference is too complex to analyze]"'}}}function jWe(n,t,o){return{level:n,bindings:t,log:o}}function JWe(n){let t=Number(n);return typeof n=="string"&&Number.isFinite(t)?t:n===void 0?1:n}Rge.exports={noop:mE,buildSafeSonicBoom:$b,asChindings:UWe,asJson:LWe,genLog:FWe,createArgsNormalizer:xWe,stringify:YWe,buildFormatters:jWe,normalizeDestFileDescriptor:JWe}});var tM=ee((dvA,kge)=>{var qWe={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},zWe={ASC:"ASC",DESC:"DESC"};kge.exports={DEFAULT_LEVELS:qWe,SORTING_ORDER:zWe}});var TH=ee((hvA,Fge)=>{"use strict";var{lsCacheSym:VWe,levelValSym:MH,useOnlyCustomLevelsSym:WWe,streamSym:ZWe,formattersSym:XWe,hooksSym:$We,levelCompSym:vge}=fE(),{noop:e6e,genLog:dp}=AM(),{DEFAULT_LEVELS:Ag,SORTING_ORDER:Pge}=tM(),Gge={fatal:n=>{let t=dp(Ag.fatal,n);return function(...o){let i=this[ZWe];if(t.call(this,...o),typeof i.flushSync=="function")try{i.flushSync()}catch{}}},error:n=>dp(Ag.error,n),warn:n=>dp(Ag.warn,n),info:n=>dp(Ag.info,n),debug:n=>dp(Ag.debug,n),trace:n=>dp(Ag.trace,n)},_H=Object.keys(Ag).reduce((n,t)=>(n[Ag[t]]=t,n),{}),A6e=Object.keys(_H).reduce((n,t)=>(n[t]='{"level":'+Number(t),n),{});function t6e(n){let t=n[XWe].level,{labels:o}=n.levels,i={};for(let e in o){let a=t(o[e],Number(e));i[e]=JSON.stringify(a).slice(0,-1)}return n[VWe]=i,n}function r6e(n,t){if(t)return!1;switch(n){case"fatal":case"error":case"warn":case"info":case"debug":case"trace":return!0;default:return!1}}function a6e(n){let{labels:t,values:o}=this.levels;if(typeof n=="number"){if(t[n]===void 0)throw Error("unknown level value"+n);n=t[n]}if(o[n]===void 0)throw Error("unknown level "+n);let i=this[MH],e=this[MH]=o[n],a=this[WWe],A=this[vge],r=this[$We].logMethod;for(let s in o){if(A(o[s],e)===!1){this[s]=e6e;continue}this[s]=r6e(s,a)?Gge[s](r):dp(o[s],r)}this.emit("level-change",n,e,t[i],i,this)}function i6e(n){let{levels:t,levelVal:o}=this;return t&&t.labels?t.labels[o]:""}function o6e(n){let{values:t}=this.levels,o=t[n];return o!==void 0&&this[vge](o,this[MH])}function n6e(n,t,o){return n===Pge.DESC?t<=o:t>=o}function s6e(n){return typeof n=="string"?n6e.bind(null,n):n}function g6e(n=null,t=!1){let o=n?Object.keys(n).reduce((a,A)=>(a[n[A]]=A,a),{}):null,i=Object.assign(Object.create(Object.prototype,{Infinity:{value:"silent"}}),t?null:_H,o),e=Object.assign(Object.create(Object.prototype,{silent:{value:1/0}}),t?null:Ag,n);return{labels:i,values:e}}function c6e(n,t,o){if(typeof n=="number"){if(![].concat(Object.keys(t||{}).map(a=>t[a]),o?[]:Object.keys(_H).map(a=>+a),1/0).includes(n))throw Error(`default level:${n} must be included in custom levels`);return}let i=Object.assign(Object.create(Object.prototype,{silent:{value:1/0}}),o?null:Ag,t);if(!(n in i))throw Error(`default level:${n} must be included in custom levels`)}function I6e(n,t){let{labels:o,values:i}=n;for(let e in t){if(e in i)throw Error("levels cannot be overridden");if(t[e]in o)throw Error("pre-existing level values cannot be used for new levels")}}function l6e(n){if(typeof n!="function"&&!(typeof n=="string"&&Object.values(Pge).includes(n)))throw new Error('Levels comparison should be one of "ASC", "DESC" or "function" type')}Fge.exports={initialLsCache:A6e,genLsCache:t6e,levelMethods:Gge,getLevel:i6e,setLevel:a6e,isLevelEnabled:o6e,mappings:g6e,assertNoLevelCollisions:I6e,assertDefaultLevelFound:c6e,genLevelComparison:s6e,assertLevelComparison:l6e}});var NH=ee((EvA,Lge)=>{"use strict";Lge.exports={version:"9.14.0"}});var qge=ee((uvA,Jge)=>{"use strict";var{EventEmitter:p6e}=$e("node:events"),{lsCacheSym:d6e,levelValSym:h6e,setLevelSym:aM,getLevelSym:Uge,chindingsSym:iM,parsedChindingsSym:E6e,mixinSym:C6e,asJsonSym:Kge,writeSym:u6e,mixinMergeStrategySym:B6e,timeSym:f6e,timeSliceIndexSym:Q6e,streamSym:xge,serializersSym:hp,formattersSym:Yf,errorKeySym:y6e,messageKeySym:m6e,useOnlyCustomLevelsSym:S6e,needsMetadataGsym:w6e,redactFmtSym:D6e,stringifySym:O6e,formatOptsSym:b6e,stringifiersSym:M6e,msgPrefixSym:kH,hooksSym:_6e}=fE(),{getLevel:T6e,setLevel:N6e,isLevelEnabled:R6e,mappings:k6e,initialLsCache:v6e,genLsCache:P6e,assertNoLevelCollisions:G6e}=TH(),{asChindings:vH,asJson:F6e,buildFormatters:RH,stringify:Hge,noop:Yge}=AM(),{version:L6e}=NH(),U6e=IH(),H6e=class{},jge={constructor:H6e,child:K6e,bindings:x6e,setBindings:Y6e,flush:q6e,isLevelEnabled:R6e,version:L6e,get level(){return this[Uge]()},set level(n){this[aM](n)},get levelVal(){return this[h6e]},set levelVal(n){throw Error("levelVal is read-only")},get msgPrefix(){return this[kH]},get[Symbol.toStringTag](){return"Pino"},[d6e]:v6e,[u6e]:J6e,[Kge]:F6e,[Uge]:T6e,[aM]:N6e};Object.setPrototypeOf(jge,p6e.prototype);Jge.exports=function(){return Object.create(jge)};var rM=n=>n;function K6e(n,t){if(!n)throw Error("missing bindings for child Pino");let o=this[hp],i=this[Yf],e=Object.create(this);if(t==null)return e[Yf].bindings!==rM&&(e[Yf]=RH(i.level,rM,i.log)),e[iM]=vH(e,n),e[aM](this.level),this.onChild!==Yge&&this.onChild(e),e;if(t.hasOwnProperty("serializers")===!0){e[hp]=Object.create(null);for(let c in o)e[hp][c]=o[c];let s=Object.getOwnPropertySymbols(o);for(var a=0;a{"use strict";var{hasOwnProperty:jf}=Object.prototype,Cp=FH();Cp.configure=FH;Cp.stringify=Cp;Cp.default=Cp;LH.stringify=Cp;LH.configure=FH;Wge.exports=Cp;var z6e=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]/;function wI(n){return n.length<5e3&&!z6e.test(n)?`"${n}"`:JSON.stringify(n)}function PH(n,t){if(n.length>200||t)return n.sort(t);for(let o=1;oi;)n[e]=n[e-1],e--;n[e]=i}return n}var V6e=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function GH(n){return V6e.call(n)!==void 0&&n.length!==0}function zge(n,t,o){n.length= 1`)}return o===void 0?1/0:o}function Ep(n){return n===1?"1 item":`${n} items`}function $6e(n){let t=new Set;for(let o of n)(typeof o=="string"||typeof o=="number")&&t.add(String(o));return t}function e5e(n){if(jf.call(n,"strict")){let t=n.strict;if(typeof t!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(t)return o=>{let i=`Object can not safely be stringified. Received type ${typeof o}`;throw typeof o!="function"&&(i+=` (${o.toString()})`),new Error(i)}}}function FH(n){n={...n};let t=e5e(n);t&&(n.bigint===void 0&&(n.bigint=!1),"circularValue"in n||(n.circularValue=Error));let o=W6e(n),i=X6e(n,"bigint"),e=Z6e(n),a=typeof e=="function"?e:void 0,A=Vge(n,"maximumDepth"),r=Vge(n,"maximumBreadth");function s(B,f,Q,y,m,_){let T=f[B];switch(typeof T=="object"&&T!==null&&typeof T.toJSON=="function"&&(T=T.toJSON(B)),T=y.call(f,B,T),typeof T){case"string":return wI(T);case"object":{if(T===null)return"null";if(Q.indexOf(T)!==-1)return o;let R="",K=",",L=_;if(Array.isArray(T)){if(T.length===0)return"[]";if(Ar){let k=T.length-r-1;R+=`${K}"... ${Ep(k)} not stringified"`}return m!==""&&(R+=` ${L}`),Q.pop(),`[${R}]`}let U=Object.keys(T),z=U.length;if(z===0)return"{}";if(A{let A=/^\s{0,3}```/.test(e),r=i;return A&&(i=!i),a===o.length-1?e:r||A||i||!e||!o[a+1]?`${e} `:/^\s{0,3}(?:[-*+] |\d+[.)] |#{1,6} |\||> )/.test(o[a+1])?`${e} -`:`${e}
`}).join("")}function JM(n,t){if(!n||typeof n!="object"||n.errcode!==0)throw new gt("registration-rejected",`\u9489\u9489\u626B\u7801${t}\u5931\u8D25\u3002`);return n}function qM(n,t){let o=Number(n);return Number.isFinite(o)&&o>0?o:t}function Nx({fetchImpl:n=fetch,registrationBaseUrl:t=process.env.DINGTALK_REGISTRATION_BASE_URL||wx,registrationSource:o=process.env.DINGTALK_REGISTRATION_SOURCE||qle,now:i=()=>Date.now(),cardMinIntervalMs:e=50,cardBackoffMs:a=1e3,delay:A=rpe}={}){if(typeof n!="function")throw new TypeError("fetchImpl must be a function");if(typeof i!="function")throw new TypeError("now must be a function");if(!Number.isFinite(e)||e<0)throw new TypeError("cardMinIntervalMs must be a non-negative number");if(!Number.isFinite(a)||a<0)throw new TypeError("cardBackoffMs must be a non-negative number");if(typeof A!="function")throw new TypeError("delay must be a function");let r=zM(t,{label:"\u9489\u9489\u6CE8\u518C\u670D\u52A1",requireSubdomain:!1}),s=new URL(Jle),g=WA(o);if(!g)throw new TypeError("registrationSource is required");let c=new Map,I=new Map,d=new Map,B=Promise.resolve(),f=0,Q=(U,z)=>new URL(z.replace(/^\//,""),U);async function y({clientId:U,clientSecret:z,signal:q,requestKind:x="normal"}){let G=WA(U),V=WA(z);if(!G||!V)throw new TypeError("clientId and clientSecret are required");let F=c.get(G);if(F&&F.expiresAt>i())return F.token;let N=x==="reaction"?d:I;if(N.has(G))return N.get(G);let J=(async()=>{let $=await Cn(n,Q(s,"v1.0/oauth2/accessToken"),{body:{appKey:G,appSecret:V},signal:q,action:"\u9274\u6743"}),ie=WA($?.accessToken);if(!ie)throw new gt("invalid-access-token","\u9489\u9489\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u8BBF\u95EE\u4EE4\u724C\u3002");let pe=qM($?.expireIn??$?.expiresIn,7200),se=Math.max(1e3,(pe-60)*1e3);return c.set(G,{token:ie,expiresAt:i()+se}),ie})().finally(()=>N.delete(G));return N.set(G,J),J}async function m({clientId:U,clientSecret:z,robotCode:q,messageId:x,conversationId:G,reactionName:V=TI,signal:F},N){let k=WA(U),J=WA(z),$=WA(q)??k,ie=WA(x),pe=WA(G),se=WA(V);if(!k||!J)throw new TypeError("clientId and clientSecret are required");if(!$)throw new TypeError("robotCode is required");if(!ie||!pe)throw new TypeError("messageId and conversationId are required");if(!se)throw new TypeError("reactionName is required");let Te=await y({clientId:k,clientSecret:J,signal:F,requestKind:"reaction"}),Qe=await Cn(n,Q(s,`v1.0/robot/emotion/${N}`),{body:{robotCode:$,openMsgId:ie,openConversationId:pe,emotionType:2,emotionName:se,textEmotion:{emotionId:Zle,emotionName:se,text:se,backgroundId:Xle}},headers:{"x-acs-dingtalk-access-token":Te},signal:F,timeoutMs:Wle,action:N==="reply"?"\u6D88\u606F\u72B6\u6001\u6DFB\u52A0":"\u6D88\u606F\u72B6\u6001\u64A4\u56DE"}),ke=Qe?.success===!1?UE(Qe?.code??Qe?.errcode)??"rejected":CQ(Qe);if(ke)throw new gt("reaction-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u6D88\u606F\u72B6\u6001\u8BF7\u6C42\u3002",{providerCode:ke});return!0}async function _({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,kind:V}){let F=WA(q),N=WA(x);if(!F||!N)throw new TypeError("robotCode and downloadCode are required");let k=await y({clientId:U,clientSecret:z,signal:G}),J;try{J=await Cn(n,Q(s,"v1.0/robot/messageFiles/download"),{body:{downloadCode:N,robotCode:F},headers:{"x-acs-dingtalk-access-token":k},signal:G,action:`${V==="image"?"\u56FE\u7247":"\u6587\u4EF6"}\u4E0B\u8F7D\u5730\u5740`})}catch(ie){throw G?.aborted?ie:new gt(`${V}-download-address-failed`,`\u9489\u9489${V==="image"?"\u56FE\u7247":"\u6587\u4EF6"}\u4E0B\u8F7D\u5730\u5740\u83B7\u53D6\u5931\u8D25\u3002`,{cause:ie,status:ie?.status,providerCode:ie?.providerCode})}let $=WA(J?.downloadUrl??J?.download_url);if(!$)throw new gt(`invalid-${V}-download`,`\u9489\u9489\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE${V==="image"?"\u56FE\u7247":"\u6587\u4EF6"}\u4E0B\u8F7D\u5730\u5740\u3002`);return tpe($)}function T(U){let z=async()=>{let x=Math.max(0,f-i());x>0&&await A(x,U),f=Math.max(f,i())+e},q=B.then(z,z);return B=q.catch(()=>{}),q}async function R(U,z){await T(z.signal);try{return await Cn(n,Q(s,U),z)}catch(q){if(!(q instanceof gt)||q.status!==403)throw q;return await A(a,z.signal),await T(z.signal),Cn(n,Q(s,U),z)}}async function K({clientId:U,clientSecret:z,cardInstanceId:q,text:x,target:G,signal:V}){let F=WA(q),N=WA(x);if(!F)throw new TypeError("cardInstanceId is required");if(!N)throw new TypeError("text is required");let J={"x-acs-dingtalk-access-token":await y({clientId:U,clientSecret:z,signal:V})},$=[R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:F,guid:GE(),key:"msgContent",content:LE(N,G),isFull:!0,isFinalize:!1,isError:!0},headers:J,signal:V,action:"AI Card \u5931\u8D25\u6536\u53E3"}),R("v1.0/card/instances",{method:"PUT",body:{outTrackId:F,cardData:jM(N,"5",G),cardUpdateOptions:{updateCardDataByKey:!0}},headers:J,signal:V,action:"AI Card \u5931\u8D25\u72B6\u6001"})],ie=await Promise.allSettled($);if(ie.every(({status:pe})=>pe==="rejected"))throw ie[0].reason;return!0}async function L({clientId:U,clientSecret:z,target:q,file:x,signal:G},{uploadType:V,messageKey:F,createMessageParams:N}){if(!x||typeof x!="object"||typeof x.fileName!="string"||!x.fileName||!Buffer.isBuffer(x.bytes))throw new TypeError("A DingTalk file is required");let k=Ox(q),J;try{J=await y({clientId:U,clientSecret:z,signal:G})}catch(ve){if(G?.aborted)throw Xn(G);let aA=Number(ve?.status),fe=ve?.code==="http-error"&&aA>=400&&aA<500?"artifact-provider-rejected":"artifact-provider-failed";throw FE(ve,{fallback:fe})}let $=new URL("media/upload",wx);$.searchParams.set("access_token",J),$.searchParams.set("type",V);let ie=new FormData;ie.append("media",new Blob([x.bytes],{type:x.mediaType??"application/octet-stream"}),x.fileName);let pe;try{pe=await ape(n,$,{body:ie,signal:G})}catch(ve){if(G?.aborted)throw Xn(G);let aA=Number(ve?.status),fe=ve?.code==="http-error"&&aA>=400&&aA<500?"artifact-provider-rejected":"artifact-provider-failed";throw FE(ve,{fallback:fe})}let se=CQ(pe),Te=WA(pe?.media_id);if(se||!Te)throw FE(new gt("upload-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u4E0A\u4F20\u3002",{providerCode:se??"missing-media-id"}));G?.throwIfAborted();let Qe={robotCode:k.robotCode,msgKey:F,msgParam:JSON.stringify(N(Te,x)),...k.type==="group"?{openConversationId:k.openConversationId}:{userIds:[k.userId]}},ke=k.type==="group"?"v1.0/robot/groupMessages/send":"v1.0/robot/oToMessages/batchSend",Ne;try{Ne=await Cn(n,Q(s,ke),{body:Qe,headers:{"x-acs-dingtalk-access-token":J},signal:G,action:"\u6587\u4EF6\u6D88\u606F\u53D1\u9001"})}catch(ve){throw Ape(ve,G)}let We=CQ(Ne);if(We)throw FE(new gt("send-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u6D88\u606F\u3002",{providerCode:We}));return Ne}return Object.freeze({async beginRegistration({signal:U}={}){let z=JM(await Cn(n,Q(r,"app/registration/init"),{body:{source:g},signal:U,action:"\u521D\u59CB\u5316"}),"\u521D\u59CB\u5316"),q=WA(z.nonce);if(!q)throw new gt("invalid-registration","\u9489\u9489\u626B\u7801\u521D\u59CB\u5316\u7F3A\u5C11 nonce\u3002");let x=JM(await Cn(n,Q(r,"app/registration/begin"),{body:{nonce:q},signal:U,action:"\u521B\u5EFA"}),"\u521B\u5EFA"),G=WA(x.device_code),V=WA(x.verification_uri_complete);if(!G||!V)throw new gt("invalid-registration","\u9489\u9489\u626B\u7801\u670D\u52A1\u8FD4\u56DE\u7684\u4FE1\u606F\u4E0D\u5B8C\u6574\u3002");let F=zM(V,{label:"\u9489\u9489\u626B\u7801",requireSubdomain:!1}).toString();return{deviceCode:G,userCode:WA(x.user_code)??void 0,verificationUri:WA(x.verification_uri)??void 0,verificationUriComplete:F,expiresInSeconds:qM(x.expires_in,7200),intervalSeconds:qM(x.interval,5)}},async pollRegistration({deviceCode:U,signal:z}={}){let q=WA(U);if(!q)throw new TypeError("deviceCode is required");let x=JM(await Cn(n,Q(r,"app/registration/poll"),{body:{device_code:q},signal:z,action:"\u72B6\u6001\u67E5\u8BE2"}),"\u72B6\u6001\u67E5\u8BE2"),G=WA(x.status)?.toUpperCase();if(!G||!$le.has(G))throw new gt("invalid-registration-status","\u9489\u9489\u626B\u7801\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u72B6\u6001\u3002");let V={status:G,failReason:WA(x.fail_reason)??void 0};if(G==="SUCCESS"&&(V.clientId=WA(x.client_id)??void 0,V.clientSecret=WA(x.client_secret)??void 0,!V.clientId||!V.clientSecret))throw new gt("missing-credentials","\u9489\u9489\u626B\u7801\u5DF2\u786E\u8BA4\uFF0C\u4F46\u6CA1\u6709\u8FD4\u56DE\u673A\u5668\u4EBA\u51ED\u636E\u3002");return V},accessToken:y,async addReaction(U){return m(U,"reply")},async recallReaction(U){return m(U,"recall")},async addThinkingReaction(U){return m({...U,reactionName:TI},"reply")},async recallThinkingReaction(U){return m({...U,reactionName:TI},"recall")},async downloadImage({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,maxBytes:V}){let F=await _({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,kind:"image"});try{return await Do(F,{fetchImpl:n,signal:G,maxBytes:V})}catch(N){throw G?.aborted||N instanceof ut?N:new gt("image-content-download-failed","\u9489\u9489\u56FE\u7247\u5185\u5BB9\u4E0B\u8F7D\u5931\u8D25\u3002",{cause:N})}},async downloadFile({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G}){let V=await _({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,kind:"file"});if(V.protocol!=="https:")throw new gt("invalid-file-download","\u9489\u9489\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u6587\u4EF6\u4E0B\u8F7D\u5730\u5740\u3002");try{let F=await n(V,{method:"GET",redirect:"follow",signal:G});if(!F?.ok)throw await F?.body?.cancel?.().catch?.(()=>{}),new gt("file-content-download-failed",`\u9489\u9489\u6587\u4EF6\u5185\u5BB9\u4E0B\u8F7D\u5931\u8D25\uFF08HTTP ${F?.status??"unknown"}\uFF09\u3002`,{status:F?.status});return Buffer.from(await F.arrayBuffer())}catch(F){throw G?.aborted?Xn(G):F instanceof gt?F:new gt("file-content-download-failed","\u9489\u9489\u6587\u4EF6\u5185\u5BB9\u4E0B\u8F7D\u5931\u8D25\u3002",{cause:F})}},async createAiCard({clientId:U,clientSecret:z,target:q,initialText:x,signal:G}){let V=WA(U),F=WA(z),N=WA(x);if(!V||!F)throw new TypeError("clientId and clientSecret are required");if(!N)throw new TypeError("initialText is required");let k=ope(q),J=await y({clientId:V,clientSecret:F,signal:G}),$=`dsh_${GE()}`,ie={"x-acs-dingtalk-access-token":J},pe=!1;try{await R("v1.0/card/instances",{body:{cardTemplateId:zle,outTrackId:$,cardData:{cardParamMap:{config:JSON.stringify({autoLayout:!0})}},callbackType:"STREAM",cardAtUserIds:k.atUserIds?Object.keys(k.atUserIds):void 0,imGroupOpenSpaceModel:{supportForward:!0},imRobotOpenSpaceModel:{supportForward:!0}},headers:ie,signal:G,action:"AI Card \u521B\u5EFA"}),await R("v1.0/card/instances/deliver",{body:npe($,k,V),headers:ie,signal:G,action:"AI Card \u6295\u653E"}),pe=!0,await R("v1.0/card/instances",{method:"PUT",body:{outTrackId:$,cardData:jM(N,"2",k)},headers:ie,signal:G,action:"AI Card \u542F\u52A8"}),await R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:$,guid:GE(),key:"msgContent",content:LE(N,k).replace(/\n+$/,""),isFull:!0,isFinalize:!1,isError:!1},headers:ie,signal:G,action:"AI Card \u542F\u52A8"})}catch(se){if(pe){let Te=AbortSignal.timeout(5e3);await K({clientId:V,clientSecret:F,cardInstanceId:$,text:w("\u5361\u7247\u5DF2\u7ED3\u675F\uFF0C\u8BF7\u67E5\u770B\u540E\u7EED\u6D88\u606F\u3002"),target:k,signal:Te}).catch(()=>{})}throw se}return{cardInstanceId:$}},async updateAiCard({clientId:U,clientSecret:z,cardInstanceId:q,text:x,target:G,signal:V}){let F=WA(q),N=WA(x);if(!F)throw new TypeError("cardInstanceId is required");if(!N)throw new TypeError("text is required");let k=await y({clientId:U,clientSecret:z,signal:V});return await R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:F,guid:GE(),key:"msgContent",content:LE(N,G).replace(/\n+$/,""),isFull:!0,isFinalize:!1,isError:!1},headers:{"x-acs-dingtalk-access-token":k},signal:V,action:"AI Card \u66F4\u65B0"}),!0},async finishAiCard({clientId:U,clientSecret:z,cardInstanceId:q,text:x,target:G,signal:V}){let F=WA(q),N=WA(x);if(!F)throw new TypeError("cardInstanceId is required");if(!N)throw new TypeError("text is required");let J={"x-acs-dingtalk-access-token":await y({clientId:U,clientSecret:z,signal:V})},$=LE(N,G);await R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:F,guid:GE(),key:"msgContent",content:$,isFull:!0,isFinalize:!0,isError:!1},headers:J,signal:V,action:"AI Card \u5B8C\u6210"});let ie=!0,pe={method:"PUT",body:{outTrackId:F,cardData:jM(N,"3",G),cardUpdateOptions:{updateCardDataByKey:!0}},headers:J,signal:V,action:"AI Card \u6536\u53E3"};try{await R("v1.0/card/instances",pe)}catch{try{await R("v1.0/card/instances",pe)}catch{ie=!1}}return{delivered:!0,completed:ie}},failAiCard:K,async sendText({clientId:U,clientSecret:z,sessionWebhook:q,text:x,at:G,signal:V}){let F=WA(x);if(!F)throw new TypeError("text is required");let N=gc(q),k=await y({clientId:U,clientSecret:z,signal:V}),J=G&&typeof G=="object"&&(Array.isArray(G.atUserIds)&&G.atUserIds.length>0||Array.isArray(G.atMobiles)&&G.atMobiles.length>0||G.isAtAll===!0)?{at:G}:{},$=await Cn(n,N,{body:{msgtype:"text",text:{content:F},...J},headers:{"x-acs-dingtalk-access-token":k},signal:V,action:"\u6D88\u606F\u56DE\u590D"});if($?.errcode!==void 0&&$.errcode!==0||$?.code!==void 0&&$.code!==0)throw new gt("send-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u56DE\u590D\u6D88\u606F\u3002");return!0},async sendRobotText({clientId:U,clientSecret:z,target:q,text:x,signal:G}){if(typeof x!="string"||!x.trim())throw new TypeError("text is required");let V=x,F=Ox(q),N=await y({clientId:U,clientSecret:z,signal:G}),k={robotCode:F.robotCode,msgKey:"sampleText",msgParam:JSON.stringify({content:V}),...F.type==="group"?{openConversationId:F.openConversationId}:{userIds:[F.userId]}},J=F.type==="group"?"v1.0/robot/groupMessages/send":"v1.0/robot/oToMessages/batchSend",$=await Cn(n,Q(s,J),{body:k,headers:{"x-acs-dingtalk-access-token":N},signal:G,action:"\u4E3B\u52A8\u6587\u5B57\u6D88\u606F\u53D1\u9001"}),ie=CQ($);if(ie)throw new gt("send-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u4E3B\u52A8\u6587\u5B57\u6D88\u606F\u3002",{providerCode:ie});return $},async sendFile(U){return L(U,{uploadType:"file",messageKey:"sampleFile",createMessageParams:(z,q)=>({mediaId:z,fileName:q.fileName,fileType:ipe(q.fileName)})})},async sendImage(U){return L(U,{uploadType:"image",messageKey:"sampleImageMsg",createMessageParams:z=>({photoURL:z})})},clearAccessToken(U){let z=WA(U);z&&c.delete(z)}})}var gpe=500,cpe="\u5361\u7247\u5DF2\u7ED3\u675F\uFF0C\u8BF7\u67E5\u770B\u540E\u7EED\u6D88\u606F\u3002";function VM(n,t){if(typeof n!="string")throw new TypeError(`${t} must be a string`);return n}function Rx(n,t){if(typeof n!="string"||!n.trim())throw new TypeError(`${t} is required`);return n.trim()}function kx({api:n,clientId:t,clientSecret:o,target:i,signal:e,logger:a=console,updateIntervalMs:A=gpe,clock:r=()=>Date.now(),timer:s={setTimeout:(g,c)=>globalThis.setTimeout(g,c),clearTimeout:g=>globalThis.clearTimeout(g)}}={}){if(!n||typeof n.createAiCard!="function"||typeof n.updateAiCard!="function"||typeof n.finishAiCard!="function")throw new TypeError("DingTalk AI Card API is required");let g=Rx(t,"clientId"),c=Rx(o,"clientSecret");if(i==null)throw new TypeError("target is required");if(!Number.isFinite(A)||A<0)throw new TypeError("updateIntervalMs must be a non-negative number");if(typeof r!="function")throw new TypeError("clock must be a function");if(typeof s?.setTimeout!="function"||typeof s?.clearTimeout!="function")throw new TypeError("timer must provide setTimeout and clearTimeout");let I=()=>{let N=r();if(!Number.isFinite(N))throw new TypeError("clock must return a finite timestamp");return N};I();let d=e?.aborted?"aborted":"idle",B=null,f=null,Q=null,y=null,m=null,_=null,T=0,R=()=>{Q!==null&&(s.clearTimeout(Q),Q=null)},K=()=>e?.removeEventListener("abort",q),L=N=>{d=N,f=null,R(),K()},U=()=>!B||typeof n.failAiCard!="function"?Promise.resolve(!1):(_||(_=n.failAiCard({...B,text:w(cpe),signal:AbortSignal.timeout(5e3)}).then(()=>!0,()=>!1)),_),z=N=>{d==="failed"||d==="finished"||d==="aborted"||(U(),L("failed"),a?.error?.(`[dsh-dingtalk] AI Card ${N} failed`))};function q(){d==="finished"||d==="failed"||d==="aborted"||(U(),L("aborted"))}d!=="aborted"&&e?.addEventListener("abort",q,{once:!0});let x=()=>{if(d!=="active"||y||f===null)return;let N=Math.max(0,T+A-I());if(N>0){Q=s.setTimeout(()=>{Q=null,x()},N);return}let k=f;f=null,y=(async()=>{try{await n.updateAiCard({...B,text:k,finished:!1}),T=I()}catch{if(e?.aborted||d==="aborted")return;z("update")}})().finally(()=>{y=null,d==="active"&&f!==null&&x()})};return Object.freeze({start:async N=>{if(VM(N,"initialText"),d!=="idle")return!1;d="starting";try{let k=await n.createAiCard({clientId:g,clientSecret:c,target:i,initialText:N,signal:e}),J=typeof k?.cardInstanceId=="string"?k.cardInstanceId.trim():"";if(!J)throw new TypeError("DingTalk did not return a card instance id");return B=Object.freeze({clientId:g,clientSecret:c,target:i,cardInstanceId:J,signal:e}),d!=="starting"?(U(),!1):(T=I(),d="active",!0)}catch{return e?.aborted||d==="aborted"?(L("aborted"),!1):(z("creation"),!1)}},push:N=>{VM(N,"progressText"),d==="active"&&(f=N,!Q&&!y&&x())},finish:N=>{if(VM(N,"finalText"),d==="finished")return Promise.resolve(!0);if(d==="finishing")return m;if(d!=="active")return Promise.resolve(!1);d="finishing",f=null,R();let k=y;return m=(async()=>{if(k&&await k,d!=="finishing")return!1;try{return await n.finishAiCard({...B,text:N}),d!=="finishing"?!1:(L("finished"),!0)}catch{return e?.aborted||d==="aborted"?(L("aborted"),!1):(z("finish"),!1)}})(),m}})}function uQ(n){return typeof n=="string"&&n.trim()?n.trim():null}function mi(n){return n&&typeof n.id=="string"&&typeof n.question=="string"&&(n.header===void 0||typeof n.header=="string")&&(n.detail===void 0||typeof n.detail=="string")&&(n.multiSelect===void 0||typeof n.multiSelect=="boolean")&&(n.options===void 0||Array.isArray(n.options)&&n.options.every(t=>t&&typeof t.label=="string"&&(t.description===void 0||typeof t.description=="string")))}function Si(n,t,o,{requiresMention:i=!1}={}){let e=[],a=o>1?`\uFF08${t+1}/${o}\uFF09`:"";e.push(w("DeepSeek Harness \u9700\u8981\u4F60\u8865\u5145\u4FE1\u606F{progress}\uFF1A",{progress:a})),uQ(n.header)&&e.push("",n.header.trim()),e.push("",uQ(n.question)??w("\u8BF7\u8F93\u5165\u4F60\u7684\u56DE\u7B54\u3002")),uQ(n.detail)&&e.push("",n.detail.trim());let A=Array.isArray(n.options)?n.options:[];return A.length>0?(e.push(""),A.forEach((r,s)=>{let g=typeof r?.label=="string"?r.label:"",c=uQ(r?.description);e.push(`${s+1}. ${g}${c?` \u2014 ${c}`:""}`)}),e.push("",n.multiSelect===!0?w("\u8BF7\u56DE\u590D\u9009\u9879\u5E8F\u53F7\u6216\u6587\u5B57\uFF1B\u591A\u9009\u7528\u9017\u53F7\u5206\u9694\uFF0C\u4E5F\u53EF\u8865\u5145\u5176\u4ED6\u5185\u5BB9\u3002"):w("\u8BF7\u56DE\u590D\u4E00\u4E2A\u9009\u9879\u5E8F\u53F7\u6216\u6587\u5B57\uFF0C\u4E5F\u53EF\u76F4\u63A5\u8F93\u5165\u5176\u4ED6\u7B54\u6848\u3002"))):e.push("",w("\u8BF7\u76F4\u63A5\u56DE\u590D\u4F60\u7684\u7B54\u6848\u3002")),i&&e.push("",w("\u7FA4\u804A\u4E2D\u8BF7 @\u673A\u5668\u4EBA \u540E\u53D1\u9001\u7B54\u6848\u3002")),e.join(` +`:`${e}
`}).join("")}function JM(n,t){if(!n||typeof n!="object"||n.errcode!==0)throw new gt("registration-rejected",`\u9489\u9489\u626B\u7801${t}\u5931\u8D25\u3002`);return n}function qM(n,t){let o=Number(n);return Number.isFinite(o)&&o>0?o:t}function Nx({fetchImpl:n=fetch,registrationBaseUrl:t=process.env.DINGTALK_REGISTRATION_BASE_URL||wx,registrationSource:o=process.env.DINGTALK_REGISTRATION_SOURCE||qle,now:i=()=>Date.now(),cardMinIntervalMs:e=50,cardBackoffMs:a=1e3,delay:A=rpe}={}){if(typeof n!="function")throw new TypeError("fetchImpl must be a function");if(typeof i!="function")throw new TypeError("now must be a function");if(!Number.isFinite(e)||e<0)throw new TypeError("cardMinIntervalMs must be a non-negative number");if(!Number.isFinite(a)||a<0)throw new TypeError("cardBackoffMs must be a non-negative number");if(typeof A!="function")throw new TypeError("delay must be a function");let r=zM(t,{label:"\u9489\u9489\u6CE8\u518C\u670D\u52A1",requireSubdomain:!1}),s=new URL(Jle),g=WA(o);if(!g)throw new TypeError("registrationSource is required");let c=new Map,I=new Map,d=new Map,B=Promise.resolve(),f=0,Q=(U,z)=>new URL(z.replace(/^\//,""),U);async function y({clientId:U,clientSecret:z,signal:q,requestKind:x="normal"}){let G=WA(U),V=WA(z);if(!G||!V)throw new TypeError("clientId and clientSecret are required");let F=c.get(G);if(F&&F.expiresAt>i())return F.token;let N=x==="reaction"?d:I;if(N.has(G))return N.get(G);let J=(async()=>{let $=await Cn(n,Q(s,"v1.0/oauth2/accessToken"),{body:{appKey:G,appSecret:V},signal:q,action:"\u9274\u6743"}),ie=WA($?.accessToken);if(!ie)throw new gt("invalid-access-token","\u9489\u9489\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u8BBF\u95EE\u4EE4\u724C\u3002");let pe=qM($?.expireIn??$?.expiresIn,7200),se=Math.max(1e3,(pe-60)*1e3);return c.set(G,{token:ie,expiresAt:i()+se}),ie})().finally(()=>N.delete(G));return N.set(G,J),J}async function m({clientId:U,clientSecret:z,robotCode:q,messageId:x,conversationId:G,reactionName:V=TI,signal:F},N){let k=WA(U),J=WA(z),$=WA(q)??k,ie=WA(x),pe=WA(G),se=WA(V);if(!k||!J)throw new TypeError("clientId and clientSecret are required");if(!$)throw new TypeError("robotCode is required");if(!ie||!pe)throw new TypeError("messageId and conversationId are required");if(!se)throw new TypeError("reactionName is required");let Me=await y({clientId:k,clientSecret:J,signal:F,requestKind:"reaction"}),fe=await Cn(n,Q(s,`v1.0/robot/emotion/${N}`),{body:{robotCode:$,openMsgId:ie,openConversationId:pe,emotionType:2,emotionName:se,textEmotion:{emotionId:Zle,emotionName:se,text:se,backgroundId:Xle}},headers:{"x-acs-dingtalk-access-token":Me},signal:F,timeoutMs:Wle,action:N==="reply"?"\u6D88\u606F\u72B6\u6001\u6DFB\u52A0":"\u6D88\u606F\u72B6\u6001\u64A4\u56DE"}),ke=fe?.success===!1?UE(fe?.code??fe?.errcode)??"rejected":CQ(fe);if(ke)throw new gt("reaction-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u6D88\u606F\u72B6\u6001\u8BF7\u6C42\u3002",{providerCode:ke});return!0}async function _({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,kind:V}){let F=WA(q),N=WA(x);if(!F||!N)throw new TypeError("robotCode and downloadCode are required");let k=await y({clientId:U,clientSecret:z,signal:G}),J;try{J=await Cn(n,Q(s,"v1.0/robot/messageFiles/download"),{body:{downloadCode:N,robotCode:F},headers:{"x-acs-dingtalk-access-token":k},signal:G,action:`${V==="image"?"\u56FE\u7247":"\u6587\u4EF6"}\u4E0B\u8F7D\u5730\u5740`})}catch(ie){throw G?.aborted?ie:new gt(`${V}-download-address-failed`,`\u9489\u9489${V==="image"?"\u56FE\u7247":"\u6587\u4EF6"}\u4E0B\u8F7D\u5730\u5740\u83B7\u53D6\u5931\u8D25\u3002`,{cause:ie,status:ie?.status,providerCode:ie?.providerCode})}let $=WA(J?.downloadUrl??J?.download_url);if(!$)throw new gt(`invalid-${V}-download`,`\u9489\u9489\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE${V==="image"?"\u56FE\u7247":"\u6587\u4EF6"}\u4E0B\u8F7D\u5730\u5740\u3002`);return tpe($)}function T(U){let z=async()=>{let x=Math.max(0,f-i());x>0&&await A(x,U),f=Math.max(f,i())+e},q=B.then(z,z);return B=q.catch(()=>{}),q}async function R(U,z){await T(z.signal);try{return await Cn(n,Q(s,U),z)}catch(q){if(!(q instanceof gt)||q.status!==403)throw q;return await A(a,z.signal),await T(z.signal),Cn(n,Q(s,U),z)}}async function K({clientId:U,clientSecret:z,cardInstanceId:q,text:x,target:G,signal:V}){let F=WA(q),N=WA(x);if(!F)throw new TypeError("cardInstanceId is required");if(!N)throw new TypeError("text is required");let J={"x-acs-dingtalk-access-token":await y({clientId:U,clientSecret:z,signal:V})},$=[R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:F,guid:GE(),key:"msgContent",content:LE(N,G),isFull:!0,isFinalize:!1,isError:!0},headers:J,signal:V,action:"AI Card \u5931\u8D25\u6536\u53E3"}),R("v1.0/card/instances",{method:"PUT",body:{outTrackId:F,cardData:jM(N,"5",G),cardUpdateOptions:{updateCardDataByKey:!0}},headers:J,signal:V,action:"AI Card \u5931\u8D25\u72B6\u6001"})],ie=await Promise.allSettled($);if(ie.every(({status:pe})=>pe==="rejected"))throw ie[0].reason;return!0}async function L({clientId:U,clientSecret:z,target:q,file:x,signal:G},{uploadType:V,messageKey:F,createMessageParams:N}){if(!x||typeof x!="object"||typeof x.fileName!="string"||!x.fileName||!Buffer.isBuffer(x.bytes))throw new TypeError("A DingTalk file is required");let k=Ox(q),J;try{J=await y({clientId:U,clientSecret:z,signal:G})}catch(ve){if(G?.aborted)throw Xn(G);let aA=Number(ve?.status),Qe=ve?.code==="http-error"&&aA>=400&&aA<500?"artifact-provider-rejected":"artifact-provider-failed";throw FE(ve,{fallback:Qe})}let $=new URL("media/upload",wx);$.searchParams.set("access_token",J),$.searchParams.set("type",V);let ie=new FormData;ie.append("media",new Blob([x.bytes],{type:x.mediaType??"application/octet-stream"}),x.fileName);let pe;try{pe=await ape(n,$,{body:ie,signal:G})}catch(ve){if(G?.aborted)throw Xn(G);let aA=Number(ve?.status),Qe=ve?.code==="http-error"&&aA>=400&&aA<500?"artifact-provider-rejected":"artifact-provider-failed";throw FE(ve,{fallback:Qe})}let se=CQ(pe),Me=WA(pe?.media_id);if(se||!Me)throw FE(new gt("upload-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u4E0A\u4F20\u3002",{providerCode:se??"missing-media-id"}));G?.throwIfAborted();let fe={robotCode:k.robotCode,msgKey:F,msgParam:JSON.stringify(N(Me,x)),...k.type==="group"?{openConversationId:k.openConversationId}:{userIds:[k.userId]}},ke=k.type==="group"?"v1.0/robot/groupMessages/send":"v1.0/robot/oToMessages/batchSend",Ne;try{Ne=await Cn(n,Q(s,ke),{body:fe,headers:{"x-acs-dingtalk-access-token":J},signal:G,action:"\u6587\u4EF6\u6D88\u606F\u53D1\u9001"})}catch(ve){throw Ape(ve,G)}let We=CQ(Ne);if(We)throw FE(new gt("send-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u6D88\u606F\u3002",{providerCode:We}));return Ne}return Object.freeze({async beginRegistration({signal:U}={}){let z=JM(await Cn(n,Q(r,"app/registration/init"),{body:{source:g},signal:U,action:"\u521D\u59CB\u5316"}),"\u521D\u59CB\u5316"),q=WA(z.nonce);if(!q)throw new gt("invalid-registration","\u9489\u9489\u626B\u7801\u521D\u59CB\u5316\u7F3A\u5C11 nonce\u3002");let x=JM(await Cn(n,Q(r,"app/registration/begin"),{body:{nonce:q},signal:U,action:"\u521B\u5EFA"}),"\u521B\u5EFA"),G=WA(x.device_code),V=WA(x.verification_uri_complete);if(!G||!V)throw new gt("invalid-registration","\u9489\u9489\u626B\u7801\u670D\u52A1\u8FD4\u56DE\u7684\u4FE1\u606F\u4E0D\u5B8C\u6574\u3002");let F=zM(V,{label:"\u9489\u9489\u626B\u7801",requireSubdomain:!1}).toString();return{deviceCode:G,userCode:WA(x.user_code)??void 0,verificationUri:WA(x.verification_uri)??void 0,verificationUriComplete:F,expiresInSeconds:qM(x.expires_in,7200),intervalSeconds:qM(x.interval,5)}},async pollRegistration({deviceCode:U,signal:z}={}){let q=WA(U);if(!q)throw new TypeError("deviceCode is required");let x=JM(await Cn(n,Q(r,"app/registration/poll"),{body:{device_code:q},signal:z,action:"\u72B6\u6001\u67E5\u8BE2"}),"\u72B6\u6001\u67E5\u8BE2"),G=WA(x.status)?.toUpperCase();if(!G||!$le.has(G))throw new gt("invalid-registration-status","\u9489\u9489\u626B\u7801\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u72B6\u6001\u3002");let V={status:G,failReason:WA(x.fail_reason)??void 0};if(G==="SUCCESS"&&(V.clientId=WA(x.client_id)??void 0,V.clientSecret=WA(x.client_secret)??void 0,!V.clientId||!V.clientSecret))throw new gt("missing-credentials","\u9489\u9489\u626B\u7801\u5DF2\u786E\u8BA4\uFF0C\u4F46\u6CA1\u6709\u8FD4\u56DE\u673A\u5668\u4EBA\u51ED\u636E\u3002");return V},accessToken:y,async addReaction(U){return m(U,"reply")},async recallReaction(U){return m(U,"recall")},async addThinkingReaction(U){return m({...U,reactionName:TI},"reply")},async recallThinkingReaction(U){return m({...U,reactionName:TI},"recall")},async downloadImage({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,maxBytes:V}){let F=await _({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,kind:"image"});try{return await Do(F,{fetchImpl:n,signal:G,maxBytes:V})}catch(N){throw G?.aborted||N instanceof ut?N:new gt("image-content-download-failed","\u9489\u9489\u56FE\u7247\u5185\u5BB9\u4E0B\u8F7D\u5931\u8D25\u3002",{cause:N})}},async downloadFile({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G}){let V=await _({clientId:U,clientSecret:z,robotCode:q,downloadCode:x,signal:G,kind:"file"});if(V.protocol!=="https:")throw new gt("invalid-file-download","\u9489\u9489\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u6587\u4EF6\u4E0B\u8F7D\u5730\u5740\u3002");try{let F=await n(V,{method:"GET",redirect:"follow",signal:G});if(!F?.ok)throw await F?.body?.cancel?.().catch?.(()=>{}),new gt("file-content-download-failed",`\u9489\u9489\u6587\u4EF6\u5185\u5BB9\u4E0B\u8F7D\u5931\u8D25\uFF08HTTP ${F?.status??"unknown"}\uFF09\u3002`,{status:F?.status});return Buffer.from(await F.arrayBuffer())}catch(F){throw G?.aborted?Xn(G):F instanceof gt?F:new gt("file-content-download-failed","\u9489\u9489\u6587\u4EF6\u5185\u5BB9\u4E0B\u8F7D\u5931\u8D25\u3002",{cause:F})}},async createAiCard({clientId:U,clientSecret:z,target:q,initialText:x,signal:G}){let V=WA(U),F=WA(z),N=WA(x);if(!V||!F)throw new TypeError("clientId and clientSecret are required");if(!N)throw new TypeError("initialText is required");let k=ope(q),J=await y({clientId:V,clientSecret:F,signal:G}),$=`dsh_${GE()}`,ie={"x-acs-dingtalk-access-token":J},pe=!1;try{await R("v1.0/card/instances",{body:{cardTemplateId:zle,outTrackId:$,cardData:{cardParamMap:{config:JSON.stringify({autoLayout:!0})}},callbackType:"STREAM",cardAtUserIds:k.atUserIds?Object.keys(k.atUserIds):void 0,imGroupOpenSpaceModel:{supportForward:!0},imRobotOpenSpaceModel:{supportForward:!0}},headers:ie,signal:G,action:"AI Card \u521B\u5EFA"}),await R("v1.0/card/instances/deliver",{body:npe($,k,V),headers:ie,signal:G,action:"AI Card \u6295\u653E"}),pe=!0,await R("v1.0/card/instances",{method:"PUT",body:{outTrackId:$,cardData:jM(N,"2",k)},headers:ie,signal:G,action:"AI Card \u542F\u52A8"}),await R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:$,guid:GE(),key:"msgContent",content:LE(N,k).replace(/\n+$/,""),isFull:!0,isFinalize:!1,isError:!1},headers:ie,signal:G,action:"AI Card \u542F\u52A8"})}catch(se){if(pe){let Me=AbortSignal.timeout(5e3);await K({clientId:V,clientSecret:F,cardInstanceId:$,text:w("\u5361\u7247\u5DF2\u7ED3\u675F\uFF0C\u8BF7\u67E5\u770B\u540E\u7EED\u6D88\u606F\u3002"),target:k,signal:Me}).catch(()=>{})}throw se}return{cardInstanceId:$}},async updateAiCard({clientId:U,clientSecret:z,cardInstanceId:q,text:x,target:G,signal:V}){let F=WA(q),N=WA(x);if(!F)throw new TypeError("cardInstanceId is required");if(!N)throw new TypeError("text is required");let k=await y({clientId:U,clientSecret:z,signal:V});return await R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:F,guid:GE(),key:"msgContent",content:LE(N,G).replace(/\n+$/,""),isFull:!0,isFinalize:!1,isError:!1},headers:{"x-acs-dingtalk-access-token":k},signal:V,action:"AI Card \u66F4\u65B0"}),!0},async finishAiCard({clientId:U,clientSecret:z,cardInstanceId:q,text:x,target:G,signal:V}){let F=WA(q),N=WA(x);if(!F)throw new TypeError("cardInstanceId is required");if(!N)throw new TypeError("text is required");let J={"x-acs-dingtalk-access-token":await y({clientId:U,clientSecret:z,signal:V})},$=LE(N,G);await R("v1.0/card/streaming",{method:"PUT",body:{outTrackId:F,guid:GE(),key:"msgContent",content:$,isFull:!0,isFinalize:!0,isError:!1},headers:J,signal:V,action:"AI Card \u5B8C\u6210"});let ie=!0,pe={method:"PUT",body:{outTrackId:F,cardData:jM(N,"3",G),cardUpdateOptions:{updateCardDataByKey:!0}},headers:J,signal:V,action:"AI Card \u6536\u53E3"};try{await R("v1.0/card/instances",pe)}catch{try{await R("v1.0/card/instances",pe)}catch{ie=!1}}return{delivered:!0,completed:ie}},failAiCard:K,async sendText({clientId:U,clientSecret:z,sessionWebhook:q,text:x,at:G,signal:V}){let F=WA(x);if(!F)throw new TypeError("text is required");let N=gc(q),k=await y({clientId:U,clientSecret:z,signal:V}),J=G&&typeof G=="object"&&(Array.isArray(G.atUserIds)&&G.atUserIds.length>0||Array.isArray(G.atMobiles)&&G.atMobiles.length>0||G.isAtAll===!0)?{at:G}:{},$=await Cn(n,N,{body:{msgtype:"text",text:{content:F},...J},headers:{"x-acs-dingtalk-access-token":k},signal:V,action:"\u6D88\u606F\u56DE\u590D"});if($?.errcode!==void 0&&$.errcode!==0||$?.code!==void 0&&$.code!==0)throw new gt("send-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u56DE\u590D\u6D88\u606F\u3002");return!0},async sendRobotText({clientId:U,clientSecret:z,target:q,text:x,signal:G}){if(typeof x!="string"||!x.trim())throw new TypeError("text is required");let V=x,F=Ox(q),N=await y({clientId:U,clientSecret:z,signal:G}),k={robotCode:F.robotCode,msgKey:"sampleText",msgParam:JSON.stringify({content:V}),...F.type==="group"?{openConversationId:F.openConversationId}:{userIds:[F.userId]}},J=F.type==="group"?"v1.0/robot/groupMessages/send":"v1.0/robot/oToMessages/batchSend",$=await Cn(n,Q(s,J),{body:k,headers:{"x-acs-dingtalk-access-token":N},signal:G,action:"\u4E3B\u52A8\u6587\u5B57\u6D88\u606F\u53D1\u9001"}),ie=CQ($);if(ie)throw new gt("send-rejected","\u9489\u9489\u670D\u52A1\u62D2\u7EDD\u4E86\u4E3B\u52A8\u6587\u5B57\u6D88\u606F\u3002",{providerCode:ie});return $},async sendFile(U){return L(U,{uploadType:"file",messageKey:"sampleFile",createMessageParams:(z,q)=>({mediaId:z,fileName:q.fileName,fileType:ipe(q.fileName)})})},async sendImage(U){return L(U,{uploadType:"image",messageKey:"sampleImageMsg",createMessageParams:z=>({photoURL:z})})},clearAccessToken(U){let z=WA(U);z&&c.delete(z)}})}var gpe=500,cpe="\u5361\u7247\u5DF2\u7ED3\u675F\uFF0C\u8BF7\u67E5\u770B\u540E\u7EED\u6D88\u606F\u3002";function VM(n,t){if(typeof n!="string")throw new TypeError(`${t} must be a string`);return n}function Rx(n,t){if(typeof n!="string"||!n.trim())throw new TypeError(`${t} is required`);return n.trim()}function kx({api:n,clientId:t,clientSecret:o,target:i,signal:e,logger:a=console,updateIntervalMs:A=gpe,clock:r=()=>Date.now(),timer:s={setTimeout:(g,c)=>globalThis.setTimeout(g,c),clearTimeout:g=>globalThis.clearTimeout(g)}}={}){if(!n||typeof n.createAiCard!="function"||typeof n.updateAiCard!="function"||typeof n.finishAiCard!="function")throw new TypeError("DingTalk AI Card API is required");let g=Rx(t,"clientId"),c=Rx(o,"clientSecret");if(i==null)throw new TypeError("target is required");if(!Number.isFinite(A)||A<0)throw new TypeError("updateIntervalMs must be a non-negative number");if(typeof r!="function")throw new TypeError("clock must be a function");if(typeof s?.setTimeout!="function"||typeof s?.clearTimeout!="function")throw new TypeError("timer must provide setTimeout and clearTimeout");let I=()=>{let N=r();if(!Number.isFinite(N))throw new TypeError("clock must return a finite timestamp");return N};I();let d=e?.aborted?"aborted":"idle",B=null,f=null,Q=null,y=null,m=null,_=null,T=0,R=()=>{Q!==null&&(s.clearTimeout(Q),Q=null)},K=()=>e?.removeEventListener("abort",q),L=N=>{d=N,f=null,R(),K()},U=()=>!B||typeof n.failAiCard!="function"?Promise.resolve(!1):(_||(_=n.failAiCard({...B,text:w(cpe),signal:AbortSignal.timeout(5e3)}).then(()=>!0,()=>!1)),_),z=N=>{d==="failed"||d==="finished"||d==="aborted"||(U(),L("failed"),a?.error?.(`[dsh-dingtalk] AI Card ${N} failed`))};function q(){d==="finished"||d==="failed"||d==="aborted"||(U(),L("aborted"))}d!=="aborted"&&e?.addEventListener("abort",q,{once:!0});let x=()=>{if(d!=="active"||y||f===null)return;let N=Math.max(0,T+A-I());if(N>0){Q=s.setTimeout(()=>{Q=null,x()},N);return}let k=f;f=null,y=(async()=>{try{await n.updateAiCard({...B,text:k,finished:!1}),T=I()}catch{if(e?.aborted||d==="aborted")return;z("update")}})().finally(()=>{y=null,d==="active"&&f!==null&&x()})};return Object.freeze({start:async N=>{if(VM(N,"initialText"),d!=="idle")return!1;d="starting";try{let k=await n.createAiCard({clientId:g,clientSecret:c,target:i,initialText:N,signal:e}),J=typeof k?.cardInstanceId=="string"?k.cardInstanceId.trim():"";if(!J)throw new TypeError("DingTalk did not return a card instance id");return B=Object.freeze({clientId:g,clientSecret:c,target:i,cardInstanceId:J,signal:e}),d!=="starting"?(U(),!1):(T=I(),d="active",!0)}catch{return e?.aborted||d==="aborted"?(L("aborted"),!1):(z("creation"),!1)}},push:N=>{VM(N,"progressText"),d==="active"&&(f=N,!Q&&!y&&x())},finish:N=>{if(VM(N,"finalText"),d==="finished")return Promise.resolve(!0);if(d==="finishing")return m;if(d!=="active")return Promise.resolve(!1);d="finishing",f=null,R();let k=y;return m=(async()=>{if(k&&await k,d!=="finishing")return!1;try{return await n.finishAiCard({...B,text:N}),d!=="finishing"?!1:(L("finished"),!0)}catch{return e?.aborted||d==="aborted"?(L("aborted"),!1):(z("finish"),!1)}})(),m}})}function uQ(n){return typeof n=="string"&&n.trim()?n.trim():null}function mi(n){return n&&typeof n.id=="string"&&typeof n.question=="string"&&(n.header===void 0||typeof n.header=="string")&&(n.detail===void 0||typeof n.detail=="string")&&(n.multiSelect===void 0||typeof n.multiSelect=="boolean")&&(n.options===void 0||Array.isArray(n.options)&&n.options.every(t=>t&&typeof t.label=="string"&&(t.description===void 0||typeof t.description=="string")))}function Si(n,t,o,{requiresMention:i=!1}={}){let e=[],a=o>1?`\uFF08${t+1}/${o}\uFF09`:"";e.push(w("DeepSeek Harness \u9700\u8981\u4F60\u8865\u5145\u4FE1\u606F{progress}\uFF1A",{progress:a})),uQ(n.header)&&e.push("",n.header.trim()),e.push("",uQ(n.question)??w("\u8BF7\u8F93\u5165\u4F60\u7684\u56DE\u7B54\u3002")),uQ(n.detail)&&e.push("",n.detail.trim());let A=Array.isArray(n.options)?n.options:[];return A.length>0?(e.push(""),A.forEach((r,s)=>{let g=typeof r?.label=="string"?r.label:"",c=uQ(r?.description);e.push(`${s+1}. ${g}${c?` \u2014 ${c}`:""}`)}),e.push("",n.multiSelect===!0?w("\u8BF7\u56DE\u590D\u9009\u9879\u5E8F\u53F7\u6216\u6587\u5B57\uFF1B\u591A\u9009\u7528\u9017\u53F7\u5206\u9694\uFF0C\u4E5F\u53EF\u8865\u5145\u5176\u4ED6\u5185\u5BB9\u3002"):w("\u8BF7\u56DE\u590D\u4E00\u4E2A\u9009\u9879\u5E8F\u53F7\u6216\u6587\u5B57\uFF0C\u4E5F\u53EF\u76F4\u63A5\u8F93\u5165\u5176\u4ED6\u7B54\u6848\u3002"))):e.push("",w("\u8BF7\u76F4\u63A5\u56DE\u590D\u4F60\u7684\u7B54\u6848\u3002")),i&&e.push("",w("\u7FA4\u804A\u4E2D\u8BF7 @\u673A\u5668\u4EBA \u540E\u53D1\u9001\u7B54\u6848\u3002")),e.join(` `)}function vx(n,t){let o=n.trim();if(!o)return null;if(/^\d+$/.test(o)){let e=t[Number(o)-1];return typeof e?.label=="string"?e.label:null}let i=t.find(e=>e?.label===o);return typeof i?.label=="string"?i.label:null}function wi(n,t){let o=Array.isArray(n.options)?n.options:[];if(o.length===0)return{id:n.id,selected:[],custom:t};let i=vx(t,o);if(n.multiSelect!==!0)return i?{id:n.id,selected:[i]}:{id:n.id,selected:[],custom:t};if(i)return{id:n.id,selected:[i]};let e=[],a=[];for(let A of t.split(/[,,、;;\n]+/)){let r=A.trim();if(!r)continue;let s=vx(r,o);s?e.includes(s)||e.push(s):a.push(r)}return{id:n.id,selected:e,...a.length>0?{custom:a.join("\u3001")}:{}}}var Ipe=new Map([["\u6279\u51C6","allowed-once"],["\u540C\u610F","allowed-once"],["yes","allowed-once"],["\u62D2\u7EDD","rejected"],["\u4E0D\u540C\u610F","rejected"],["no","rejected"]]),WM="\u8BF7\u7CBE\u51C6\u56DE\u590D\u300C\u6279\u51C6\u300D\u6216\u300C\u62D2\u7EDD\u300D\uFF08\u4E5F\u652F\u6301\uFF1A\u540C\u610F / \u4E0D\u540C\u610F / yes / no\uFF09\u3002",lpe="\u8BF7\u5148\u5B8C\u6210\u5F53\u524D\u95EE\u9898\uFF0C\u518D\u7CBE\u51C6\u56DE\u590D\u300C\u6279\u51C6\u300D\u6216\u300C\u62D2\u7EDD\u300D\u3002",wp="\u8BE5\u5BA1\u6279\u5DF2\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u590D\u3002",ppe=5*6e4,dpe=2048;function Ga(n){return typeof n=="string"?n.trim():""}function ZM(n){return Ga(n).replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g,"")}function hpe(n){return Ipe.get(Ga(n).toLowerCase())??null}function Gx(n){return n?.type==="approval/requested"&&!!Ga(n.sessionId)&&!!Ga(n.approvalId)&&!!Ga(n.toolName)&&(n.callId===void 0||!!Ga(n.callId))&&(n.reason===void 0||typeof n.reason=="string")}function Epe(n){let t=n?.arguments;if(t!==null&&typeof t=="object")try{return JSON.stringify(t,null,2)}catch{return null}if(typeof t!="string")return null;let o=ZM(t);if(!o)return t===""?"{}":null;try{return JSON.stringify(JSON.parse(o),null,2)}catch{return o}}function XM(n,{toolCall:t,requiresMention:o=!1,maxArgumentsLength:i=6e3}={}){if(!Gx(n))return null;let e=Ga(n.callId);if(!e||Ga(t?.callId)!==e||Ga(t?.name)!==Ga(n.toolName))return null;let a=Epe(t);if(!a||a.length>i)return null;let A=[w("DeepSeek Harness \u9700\u8981\u4F60\u7684\u5BA1\u6279\uFF1A"),"",w("\u5DE5\u5177\uFF1A{tool}",{tool:ZM(n.toolName)}),w("\u64CD\u4F5C\u53C2\u6570\uFF1A"),a],r=ZM(n.reason);return r&&A.push(w("\u539F\u56E0\uFF1A{reason}",{reason:r})),A.push("",w(WM)),o&&A.push("",w("\u7FA4\u804A\u4E2D\u8BF7 @\u673A\u5668\u4EBA \u540E\u53D1\u9001\u5BA1\u6279\u51B3\u5B9A\u3002")),A.join(` `)}function Px(n,t){return{ok:!0,value:{sessionId:n.sessionId,approvalId:n.approvalId,outcome:t}}}function BQ(n){return n==="allowed-once"?w("\u5DF2\u6279\u51C6\uFF0C\u4EC5\u5BF9\u672C\u6B21\u64CD\u4F5C\u6709\u6548\u3002"):n==="rejected"?w("\u5DF2\u62D2\u7EDD\u6B64\u6B21\u64CD\u4F5C\u3002"):w(wp)}var Di=class{#e;#A;#t=new Map;#r=new Map;#l=new Map;constructor({label:t="IM",logger:o=console}={}){this.#e=t,this.#A=o}hasPending(t){return this.#r.get(t)?.items.some(o=>!o.inactive)===!0}claimReply({key:t,actor:o,text:i,addressed:e=!0,hasPendingQuestion:a=!1,questionCompletion:A,isQuestionPending:r,send:s}){let c=this.#r.get(t)?.items[0],I=hpe(i),d=(f,Q=!1)=>({...Q?{resolved:!0}:{},process:async y=>{typeof y=="function"&&await y()===!1||await s(f)}}),B=a&&c&&A&&typeof A.then=="function";return a&&!B?null:!c||c.inactive?(this.#l.get(t)??0)<=Date.now()?(this.#l.delete(t),null):I?d(w(wp),!0):null:c.actor!==o||c.requiresMention&&e!==!0?I?d(w("\u53EA\u6709\u53D1\u8D77\u5F53\u524D\u4EFB\u52A1\u7684\u7528\u6237\u53EF\u4EE5\u5904\u7406\u8FD9\u6761\u5BA1\u6279\u3002")):null:{process:async f=>{let Q=c.presented,m=(c.replyTail??Promise.resolve()).catch(()=>{}).then(async()=>{if(!(typeof f=="function"&&await f()===!1)){if(B){if(await A.catch(()=>{}),c.inactive||c.resolving)return;if(typeof r=="function"&&r()){await s(w(lpe));return}}if(await c.activationTask?.catch(()=>{}),await c.presentationTask?.catch(()=>{}),c.inactive||c.resolving){await s(w(wp));return}if(c.send=s,!Q||!c.presented){if(c.presented||await this.#o(c),c.inactive||c.resolving)return;await s(w(WM));return}if(c.submitting){await s(w("\u5BA1\u6279\u51B3\u5B9A\u6B63\u5728\u63D0\u4EA4\uFF0C\u8BF7\u7A0D\u5019\u3002"));return}if(!I){await s(w(WM));return}await this.#i(c,I)}});c.replyTail=m;try{await m}finally{c.replyTail===m&&(c.replyTail=null)}}}}async handleRequested(t,o){if(t?.kind!=="approval")return!1;let i=t.payload,e=Ga(i?.approvalId);if(!Ga(t.rpcId)||!Ga(t.sessionId)||!e||!Gx(i)||i.sessionId!==t.sessionId||typeof t.respond!="function")return this.#A.warn?.(`[dsh-im:${this.#e}] ignored an invalid Harness approval`),!0;if(t.recovered===!0)return await this.#c(t,i),!0;let a=this.#t.get(e);if(a)return a.interaction=t,a.toolCall=t.toolCall,a.presented||await this.#o(a),!0;let A=o?.send,r=Ga(o?.key),s=Ga(o?.actor);if(!r||!s||typeof A!="function")return this.#A.warn?.(`[dsh-im:${this.#e}] ignored an approval without a reply route`),await this.#c(t,i),!0;let g=XM(i,{toolCall:t.toolCall,requiresMention:o.requiresMention===!0});if(!g){let d=await this.#c(t,i);return await A(d?w("\u65E0\u6CD5\u5B8C\u6574\u5C55\u793A\u8FD9\u6B21\u64CD\u4F5C\uFF0C\u5DF2\u5B89\u5168\u62D2\u7EDD\u6B64\u6B21\u5BA1\u6279\u3002"):w(wp)),!0}let c={approvalId:e,sessionId:t.sessionId,interaction:t,toolCall:t.toolCall,key:r,actor:s,requiresMention:o.requiresMention===!0,send:A,text:g,presented:!1,presentationTask:null,deliveryCompleted:!1,replyTail:null,submitting:!1,inactive:!1,resolving:!1,closedOutcome:null,resolutionNotified:!1,activationTask:null};this.#t.set(e,c);let I=this.#r.get(r)??{items:[]};return I.items.push(c),this.#r.set(r,I),I.items[0]===c&&await this.#o(c),!0}async handleResolved(t){if(t?.kind!=="approval")return!1;let o=this.#t.get(Ga(t.interactionId));if(!o||(o.resolving=!0,o.activationTask&&await o.activationTask.catch(()=>{}),o.inactive||this.#t.get(o.approvalId)!==o))return!0;let i=o.presentationTask,e=o.presented||i,a=o.send,A=this.#s(o);return await this.#a(A,async()=>{let r=o.presented;i&&(r=await i.then(()=>!0,()=>!1)),e&&r&&(o.resolutionNotified=!0,await a(BQ(t.outcome)).catch(()=>{}))}),!0}async closeRoute(t){let o=this.#r.get(t);if(!o)return;let i=[...o.items];for(let e of i)this.#s(e);await Promise.all(i.map(async e=>{try{await e.interaction.respond(Px(e,"rejected"),{signal:AbortSignal.timeout(5e3)}),e.closedOutcome="rejected",(e.presented||e.deliveryCompleted)&&!e.resolutionNotified&&(e.resolutionNotified=!0,await e.send(BQ("rejected")).catch(()=>{}))}catch(a){a?.code==="interaction-not-pending"?(e.closedOutcome="resolved",(e.presented||e.deliveryCompleted)&&!e.resolutionNotified&&(e.resolutionNotified=!0,await e.send(w(wp)).catch(()=>{}))):this.#A.warn?.(`[dsh-im:${this.#e}] failed to reject a closing approval:`,a)}}))}async#o(t){if(this.#r.get(t.key)?.items[0]!==t||t.inactive||t.resolving||t.presented||(await t.activationTask?.catch(()=>{}),this.#r.get(t.key)?.items[0]!==t||t.inactive||t.resolving||t.presented))return;if(t.presentationTask)return t.presentationTask;let o=Promise.resolve().then(()=>t.send(t.text));t.presentationTask=o;try{await o,t.deliveryCompleted=!0,t.inactive?t.closedOutcome&&!t.resolutionNotified&&(t.resolutionNotified=!0,await t.send(BQ(t.closedOutcome)).catch(()=>{})):t.presented=!0}finally{t.presentationTask===o&&(t.presentationTask=null)}}async#i(t,o){t.submitting=!0;try{await t.interaction.respond(Px(t,o))}catch(a){if(a?.code==="interaction-not-pending"){let A=t.send,r=this.#s(t);await this.#a(r,async()=>{t.resolutionNotified||await A(w(wp)).catch(()=>{})});return}if(t.inactive)return;t.submitting=!1,this.#A.error?.(`[dsh-im:${this.#e}] failed to submit an approval:`,a),await t.send(w("\u5BA1\u6279\u63D0\u4EA4\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u56DE\u590D\u300C\u6279\u51C6\u300D\u6216\u300C\u62D2\u7EDD\u300D\u3002")).catch(()=>{});return}let i=t.send,e=this.#s(t);await this.#a(e,async()=>{t.resolutionNotified||await i(BQ(o)).catch(()=>{})})}async#a(t,o){let i,e=new Promise(a=>{i=a});t&&(t.activationTask=e);try{await o()}finally{i(),t?.activationTask===e&&(t.activationTask=null)}await this.#n(t)}async#n(t){if(t)try{await this.#o(t)}catch(o){this.#A.error?.(`[dsh-im:${this.#e}] failed to present the next approval:`,o);try{t.interaction.reconnect?.()}catch{}}}#s(t){if(t.inactive)return null;t.inactive=!0,this.#p(t.key),this.#t.delete(t.approvalId);let o=this.#r.get(t.key);if(!o)return null;let i=o.items[0]===t,e=o.items.indexOf(t);return e!==-1&&o.items.splice(e,1),o.items.length===0?(this.#r.delete(t.key),null):i?o.items[0]:null}#p(t){let o=Date.now();for(let[i,e]of this.#l)e<=o&&this.#l.delete(i);for(this.#l.delete(t),this.#l.set(t,o+ppe);this.#l.size>dpe;)this.#l.delete(this.#l.keys().next().value)}async#c(t,o){try{return await t.respond({ok:!0,value:{sessionId:t.sessionId,approvalId:o.approvalId,outcome:"rejected"}},{signal:AbortSignal.timeout(5e3)}),!0}catch(i){if(i?.code==="interaction-not-pending")return!1;throw i}}};var $M=new WeakMap;function Cpe(n){let t=$M.get(n);return t||(t=new Map,$M.set(n,t)),t}async function ag(n,t,o){let i=typeof n;if(i!=="object"&&i!=="function"||n===null)throw new TypeError("state is required");if(typeof t!="string"||!t)throw new TypeError("conversation key is required");if(typeof o!="function")throw new TypeError("operation is required");let e=Cpe(n),a=e.get(t)??Promise.resolve(),A,r=new Promise(s=>{A=s});e.set(t,r),await a;try{return await o()}finally{A(),e.get(t)===r&&(e.delete(t),e.size===0&&$M.delete(n))}}var upe=/(?:\u001b\]|\u009d)(?:(?!\u0007|\u001b\\)[\s\S])*(?:\u0007|\u001b\\|$)/gu,Bpe=/(?:\u001b\[|\u009b)[0-?]*[ -/]*[@-~]/gu,fpe=/\u001b[@-_]/gu,Qpe=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f-\u009f]/gu,ype=/[\u200b\u200e\u200f\u202a-\u202e\u2060-\u2064\u2066-\u206f\ufeff]/gu,mpe=/^(?:[\s\S]*?<\/dsh_im_source>\s*)?(?:[\s\S]*?<\/dsh_im_source_guidance>\s*)?/u,Spe=new Intl.Segmenter(void 0,{granularity:"grapheme"});function e_(n){return n.replace(upe,"").replace(Bpe,"").replace(fpe,"").replace(Qpe,"").replace(ype,"").replace(/\s+/gu," ").trim()}function A_(n,t=60){if(Buffer.byteLength(n,"utf8")<=t)return n;let o="\u2026",i=t-Buffer.byteLength(o,"utf8"),e="";for(let{segment:a}of Spe.segment(n)){if(Buffer.byteLength(e+a,"utf8")>i)break;e+=a}return`${e.trimEnd()}${o}`}function wpe(n){return typeof n=="string"?n:Array.isArray(n)?n.filter(t=>t?.type==="text"&&typeof t.text=="string").map(t=>t.text).join(` `):""}function Dpe(n){let t=n?.name??n?.filename??n?.fileName;return typeof t!="string"?"":t.replaceAll("\\","/").split("/").at(-1)?.replace(/[\u0000-\u001f\u007f]/gu,"").trim()??""}function Fx({text:n,content:t,files:o}={}){let i=typeof n=="string"?e_(n):"";if(i)return A_(i);let e=e_(wpe(t).replace(mpe,""));if(e)return A_(e);let a=Array.isArray(o)?o.map(Dpe).find(Boolean):"",A=a?e_(a):"";return A?A_(A):null}var ua="workspace-session-stale";function Lx(n,t){if(typeof n.workspaceSession=="function")return n.workspaceSession(t);let o={sessionId:t,sessionExists:(...i)=>n.sessionExists(t,...i),models:(...i)=>n.getSessionModels(t,...i),selectModel:(...i)=>n.selectSessionModel(t,...i),isRunning:(...i)=>n.isSessionRunning(t,...i),hasActiveTurn:(...i)=>n.hasActiveTurn(t,...i),stopActiveTurn:(...i)=>n.stopActiveTurn(t,...i),steerActiveTurn:(...i)=>n.steerActiveTurn(t,...i),ask:(...i)=>n.ask(t,...i)};return typeof n.renameSession=="function"&&(o.renameTitle=(...i)=>n.renameSession(t,...i)),Object.freeze(o)}async function Ope(n,t){return t===void 0?n.sessionExists():n.sessionExists(t)}async function bpe(n,t){return t===void 0?n.createSession():n.createSession(t)}async function Oi({harness:n,state:t,key:o,text:i,content:e,contextEnhanced:a=!1,createOptions:A,existsOptions:r,askOptions:s}){let g=a?Fx({text:i,content:e,files:typeof s=="object"?s?.files:void 0}):null,c=A?.signal??(typeof s=="object"?s?.signal:void 0),I=c?{signal:c}:void 0;for(;;)try{let d=await ag(t,o,async()=>{let m=t.sessionFor(o),_=m?Lx(n,m):null;if(!_||!await Ope(_,r)){if(m=await bpe(n,A),await t.setSession(o,m)===!1)return null;if(_=Lx(n,m),g&&typeof _.renameTitle=="function")try{await _.renameTitle(g,I)}catch(T){if(T?.code===ua||I?.signal?.aborted)throw T;console.warn("[dsh-im] unable to set the initial Session title:",T?.message??T)}}return{sessionId:m,session:_}});if(!d)continue;let B=[],f=typeof s=="object"&&typeof s?.onArtifact=="function"?s.onArtifact:null,Q=typeof s=="number"?{timeoutMs:s}:{...s};Q.onArtifact=async m=>{B.push(m),await f?.(m)};let y=await d.session.ask(e??i,Q);return{sessionId:d.sessionId,answer:y,...B.length>0?{artifacts:B}:{}}}catch(d){if(d?.code!==ua)throw d}}var Hx=/^\/compact(?=$|\s)([\s\S]*)$/i,Mpe="\u7528\u6CD5\uFF1A/compact\uFF08\u4E0D\u5E26\u53C2\u6570\uFF09",Ux=new Map([["No compactable history yet.","\u6682\u65E0\u53EF\u538B\u7F29\u7684\u5386\u53F2\u8BB0\u5F55\u3002"],["Compaction is unavailable because this process has an active compaction, or the agent is not idle.","\u5F53\u524D\u4F1A\u8BDD\u6B63\u5728\u751F\u6210\u56DE\u590D\u6216\u6267\u884C\u538B\u7F29\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"],["Compaction cancelled.","\u4E0A\u4E0B\u6587\u538B\u7F29\u5DF2\u53D6\u6D88\u3002"],["The history selected for compaction changed before it could be replaced. The conversation is unchanged; the attempt is recorded in the session log.","\u538B\u7F29\u671F\u95F4\u4F1A\u8BDD\u5386\u53F2\u53D1\u751F\u53D8\u5316\uFF0C\u672C\u6B21\u672A\u4FEE\u6539\u4F1A\u8BDD\uFF0C\u8BF7\u91CD\u8BD5\u3002"],["Compaction could not produce a useful summary. The conversation is unchanged; the attempt is recorded in the session log.","\u672A\u80FD\u751F\u6210\u6709\u6548\u7684\u538B\u7F29\u6458\u8981\uFF0C\u672C\u6B21\u672A\u4FEE\u6539\u4F1A\u8BDD\u3002"],["Compaction did not finish cleanly; some session history may have changed. Inspect the current session state before retrying.","\u4E0A\u4E0B\u6587\u538B\u7F29\u672A\u6B63\u5E38\u5B8C\u6210\uFF0C\u90E8\u5206\u4F1A\u8BDD\u5386\u53F2\u53EF\u80FD\u5DF2\u53D8\u5316\uFF0C\u8BF7\u68C0\u67E5\u4F1A\u8BDD\u540E\u518D\u91CD\u8BD5\u3002"],["Compaction finished, but the session could not be saved.","\u4E0A\u4E0B\u6587\u5DF2\u538B\u7F29\uFF0C\u4F46\u4F1A\u8BDD\u4FDD\u5B58\u5931\u8D25\u3002"]]);function NI(n){return{handled:!0,message:n,messages:[n]}}function _pe(n){if(!n||typeof n!="object"||!["success","error"].includes(n.kind)||n.text!==void 0&&typeof n.text!="string")throw new TypeError("Harness returned an invalid /compact result");let t=n.text?.trim()??"",o=/^Compacted (\d+) history items \(~(\d+) tokens\)\.$/u.exec(t);return o?w("\u5DF2\u538B\u7F29 {count} \u6761\u5386\u53F2\u8BB0\u5F55\uFF08\u7EA6 {tokens} \u4E2A token\uFF09\u3002",{count:o[1],tokens:o[2]}):Ux.has(t)?w(Ux.get(t)):t||(n.kind==="success"?w("\u4E0A\u4E0B\u6587\u538B\u7F29\u5B8C\u6210\u3002"):w("\u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25\u3002"))}function Tpe(n){let t=n?.code??n?.failure?.code;return t==="session-not-found"?w("\u5F53\u524D\u804A\u5929\u7ED1\u5B9A\u7684\u4F1A\u8BDD\u5DF2\u4E0D\u5B58\u5728\uFF0C\u8BF7\u53D1\u9001\u65B0\u6D88\u606F\u5F00\u542F\u4F1A\u8BDD\u3002"):t==="agent-busy"?w("\u5F53\u524D\u4F1A\u8BDD\u6B63\u5728\u751F\u6210\u56DE\u590D\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"):t==="cancelled"||n?.name==="AbortError"?w("\u4E0A\u4E0B\u6587\u538B\u7F29\u5DF2\u53D6\u6D88\u3002"):t===ua||t==="workspace-bot-not-found"?w("\u5DE5\u4F5C\u533A\u6216\u673A\u5668\u4EBA\u72B6\u6001\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u91CD\u8BD5\u3002"):t==="commands-unavailable"?w("\u5F53\u524D Harness \u6682\u4E0D\u652F\u6301\u4ECE\u673A\u5668\u4EBA\u6267\u884C\u4E0A\u4E0B\u6587\u538B\u7F29\u3002"):w("\u4E0A\u4E0B\u6587\u538B\u7F29\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002")}async function bi(n,t,o,i,e={}){if(!t_(n))return null;if(Hx.exec(n.trim())[1].trim())return NI(w(Mpe));if(typeof o?.sessionFor!="function")return NI(w("\u5F53\u524D\u673A\u5668\u4EBA\u6CA1\u6709\u53EF\u7528\u7684\u4F1A\u8BDD\u72B6\u6001\u3002"));let A=o.sessionFor(i);if(typeof A!="string"||!A)return NI(w("\u5F53\u524D\u804A\u5929\u8FD8\u6CA1\u6709\u53EF\u538B\u7F29\u7684\u4F1A\u8BDD\uFF0C\u8BF7\u5148\u53D1\u9001\u4E00\u6761\u6D88\u606F\u3002"));if(typeof t?.executeCommand!="function")return NI(w("\u5F53\u524D\u673A\u5668\u4EBA\u6682\u4E0D\u652F\u6301\u4E0A\u4E0B\u6587\u538B\u7F29\u3002"));try{let r=await t.executeCommand(A,"/compact",e);return NI(r===void 0?w("\u5F53\u524D Harness \u672A\u6CE8\u518C /compact \u547D\u4EE4\uFF0C\u8BF7\u786E\u8BA4\u4E0A\u4E0B\u6587\u538B\u7F29\u7EC4\u4EF6\u5DF2\u542F\u7528\u3002"):_pe(r?.result))}catch(r){return NI(Tpe(r))}}function t_(n){return typeof n=="string"&&Hx.test(n.trim())}import{isDeepStrictEqual as Ype}from"node:util";import{realpath as Yx,stat as jx}from"node:fs/promises";import{isAbsolute as Jx,resolve as Npe}from"node:path";var qx=/^\/workspace(?:\s+([\s\S]+))?$/i,zx=/^\/workspacelist(?:\s+([\s\S]+))?$/i,Vx=/^\/(?:sessionlist|sessions)(?:\s+([\s\S]+))?$/i,Wx=/^\/session(?=$|\s)/i,Rpe=/^\/session[ \t]+([^\s]+)$/i,kpe=4096,vpe=1800,Ppe=256,Zx=/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u,Gpe=/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]+/gu,Xx="\u7528\u6CD5\uFF1A/session Session ID \u6216\u5F53\u524D\u5DE5\u4F5C\u533A\u5E8F\u53F7\uFF08/session N\uFF09",Dp=["\u7528\u6CD5\uFF1A","/sessionlist \u5217\u51FA\u5F53\u524D\u5DE5\u4F5C\u533A\u4F1A\u8BDD","/sessionlist \u5DE5\u4F5C\u533A\u5E8F\u53F7 \u6309 /workspacelist \u5E8F\u53F7\u5217\u51FA\u4F1A\u8BDD","/sessionlist \u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84 \u5217\u51FA\u6307\u5B9A\u5DE5\u4F5C\u533A\u4F1A\u8BDD"].join(` @@ -222,10 +222,10 @@ ${o}`:o}function ko(n){return n instanceof Ro?n.userMessage:null}import{createHa `),s=[];if(e==="picture"){let c=b_(a);c&&s.push(c)}else if(e==="richtext")for(let c of A){if(String(c?.type??"").toLowerCase()!=="picture")continue;let I=b_(c);I&&s.push(I)}let g=e==="file"?b_(a):null;return{content:r,images:s.map((c,I)=>({name:I===0?"image":`image-${I+1}`,load:({signal:d,maxBytes:B})=>{if(typeof t?.downloadImage!="function")throw new Error("DingTalk API does not support image downloads");return t.downloadImage({clientId:o,clientSecret:i,robotCode:n?.robotCode,downloadCode:c,signal:d,maxBytes:B})}})),files:g?[{name:mt(a?.fileName??a?.file_name)??"file",load:({signal:c}={})=>{if(typeof t?.downloadFile!="function")throw new Error("DingTalk API does not support file downloads");return t.downloadFile({clientId:o,clientSecret:i,robotCode:n?.robotCode,downloadCode:g,signal:c})}}]:[]}}function EEe(n,t){if(String(n?.conversationType)==="2"){let o=mt(n?.conversationId);if(!o)throw new Error("DingTalk group message has no conversation id");return`group:${o}`}return`p2p:${t}`}function CEe(n,t){return String(n?.conversationType)==="2"?{type:"group",openConversationId:mt(n?.conversationId),atUserIds:{[t]:mt(n?.senderNick)??t}}:{type:"user",userId:t}}function uEe(n,t,o){let i=mt(n?.robotCode)??o;return String(n?.conversationType)==="2"?{type:"group",openConversationId:mt(n?.conversationId),robotCode:i}:{type:"user",userId:t,robotCode:i}}function BEe(n,t){let o=String(n??w("\u7ED3\u679C\u6587\u4EF6")).replace(/[\r\n]+/g," ").trim()||w("\u7ED3\u679C\u6587\u4EF6");switch(t?.code){case"artifact-delivery-uncertain":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u53D1\u9001\u7ED3\u679C\u672A\u80FD\u786E\u8BA4\uFF0C\u8BF7\u5148\u68C0\u67E5\u804A\u5929\u5185\u662F\u5426\u5DF2\u6536\u5230\uFF0C\u4E0D\u8981\u7ACB\u5373\u91CD\u8BD5\u3002",{name:o});case"artifact-permission-required":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u9489\u9489\u5E94\u7528\u6216\u673A\u5668\u4EBA\u7F3A\u5C11\u6587\u4EF6\u6D88\u606F\u6743\u9650\u3002\u8BF7\u5F00\u901A\u5E94\u7528 qyapi_base \u6743\u9650\uFF0C\u5E76\u786E\u8BA4\u673A\u5668\u4EBA\u5177\u5907\u6587\u4EF6\u6D88\u606F\u53D1\u9001\u80FD\u529B\u3002",{name:o});case"artifact-too-large":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u8D85\u8FC7\u5F53\u524D\u9489\u9489\u673A\u5668\u4EBA\u53EF\u53D1\u9001\u7684\u6587\u4EF6\u5927\u5C0F\uFF0C\u672A\u53D1\u9001\u3002",{name:o});case"artifact-rate-limited":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u88AB\u9489\u9489\u9650\u6D41\uFF0C\u672A\u80FD\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:o});case"artifact-provider-rejected":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u9489\u9489\u62D2\u7EDD\u4E86\u8BE5\u6587\u4EF6\u6D88\u606F\uFF0C\u8BF7\u68C0\u67E5\u6587\u4EF6\u7C7B\u578B\u548C\u673A\u5668\u4EBA\u6587\u4EF6\u6D88\u606F\u914D\u7F6E\u3002",{name:o});case"artifact-invalid":case"artifact-changed":case"artifact-unavailable":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6\u6216\u51C6\u5907\u53D1\u9001\uFF0C\u8BF7\u786E\u8BA4\u6587\u4EF6\u4ECD\u53EF\u8BBF\u95EE\u540E\u91CD\u8BD5\u3002",{name:o});default:return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u6682\u65F6\u672A\u80FD\u901A\u8FC7\u9489\u9489\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:o})}}function fEe(n){return n?.type==="text"&&mt(n.text)?n.text:n?.type==="tool"?n.name==="web_search"?w("_\u6B63\u5728\u641C\u7D22\u7F51\u7EDC\u5E76\u6574\u7406\u4FE1\u606F\u2026_"):w("_\u6B63\u5728\u4F7F\u7528 {name}\u2026_",{name:mt(n.name)??w("\u5DE5\u5177")}):w("_{text}_",{text:mt(n?.text)??w("\u6B63\u5728\u5904\u7406\u2026")})}function QEe(n,t,o){if(t.needsPresentation||!t.questions[t.index]||t.actor!==o||String(n?.conversationType)==="2"&&n?.isInAtList!==!0||n?.msgtype!=="text"||!mt(n?.text?.content))return!1;try{return gc(n.sessionWebhook),!0}catch{return!1}}function yEe(n){n.stats??={};for(let t of["messagesReceived","messagesReplied","messagesRejected","messagesIgnored","reactionsAdded","reactionsRemoved","reactionErrors"])n[t]??=0,n.stats[t]=n[t];n.pendingSenders??=[]}function Lr(n,t){n[t]=(n[t]??0)+1,n.stats??={},n.stats[t]=n[t]}function __({pendingSenders:n=[]}={}){return{messagesReceived:0,messagesReplied:0,messagesRejected:0,messagesIgnored:0,reactionsAdded:0,reactionsRemoved:0,reactionErrors:0,lastMessageAt:null,lastReplyAt:null,lastRejectedAt:null,lastError:null,lastMessageError:null,pendingSenders:structuredClone(n),stats:{messagesReceived:0,messagesReplied:0,messagesRejected:0,messagesIgnored:0,reactionsAdded:0,reactionsRemoved:0,reactionErrors:0}}}var TQ=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c;#g;#I=new Map;#d=new Map;#h=new Map;#C=new Set;#u=new Set;#B=new Map;#f;#Q=new Ti;constructor({api:t,clientId:o,clientSecret:i,harness:e,state:a,contextEnhancement:A,accessPolicy:r,status:s=__(),logger:g=console,replyTimeoutMs:c=6e5,reactionTimeoutMs:I=5e3,maxMessageChars:d=4e3,signal:B}){if(!t||typeof t.sendText!="function")throw new TypeError("DingTalk API is required");if(!mt(o)||!mt(i))throw new TypeError("DingTalk app credentials are required");if(!e||!a)throw new TypeError("Harness client and state store are required");this.#e=t,this.#A=o.trim(),this.#t=i.trim(),this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#f=new Di({label:"DingTalk",logger:g}),this.#s=c,this.#p=Number.isFinite(I)&&I>0?Math.floor(I):5e3,this.#c=d,this.#g=B,yEe(this.#a),this.#U()}get status(){return this.#U(),structuredClone(this.#a)}accept(t,{contextSnapshot:o}={}){if(this.#g?.aborted)return Promise.resolve();let i=mt(t?.msgId),e=o1(t);if(!i||!e||this.#l.hasSeen(i)||this.#B.has(i))return Promise.resolve();let a=String(t.conversationType)==="2"?"group":String(t.conversationType)==="1"?"direct":null,A;try{A=EEe(t,e)}catch{return Lr(this.#a,"messagesRejected"),this.#a.lastRejectedAt=new Date().toISOString(),Promise.resolve()}let r=null;try{r=gc(t.sessionWebhook)}catch{}let s=this.#d.get(A),g=M_(t,{api:this.#e,clientId:this.#A,clientSecret:this.#t}),c=mt(g.content)??"",I=String(t.conversationType)!=="2"||t?.isInAtList===!0,d=String(t.conversationType)!=="2";if(I){let T=fa(this.#i,{conversationType:a,senderIds:e,text:c,hasImages:Tt(g),hasFiles:wt(g)});if(!T.allowed)return this.#B.set(i,null),this.#T(t,i,r,T)}this.#B.set(i,o===void 0?Aa(this.#o,a):o),r&&d&&So(this.#l,{sessionWebhook:r});let B=r&&I?this.#y(t):null,f=T=>Promise.resolve(T).then(R=>(this.#m(B,this.#g?.aborted?"clear":"success"),R),R=>{throw this.#m(B,this.#g?.aborted||R?.name==="AbortError"||R?.code==="turn-stopped"?"clear":"error"),R}),Q=String(t?.msgtype).toLowerCase()==="text"&&Ni(c),y=this.#Q.status(A);if(Q&&!d&&r&&I)return f(this.#N(i,r,{message:es()},B));if(d&&r&&(Q||y.phase==="collecting")){let R=/^\/batch$/iu.test(c)&&y.phase==="idle"&&(this.#I.has(A)||s||this.#f.hasPending(A))?{handled:!0,kind:"busy",message:No()}:this.#Q.handle(A,c,{plainText:!!c&&String(t?.msgtype).toLowerCase()==="text"&&!wt(g)&&!Tt(g)});if(R.handled)return R.kind==="submit"?f(this.#D({...t,msgtype:"text",text:{content:R.prompt}},i,e,A,{batchSubmission:R,statusReaction:B})):f(this.#N(i,r,R,B))}let m=Fa(c)?Ao:wt(g)?null:ni(c)?Mi:si(c)?to:gi(c)?_i:null;if(m&&r&&I){let T;return T=this.#E(t,i,A,r,g,m).catch(R=>{if(R?.code==="turn-stopped"||this.#g?.aborted){this.#m(B,"clear");return}this.#m(B,"error"),this.#a.lastError=R?.message??String(R);let K=At(this.#a,R);return this.#n.error?.(`[dsh-dingtalk] failed to process a command [${K.referenceId}]`,_Q(R)),this.#v(r,dt(K),this.#L(t)).catch(()=>{})}).finally(()=>{this.#B.delete(i),this.#u.delete(T)}),this.#u.add(T),f(T)}let _=this.#f.claimReply({key:A,actor:e,messageId:i,text:r&&t?.msgtype==="text"?mt(t?.text?.content)??"":"",addressed:String(t?.conversationType)!=="2"||t?.isInAtList===!0,hasPendingQuestion:!!s,questionCompletion:s?.submitting||s?.claimedReplyMessageId?s.queue:null,isQuestionPending:()=>this.#d.has(A),send:r?T=>this.#v(r,T,this.#L(t)):async()=>{}});if(_){let T;return T=_.process(async()=>this.#l.hasSeen(i)?!1:(await this.#l.markSeen(i),Lr(this.#a,"messagesReceived"),this.#a.lastMessageAt=new Date().toISOString(),r||(Lr(this.#a,"messagesRejected"),this.#a.lastRejectedAt=new Date().toISOString(),this.#a.lastError=w("\u9489\u9489\u6D88\u606F\u6CA1\u6709\u5B89\u5168\u7684\u56DE\u590D\u5730\u5740\u3002")),!0)).catch(R=>{if(this.#g?.aborted){this.#m(B,"clear");return}this.#m(B,"error"),this.#a.lastError=w("\u9489\u9489\u5BA1\u6279\u5904\u7406\u5931\u8D25\u3002"),this.#n.error?.("[dsh-dingtalk] failed to process an approval reply",R)}).finally(()=>{this.#B.delete(i),this.#C.delete(T)}),this.#C.add(T),f(T)}if(s&&s.actor!==e)return f(this.#D(t,i,e,A,{statusReaction:B}));if(s?.submitting||s?.claimedReplyMessageId)return f(this.#D(t,i,e,A,{statusReaction:B}));if(s){QEe(t,s,e)&&(s.claimedReplyMessageId=i);let R=(s.queue??Promise.resolve()).catch(()=>{}).then(()=>this.#w(t,i,e,A,s,B)).finally(()=>{this.#B.delete(i),s.claimedReplyMessageId===i&&(s.claimedReplyMessageId=null),s.queue===R&&(s.queue=null)});return s.queue=R,f(R)}return f(this.#D(t,i,e,A,{statusReaction:B}))}#S(t,o,i,e){let a=new AbortController,A=Promise.resolve().then(()=>this.#e[t]({clientId:this.#A,clientSecret:this.#t,...o,reactionName:i,signal:a.signal})),r,s=new Promise((g,c)=>{r=setTimeout(()=>{let I=new DOMException("DingTalk reaction timed out","TimeoutError");a.abort(I),c(I)},this.#p),r.unref?.()});return Promise.race([A,s]).then(()=>(Lr(this.#a,e==="add"?"reactionsAdded":"reactionsRemoved"),!0)).catch(g=>(Lr(this.#a,"reactionErrors"),this.#n.debug?.(`[dsh-dingtalk] ${t} failed`,_Q(g)),!1)).finally(()=>clearTimeout(r))}#y(t){if(typeof this.#e.addReaction!="function"||typeof this.#e.recallReaction!="function")return null;let o=mt(t?.msgId),i=mt(t?.conversationId);if(!o||!i)return null;let e={messageId:o,conversationId:i,robotCode:mt(t?.robotCode)??this.#A};return{target:e,attached:this.#S("addReaction",e,TI,"add"),terminal:!1}}#m(t,o){if(!t||t.terminal)return;t.terminal=!0;let i=o==="success"?bx:o==="error"?Mx:null;t.attached.then(async e=>{let a=await this.#S("recallReaction",t.target,TI,"remove");(!e||!a)&&(await new Promise(A=>{setTimeout(A,Math.min(1e3,this.#p)).unref?.()}),a=await this.#S("recallReaction",t.target,TI,"remove")||a),!(!a||!i||this.#g?.aborted)&&await this.#S("addReaction",t.target,i,"add")}).catch(()=>{})}#D(t,o,i,e,{releaseMessageId:a=!0,alreadyRecorded:A=!1,batchSubmission:r=null,statusReaction:s=null}={}){let g=!1;try{gc(t.sessionWebhook),g=!0}catch{}let c=String(t.conversationType)!=="2"||t.isInAtList===!0,I=g&&c?kp(M_(t,{api:this.#e,clientId:this.#A,clientSecret:this.#t}),{signal:this.#g}):void 0,B=(this.#I.get(e)??Promise.resolve()).catch(()=>{}).then(()=>this.#O(t,o,i,e,{alreadyRecorded:A,preparedMessage:I,batchSubmission:r,statusReaction:s})).finally(()=>{a&&this.#B.delete(o),this.#I.get(e)===B&&this.#I.delete(e)});return this.#I.set(e,B),B}async waitForIdle(){await Promise.allSettled([...this.#I.values(),...[...this.#d.values()].flatMap(t=>t.queue?[t.queue]:[]),...this.#C,...this.#u])}async#E(t,o,i,e,a,A){if(this.#g?.throwIfAborted(),this.#l.hasSeen(o))return;await this.#l.markSeen(o),Lr(this.#a,"messagesReceived"),this.#a.lastMessageAt=new Date().toISOString();let r=await A(mt(a.content)??"",this.#r,this.#l,i,{signal:this.#g,isDirect:String(t.conversationType)==="1",hasImages:Tt(a),hasFiles:wt(a),pendingInteraction:this.#d.has(i)||this.#f.hasPending(i),control:{owner:this,key:i}});r?.stopped&&await Promise.allSettled([this.#H(i),this.#f.closeRoute(i)]);for(let s of r?.messages??[r?.message])s&&await this.#v(e,s,this.#L(t));this.#a.lastError=null}#N(t,o,i,e){let a;return a=Promise.resolve().then(async()=>{this.#l.hasSeen(t)||(await this.#l.markSeen(t),Lr(this.#a,"messagesReceived"),this.#a.lastMessageAt=new Date().toISOString(),i.message&&await this.#v(o,i.message),this.#a.lastError=null)}).catch(async A=>{if(this.#g?.aborted){this.#m(e,"clear");return}this.#m(e,"error"),this.#a.lastError=A?.message??String(A);let r=At(this.#a,A);this.#n.error?.(`[dsh-dingtalk] failed to process a batch input message [${r.referenceId}]`,_Q(A)),await this.#v(o,dt(r)).catch(()=>{})}).finally(()=>{this.#B.delete(t),this.#u.delete(a)}),this.#u.add(a),a}#T(t,o,i,e){let a;return a=Promise.resolve().then(async()=>{this.#l.hasSeen(o)||(await this.#l.markSeen(o),e.reason==="command-not-allowed"&&i?(Lr(this.#a,"messagesReceived"),this.#a.lastMessageAt=new Date().toISOString(),await this.#v(i,w(ao),this.#L(t)),Lr(this.#a,"messagesReplied"),this.#a.lastReplyAt=new Date().toISOString()):(Lr(this.#a,"messagesRejected"),this.#a.lastRejectedAt=new Date().toISOString()),this.#a.lastError=null)}).catch(A=>{this.#g?.aborted||(this.#a.lastError=A?.message??String(A),this.#n.error?.("[dsh-dingtalk] failed to apply inbound access policy",A))}).finally(()=>{this.#B.delete(o),this.#u.delete(a)}),this.#u.add(a),a}async#O(t,o,i,e,{alreadyRecorded:a=!1,preparedMessage:A,batchSubmission:r=null,statusReaction:s=null}={}){if(this.#g?.throwIfAborted(),!a){if(this.#l.hasSeen(o))return;await this.#l.markSeen(o),Lr(this.#a,"messagesReceived"),this.#a.lastMessageAt=new Date().toISOString()}if(String(t.conversationType)==="2"&&t.isInAtList!==!0){Lr(this.#a,"messagesIgnored");return}let g;try{g=gc(t.sessionWebhook)}catch{Lr(this.#a,"messagesRejected"),this.#a.lastRejectedAt=new Date().toISOString(),this.#a.lastError=w("\u9489\u9489\u6D88\u606F\u6CA1\u6709\u5B89\u5168\u7684\u56DE\u590D\u5730\u5740\u3002");return}let c=A??M_(t,{api:this.#e,clientId:this.#A,clientSecret:this.#t}),I=c.content,d=Tt(c),B=wt(c),f=String(t?.msgtype).toLowerCase()==="text",Q=null,y=!1,m=r===null;try{if(!I&&!d&&!B){await this.#v(g,w("\u76EE\u524D\u652F\u6301\u6587\u5B57\u3001\u56FE\u7247\u548C\u6587\u4EF6\u6D88\u606F\u3002"),this.#L(t));return}let _=I.toLowerCase();if(f&&!d&&!B&&_==="/help"){await this.#v(g,cEe(),this.#L(t));return}if(f&&!d&&!B&&_==="/status"){await this.#r.ensureRunning({signal:this.#g}),await this.#v(g,w("\u9489\u9489\u673A\u5668\u4EBA\u4E0E DeepSeek Harness \u8FDE\u63A5\u6B63\u5E38\u3002"),this.#L(t));return}if(f&&!d&&!B&&_==="/new"){await this.#l.clearSession(e),await this.#v(g,w("\u5DF2\u5F00\u542F\u65B0\u4F1A\u8BDD\u3002\u8BF7\u53D1\u9001\u4F60\u7684\u95EE\u9898\u3002"),this.#L(t));return}let T=f&&!d&&!B?await Mo(I,this.#r,e):null;if(T){for(let k of T.messages??[T.message])await this.#v(g,k,this.#L(t));return}let R=f&&!d&&!B?await bi(I,this.#r,this.#l,e,{signal:this.#g}):null;if(R){await this.#v(g,R.message,this.#L(t));return}let K=d?await Oo(c,{signal:this.#g}):void 0,L=this.#B.get(o),U=!1;if(L){let k=K??I;K=To(k,L,()=>({channel:"dingtalk",senderId:i,senderName:t.senderNick,conversationTitle:t.conversationTitle})),U=K!==k}typeof this.#e.createAiCard=="function"&&typeof this.#e.updateAiCard=="function"&&typeof this.#e.finishAiCard=="function"&&(Q=kx({api:this.#e,clientId:this.#A,clientSecret:this.#t,target:CEe(t,i),signal:this.#g,logger:this.#n}),y=await Q.start(w(sEe)));let{answer:z,artifacts:q=[]}=await Oi({harness:this.#r,state:this.#l,key:e,text:I,content:K,contextEnhanced:U,createOptions:{signal:this.#g},existsOptions:{signal:this.#g},askOptions:{timeoutMs:this.#s,signal:this.#g,control:{owner:this,key:e},onUpdate:y?k=>Q.push(fEe(k)):void 0,onInteraction:k=>this.#R(k,{key:e,actor:i,sessionWebhook:g,requiresMention:String(t.conversationType)==="2"}),onInteractionResolved:k=>this.#_(k),files:c.files}});r&&(this.#Q.complete(e,r.token),m=!0);let x=typeof z=="string"&&z.trim()?z:q.length>0?w("\u7ED3\u679C\u6587\u4EF6\u5DF2\u751F\u6210\u3002"):z,G=null,V=null,F=!1;try{F=y&&await Q.finish(x),F?V=Zt({deliveryId:o,presentation:"dingtalk-card"}):V=Zt({deliveryId:o,presentation:"dingtalk-text",providerMessageIds:await this.#v(g,x,this.#L(t))})}catch(k){G=va(k)}let N=await this.#K(uEe(t,i,this.#A),g,o,q,V);if(G&&!N.userVisible)throw G;return G&&N.artifactSendErrors===0&&At(this.#a,G),Lr(this.#a,"messagesReplied"),this.#a.lastReplyAt=new Date().toISOString(),this.#a.lastError=null,!G&&N.artifactSendErrors===0&&wo(this.#a),N.receipt}catch(_){let T=null;if(!m&&r&&(_?.code==="turn-stopped"?this.#Q.complete(e,r.token):T=this.#Q.fail(e,r.token).message??null,m=!0),_?.code==="turn-stopped"){this.#m(s,"clear"),y&&await Q.finish(w("\u5DF2\u505C\u6B62\u3002")).catch(()=>{});return}if(this.#g?.aborted){this.#m(s,"clear");return}this.#m(s,"error"),this.#a.lastError=_?.message??String(_);let R=ko(_)??lEe(_),K=At(this.#a,_,{userMessage:R,reason:eo(_)?.reason});this.#n.error?.(`[dsh-dingtalk] failed to process an inbound message [${K.referenceId}]`,_Q(_));try{let L=dt(K),U=T?`${L} ${T}`:L;y&&await Q.finish(U)||await this.#v(g,U,this.#L(t))}catch{this.#n.error?.("[dsh-dingtalk] failed to send the safe error reply")}}finally{await this.#H(e),await this.#f.closeRoute(e)}}async#w(t,o,i,e,a,A){this.#g?.throwIfAborted();let r=this.#d.get(e),s=a.claimedReplyMessageId===o;if(!r||r!==a||r.submitting)return s&&(!r||r!==a)?this.#k(t,o):this.#D(t,o,i,e,{releaseMessageId:!1,statusReaction:A});if(this.#l.hasSeen(o))return;if(await this.#l.markSeen(o),Lr(this.#a,"messagesReceived"),this.#a.lastMessageAt=new Date().toISOString(),String(t.conversationType)==="2"&&t.isInAtList!==!0){Lr(this.#a,"messagesIgnored");return}let g;try{g=gc(t.sessionWebhook)}catch{Lr(this.#a,"messagesRejected"),this.#a.lastRejectedAt=new Date().toISOString(),this.#a.lastError=w("\u9489\u9489\u6D88\u606F\u6CA1\u6709\u5B89\u5168\u7684\u56DE\u590D\u5730\u5740\u3002");return}let c=t?.msgtype==="text"?mt(t?.text?.content):null;if(!c){try{await this.#v(g,w("\u8BF7\u7528\u6587\u5B57\u56DE\u7B54\u5F53\u524D\u95EE\u9898\u3002"),this.#L(t))}catch{this.#n.error?.("[dsh-dingtalk] failed to reject a non-text interaction reply")}return}let I=this.#d.get(e);if(!I||I!==a||I.submitting){if(s&&(!I||I!==a)){try{await this.#v(g,w(O_),this.#L(t))}catch{this.#n.error?.("[dsh-dingtalk] failed to send an expired interaction notice")}return}return this.#D(t,o,i,e,{releaseMessageId:!1,alreadyRecorded:!0,statusReaction:A})}if(I.sessionWebhook=g,I.needsPresentation){try{await this.#G(I)}catch{this.#m(A,"error"),this.#a.lastError=w("\u9489\u9489\u4EA4\u4E92\u95EE\u9898\u53D1\u9001\u5931\u8D25\u3002"),this.#n.error?.("[dsh-dingtalk] failed to retry an interaction question"),I.interaction.reconnect?.()}return}let d=I.questions[I.index];if(d){if(I.answers.push(wi(d,c)),I.index+=1,I.indexthis.#v(e,c)})||t?.kind!=="question")return;let A=t?.payload?.questions,r=typeof t?.interactionId=="string"?t.interactionId:t?.rpcId;if(typeof t.rpcId!="string"||typeof r!="string"||typeof t.sessionId!="string"||!Array.isArray(A)||A.length===0||A.some(c=>!mi(c))){this.#n.warn?.("[dsh-dingtalk] ignored an invalid Harness question interaction");return}if(t.recovered===!0){await t.respond({ok:!1,error:{code:"cancelled",message:"DingTalk safely cancelled an interaction left by an earlier client.",details:{}}});try{await this.#v(e,w("\u68C0\u6D4B\u5230\u8FD9\u4E2A Session \u4E2D\u9057\u7559\u7684\u5F85\u56DE\u7B54\u95EE\u9898\uFF0C\u5DF2\u5B89\u5168\u53D6\u6D88\u5E76\u7EE7\u7EED\u5904\u7406\u4F60\u521A\u624D\u7684\u6D88\u606F\u3002"))}catch{this.#n.error?.("[dsh-dingtalk] failed to send an interaction recovery notice")}return}let s=this.#d.get(o);if(s?.interactionId===r){s.interaction=t,s.needsPresentation&&await this.#G(s);return}if(this.#h.has(r))return;if(s){this.#n.warn?.("[dsh-dingtalk] cancelled a second pending Harness question"),await t.respond({ok:!1,error:{code:"cancelled",message:"DingTalk is already handling another user interaction.",details:{}}});return}let g={kind:"question",interactionId:r,sessionId:t.sessionId,interaction:t,actor:i,requiresMention:a,questions:A,answers:[],index:0,sessionWebhook:e,queue:null,claimedReplyMessageId:null,submitting:!1,needsPresentation:!0};this.#d.set(o,g),this.#h.set(g.interactionId,o),await this.#G(g)}async#_(t){if(await this.#f.handleResolved(t))return;let o=t?.interactionId;if(t?.kind!=="question"||typeof o!="string")return;let i=this.#h.get(o);i&&this.#P(i,o)}async#G(t){let o=t.questions[t.index];o&&(await this.#v(t.sessionWebhook,Si(o,t.index,t.questions.length,{requiresMention:t.requiresMention})),t.needsPresentation=!1)}async#k(t,o){if(this.#l.hasSeen(o))return;await this.#l.markSeen(o),Lr(this.#a,"messagesReceived"),this.#a.lastMessageAt=new Date().toISOString();let i;try{i=gc(t.sessionWebhook)}catch{Lr(this.#a,"messagesRejected"),this.#a.lastRejectedAt=new Date().toISOString();return}try{await this.#v(i,w(O_),this.#L(t))}catch{this.#n.error?.("[dsh-dingtalk] failed to send an expired interaction notice")}}#F(t,o){let i=this.#d.get(t);return!i||o!==void 0&&i.interactionId!==o?null:(this.#d.delete(t),this.#h.delete(i.interactionId),i)}#P(t,o){return this.#F(t,o)!==null}async#H(t){let o=this.#F(t);if(!(!o||o.kind!=="question"))try{await o.interaction.respond({ok:!1,error:{code:"cancelled",message:"The DingTalk interaction ended before the user answered.",details:{}}},{signal:AbortSignal.timeout(5e3)})}catch(i){i?.code!=="interaction-not-pending"&&this.#n.warn?.("[dsh-dingtalk] failed to cancel a pending Harness interaction")}}#U(){typeof this.#l.pendingSenders=="function"&&(this.#a.pendingSenders=this.#l.pendingSenders())}#L(t){let o=o1(t);return String(t?.conversationType)==="2"&&o?{atUserIds:[o]}:void 0}async#v(t,o,i){let e=[];for(let a of Tx(o,this.#c)){this.#g?.throwIfAborted();let A=await this.#e.sendText({clientId:this.#A,clientSecret:this.#t,sessionWebhook:t,text:a,at:i,signal:this.#g});e.push(...Ua(A))}return e}async#K(t,o,i,e,a){let A=async(s,g)=>IEe(await this.#e[s]({clientId:this.#A,clientSecret:this.#t,target:t,file:g,signal:this.#g})),r=await vo({artifacts:e,baseReceipt:a,deliveryId:i,aggregatePresentation:a?"dingtalk-text-and-files":"dingtalk-files",channelKey:"dingtalk",signal:this.#g,sendImage:typeof this.#e.sendImage=="function"?s=>A("sendImage",s):void 0,sendFile:typeof this.#e.sendFile=="function"?s=>A("sendFile",s):void 0,onFailure:(s,g)=>At(this.#a,g,{userMessage:BEe(s?.fileName,g),reason:g?.code}),sendFailureNotice:(s,g,c)=>this.#v(o,dt(c)),logger:this.#n});return this.#a.artifactsSent=(this.#a.artifactsSent??0)+r.artifactsSent,this.#a.artifactSendErrors=(this.#a.artifactSendErrors??0)+r.artifactSendErrors,{receipt:r.receipt,userVisible:r.userVisible,artifactSendErrors:r.artifactSendErrors}}};function NQ(n){return typeof n=="string"&&n.trim()?n.trim():null}function n1(n){let t=Array.isArray(n?.approvedSenders)?n.approvedSenders:n?.approvedSenders instanceof Set?[...n.approvedSenders]:[];return new Set(t.map(o=>NQ(typeof o=="string"?o:o?.staffId)).filter(Boolean))}function mEe(n){return n1(n).size}function s1(n){return n?.connected===!0||n?.socket?.readyState===1}function SEe(n,t){return new Promise((o,i)=>{if(t.aborted){i(t.reason);return}let e=()=>i(t.reason);t.addEventListener("abort",e,{once:!0}),Promise.resolve(n).then(a=>{t.removeEventListener("abort",e),o(a)},a=>{t.removeEventListener("abort",e),i(a)})})}async function wEe(n,t,o){for(;;){if(o?.throwIfAborted(),s1(n))return;await new Promise((i,e)=>{let a=setTimeout(()=>{o?.removeEventListener("abort",A),i()},t),A=()=>{clearTimeout(a),e(o.reason??new DOMException("Aborted","AbortError"))};o?.addEventListener("abort",A,{once:!0})})}}async function DEe(n,t,o,i){let e=AbortSignal.timeout(t),a=AbortSignal.any([i,e]),A=!1,r=Promise.resolve().then(()=>n.connect()).finally(()=>{A=!0});try{await SEe(r,a),await wEe(n,o,a)}catch(s){throw a.aborted?(A||r.then(()=>n.disconnect()).catch(()=>{}),i.aborted?i.reason:new Error(`DingTalk Stream handshake timed out after ${t}ms`)):s}}async function OEe({clientId:n,clientSecret:t}){let{DWClient:o,TOPIC_ROBOT:i}=await import("dingtalk-stream");return{client:new o({clientId:n,clientSecret:t,endpoint:"https://api.dingtalk.com",autoReconnect:!1,keepAlive:!0,debug:!1}),topic:i}}function bEe({pendingSenders:n=[],approvedSenders:t=0}={}){return{startedAt:null,ready:!1,dingtalkStreamState:"idle",harnessReachable:!1,lastConnectedAt:null,lastCheckedAt:null,lastCallbackAt:null,authorizationMode:"sender-staff-id-approval",approvedSenderCount:t,...__({pendingSenders:n})}}var jE=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c;#g;#I;#d=null;#h=null;#C=null;#u=null;#B=null;#f=null;#Q=new Set;constructor({config:t,clientSecret:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,logger:r=console,replyTimeoutMs:s=6e5,maxMessageChars:g=4e3,connectTimeoutMs:c=15e3,connectPollIntervalMs:I=25,api:d=Nx(),streamFactory:B=OEe}){if(!t||!NQ(t.clientId)||!NQ(o))throw new TypeError("DingtalkRuntime requires app credentials");if(!i||!e)throw new TypeError("DingtalkRuntime requires Harness and state");if(typeof B!="function")throw new TypeError("streamFactory must be a function");this.#e=t,this.#A=o.trim(),this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#s=c,this.#p=I,this.#c=d,this.#g=B,this.#I=bEe({pendingSenders:this.#y(),approvedSenders:mEe(t)})}get status(){if(this.#h){let t=this.#h.status;Object.assign(this.#I,t)}else this.#I.pendingSenders=this.#y();return structuredClone(this.#I)}pendingSender(t){return typeof this.#r.pendingSender=="function"?this.#r.pendingSender(t):null}pendingSenders(){return this.#y()}async start(){return this.#d&&this.#I.ready?this.status:this.#u?this.#u:(this.#u=this.#S().finally(()=>{this.#u=null}),this.#u)}async#S(){await this.stop();let t=new AbortController;this.#f=t;let{signal:o}=t;this.#I.startedAt=new Date().toISOString(),this.#I.dingtalkStreamState="connecting",this.#I.lastError=null;try{if(await this.#t.ensureRunning({signal:o}),this.#I.harnessReachable=!0,typeof this.#r.removePendingSenderByStaffId=="function"){for(let A of n1(this.#e))await this.#r.removePendingSenderByStaffId(A);this.#I.pendingSenders=this.#y()}this.#h=new TQ({api:this.#c,clientId:this.#e.clientId,clientSecret:this.#A,approvedSenders:this.#e.approvedSenders,harness:this.#t,state:this.#r,contextEnhancement:this.#l,accessPolicy:this.#o,status:this.#I,logger:this.#i,replyTimeoutMs:this.#a,maxMessageChars:this.#n,signal:o});let i=await this.#g({clientId:this.#e.clientId,clientSecret:this.#A});if(o.throwIfAborted(),this.#d=i?.client??i,this.#C=i?.topic??i?.TOPIC_ROBOT??"/v1.0/im/bot/messages/get",!this.#d||typeof this.#d.registerCallbackListener!="function"||typeof this.#d.connect!="function"||typeof this.#d.disconnect!="function"||typeof this.#d.socketCallBackResponse!="function")throw new TypeError("streamFactory returned an invalid DingTalk Stream client");let e=this.#d,a=this.#h;return e.registerCallbackListener(this.#C,A=>{if(this.#d!==e||this.#h!==a)return;let r=NQ(A?.headers?.messageId);if(r)try{e.socketCallBackResponse(r,{success:!0})}catch{this.#i.warn?.("[dsh-dingtalk] unable to acknowledge an inbound callback")}let s=this.#l,g;try{g=s?.getSettings?.()}catch{}let c=Promise.resolve().then(async()=>{if(this.#h!==a)return;let I;try{I=typeof A?.data=="string"?JSON.parse(A.data):A?.data}catch{this.#I.lastError=w("\u9489\u9489\u6D88\u606F\u683C\u5F0F\u65E0\u6548\u3002"),this.#i.warn?.("[dsh-dingtalk] ignored an invalid callback payload");return}if(!I||typeof I!="object")return;this.#I.lastCallbackAt=Date.now();let d=Aa({getSettings:()=>g,get botId(){return s?.botId}},I.conversationType==="1"||I.conversationType===1?"direct":I.conversationType==="2"||I.conversationType===2?"group":null);await a.accept(I,{contextSnapshot:d})}).catch(()=>{o.aborted||this.#h!==a||(this.#I.lastError=w("\u9489\u9489\u6D88\u606F\u5904\u7406\u5931\u8D25\u3002"),this.#i.error?.("[dsh-dingtalk] callback processing failed"))}).finally(()=>this.#Q.delete(c));this.#Q.add(c)}),await DEe(e,this.#s,this.#p,o),this.#I.ready=!0,this.#I.dingtalkStreamState="connected",this.#I.lastConnectedAt=Date.now(),this.#I.lastCheckedAt=Date.now(),this.#I.lastError=null,this.#B=setInterval(()=>{let A=s1(e);this.#I.ready=A,this.#I.dingtalkStreamState=A?"connected":"reconnecting",this.#I.lastCheckedAt=Date.now(),A&&(this.#I.lastError=null)},1e3),this.#B.unref?.(),this.status}catch(i){let e=o.aborted;throw this.#I.ready=!1,this.#I.dingtalkStreamState=e?"idle":"failed",this.#I.lastError=e?null:i?.message??String(i),await this.stop({preserveError:!e}),i}}async stop({preserveError:t=!1}={}){let o=t?this.#I.lastError:null,i=this.#f;this.#f=null,i?.abort(new DOMException("DingTalk runtime stopped","AbortError")),this.#B&&clearInterval(this.#B),this.#B=null,this.#I.ready=!1;let e=this.#d;if(this.#d=null,this.#C=null,e)try{await e.disconnect()}catch{this.#i.warn?.("[dsh-dingtalk] DingTalk Stream disconnect failed")}return await Promise.allSettled([...this.#Q]),this.#Q.clear(),this.#h&&await this.#h.waitForIdle(),this.#h=null,this.#I.dingtalkStreamState=t?"failed":"idle",this.#I.lastError=o,this.status}async sendConnectionTest(t){return nc({state:this.#r,text:t,channelLabel:w("\u9489\u9489\u673A\u5668\u4EBA"),send:async({sessionWebhook:o},i)=>{if(!this.#I.ready||!this.#f)throw new Error("DingTalk runtime is not connected");await this.#c.sendText({clientId:this.#e.clientId,clientSecret:this.#A,sessionWebhook:o,text:i,signal:this.#f.signal})}})}async sendProactiveText(t,o,{signal:i}={}){let e=typeof t?.route?.userId=="string"?t.route.userId.trim():"",a=typeof t?.route?.openConversationId=="string"?t.route.openConversationId.trim():"";if(t?.kind==="user"&&(!e||a)||t?.kind==="group"&&(!a||e)||t?.kind!=="user"&&t?.kind!=="group"){let A=new TypeError("Invalid DingTalk proactive delivery target");throw A.code="invalid-target",A}if(!this.#I.ready||!this.#f){let A=new Error("DingTalk runtime is not connected");throw A.code="bot-not-connected",A}i?.throwIfAborted();try{await this.#c.sendRobotText({clientId:this.#e.clientId,clientSecret:this.#A,target:{type:t.kind,robotCode:this.#e.clientId,...t.kind==="user"?{userId:e}:{openConversationId:a}},text:o,signal:i??this.#f.signal})}catch(A){if(A?.code!=="send-rejected")throw A;let r=new Error("DingTalk rejected the proactive delivery target",{cause:A});throw r.code="target-rejected",r}return{sent:!0}}#y(){return typeof this.#r.pendingSenders=="function"?this.#r.pendingSenders():[]}};import{spawn as FEe}from"node:child_process";import{randomUUID as T_}from"node:crypto";import{isAbsolute as LEe}from"node:path";import{isAbsolute as MEe}from"node:path";var _Ee=256,TEe=/[\p{White_Space}\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u,NEe=/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u;function JE(n,t){let o=new Error(t);return o.code=n,o}function REe(n){if(typeof n!="string"||!n||n.length>_Ee||TEe.test(n))throw JE("session-id-invalid","A non-empty, safe session id is required");return n}function kEe(n,t){if(!Array.isArray(t?.items)||!Array.isArray(t?.archivedSessionIds)||t.archivedSessionIds.some(i=>typeof i!="string"||!i))throw new Error("Harness returned an invalid response for workspace.list");let o=[];for(let i of t.items){if(typeof i?.workspaceId!="string"||!i.workspaceId||typeof i.path!="string"||!MEe(i.path)||!Array.isArray(i.sessionIds)||i.sessionIds.some(e=>typeof e!="string"||!e))throw new Error("Harness returned an invalid response for workspace.list");for(let e of i.sessionIds)e===n&&o.push(i)}if(o.length===0)throw JE("session-not-registered","The session is not registered to a Harness workspace");if(o.length!==1)throw JE("session-workspace-ambiguous","The session is registered to more than one Harness workspace");if(NEe.test(o[0].path))throw new Error("Harness returned an unsafe workspace path for the session");return{workspace:o[0],archived:t.archivedSessionIds.includes(n)}}function vEe(n,t){if(!Array.isArray(t?.items)||t.items.some(a=>typeof a?.sessionId!="string"||!a.sessionId))throw new Error("Harness returned an invalid response for session.list");let o=t.items.filter(a=>a.sessionId===n);if(o.length===0)throw JE("session-summary-unavailable","The session is no longer available from Harness");if(o.length!==1)throw new Error("Harness returned duplicate session summaries for session.list");let[i]=o;if(i.origin==="subagent")throw JE("session-subagent-unsupported","Subagent sessions cannot be adopted as a bot conversation");if(i.origin!==void 0)throw new Error("Harness returned an invalid session origin for session.list");let e=i.projections?.values?.title;if(e!=null&&typeof e!="string")throw new Error("Harness returned an invalid session title for session.list");return{title:typeof e=="string"?e:null}}async function g1(n,t,o={},i=3e4){let e=REe(t);await n.ensureRunning(o);let a=await n.rpc("workspace.list",{},i,o),{workspace:A,archived:r}=kEe(e,a),s=vEe(e,await n.rpc("session.list",{},i,o)),g=await n.rpc("session.create",{workspaceId:A.workspaceId,sessionId:e},i,o);if(!g||g.sessionId!==e)throw new Error("Harness returned an invalid response for session.create");return{sessionId:e,workspace:A.path,title:s.title,archived:r}}function qE(n,t,o){try{let i=n?.(t);i&&typeof i.then=="function"&&Promise.resolve(i).catch(o)}catch(i){o(i)}}async function PEe({apiProxy:n,rpcId:t,signal:o,onOpen:i,onEnvelope:e}){let a=new AbortController,A=()=>a.abort(o.reason),r,s,g,c=I=>{a.signal.aborted||(g=I,A())};o.addEventListener("abort",A,{once:!0});try{for(r=n.events.mux({rpcId:t,payload:{}},a.signal)[Symbol.asyncIterator](),s=Promise.resolve(r.next()),a.signal.aborted||qE(i,A,c);!a.signal.aborted;){let{value:I,done:d}=await s;if(d||a.signal.aborted)break;qE(e,{type:"server-request",rpcId:I?.rpcId,method:I?.payload?.type,payload:I?.payload},c),a.signal.aborted||(s=Promise.resolve(r.next()))}}catch(I){c(I)}finally{let I=a.signal.aborted;o.removeEventListener("abort",A),A(),await s?.catch(()=>{});try{await r?.return?.()}catch(d){I||(g??=d)}}if(g)throw g}function GEe({baseUrl:n,createWebSocket:t,signal:o,onOpen:i,onEnvelope:e,onMalformed:a}){let A=new URL("/api/events.mux",n);return A.protocol=A.protocol==="https:"?"wss:":"ws:",new Promise((r,s)=>{let g=t(A.toString()),c=!1,I=!1,d=T=>{if(!I){I=!0,g.removeEventListener("open",f),g.removeEventListener("message",Q),g.removeEventListener("close",y),g.removeEventListener("error",m),o.removeEventListener("abort",_);try{(g.readyState===0||g.readyState===1)&&g.close()}catch{}T&&!o.aborted?s(T):r()}},B=()=>d(),f=()=>{I||c||(c=!0,qE(i,B,d))},Q=T=>{if(I)return;let R;try{if(typeof T.data!="string")throw new Error("binary WebSocket frame");R=JSON.parse(T.data)}catch(K){qE(a,K,()=>{});return}qE(e,R,d)},y=()=>d(c?void 0:new Error("Harness event mux WebSocket closed before opening")),m=()=>d(new Error(c?"Harness event mux WebSocket failed":"Harness event mux WebSocket failed before opening")),_=()=>d();g.addEventListener("open",f),g.addEventListener("message",Q),g.addEventListener("close",y,{once:!0}),g.addEventListener("error",m,{once:!0}),o.addEventListener("abort",_,{once:!0}),o.aborted&&_()})}async function c1(n){if(!n.signal.aborted)return n.baseUrl!==void 0&&n.baseUrl!==null?GEe(n):PEe(n)}var UEe=new Map,HEe=new WeakMap,KEe=64;async function xEe(n){let t=n?.body;if(!t||typeof t.getReader!="function")return null;let o=t.getReader(),i=[],e=0;try{for(;;){let{done:r,value:s}=await o.read();if(r)break;if(!(s instanceof Uint8Array)||e+s.byteLength>KEe)return null;i.push(s),e+=s.byteLength}}catch{return null}finally{try{await o.cancel()}catch{}}let a=new Uint8Array(e),A=0;for(let r of i)a.set(r,A),A+=r.byteLength;return new TextDecoder().decode(a)}function YEe(n){if(n==="localhost"||n==="[::1]")return!0;let t=n.split(".");return t.length===4&&t[0]==="127"&&t.every(o=>/^\d{1,3}$/.test(o)&&Number(o)<=255)}async function jEe(n,t){return n.status===401?"harness-auth-required":n.status===407?"harness-proxy-auth-required":n.status===403?(await xEe(n))?.trim()!=="forbidden"?"harness-request-forbidden":YEe(t)?"harness-loopback-forbidden":"harness-host-untrusted":n.status===404?"harness-api-not-found":"harness-http-failed"}function E1(n){let t=typeof n=="string"?UEe:HEe,o=t.get(n);return o||(o={ownerships:new Map,claims:new Map,controls:new WeakMap,nextOrder:0},t.set(n,o)),o}function I1(n,t){return new Promise((o,i)=>{let e=()=>t.removeEventListener("abort",a),a=()=>{e(),i(t.reason)};if(t.aborted){a();return}t.addEventListener("abort",a,{once:!0}),Promise.resolve().then(()=>(t.throwIfAborted(),n())).then(A=>{e(),o(A)},A=>{e(),i(A)})})}function l1(n){let t=typeof n?.owner;return t!=="object"&&t!=="function"||n.owner===null||typeof n.key!="string"||!n.key?null:{owner:n.owner,key:n.key}}function N_(n){return n!==null&&typeof n=="object"&&typeof n.provider=="string"&&!!n.provider&&typeof n.model=="string"&&!!n.model&&(n.reasoningEffort===void 0||typeof n.reasoningEffort=="string"&&!!n.reasoningEffort)}function JEe(n){return n!==null&&typeof n=="object"&&Array.isArray(n.efforts)&&n.efforts.length>0&&n.efforts.every(t=>t!==null&&typeof t=="object"&&typeof t.id=="string"&&!!t.id&&typeof t.name=="string"&&!!t.name&&(t.description===void 0||typeof t.description=="string"))&&(n.defaultEffort===void 0||typeof n.defaultEffort=="string"&&!!n.defaultEffort)}function p1(n,t,{session:o=!1}={}){if(!n||typeof n!="object"||!Array.isArray(n.groups)||!Array.isArray(n.failures))throw new Error(`Harness returned an invalid response for ${t}`);for(let i of n.groups){if(!i||typeof i!="object"||typeof i.id!="string"||!i.id||typeof i.name!="string"||!i.name||!Array.isArray(i.models))throw new Error(`Harness returned an invalid response for ${t}`);for(let e of i.models)if(!e||typeof e!="object"||typeof e.id!="string"||!e.id||typeof e.name!="string"||!e.name||e.description!==void 0&&typeof e.description!="string"||e.reasoning!==void 0&&!JEe(e.reasoning))throw new Error(`Harness returned an invalid response for ${t}`)}for(let i of n.failures)if(!i||typeof i!="object"||typeof i.id!="string"||!i.id||typeof i.name!="string"||!i.name||i.message!==void 0&&typeof i.message!="string")throw new Error(`Harness returned an invalid response for ${t}`);if(o&&(!N_(n.current)||typeof n.routable!="boolean"))throw new Error(`Harness returned an invalid response for ${t}`);return n}function d1(){let n=new Error("Harness turn was stopped before producing a text reply");return n.code="turn-stopped",n}function qEe(n){return Array.isArray(n?.items)?n.items.flatMap(t=>typeof t?.path=="string"&&LEe(t.path)?[t.path]:[]):[]}function zEe(n,t){if(!Array.isArray(t?.items)||!Array.isArray(t?.archivedSessionIds))throw new Error("Harness returned an invalid response for workspace.list");let o=t.items.find(i=>i?.path===n);if(!o)return null;if(!Array.isArray(o.sessionIds)||o.sessionIds.some(i=>typeof i!="string"))throw new Error("Harness returned invalid session IDs for workspace.list");return o}function VEe(n){if(typeof n=="number"&&Number.isFinite(n))return n<1e12?n*1e3:n;if(typeof n=="string"&&n){let t=Date.parse(n);if(!Number.isNaN(t))return t}return null}function WEe(n){if(!n||typeof n!="object")return null;let t=[n?.header?.lastActivityAt,n?.header?.updatedAt,n?.header?.createdAt,n?.projections?.values?.lastActivityAt,n?.projections?.values?.updatedAt,n?.projections?.values?.createdAt,n?.lastActivityAt,n?.updatedAt,n?.createdAt];for(let o of t){let i=VEe(o);if(i!==null)return i}return null}function ZEe(n,t,o){if(!Array.isArray(o?.items))throw new Error("Harness returned an invalid response for session.list");let i=new Set(t),e=new Map(o.items.flatMap(a=>typeof a?.sessionId=="string"?[[a.sessionId,a]]:[]));return{workspace:n.path,sessions:n.sessionIds.map(a=>{let A=e.get(a),r=A?.projections?.values?.title,s={sessionId:a,title:typeof r=="string"?r:null,archived:i.has(a),blank:A?.blank===!0,origin:A?.origin==="subagent"?"subagent":null,summaryAvailable:A!==void 0},g=A?.projections?.asOfSeq;Number.isSafeInteger(g)&&g>=-1&&(s.lastSeq=g);let c=WEe(A);return c!==null&&(s.time=c),s})}}function zE(n,t){return new Promise((o,i)=>{if(t?.aborted){i(t.reason??new DOMException("Aborted","AbortError"));return}let e=setTimeout(()=>{t?.removeEventListener("abort",a),o()},n),a=()=>{clearTimeout(e),i(t.reason??new DOMException("Aborted","AbortError"))};t?.addEventListener("abort",a,{once:!0})})}function XEe(n){return(n?.data?.message?.content??[]).filter(t=>t.type==="text"&&typeof t.text=="string").map(t=>t.text).join(` -`).trim()}function Ri(n){return typeof n=="string"&&n.trim()?n.trim():null}function $Ee(n){if(!n||typeof n!="object")return null;let t=Ri(n.message);if(t)return t;let o=Ri(n.name),i=Ri(n.code);return o||i?[o??"Error",i].filter(Boolean).join(": "):null}function C1(n,t){let o=[...t].map(i=>i?.event??i).filter(Boolean).sort((i,e)=>(i.seq??-1)-(e.seq??-1));for(let i of o){let e=i.seq??-1;if(e<=n.lastSeq)continue;if(n.lastSeq=e,i.type==="turn/start"){let A=i.data?.turn??null;n.active&&A!==n.turn&&(n.active=!1),n.turn!==null&&A!==n.turn&&(n.completed=!0),n.openTurn=A;continue}if(i.type==="user/message"&&i.data?.source?.rpcId===n.promptRpcId){n.active=!0,n.started=!0,n.completed=!1,n.turn=i.data?.turn??n.openTurn;continue}if(i.type==="turn/end"&&i.data?.turn===n.turn){n.active=!1,n.completed=!0;continue}let a=null;if(i.type==="tool/call"&&n.active&&i.data?.turn===n.turn&&typeof i.data?.callId=="string"&&i.data.callId)a={callId:i.data.callId,name:i.data?.name,arguments:i.data?.arguments};else if(i.type==="tool/code-dispatch-start"&&n.active&&typeof i.data?.subCallId=="string"&&i.data.subCallId){let A;try{A=JSON.stringify(i.data?.arguments)}catch{A=void 0}a={callId:i.data.subCallId,name:i.data?.name,arguments:A}}a&&n.toolCalls.set(a.callId,Object.freeze(a))}}function u1(n,t,o=[]){if(!n||!["object","function","string"].includes(typeof n)||typeof t!="string"||!t)return!1;let i=E1(n).ownerships.get(t);if(!i||i.size===0)return!1;for(let e of i)C1(e,o);return[...i].some(e=>e.active&&!e.completed&&typeof e.reconnect=="function")}var Gp=class{#e;#A;#t=null;#r=null;#l=new Map;#o="";#i=!1;#a=null;#n=new Map;#s=null;constructor({promptRpcId:t,afterSeq:o=-1}){this.#e=t,this.#A=o}get finished(){return this.#i}get answer(){return this.#o.trim()}get reason(){return this.#a}get tracking(){return this.#r!==null&&!this.#i}get turn(){return this.#r}consumeAll(t){let o=[],i=a=>{if(a.type==="text"&&o.length>0&&o[o.length-1].type==="text"){o[o.length-1]=a;return}o.push(a)},e=[...t].map(a=>a?.event??a).filter(Boolean).sort((a,A)=>(a.seq??-1)-(A.seq??-1));for(let a of e){let A=a.seq??-1;if(!(A<=this.#A)){if(this.#A=A,a.type==="turn/start"&&(this.#t=a.data?.turn??null),a.type==="user/message"&&a.data?.source?.rpcId===this.#e){this.#r=this.#t;continue}if(this.#r!==null){if(a.type==="turn/end"){if(a.data?.turn!==this.#r)continue;this.#i=!0,this.#a=a.data?.reason??null,this.#t=null;continue}if(a.data?.turn===this.#r){if(a.type==="assistant/chunk"&&a.data?.chunk?.type==="text-delta"){let r=a.data?.step??0,s=a.data.chunk.index??0,g=`${r}:${s}`;this.#l.set(g,(this.#l.get(g)??"")+a.data.chunk.text);let c=`${r}:`,I=[...this.#l.entries()].filter(([d])=>d.startsWith(c)).sort(([d],[B])=>Number(d.split(":")[1])-Number(B.split(":")[1])).map(([,d])=>d).join(` -`).trim();I&&I!==this.#o&&(this.#o=I,i({type:"text",text:I}));continue}if(a.type==="assistant/message"){let r=XEe(a);r&&r!==this.#o&&(this.#o=r,i({type:"text",text:r}));continue}if(a.type==="tool/call"){let r=Ri(a.data?.name)??w("\u5DE5\u5177"),s=Ri(a.data?.callId)??Ri(a.data?.subCallId);s&&this.#n.set(s,r),this.#s=r,i({type:"tool",name:r,...s?{callId:s}:{}})}else if(a.type==="tool/result"){let r=Ri(a.data?.message?.source?.callId)??Ri(a.data?.callId)??Ri(a.data?.subCallId),s=(r?this.#n.get(r):null)??this.#s,g=$Ee(a.data?.error);i({type:"status",text:w("\u6B63\u5728\u6574\u7406\u7ED3\u679C\u2026"),...s?{toolName:s}:{},...g?{error:g}:{}})}}}}}return o}consume(t){return this.consumeAll(t).at(-1)??null}},fn=class extends Error{constructor(t,o){super(`${t}: ${o?.message??"unknown Harness RPC error"}`),this.name="HarnessRpcError",this.method=t,this.code=o?.code??"internal",this.details=o?.details??{}}},rs=class extends Error{constructor(t,o,{cause:i,status:e}={}){let a=Number.isInteger(e)?`, HTTP ${e}`:"";super(`Harness ${o} transport failed (${t}${a})`,{cause:i}),this.name="HarnessTransportError",this.code=t,this.method=o,Number.isInteger(e)&&(this.status=e)}},R_=class extends Error{constructor(t){super("Harness health RPC was rejected",{cause:t}),this.name="HarnessHealthError",this.code="harness-rpc-rejected",this.method="host.describe"}},Fp=class extends Error{constructor(t,o){super(o),this.name="HarnessInteractionError",this.code=t}},as=class extends Error{constructor(t,{reason:o,providerCode:i}={}){super(`Harness turn failed (${t})`),this.name="HarnessTurnError",this.code=t,this.promptAccepted=!0,o&&typeof o=="object"&&(this.reason=o),typeof i=="string"&&i&&(this.providerCode=i)}};function h1(n){let t=Ri(n?.kind)??Ri(n);if(t==="error"){let o=n?.error??n?.failure;return new as("harness-turn-failed",{reason:n,providerCode:Ri(o?.code)??void 0})}return t==="max-tokens"?new as("model-max-tokens",{reason:n}):t==="blocked"?new as("turn-blocked",{reason:n}):["interrupted","stopped","cancelled","canceled"].includes(t)?new as("turn-interrupted",{reason:n}):t==="aborted"?new as("turn-aborted",{reason:n}):t==="completed"?new as("model-empty-response",{reason:n}):new as("harness-turn-failed",{reason:n})}function eCe(n){return n==null?!0:(Ri(n?.kind)??Ri(n))==="completed"}var ur=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c;#g;#I;#d;#h=null;#C;#u;#B;#f;constructor({baseUrl:t,apiProxy:o,interactionScope:i=o,workspace:e,agentPreset:a,autostart:A=!1,dshBin:r="dsh",fetchImpl:s=fetch,createWebSocket:g=m=>new WebSocket(m),interactionReconnectDelayMs:c=500,rpcIdPrefix:I="im",logPrefix:d="dsh-im",commandExecutor:B,controlExecutor:f,sessionMaintenanceExecutor:Q,fileIngressExecutor:y}){if(typeof g!="function")throw new TypeError("createWebSocket must be a function");if(!Number.isFinite(c)||c<0)throw new TypeError("interactionReconnectDelayMs must be a non-negative number");if(typeof I!="string"||!I.trim())throw new TypeError("rpcIdPrefix must be a non-empty string");if(typeof d!="string"||!d.trim())throw new TypeError("logPrefix must be a non-empty string");if(B!==void 0&&typeof B!="function")throw new TypeError("commandExecutor must be a function");if(f!==void 0&&typeof f!="function")throw new TypeError("controlExecutor must be a function");if(Q!==void 0&&typeof Q!="function")throw new TypeError("sessionMaintenanceExecutor must be a function");if(y!==void 0&&typeof y!="function")throw new TypeError("fileIngressExecutor must be a function");if(this.#e=t===void 0?null:new URL(t),this.#A=this.#e?null:o,!this.#e&&(!this.#A||typeof this.#A!="object"))throw new TypeError("HarnessClient requires the current Host apiProxy or an explicit baseUrl");if(this.#A&&(!i||!["object","function"].includes(typeof i)))throw new TypeError("interactionScope must identify the current Host");this.#t=e,this.#r=a??void 0,this.#l=!!(this.#e&&A),this.#o=r,this.#i=s,this.#a=g,this.#n=c,this.#s=I.trim(),this.#p=d.trim(),this.#c=B,this.#g=f,this.#I=Q,this.#d=y,this.#C=E1(this.#e?.origin??i),this.#u=this.#C.ownerships,this.#B=this.#C.claims,this.#f=this.#C.controls}async rpc(t,o={},i=3e4,e={}){let a=e.rpcId??`${this.#s}-${T_()}`,A=AbortSignal.timeout(i),r=e.signal?AbortSignal.any([e.signal,A]):A,s;try{if(this.#A){let[g,c,I]=t.split("."),d={host:"host",workspace:"workspace",session:"sessions",llm:"llm"}[g],B=d&&this.#A[d];if(I!==void 0||!Object.hasOwn(B??{},c)||typeof B[c]!="function")throw new rs("harness-api-not-found",t);s={type:"server-response",...await I1(()=>B[c]({rpcId:a,payload:o},r),r)}}else{let g=await this.#i(new URL(`/api/${t}`,this.#e),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({type:"client-request",rpcId:a,method:t,payload:o}),signal:r});if(!g.ok){let c=await jEe(g,this.#e.hostname);throw new rs(c,t,{status:g.status})}try{s=await g.json()}catch(c){throw new rs("harness-response-invalid",t,{cause:c})}}}catch(g){throw e.signal?.aborted||g instanceof rs?g:new rs(A.aborted?"harness-timeout":"harness-connect-failed",t,{cause:g})}if(s?.type!=="server-response"||s?.rpcId!==a)throw new rs("harness-response-invalid",t,{cause:new Error(`Harness returned an invalid response for ${t}`)});if(!s.result||typeof s.result!="object"||typeof s.result.ok!="boolean")throw new rs("harness-response-invalid",t,{cause:new Error(`Harness returned an invalid result for ${t}`)});if(!s.result?.ok)throw new fn(t,s.result?.error);return s.result.value}async health(t={}){try{return await this.rpc("host.describe",{},5e3,t),!0}catch(o){throw o instanceof fn?new R_(o):o}}async ensureRunning(t={}){try{return await this.health(t)}catch(e){if(!this.#l)throw e}if(!this.#h||this.#h.exitCode!==null){let e=this.#e.port||(this.#e.protocol==="https:"?"443":"80");this.#h=FEe(this.#o,["web","--host",this.#e.hostname,"--port",e],{cwd:this.#t,env:process.env,stdio:["ignore","inherit","inherit"]}),this.#h.on("error",a=>{console.error(`[${this.#p}] failed to start Harness:`,a.message)})}let o=Date.now()+6e4,i;for(;Date.now(){let r=A&&i.signal?AbortSignal.any([A,i.signal]):A??i.signal;return this.rpc("session.selectModel",{sessionId:t,provider:o.provider,model:o.model,...o.reasoningEffort===void 0?{}:{reasoningEffort:o.reasoningEffort}},3e4,r?{...i,signal:r}:i)},a=this.#I?await this.#I({sessionId:t,operation:e}):await e();if(!a||typeof a!="object"||!N_(a.selected))throw new Error("Harness returned an invalid response for session.selectModel");return a}async isSessionRunning(t,o={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");await this.ensureRunning(o);let i=await this.rpc("session.list",{},3e4,o);if(!i||typeof i!="object"||!Array.isArray(i.items))throw new Error("Harness returned an invalid response for session.list");for(let e of i.items)if(!e||typeof e!="object"||typeof e.sessionId!="string"||!e.sessionId||typeof e.running!="boolean")throw new Error("Harness returned an invalid response for session.list");return i.items.find(e=>e.sessionId===t)?.running??!1}async adoptWorkspaceSession(t,o={}){return g1(this,t,o)}async workspaceId(t={}){let{workspace:o=this.#t,...i}=t,{items:e}=await this.rpc("workspace.list",{},3e4,i),a=e.find(r=>r.path===o);return a?a.workspaceId:(await this.rpc("workspace.create",{path:o},3e4,i)).workspace.workspaceId}async createSession(t={}){let{agentPreset:o,...i}=t;await this.ensureRunning(i);let a={workspaceId:await this.workspaceId(i)},A=o!==void 0?o:this.#r;return A!=null&&(a.agentPreset=A),(await this.rpc("session.create",a,3e4,i)).sessionId}async renameSession(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(typeof o!="string"||!o.trim())throw new TypeError("session title is required");return this.rpc("session.rename",{sessionId:t,title:o},3e4,i)}async executeCommand(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(typeof o!="string"||!o)throw new TypeError("command line is required");if(!this.#c){let e=new Error("Harness command execution is unavailable");throw e.code="commands-unavailable",e}try{return await this.#c(t,o,i)}catch(e){throw e?.failure&&typeof e.failure=="object"?new fn("commands.execute",e.failure):e}}async readSessionHistory(t,{maxMessages:o=50,beforeSeq:i,timeoutMs:e=1e4,...a}={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(!Number.isSafeInteger(o)||o<1||i!==void 0&&(!Number.isSafeInteger(i)||i<0))throw new TypeError("Invalid history pagination");return this.rpc("session.history",{sessionId:t,maxMessages:o,...i===void 0?{}:{beforeSeq:i}},e,a)}async sessionExists(t,o={}){try{return await this.rpc("session.history",{sessionId:t,maxMessages:1},3e4,o),!0}catch(i){if(i instanceof fn&&i.code==="session-not-found")return!1;throw i}}async respondInteraction(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("rpcId is required");if(!o||typeof o!="object"||typeof o.ok!="boolean")throw new TypeError("A Harness RPC result is required");let e=AbortSignal.timeout(i.timeoutMs??3e4),a=i.signal?AbortSignal.any([i.signal,e]):e,A={type:"client-response",rpcId:t,result:o},r;if(this.#A)r=await I1(()=>this.#A.respond(A),a);else{let g=await this.#i(new URL("/api/respond",this.#e),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(A),signal:a});if(!g.ok)throw new Error(`Harness transport respond failed: HTTP ${g.status}`);r=await g.json()}if(r?.accepted===!0)return r;if(r?.accepted!==!1||r.reason!=="bad-response"&&r.reason!=="not-pending")throw new Error("Harness returned an invalid interaction response receipt");let s=r.reason;throw new Fp(`interaction-${s}`,`Harness interaction response was rejected (${s})`)}async watchInteractions(t,{signal:o,onInteraction:i,onResolved:e,onOpen:a,ownership:A}={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(!o||typeof o.addEventListener!="function")throw new TypeError("watchInteractions requires an AbortSignal");if(i!==void 0&&typeof i!="function")throw new TypeError("onInteraction must be a function");if(e!==void 0&&typeof e!="function")throw new TypeError("onResolved must be a function");if(a!==void 0&&typeof a!="function")throw new TypeError("onOpen must be a function");for(;!o.aborted;){try{await this.#R(t,{signal:o,onInteraction:i,onResolved:e,onOpen:a,ownership:A})}catch(r){if(o.aborted)return;console.warn(`[${this.#p}] Harness interaction stream disconnected:`,r.message)}if(o.aborted)return;try{await zE(this.#n,o)}catch{if(o.aborted)return;throw new Error("Harness interaction reconnect wait failed")}}}#Q(t,o){let i=this.#u.get(t)??new Set;o.order=this.#C.nextOrder,this.#C.nextOrder+=1,i.add(o),this.#u.set(t,i)}#S(t,o){let i=this.#u.get(t);i?.delete(o),i?.size===0&&this.#u.delete(t);for(let[e,a]of this.#B)a.ownership===o&&this.#B.delete(e)}#y(t){if(!t.control)return;let o=this.#f.get(t.control.owner);o||(o=new Map,this.#f.set(t.control.owner,o));let i=o.get(t.control.key)??new Set;i.add(t),o.set(t.control.key,i)}#m(t){if(!t.control)return;let o=this.#f.get(t.control.owner),i=o?.get(t.control.key);i?.delete(t),i?.size===0&&o.delete(t.control.key),o?.size===0&&this.#f.delete(t.control.owner)}#D(t,o){let i=l1(o);return i?[...this.#f.get(i.owner)?.get(i.key)??[]].filter(a=>a.sessionId===t).sort((a,A)=>a.order-A.order):[]}#E(t,o){return this.#D(t,o).find(i=>i.started&&i.active&&!i.completed&&i.turn!==null)??null}async#N(t,o,i){let e=this.#D(t,o);if(e.length===0)return null;try{let a=await this.rpc("session.history",{sessionId:t,maxMessages:50},3e4,i);this.#T(t,a.events??[])}catch(a){if(!(a instanceof fn)||a.code!=="session-not-found")throw a;for(let A of e)A.active=!1,A.completed=!0;return null}return this.#E(t,o)}async hasActiveTurn(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");return!!await this.#N(t,o,i)}async stopActiveTurn(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");let e=await this.#N(t,o,i);if(!e)return!1;if(e.stopRequested)return!0;if(this.#E(t,o)!==e)return!1;e.stopRequested=!0;try{if(this.#g){let a=this.#g({sessionId:t,expectedTurn:e.turn,promptRpcId:e.promptRpcId,action:"stop"});if(a&&typeof a.then=="function")throw new TypeError("controlExecutor must return synchronously");if(a!==void 0){if(typeof a!="boolean")throw new TypeError("controlExecutor must return a boolean or undefined");return a||(e.stopRequested=!1),a}}return await this.rpc("session.cancel",{sessionId:t,keepInbox:!0},3e4,i),!0}catch(a){if(this.#E(t,o)===e&&(e.stopRequested=!1),a instanceof fn&&a.code==="session-not-found")return!1;throw a}}async steerActiveTurn(t,o,i,e={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(typeof o!="string"||!o.trim())throw new TypeError("Steering text is required");let a=await this.#N(t,i,e);if(!a||a.stopRequested||this.#E(t,i)!==a)return!1;if(this.#g){let A=this.#g({sessionId:t,expectedTurn:a.turn,promptRpcId:a.promptRpcId,action:"steer",text:o});if(A&&typeof A.then=="function")throw new TypeError("controlExecutor must return synchronously");if(A!==void 0){if(typeof A!="boolean")throw new TypeError("controlExecutor must return a boolean or undefined");return A}}return await this.rpc("session.prompt",{sessionId:t,mode:"steer",content:[{type:"text",text:o}],clientTimeZone:Intl.DateTimeFormat().resolvedOptions().timeZone},3e4,e),!0}#T(t,o){for(let i of this.#u.get(t)??[])C1(i,o)}async#O(t,o){let i=await this.rpc("session.history",{sessionId:t,maxMessages:50},3e4,{signal:o});this.#T(t,i.events??[])}#w(t,o,i){let e=this.#B.get(o);if(e&&this.#u.get(t)?.has(e.ownership))return e;let a=[...this.#u.get(t)??[]],A=a.filter(s=>s.active).sort((s,g)=>s.order-g.order);if(A.length>0)return{ownership:A[0],recovered:!1};let r=a.filter(s=>!s.started&&!s.completed).sort((s,g)=>s.order-g.order)[0]??null;return r?{ownership:r,recovered:!0}:null}async ask(t,o,i={}){typeof i=="number"&&(i={timeoutMs:i});let e=i.timeoutMs??6e5,a=i.signal,A=typeof i.onUpdate=="function"?i.onUpdate:null,r=i.progressMode==="all"?"all":"latest",s=typeof i.onArtifact=="function"?i.onArtifact:null,g=typeof i.onInteraction=="function"?i.onInteraction:void 0,c=typeof i.onInteractionResolved=="function"?i.onInteractionResolved:void 0,I=l1(i.control),d=Array.isArray(i.files)?i.files.filter(Boolean):[];await this.ensureRunning({signal:a});let B=await this.rpc("session.history",{sessionId:t,maxMessages:1},3e4,{signal:a}),f=Math.max(-1,...(B.events??[]).map(({event:V})=>V.seq??-1)),Q=`${this.#s}-${T_()}`,y=new Gp({promptRpcId:Q,afterSeq:f}),m=g||c?new AbortController:null,_=m?a?AbortSignal.any([a,m.signal]):m.signal:null,T=m||I?{sessionId:t,promptRpcId:Q,active:!1,started:!1,completed:!1,stopRequested:!1,turn:null,openTurn:null,lastSeq:f,reconnect:null,order:-1,toolCalls:new Map,control:I}:null,R=null,K=!1,L=0,U=null,z=!1,q=!1,x=async()=>{if(!s||K||y.turn===null)return L;K=!0;let V=vI.take(t,y.turn,{signal:a});for(let F of V)try{await s(F),L+=1}catch(N){vI.release(F),console.warn(`[${this.#p}] ignored an artifact handoff failure:`,N.message)}return L};T&&(this.#Q(t,T),this.#y(T));let G=vI.openConsumer(t,Q);try{if(d.length>0){if(!this.#d)throw new Ro("inbound-file-ingress-unavailable","Harness file ingress is unavailable in this Host process.");let N=(await this.rpc("session.list",{},3e4,{signal:a}))?.items?.find(k=>k?.sessionId===t)?.cwd;U=await this.#d({sessionId:t,workspace:N,files:d,signal:a}),o=PY(o,U)}if(_){let F,N=new Promise(k=>{F=k});R=this.watchInteractions(t,{signal:_,onInteraction:g,onResolved:c,onOpen:F,ownership:T}),R.catch(()=>{}),await Promise.race([N,zE(3e4,_).then(()=>{throw new Error("Harness interaction stream did not open within 30 seconds")})])}let V=typeof o=="string"?[{type:"text",text:o}]:o;if(!Array.isArray(V)||V.length===0)throw new TypeError("Harness prompt content is required");await this.rpc("session.prompt",{sessionId:t,mode:"queue",content:V,clientTimeZone:Intl.DateTimeFormat().resolvedOptions().timeZone},3e4,{rpcId:Q,signal:a}),z=!0;try{let F=Date.now()+e;for(;Date.now()0)return"";throw T?.stopRequested?d1():h1(y.reason)}throw new as("harness-reply-timeout")}catch(F){if(!T?.stopRequested)throw F;if(y.answer)return y.answer;throw F?.code==="turn-stopped"?F:d1()}}finally{U&&(!z||q)&&await U.cleanup().catch(V=>{console.warn(`[${this.#p}] unable to clean inbound files:`,V.message)}),G(),T&&(this.#m(T),this.#S(t,T)),y.turn!==null&&vI.discard(t,y.turn),m?.abort(new DOMException("Harness turn finished","AbortError")),R&&await R.catch(()=>{})}}async#R(t,{signal:o,onInteraction:i,onResolved:e,onOpen:a,ownership:A}){let r=!1,s=null,g=Promise.resolve(),c=A==null,I=[],d=()=>{},B=m=>{d=m,A&&(A.reconnect=d);try{a?.()}catch(_){console.warn(`[${this.#p}] ignored an interaction open callback failure:`,_.message)}A&&this.#O(t,o).then(()=>{if(!r){c=!0;for(let _ of I.splice(0))Q(_)}}).catch(_=>{s??=_,d()})},f=(m,_)=>{m&&(g=g.then(()=>m(_)).catch(T=>{s??=T,d()}))},Q=m=>{let _=m.payload;if(A&&_.type==="session/event"){this.#T(t,[_.event]);return}if(_.type==="question/requested"||_.type==="approval/requested"){let T=_.type==="question/requested"?"question":"approval",R=T==="question"?m.rpcId:_.approvalId,K=`${T}:${R}`;if(A){let U=this.#w(t,K,T);if(U?.ownership!==A)return;this.#B.set(K,U)}let L=T==="approval"&&A&&typeof _.callId=="string"?this.#B.get(K)?.ownership.toolCalls.get(_.callId):void 0;f(i,Object.freeze({kind:T,interactionId:R,rpcId:m.rpcId,sessionId:t,payload:_,recovered:A?this.#B.get(K)?.recovered===!0:!1,...L?{toolCall:L}:{},reconnect:d,respond:(U,z={})=>this.respondInteraction(m.rpcId,U,{...z,signal:z.signal??o})}));return}if(_.type==="question/resolved"||_.type==="approval/resolved"){let T=_.type==="question/resolved"?"question":"approval",R=T==="question"?_.questionRpcId:_.approvalId,K=`${T}:${R}`;if(A){if(this.#B.get(K)?.ownership!==A)return;this.#B.delete(K)}f(e,Object.freeze({kind:T,interactionId:R,sessionId:t,outcome:_.outcome,payload:_}))}},y=m=>{try{let _=m?.payload;if(m?.type!=="server-request"||typeof m.rpcId!="string"||!_||typeof _!="object"||m.method!==_.type)throw new Error("invalid server-request envelope");if(_.sessionId!==t)return;c?Q(m):I.push(m)}catch(_){console.warn(`[${this.#p}] ignored a malformed Harness interaction frame:`,_.message)}};try{await this.#_({signal:o,onOpen:B,onEnvelope:y})}finally{r=!0,A?.reconnect===d&&(A.reconnect=null),o.aborted||await g}if(!o.aborted&&s)throw s}async watchHarnessEvents({signal:t,onSessionEvent:o,onReconnect:i}={}){if(typeof o!="function")throw new TypeError("watchHarnessEvents requires onSessionEvent");if(!t||typeof t.addEventListener!="function")throw new TypeError("watchHarnessEvents requires an AbortSignal");if(i!==void 0&&typeof i!="function")throw new TypeError("onReconnect must be a function");for(;!t.aborted;){try{await this.#_({signal:t,onOpen:()=>{try{i?.()}catch(e){console.warn(`[${this.#p}] mux reconnect hook failed:`,e.message)}},onEnvelope:e=>{try{let a=e?.payload;if(e?.type!=="server-request"||!a||typeof a!="object"||e.method!==a.type||a.type!=="session/event"||typeof a.sessionId!="string"||!a.event||typeof a.event!="object")return;o({sessionId:a.sessionId,event:a.event})}catch(a){console.warn(`[${this.#p}] ignored a malformed global mux frame:`,a.message)}}})}catch(e){if(t.aborted)return;console.warn(`[${this.#p}] Harness event mux disconnected:`,e.message)}if(t.aborted)return;try{await zE(this.#n,t)}catch{if(t.aborted)return;throw new Error("Harness event mux reconnect wait failed")}}}#_(t){return c1({apiProxy:this.#A,baseUrl:this.#e,createWebSocket:this.#a,rpcId:`${this.#s}-${T_()}`,...t,onMalformed:o=>{console.warn(`[${this.#p}] ignored a malformed Harness mux frame:`,o.message)}})}stopManagedProcess(){this.#h?.exitCode===null&&this.#h.kill("SIGTERM")}};var RQ=class extends ur{constructor(t){super({...t,rpcIdPrefix:"dingtalk",logPrefix:"dsh-dingtalk"})}};import{randomUUID as ACe}from"node:crypto";import{mkdir as tCe,readFile as rCe,rename as aCe,unlink as iCe,writeFile as oCe}from"node:fs/promises";import{dirname as nCe}from"node:path";var kQ=Object.freeze({version:1,sessions:{},seenMessageIds:[],pendingSenders:{}});function Br(n){return typeof n=="string"&&n.trim()?n.trim():null}function B1(n){return(Br(n)??w("\u9489\u9489\u7528\u6237")).slice(0,100)}function sCe(n,t){if(!n||typeof n!="object")return null;let o=Br(n.requestId)??Br(t),i=Br(n.staffId),e=Br(n.requestedAt)??Br(n.lastSeenAt),a=Br(n.lastSeenAt)??e;return!o||!i||!e||!a?null:{requestId:o,staffId:i,displayName:B1(n.displayName??n.nick),requestedAt:e,lastSeenAt:a}}function gCe(n){if(!n||typeof n!="object")return structuredClone(kQ);let t={};if(n.sessions&&typeof n.sessions=="object"&&!Array.isArray(n.sessions))for(let[e,a]of Object.entries(n.sessions)){let A=Br(e),r=Br(a);A&&r&&(t[A]=r)}let o={},i=Array.isArray(n.pendingSenders)?n.pendingSenders.map(e=>[e?.requestId,e]):Object.entries(n.pendingSenders&&typeof n.pendingSenders=="object"?n.pendingSenders:{});for(let[e,a]of i){let A=sCe(a,e);if(!A)continue;let r=Object.values(o).find(s=>s.staffId===A.staffId);(!r||r.lastSeenAtnew Date().toISOString()}={}){if(!Br(t))throw new TypeError("state path is required");if(typeof o!="function"||typeof i!="function")throw new TypeError("idFactory and now must be functions");this.#e=t,this.#r=o,this.#l=i}async load(){try{this.#A=gCe(JSON.parse(await rCe(this.#e,"utf8")))}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=structuredClone(kQ),await this.#o()}return this}sessionFor(t){return this.#A.sessions[t]??null}async setSession(t,o){let i=Br(t),e=Br(o);if(!i||!e)throw new TypeError("key and sessionId are required");this.#A.sessions[i]=e,await this.#o()}async clearSession(t){let o=Br(t);!o||!(o in this.#A.sessions)||(delete this.#A.sessions[o],await this.#o())}async clearSessions(){this.#A.sessions={},await this.#o()}hasSeen(t){let o=Br(t);return!!(o&&this.#A.seenMessageIds.includes(o))}async markSeen(t){let o=Br(t);if(!o)throw new TypeError("messageId is required");this.hasSeen(o)||(this.#A.seenMessageIds.push(o),this.#A.seenMessageIds.length>1e3&&this.#A.seenMessageIds.splice(0,this.#A.seenMessageIds.length-1e3),await this.#o())}pendingSenders(){return Object.values(this.#A.pendingSenders).sort((t,o)=>t.requestedAt.localeCompare(o.requestedAt)).map(t=>structuredClone(t))}pendingSender(t){let o=Br(t),i=o?this.#A.pendingSenders[o]:null;return i?structuredClone(i):null}async recordPendingSender(t,o,i){let e=t&&typeof t=="object"?t:{staffId:t,displayName:o,lastSeenAt:i},a=Br(e.staffId);if(!a)throw new TypeError("staffId is required");let A=Br(e.lastSeenAt)??Br(e.requestedAt)??this.#l(),r=Object.values(this.#A.pendingSenders).find(g=>g.staffId===a),s={requestId:r?.requestId??`ding_sender_${this.#r()}`,staffId:a,displayName:B1(e.displayName??e.nick??o),requestedAt:r?.requestedAt??A,lastSeenAt:A};return this.#A.pendingSenders[s.requestId]=s,await this.#o(),structuredClone(s)}async removePendingSender(t){let o=Br(t);return!o||!this.#A.pendingSenders[o]?!1:(delete this.#A.pendingSenders[o],await this.#o(),!0)}async removePendingSenderByStaffId(t){let o=Br(t),i=o?Object.values(this.#A.pendingSenders).find(e=>e.staffId===o):null;return i?this.removePendingSender(i.requestId):!1}snapshot(){return structuredClone(this.#A)}async remove(){await this.#t;try{await iCe(this.#e)}catch(t){if(t?.code!=="ENOENT")throw t}this.#A=structuredClone(kQ)}async#o(){let t=`${JSON.stringify(this.#A,null,2)} +`).trim()}function Ri(n){return typeof n=="string"&&n.trim()?n.trim():null}function $Ee(n){if(!n||typeof n!="object")return null;let t=Ri(n.message);if(t)return t;let o=Ri(n.name),i=Ri(n.code);return o||i?[o??"Error",i].filter(Boolean).join(": "):null}function C1(n,t){let o=[...t].map(i=>i?.event??i).filter(Boolean).sort((i,e)=>(i.seq??-1)-(e.seq??-1));for(let i of o){let e=i.seq??-1;if(e<=n.lastSeq)continue;if(n.lastSeq=e,i.type==="turn/start"){let A=i.data?.turn??null;n.active&&A!==n.turn&&(n.active=!1),n.turn!==null&&A!==n.turn&&(n.completed=!0),n.openTurn=A;continue}if(i.type==="user/message"&&i.data?.source?.rpcId===n.promptRpcId){n.active=!0,n.started=!0,n.completed=!1,n.turn=i.data?.turn??n.openTurn;continue}if(i.type==="turn/end"&&i.data?.turn===n.turn){n.active=!1,n.completed=!0;continue}let a=null;if(i.type==="tool/call"&&n.active&&i.data?.turn===n.turn&&typeof i.data?.callId=="string"&&i.data.callId)a={callId:i.data.callId,name:i.data?.name,arguments:i.data?.arguments};else if(i.type==="tool/code-dispatch-start"&&n.active&&typeof i.data?.subCallId=="string"&&i.data.subCallId){let A;try{A=JSON.stringify(i.data?.arguments)}catch{A=void 0}a={callId:i.data.subCallId,name:i.data?.name,arguments:A}}a&&n.toolCalls.set(a.callId,Object.freeze(a))}}function u1(n,t,o=[]){if(!n||!["object","function","string"].includes(typeof n)||typeof t!="string"||!t)return!1;let i=E1(n).ownerships.get(t);if(!i||i.size===0)return!1;for(let e of i)C1(e,o);return[...i].some(e=>e.active&&!e.completed&&typeof e.reconnect=="function")}var Gp=class{#e;#A;#t=null;#r=null;#l=new Map;#o="";#i=!1;#a=null;#n=new Map;#s=null;constructor({promptRpcId:t,afterSeq:o=-1}){this.#e=t,this.#A=o}get finished(){return this.#i}get lastSeq(){return this.#A}get answer(){return this.#o.trim()}get reason(){return this.#a}get tracking(){return this.#r!==null&&!this.#i}get turn(){return this.#r}consumeAll(t){let o=[],i=a=>{if(a.type==="text"&&o.length>0&&o[o.length-1].type==="text"){o[o.length-1]=a;return}o.push(a)},e=[...t].map(a=>a?.event??a).filter(Boolean).sort((a,A)=>(a.seq??-1)-(A.seq??-1));for(let a of e){let A=a.seq??-1;if(!(A<=this.#A)){if(this.#A=A,a.type==="turn/start"&&(this.#t=a.data?.turn??null),a.type==="user/message"&&a.data?.source?.rpcId===this.#e){this.#r=this.#t;continue}if(this.#r!==null){if(a.type==="turn/end"){if(a.data?.turn!==this.#r)continue;this.#i=!0,this.#a=a.data?.reason??null,this.#t=null;continue}if(a.data?.turn===this.#r){if(a.type==="assistant/chunk"&&a.data?.chunk?.type==="text-delta"){let r=a.data?.step??0,s=a.data.chunk.index??0,g=`${r}:${s}`;this.#l.set(g,(this.#l.get(g)??"")+a.data.chunk.text);let c=`${r}:`,I=[...this.#l.entries()].filter(([d])=>d.startsWith(c)).sort(([d],[B])=>Number(d.split(":")[1])-Number(B.split(":")[1])).map(([,d])=>d).join(` +`).trim();I&&I!==this.#o&&(this.#o=I,i({type:"text",text:I}));continue}if(a.type==="assistant/message"){let r=XEe(a);r&&r!==this.#o&&(this.#o=r,i({type:"text",text:r}));continue}if(a.type==="tool/call"){let r=Ri(a.data?.name)??w("\u5DE5\u5177"),s=Ri(a.data?.callId)??Ri(a.data?.subCallId);s&&this.#n.set(s,r),this.#s=r,i({type:"tool",name:r,...s?{callId:s}:{}})}else if(a.type==="tool/result"){let r=Ri(a.data?.message?.source?.callId)??Ri(a.data?.callId)??Ri(a.data?.subCallId),s=(r?this.#n.get(r):null)??this.#s,g=$Ee(a.data?.error);i({type:"status",text:w("\u6B63\u5728\u6574\u7406\u7ED3\u679C\u2026"),...s?{toolName:s}:{},...g?{error:g}:{}})}}}}}return o}consume(t){return this.consumeAll(t).at(-1)??null}},fn=class extends Error{constructor(t,o){super(`${t}: ${o?.message??"unknown Harness RPC error"}`),this.name="HarnessRpcError",this.method=t,this.code=o?.code??"internal",this.details=o?.details??{}}},rs=class extends Error{constructor(t,o,{cause:i,status:e}={}){let a=Number.isInteger(e)?`, HTTP ${e}`:"";super(`Harness ${o} transport failed (${t}${a})`,{cause:i}),this.name="HarnessTransportError",this.code=t,this.method=o,Number.isInteger(e)&&(this.status=e)}},R_=class extends Error{constructor(t){super("Harness health RPC was rejected",{cause:t}),this.name="HarnessHealthError",this.code="harness-rpc-rejected",this.method="host.describe"}},Fp=class extends Error{constructor(t,o){super(o),this.name="HarnessInteractionError",this.code=t}},as=class extends Error{constructor(t,{reason:o,providerCode:i}={}){super(`Harness turn failed (${t})`),this.name="HarnessTurnError",this.code=t,this.promptAccepted=!0,o&&typeof o=="object"&&(this.reason=o),typeof i=="string"&&i&&(this.providerCode=i)}};function h1(n){let t=Ri(n?.kind)??Ri(n);if(t==="error"){let o=n?.error??n?.failure;return new as("harness-turn-failed",{reason:n,providerCode:Ri(o?.code)??void 0})}return t==="max-tokens"?new as("model-max-tokens",{reason:n}):t==="blocked"?new as("turn-blocked",{reason:n}):["interrupted","stopped","cancelled","canceled"].includes(t)?new as("turn-interrupted",{reason:n}):t==="aborted"?new as("turn-aborted",{reason:n}):t==="completed"?new as("model-empty-response",{reason:n}):new as("harness-turn-failed",{reason:n})}function eCe(n){return n==null?!0:(Ri(n?.kind)??Ri(n))==="completed"}var ur=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c;#g;#I;#d;#h=null;#C;#u;#B;#f;constructor({baseUrl:t,apiProxy:o,interactionScope:i=o,workspace:e,agentPreset:a,autostart:A=!1,dshBin:r="dsh",fetchImpl:s=fetch,createWebSocket:g=m=>new WebSocket(m),interactionReconnectDelayMs:c=500,rpcIdPrefix:I="im",logPrefix:d="dsh-im",commandExecutor:B,controlExecutor:f,sessionMaintenanceExecutor:Q,fileIngressExecutor:y}){if(typeof g!="function")throw new TypeError("createWebSocket must be a function");if(!Number.isFinite(c)||c<0)throw new TypeError("interactionReconnectDelayMs must be a non-negative number");if(typeof I!="string"||!I.trim())throw new TypeError("rpcIdPrefix must be a non-empty string");if(typeof d!="string"||!d.trim())throw new TypeError("logPrefix must be a non-empty string");if(B!==void 0&&typeof B!="function")throw new TypeError("commandExecutor must be a function");if(f!==void 0&&typeof f!="function")throw new TypeError("controlExecutor must be a function");if(Q!==void 0&&typeof Q!="function")throw new TypeError("sessionMaintenanceExecutor must be a function");if(y!==void 0&&typeof y!="function")throw new TypeError("fileIngressExecutor must be a function");if(this.#e=t===void 0?null:new URL(t),this.#A=this.#e?null:o,!this.#e&&(!this.#A||typeof this.#A!="object"))throw new TypeError("HarnessClient requires the current Host apiProxy or an explicit baseUrl");if(this.#A&&(!i||!["object","function"].includes(typeof i)))throw new TypeError("interactionScope must identify the current Host");this.#t=e,this.#r=a??void 0,this.#l=!!(this.#e&&A),this.#o=r,this.#i=s,this.#a=g,this.#n=c,this.#s=I.trim(),this.#p=d.trim(),this.#c=B,this.#g=f,this.#I=Q,this.#d=y,this.#C=E1(this.#e?.origin??i),this.#u=this.#C.ownerships,this.#B=this.#C.claims,this.#f=this.#C.controls}async rpc(t,o={},i=3e4,e={}){let a=e.rpcId??`${this.#s}-${T_()}`,A=AbortSignal.timeout(i),r=e.signal?AbortSignal.any([e.signal,A]):A,s;try{if(this.#A){let[g,c,I]=t.split("."),d={host:"host",workspace:"workspace",session:"sessions",llm:"llm"}[g],B=d&&this.#A[d];if(I!==void 0||!Object.hasOwn(B??{},c)||typeof B[c]!="function")throw new rs("harness-api-not-found",t);s={type:"server-response",...await I1(()=>B[c]({rpcId:a,payload:o},r),r)}}else{let g=await this.#i(new URL(`/api/${t}`,this.#e),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({type:"client-request",rpcId:a,method:t,payload:o}),signal:r});if(!g.ok){let c=await jEe(g,this.#e.hostname);throw new rs(c,t,{status:g.status})}try{s=await g.json()}catch(c){throw new rs("harness-response-invalid",t,{cause:c})}}}catch(g){throw e.signal?.aborted||g instanceof rs?g:new rs(A.aborted?"harness-timeout":"harness-connect-failed",t,{cause:g})}if(s?.type!=="server-response"||s?.rpcId!==a)throw new rs("harness-response-invalid",t,{cause:new Error(`Harness returned an invalid response for ${t}`)});if(!s.result||typeof s.result!="object"||typeof s.result.ok!="boolean")throw new rs("harness-response-invalid",t,{cause:new Error(`Harness returned an invalid result for ${t}`)});if(!s.result?.ok)throw new fn(t,s.result?.error);return s.result.value}async health(t={}){try{return await this.rpc("host.describe",{},5e3,t),!0}catch(o){throw o instanceof fn?new R_(o):o}}async ensureRunning(t={}){try{return await this.health(t)}catch(e){if(!this.#l)throw e}if(!this.#h||this.#h.exitCode!==null){let e=this.#e.port||(this.#e.protocol==="https:"?"443":"80");this.#h=FEe(this.#o,["web","--host",this.#e.hostname,"--port",e],{cwd:this.#t,env:process.env,stdio:["ignore","inherit","inherit"]}),this.#h.on("error",a=>{console.error(`[${this.#p}] failed to start Harness:`,a.message)})}let o=Date.now()+6e4,i;for(;Date.now(){let r=A&&i.signal?AbortSignal.any([A,i.signal]):A??i.signal;return this.rpc("session.selectModel",{sessionId:t,provider:o.provider,model:o.model,...o.reasoningEffort===void 0?{}:{reasoningEffort:o.reasoningEffort}},3e4,r?{...i,signal:r}:i)},a=this.#I?await this.#I({sessionId:t,operation:e}):await e();if(!a||typeof a!="object"||!N_(a.selected))throw new Error("Harness returned an invalid response for session.selectModel");return a}async isSessionRunning(t,o={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");await this.ensureRunning(o);let i=await this.rpc("session.list",{},3e4,o);if(!i||typeof i!="object"||!Array.isArray(i.items))throw new Error("Harness returned an invalid response for session.list");for(let e of i.items)if(!e||typeof e!="object"||typeof e.sessionId!="string"||!e.sessionId||typeof e.running!="boolean")throw new Error("Harness returned an invalid response for session.list");return i.items.find(e=>e.sessionId===t)?.running??!1}async adoptWorkspaceSession(t,o={}){return g1(this,t,o)}async workspaceId(t={}){let{workspace:o=this.#t,...i}=t,{items:e}=await this.rpc("workspace.list",{},3e4,i),a=e.find(r=>r.path===o);return a?a.workspaceId:(await this.rpc("workspace.create",{path:o},3e4,i)).workspace.workspaceId}async createSession(t={}){let{agentPreset:o,...i}=t;await this.ensureRunning(i);let a={workspaceId:await this.workspaceId(i)},A=o!==void 0?o:this.#r;return A!=null&&(a.agentPreset=A),(await this.rpc("session.create",a,3e4,i)).sessionId}async renameSession(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(typeof o!="string"||!o.trim())throw new TypeError("session title is required");return this.rpc("session.rename",{sessionId:t,title:o},3e4,i)}async executeCommand(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(typeof o!="string"||!o)throw new TypeError("command line is required");if(!this.#c){let e=new Error("Harness command execution is unavailable");throw e.code="commands-unavailable",e}try{return await this.#c(t,o,i)}catch(e){throw e?.failure&&typeof e.failure=="object"?new fn("commands.execute",e.failure):e}}async readSessionHistory(t,{maxMessages:o=50,beforeSeq:i,timeoutMs:e=1e4,...a}={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(!Number.isSafeInteger(o)||o<1||i!==void 0&&(!Number.isSafeInteger(i)||i<0))throw new TypeError("Invalid history pagination");return this.rpc("session.history",{sessionId:t,maxMessages:o,...i===void 0?{}:{beforeSeq:i}},e,a)}async sessionExists(t,o={}){try{return await this.rpc("session.history",{sessionId:t,maxMessages:1},3e4,o),!0}catch(i){if(i instanceof fn&&i.code==="session-not-found")return!1;throw i}}async respondInteraction(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("rpcId is required");if(!o||typeof o!="object"||typeof o.ok!="boolean")throw new TypeError("A Harness RPC result is required");let e=AbortSignal.timeout(i.timeoutMs??3e4),a=i.signal?AbortSignal.any([i.signal,e]):e,A={type:"client-response",rpcId:t,result:o},r;if(this.#A)r=await I1(()=>this.#A.respond(A),a);else{let g=await this.#i(new URL("/api/respond",this.#e),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(A),signal:a});if(!g.ok)throw new Error(`Harness transport respond failed: HTTP ${g.status}`);r=await g.json()}if(r?.accepted===!0)return r;if(r?.accepted!==!1||r.reason!=="bad-response"&&r.reason!=="not-pending")throw new Error("Harness returned an invalid interaction response receipt");let s=r.reason;throw new Fp(`interaction-${s}`,`Harness interaction response was rejected (${s})`)}async watchInteractions(t,{signal:o,onInteraction:i,onResolved:e,onOpen:a,ownership:A}={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(!o||typeof o.addEventListener!="function")throw new TypeError("watchInteractions requires an AbortSignal");if(i!==void 0&&typeof i!="function")throw new TypeError("onInteraction must be a function");if(e!==void 0&&typeof e!="function")throw new TypeError("onResolved must be a function");if(a!==void 0&&typeof a!="function")throw new TypeError("onOpen must be a function");for(;!o.aborted;){try{await this.#R(t,{signal:o,onInteraction:i,onResolved:e,onOpen:a,ownership:A})}catch(r){if(o.aborted)return;console.warn(`[${this.#p}] Harness interaction stream disconnected:`,r.message)}if(o.aborted)return;try{await zE(this.#n,o)}catch{if(o.aborted)return;throw new Error("Harness interaction reconnect wait failed")}}}#Q(t,o){let i=this.#u.get(t)??new Set;o.order=this.#C.nextOrder,this.#C.nextOrder+=1,i.add(o),this.#u.set(t,i)}#S(t,o){let i=this.#u.get(t);i?.delete(o),i?.size===0&&this.#u.delete(t);for(let[e,a]of this.#B)a.ownership===o&&this.#B.delete(e)}#y(t){if(!t.control)return;let o=this.#f.get(t.control.owner);o||(o=new Map,this.#f.set(t.control.owner,o));let i=o.get(t.control.key)??new Set;i.add(t),o.set(t.control.key,i)}#m(t){if(!t.control)return;let o=this.#f.get(t.control.owner),i=o?.get(t.control.key);i?.delete(t),i?.size===0&&o.delete(t.control.key),o?.size===0&&this.#f.delete(t.control.owner)}#D(t,o){let i=l1(o);return i?[...this.#f.get(i.owner)?.get(i.key)??[]].filter(a=>a.sessionId===t).sort((a,A)=>a.order-A.order):[]}#E(t,o){return this.#D(t,o).find(i=>i.started&&i.active&&!i.completed&&i.turn!==null)??null}async#N(t,o,i){let e=this.#D(t,o);if(e.length===0)return null;try{let a=await this.rpc("session.history",{sessionId:t,maxMessages:50},3e4,i);this.#T(t,a.events??[])}catch(a){if(!(a instanceof fn)||a.code!=="session-not-found")throw a;for(let A of e)A.active=!1,A.completed=!0;return null}return this.#E(t,o)}async hasActiveTurn(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");return!!await this.#N(t,o,i)}async stopActiveTurn(t,o,i={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");let e=await this.#N(t,o,i);if(!e)return!1;if(e.stopRequested)return!0;if(this.#E(t,o)!==e)return!1;e.stopRequested=!0;try{if(this.#g){let a=this.#g({sessionId:t,expectedTurn:e.turn,promptRpcId:e.promptRpcId,action:"stop"});if(a&&typeof a.then=="function")throw new TypeError("controlExecutor must return synchronously");if(a!==void 0){if(typeof a!="boolean")throw new TypeError("controlExecutor must return a boolean or undefined");return a||(e.stopRequested=!1),a}}return await this.rpc("session.cancel",{sessionId:t,keepInbox:!0},3e4,i),!0}catch(a){if(this.#E(t,o)===e&&(e.stopRequested=!1),a instanceof fn&&a.code==="session-not-found")return!1;throw a}}async steerActiveTurn(t,o,i,e={}){if(typeof t!="string"||!t)throw new TypeError("sessionId is required");if(typeof o!="string"||!o.trim())throw new TypeError("Steering text is required");let a=await this.#N(t,i,e);if(!a||a.stopRequested||this.#E(t,i)!==a)return!1;if(this.#g){let A=this.#g({sessionId:t,expectedTurn:a.turn,promptRpcId:a.promptRpcId,action:"steer",text:o});if(A&&typeof A.then=="function")throw new TypeError("controlExecutor must return synchronously");if(A!==void 0){if(typeof A!="boolean")throw new TypeError("controlExecutor must return a boolean or undefined");return A}}return await this.rpc("session.prompt",{sessionId:t,mode:"steer",content:[{type:"text",text:o}],clientTimeZone:Intl.DateTimeFormat().resolvedOptions().timeZone},3e4,e),!0}#T(t,o){for(let i of this.#u.get(t)??[])C1(i,o)}async#O(t,o){let i=await this.rpc("session.history",{sessionId:t,maxMessages:50},3e4,{signal:o});this.#T(t,i.events??[])}#w(t,o,i){let e=this.#B.get(o);if(e&&this.#u.get(t)?.has(e.ownership))return e;let a=[...this.#u.get(t)??[]],A=a.filter(s=>s.active).sort((s,g)=>s.order-g.order);if(A.length>0)return{ownership:A[0],recovered:!1};let r=a.filter(s=>!s.started&&!s.completed).sort((s,g)=>s.order-g.order)[0]??null;return r?{ownership:r,recovered:!0}:null}async ask(t,o,i={}){typeof i=="number"&&(i={timeoutMs:i});let e=i.timeoutMs??6e5,a=i.signal,A=typeof i.onUpdate=="function"?i.onUpdate:null,r=i.progressMode==="all"?"all":"latest",s=typeof i.onArtifact=="function"?i.onArtifact:null,g=typeof i.onInteraction=="function"?i.onInteraction:void 0,c=typeof i.onInteractionResolved=="function"?i.onInteractionResolved:void 0,I=l1(i.control),d=Array.isArray(i.files)?i.files.filter(Boolean):[];await this.ensureRunning({signal:a});let B=await this.rpc("session.history",{sessionId:t,maxMessages:1},3e4,{signal:a}),f=Math.max(-1,...(B.events??[]).map(({event:V})=>V.seq??-1)),Q=`${this.#s}-${T_()}`,y=new Gp({promptRpcId:Q,afterSeq:f}),m=g||c?new AbortController:null,_=m?a?AbortSignal.any([a,m.signal]):m.signal:null,T=m||I?{sessionId:t,promptRpcId:Q,active:!1,started:!1,completed:!1,stopRequested:!1,turn:null,openTurn:null,lastSeq:f,reconnect:null,order:-1,toolCalls:new Map,control:I}:null,R=null,K=!1,L=0,U=null,z=!1,q=!1,x=async()=>{if(!s||K||y.turn===null)return L;K=!0;let V=vI.take(t,y.turn,{signal:a});for(let F of V)try{await s(F),L+=1}catch(N){vI.release(F),console.warn(`[${this.#p}] ignored an artifact handoff failure:`,N.message)}return L};T&&(this.#Q(t,T),this.#y(T));let G=vI.openConsumer(t,Q);try{if(d.length>0){if(!this.#d)throw new Ro("inbound-file-ingress-unavailable","Harness file ingress is unavailable in this Host process.");let N=(await this.rpc("session.list",{},3e4,{signal:a}))?.items?.find(k=>k?.sessionId===t)?.cwd;U=await this.#d({sessionId:t,workspace:N,files:d,signal:a}),o=PY(o,U)}if(_){let F,N=new Promise(k=>{F=k});R=this.watchInteractions(t,{signal:_,onInteraction:g,onResolved:c,onOpen:F,ownership:T}),R.catch(()=>{}),await Promise.race([N,zE(3e4,_).then(()=>{throw new Error("Harness interaction stream did not open within 30 seconds")})])}let V=typeof o=="string"?[{type:"text",text:o}]:o;if(!Array.isArray(V)||V.length===0)throw new TypeError("Harness prompt content is required");await this.rpc("session.prompt",{sessionId:t,mode:"queue",content:V,clientTimeZone:Intl.DateTimeFormat().resolvedOptions().timeZone},3e4,{rpcId:Q,signal:a}),z=!0;try{let F=Date.now(),N=y.lastSeq;for(;Date.now()-FN;if(N=y.lastSeq,ie)F=Date.now();else if(T?.active)F=Date.now();else if(y.tracking)try{await this.isSessionRunning(t,{signal:a})&&(F=Date.now())}catch{}if(A){let se=r==="all"?$:$.slice(-1);for(let Me of se)try{await A(Me)}catch(fe){console.warn(`[${this.#p}] ignored a progress update failure:`,fe.message)}}if(!y.finished)continue;if(q=!0,!T?.stopRequested&&!eCe(y.reason))throw h1(y.reason);let pe=T?.stopRequested?0:await x();if(y.answer)return y.answer;if(pe>0)return"";throw T?.stopRequested?d1():h1(y.reason)}throw new as("harness-reply-timeout")}catch(F){if(!T?.stopRequested)throw F;if(y.answer)return y.answer;throw F?.code==="turn-stopped"?F:d1()}}finally{U&&(!z||q)&&await U.cleanup().catch(V=>{console.warn(`[${this.#p}] unable to clean inbound files:`,V.message)}),G(),T&&(this.#m(T),this.#S(t,T)),y.turn!==null&&vI.discard(t,y.turn),m?.abort(new DOMException("Harness turn finished","AbortError")),R&&await R.catch(()=>{})}}async#R(t,{signal:o,onInteraction:i,onResolved:e,onOpen:a,ownership:A}){let r=!1,s=null,g=Promise.resolve(),c=A==null,I=[],d=()=>{},B=m=>{d=m,A&&(A.reconnect=d);try{a?.()}catch(_){console.warn(`[${this.#p}] ignored an interaction open callback failure:`,_.message)}A&&this.#O(t,o).then(()=>{if(!r){c=!0;for(let _ of I.splice(0))Q(_)}}).catch(_=>{s??=_,d()})},f=(m,_)=>{m&&(g=g.then(()=>m(_)).catch(T=>{s??=T,d()}))},Q=m=>{let _=m.payload;if(A&&_.type==="session/event"){this.#T(t,[_.event]);return}if(_.type==="question/requested"||_.type==="approval/requested"){let T=_.type==="question/requested"?"question":"approval",R=T==="question"?m.rpcId:_.approvalId,K=`${T}:${R}`;if(A){let U=this.#w(t,K,T);if(U?.ownership!==A)return;this.#B.set(K,U)}let L=T==="approval"&&A&&typeof _.callId=="string"?this.#B.get(K)?.ownership.toolCalls.get(_.callId):void 0;f(i,Object.freeze({kind:T,interactionId:R,rpcId:m.rpcId,sessionId:t,payload:_,recovered:A?this.#B.get(K)?.recovered===!0:!1,...L?{toolCall:L}:{},reconnect:d,respond:(U,z={})=>this.respondInteraction(m.rpcId,U,{...z,signal:z.signal??o})}));return}if(_.type==="question/resolved"||_.type==="approval/resolved"){let T=_.type==="question/resolved"?"question":"approval",R=T==="question"?_.questionRpcId:_.approvalId,K=`${T}:${R}`;if(A){if(this.#B.get(K)?.ownership!==A)return;this.#B.delete(K)}f(e,Object.freeze({kind:T,interactionId:R,sessionId:t,outcome:_.outcome,payload:_}))}},y=m=>{try{let _=m?.payload;if(m?.type!=="server-request"||typeof m.rpcId!="string"||!_||typeof _!="object"||m.method!==_.type)throw new Error("invalid server-request envelope");if(_.sessionId!==t)return;c?Q(m):I.push(m)}catch(_){console.warn(`[${this.#p}] ignored a malformed Harness interaction frame:`,_.message)}};try{await this.#_({signal:o,onOpen:B,onEnvelope:y})}finally{r=!0,A?.reconnect===d&&(A.reconnect=null),o.aborted||await g}if(!o.aborted&&s)throw s}async watchHarnessEvents({signal:t,onSessionEvent:o,onReconnect:i}={}){if(typeof o!="function")throw new TypeError("watchHarnessEvents requires onSessionEvent");if(!t||typeof t.addEventListener!="function")throw new TypeError("watchHarnessEvents requires an AbortSignal");if(i!==void 0&&typeof i!="function")throw new TypeError("onReconnect must be a function");for(;!t.aborted;){try{await this.#_({signal:t,onOpen:()=>{try{i?.()}catch(e){console.warn(`[${this.#p}] mux reconnect hook failed:`,e.message)}},onEnvelope:e=>{try{let a=e?.payload;if(e?.type!=="server-request"||!a||typeof a!="object"||e.method!==a.type||a.type!=="session/event"||typeof a.sessionId!="string"||!a.event||typeof a.event!="object")return;o({sessionId:a.sessionId,event:a.event})}catch(a){console.warn(`[${this.#p}] ignored a malformed global mux frame:`,a.message)}}})}catch(e){if(t.aborted)return;console.warn(`[${this.#p}] Harness event mux disconnected:`,e.message)}if(t.aborted)return;try{await zE(this.#n,t)}catch{if(t.aborted)return;throw new Error("Harness event mux reconnect wait failed")}}}#_(t){return c1({apiProxy:this.#A,baseUrl:this.#e,createWebSocket:this.#a,rpcId:`${this.#s}-${T_()}`,...t,onMalformed:o=>{console.warn(`[${this.#p}] ignored a malformed Harness mux frame:`,o.message)}})}stopManagedProcess(){this.#h?.exitCode===null&&this.#h.kill("SIGTERM")}};var RQ=class extends ur{constructor(t){super({...t,rpcIdPrefix:"dingtalk",logPrefix:"dsh-dingtalk"})}};import{randomUUID as ACe}from"node:crypto";import{mkdir as tCe,readFile as rCe,rename as aCe,unlink as iCe,writeFile as oCe}from"node:fs/promises";import{dirname as nCe}from"node:path";var kQ=Object.freeze({version:1,sessions:{},seenMessageIds:[],pendingSenders:{}});function Br(n){return typeof n=="string"&&n.trim()?n.trim():null}function B1(n){return(Br(n)??w("\u9489\u9489\u7528\u6237")).slice(0,100)}function sCe(n,t){if(!n||typeof n!="object")return null;let o=Br(n.requestId)??Br(t),i=Br(n.staffId),e=Br(n.requestedAt)??Br(n.lastSeenAt),a=Br(n.lastSeenAt)??e;return!o||!i||!e||!a?null:{requestId:o,staffId:i,displayName:B1(n.displayName??n.nick),requestedAt:e,lastSeenAt:a}}function gCe(n){if(!n||typeof n!="object")return structuredClone(kQ);let t={};if(n.sessions&&typeof n.sessions=="object"&&!Array.isArray(n.sessions))for(let[e,a]of Object.entries(n.sessions)){let A=Br(e),r=Br(a);A&&r&&(t[A]=r)}let o={},i=Array.isArray(n.pendingSenders)?n.pendingSenders.map(e=>[e?.requestId,e]):Object.entries(n.pendingSenders&&typeof n.pendingSenders=="object"?n.pendingSenders:{});for(let[e,a]of i){let A=sCe(a,e);if(!A)continue;let r=Object.values(o).find(s=>s.staffId===A.staffId);(!r||r.lastSeenAtnew Date().toISOString()}={}){if(!Br(t))throw new TypeError("state path is required");if(typeof o!="function"||typeof i!="function")throw new TypeError("idFactory and now must be functions");this.#e=t,this.#r=o,this.#l=i}async load(){try{this.#A=gCe(JSON.parse(await rCe(this.#e,"utf8")))}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=structuredClone(kQ),await this.#o()}return this}sessionFor(t){return this.#A.sessions[t]??null}async setSession(t,o){let i=Br(t),e=Br(o);if(!i||!e)throw new TypeError("key and sessionId are required");this.#A.sessions[i]=e,await this.#o()}async clearSession(t){let o=Br(t);!o||!(o in this.#A.sessions)||(delete this.#A.sessions[o],await this.#o())}async clearSessions(){this.#A.sessions={},await this.#o()}hasSeen(t){let o=Br(t);return!!(o&&this.#A.seenMessageIds.includes(o))}async markSeen(t){let o=Br(t);if(!o)throw new TypeError("messageId is required");this.hasSeen(o)||(this.#A.seenMessageIds.push(o),this.#A.seenMessageIds.length>1e3&&this.#A.seenMessageIds.splice(0,this.#A.seenMessageIds.length-1e3),await this.#o())}pendingSenders(){return Object.values(this.#A.pendingSenders).sort((t,o)=>t.requestedAt.localeCompare(o.requestedAt)).map(t=>structuredClone(t))}pendingSender(t){let o=Br(t),i=o?this.#A.pendingSenders[o]:null;return i?structuredClone(i):null}async recordPendingSender(t,o,i){let e=t&&typeof t=="object"?t:{staffId:t,displayName:o,lastSeenAt:i},a=Br(e.staffId);if(!a)throw new TypeError("staffId is required");let A=Br(e.lastSeenAt)??Br(e.requestedAt)??this.#l(),r=Object.values(this.#A.pendingSenders).find(g=>g.staffId===a),s={requestId:r?.requestId??`ding_sender_${this.#r()}`,staffId:a,displayName:B1(e.displayName??e.nick??o),requestedAt:r?.requestedAt??A,lastSeenAt:A};return this.#A.pendingSenders[s.requestId]=s,await this.#o(),structuredClone(s)}async removePendingSender(t){let o=Br(t);return!o||!this.#A.pendingSenders[o]?!1:(delete this.#A.pendingSenders[o],await this.#o(),!0)}async removePendingSenderByStaffId(t){let o=Br(t),i=o?Object.values(this.#A.pendingSenders).find(e=>e.staffId===o):null;return i?this.removePendingSender(i.requestId):!1}snapshot(){return structuredClone(this.#A)}async remove(){await this.#t;try{await iCe(this.#e)}catch(t){if(t?.code!=="ENOENT")throw t}this.#A=structuredClone(kQ)}async#o(){let t=`${JSON.stringify(this.#A,null,2)} `,o=this.#t.then(async()=>{await tCe(nCe(this.#e),{recursive:!0,mode:448});let i=`${this.#e}.tmp`;await oCe(i,t,{encoding:"utf8",mode:384}),await aCe(i,this.#e)});this.#t=o.then(()=>{},()=>{}),await o}};import{mkdir as cCe,readFile as ICe,realpath as lCe,rename as pCe,stat as dCe,unlink as hCe,writeFile as ECe}from"node:fs/promises";import{dirname as CCe,isAbsolute as y1,resolve as WE}from"node:path";var geA=Object.freeze({version:1,workspaces:Object.freeze({})});function PI(n){let t=new Error(n);return t.code=ua,t}async function k_(n){return WE(await lCe(n))}async function uCe(n,t){if(n===t)return!0;try{return await k_(n)===await k_(t)}catch{return!1}}function xt(n){if(typeof n!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(n))throw new TypeError("Invalid bot id");return n}function ci(n,t,o){let i=new Error(t,o);return i.code=n,i}function PQ(n){if(typeof n!="string"||!/^[A-Za-z0-9._:@-]{1,128}$/.test(n))throw ci("invalid-target","Invalid target id");return n}function BCe(n){if(!n||typeof n!="object"||Array.isArray(n))throw ci("invalid-target","Invalid target route");try{let t=JSON.stringify(n);if(t===void 0)throw new TypeError("route is not JSON");let o=JSON.parse(t);if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError("route is not an object");return o}catch(t){throw ci("invalid-target","Invalid target route",{cause:t})}}function GI(n,{targetId:t}={}){if(!n||typeof n!="object"||Array.isArray(n))throw ci("invalid-target","Invalid delivery target");let o=t===void 0?new Set(["targetId","name","kind","route"]):new Set(["name","kind","route"]);if(Object.keys(n).some(a=>!o.has(a)))throw ci("invalid-target","Invalid delivery target");let i=PQ(t??n.targetId);if(typeof n.kind!="string"||!/^[a-z][a-z0-9-]{0,31}$/.test(n.kind))throw ci("invalid-target","Invalid target kind");let e;if(n.name!==void 0){if(typeof n.name!="string"||!n.name.trim()||n.name.trim().length>80)throw ci("invalid-target","Invalid target name");e=n.name.trim()}return{targetId:i,...e===void 0?{}:{name:e},kind:n.kind,route:BCe(n.route)}}function fCe(n){let t=Object.create(null);if(n===void 0)return t;if(!n||typeof n!="object"||Array.isArray(n))return null;try{for(let[o,i]of Object.entries(n)){if(xt(o),!i||typeof i!="object"||Array.isArray(i))return null;let e=Object.create(null);for(let[a,A]of Object.entries(i)){let r=GI(A,{targetId:a}),{targetId:s,...g}=r;e[a]=g}t[o]=e}}catch{return null}return t}function QCe(n,t){let o=Object.create(null);if(n===void 0)return o;if(!n||typeof n!="object"||Array.isArray(n)){for(let i of Object.keys(t))o[i]=null;return o}for(let[i,e]of Object.entries(n))try{xt(i),o[i]=Pp(e)}catch{}return o}function yCe(n){if(!n||![1,2].includes(n.version)||!n.workspaces||typeof n.workspaces!="object"||Array.isArray(n.workspaces))return null;let t={};for(let[r,s]of Object.entries(n.workspaces)){if(!/^[A-Za-z0-9_-]{1,128}$/.test(r)||typeof s!="string"||!y1(s))return null;t[r]=WE(s)}let o={};if(n.agentPresets!==void 0){if(!n.agentPresets||typeof n.agentPresets!="object"||Array.isArray(n.agentPresets))return null;for(let[r,s]of Object.entries(n.agentPresets)){if(!/^[A-Za-z0-9_-]{1,128}$/.test(r))return null;try{let g=Tp(s);if(!g)return null;o[r]=g}catch{return null}}}let i=Object.create(null);if(n.contextEnhancement&&typeof n.contextEnhancement=="object"&&!Array.isArray(n.contextEnhancement))for(let[r,s]of Object.entries(n.contextEnhancement))/^[A-Za-z0-9_-]{1,128}$/.test(r)&&(i[r]=Rp(s));if(n.version===1&&n.deliveryTargets!==void 0)return null;let e=fCe(n.deliveryTargets);if(!e)return null;let a=QCe(n.accessPolicies,t);return{version:n.accessPolicies===void 0?n.version:2,workspaces:t,agentPresets:o,contextEnhancement:i,deliveryTargets:e,accessPolicies:a}}function mCe({version:n,workspaces:t,agentPresets:o,contextEnhancement:i,deliveryTargets:e,accessPolicies:a}){let A={version:n,workspaces:t};return Object.keys(o).length>0&&(A.agentPresets=o),Object.keys(i).length>0&&(A.contextEnhancement=i),n>=2&&Object.keys(e).length>0&&(A.deliveryTargets=e),n>=2&&Object.keys(a).length>0&&(A.accessPolicies=a),A}async function SCe(n,t){await cCe(CCe(n),{recursive:!0,mode:448});let o=`${n}.tmp`;await ECe(o,`${JSON.stringify(t,null,2)} -`,{encoding:"utf8",mode:384}),await pCe(o,n)}async function f1(n){if(typeof n!="string"||!n.trim()||!y1(n.trim())){let i=new Error("\u5DE5\u4F5C\u533A\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84\u3002");throw i.code="workspace-not-absolute",i}let t=WE(n.trim()),o;try{o=await dCe(t)}catch(i){let e=new Error("\u5DE5\u4F5C\u533A\u8DEF\u5F84\u4E0D\u5B58\u5728\u3002",{cause:i});throw e.code="workspace-not-found",e}if(!o.isDirectory()){let i=new Error("\u5DE5\u4F5C\u533A\u8DEF\u5F84\u5FC5\u987B\u6307\u5411\u4E00\u4E2A\u76EE\u5F55\u3002");throw i.code="workspace-not-directory",i}return t}var ra=class{#e;#A;#t=1;#r={};#l={};#o={};#i=Object.create(null);#a=Object.create(null);#n=new Map;#s=1;#p=new Map;#c=1;#g=new Map;#I=new WeakMap;#d=new Set;#h=Promise.resolve();#C=new Map;constructor(t,{defaultWorkspace:o=process.cwd()}={}){if(typeof t!="string"||!t)throw new TypeError("workspace store path is required");this.#e=t,this.#A=WE(o)}async load(){try{let t=yCe(JSON.parse(await ICe(this.#e,"utf8")));if(!t)throw new Error("dsh-im workspace config is invalid");this.#t=t.version,this.#r=t.workspaces,this.#l=t.agentPresets,this.#o=t.contextEnhancement,this.#i=t.deliveryTargets,this.#a=t.accessPolicies}catch(t){if(t?.code!=="ENOENT")throw t;this.#t=1,this.#r={},this.#l={},this.#o={},this.#i=Object.create(null),this.#a=Object.create(null)}this.#n.clear(),this.#s=1,this.#p.clear(),this.#c=1,this.#g.clear(),this.#d.clear();for(let t of Object.keys(this.#r))this.#n.set(t,this.#u()),this.#p.set(t,this.#B());return this}has(t){let o=xt(t);return Object.hasOwn(this.#r,o)&&!this.#g.has(o)}incarnationFor(t){return this.#p.get(xt(t))??null}workspaceFor(t){return this.#r[xt(t)]??this.#A}agentPresetFor(t){return this.#l[xt(t)]??null}contextEnhancementFor(t){let o=xt(t);return this.has(o)&&Object.hasOwn(this.#o,o)?this.#o[o]:C_}accessPolicyFor(t){let o=xt(t);return this.has(o)&&Object.hasOwn(this.#a,o)?this.#a[o]:null}listDeliveryTargets(t){let o=xt(t);if(!this.has(o))throw ci("unknown-bot","Unknown bot");return Object.entries(this.#i[o]??{}).map(([i,e])=>GI(e,{targetId:i})).sort((i,e)=>i.targetId.localeCompare(e.targetId))}deliveryTargetFor(t,o){let i=xt(t),e=PQ(o);if(!this.has(i))throw ci("unknown-bot","Unknown bot");let a=this.#i[i]?.[e];return a?GI(a,{targetId:e}):null}async createDeliveryTarget(t,o){let i=xt(t),e=GI(o);return this.#S(i,async()=>{if(!this.has(i))throw ci("unknown-bot","Unknown bot");if(Object.hasOwn(this.#i[i]??{},e.targetId))throw ci("target-conflict","Target already exists");let{targetId:a,...A}=e,r={...this.#i,[i]:{...this.#i[i]??{},[a]:A}};return await this.#y(this.#o,r,2),this.#i=r,this.#t=2,GI(A,{targetId:a})})}async updateDeliveryTarget(t,o,i){let e=xt(t),a=PQ(o),A=GI(i,{targetId:a});return this.#S(e,async()=>{if(!this.has(e))throw ci("unknown-bot","Unknown bot");if(!Object.hasOwn(this.#i[e]??{},a))throw ci("unknown-target","Unknown target");let{targetId:r,...s}=A,g={...this.#i,[e]:{...this.#i[e],[a]:s}};return await this.#y(this.#o,g,2),this.#i=g,this.#t=2,GI(s,{targetId:a})})}async deleteDeliveryTarget(t,o){let i=xt(t),e=PQ(o);return this.#S(i,async()=>{if(!this.has(i))throw ci("unknown-bot","Unknown bot");if(!Object.hasOwn(this.#i[i]??{},e))throw ci("unknown-target","Unknown target");let a={...this.#i[i]};delete a[e];let A={...this.#i};return Object.keys(a).length>0?A[i]=a:delete A[i],await this.#y(this.#o,A,2),this.#i=A,this.#t=2,!0})}generationFor(t){return this.#n.get(xt(t))??null}async whenIdle(){await this.#h}async whenBotIdle(t){let o=xt(t);for(;;){let i=this.#C.get(o);if(!i||(await i,this.#C.get(o)===i))return}}async ensure(t,{workspace:o=this.#A,defaultAgentPreset:i,initialAccessPolicy:e}={}){let a=xt(t),A=WE(o);return this.#S(a,async()=>{let r=!this.#r[a],s=e!==void 0&&!Object.hasOwn(this.#a,a);if(r||s){let g=s?Ic(e):void 0,c=r?Tp(i):null,I=Object.hasOwn(this.#l,a),d=this.#l[a],B=s?{...this.#a,[a]:g}:this.#a;r&&(this.#r[a]=A,c&&(this.#l[a]=c),this.#n.set(a,this.#u()),this.#p.set(a,this.#B()));let f=s?2:this.#t;try{await this.#y(this.#o,this.#i,f,B)}catch(Q){throw r&&(delete this.#r[a],I?this.#l[a]=d:delete this.#l[a],this.#n.delete(a),this.#p.delete(a)),Q}this.#a=B,this.#t=f}else this.#n.has(a)||this.#n.set(a,this.#u());return this.#r[a]})}async setWorkspace(t,o,{clearSessions:i,incarnation:e}={}){let a=xt(t);if(!this.has(a)||e!==void 0&&e!==this.incarnationFor(a)){let r=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw r.code="workspace-bot-not-found",r}let A=await f1(o);return this.#S(a,async()=>{if(!this.has(a)||e!==void 0&&e!==this.incarnationFor(a)){let s=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw s.code="workspace-bot-not-found",s}if(A===this.workspaceFor(a))return A;let r=this.#r[a];this.#n.set(a,this.#u()),await i?.(),this.#r[a]=A;try{await this.#y()}catch(s){throw this.#r[a]=r,s}return A})}async setAgentPreset(t,o,{incarnation:i}={}){let e=xt(t);if(!this.has(e)||i!==void 0&&i!==this.incarnationFor(e)){let A=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw A.code="workspace-bot-not-found",A}let a=Tp(o);return this.#S(e,async()=>{if(!this.has(e)||i!==void 0&&i!==this.incarnationFor(e)){let r=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw r.code="workspace-bot-not-found",r}let A=this.#l[e]??null;if(A===a)return a;a?this.#l[e]=a:delete this.#l[e];try{await this.#y()}catch(r){throw A?this.#l[e]=A:delete this.#l[e],r}return a})}async setContextEnhancement(t,o,{incarnation:i}={}){let e=xt(t),a=i===void 0?this.incarnationFor(e):i,A=kI(o);return this.#S(e,async()=>{if(!this.has(e)||a!==this.incarnationFor(e)){let s=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw s.code="workspace-bot-not-found",s}let r={...this.#o,[e]:A};return await this.#y(r),this.#o=r,A})}async setAccessPolicy(t,o,{incarnation:i}={}){let e=xt(t),a=i===void 0?this.incarnationFor(e):i,A=Ic(o);return this.#S(e,async()=>{if(!this.has(e)||a!==this.incarnationFor(e)){let s=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw s.code="workspace-bot-not-found",s}let r={...this.#a,[e]:A};return await this.#y(this.#o,this.#i,2,r),this.#a=r,this.#t=2,A})}async bindWorkspaceSession(t,o,{conversationKey:i,sessionId:e,clearSessions:a,setSession:A,incarnation:r,expectedGeneration:s}={}){let g=xt(t);if(typeof i!="string"||!i||typeof e!="string"||!e)throw new TypeError("conversationKey and sessionId are required");if(typeof a!="function"||typeof A!="function")throw new TypeError("session state callbacks are required");if(!this.has(g)||r!==void 0&&r!==this.incarnationFor(g)){let I=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw I.code="workspace-bot-not-found",I}let c=await k_(await f1(o));return this.#S(g,async()=>{if(!this.has(g)||r!==void 0&&r!==this.incarnationFor(g)){let I=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw I.code="workspace-bot-not-found",I}if(s!==void 0&&s!==this.generationFor(g))throw PI("The bot workspace changed before the session binding could be committed.");if(!await uCe(c,this.workspaceFor(g))){let I=this.#r[g];this.#n.set(g,this.#u()),await a(),this.#r[g]=c;try{await this.#y()}catch(d){throw this.#r[g]=I,d}}return await A(i,e),{workspace:c,sessionId:e,generation:this.#n.get(g)}})}async invalidateSessions(t,{clearSessions:o}={}){let i=xt(t);return this.#S(i,async()=>{this.#n.set(i,this.#u()),await o?.()})}async beginRemoval(t,{clearSessions:o}={}){let i=xt(t);return this.#S(i,async()=>{let e=this.#g.get(i);if(e)return e;let a=Object.freeze({});this.#g.set(i,a),this.#I.set(a,{botId:i,incarnation:this.incarnationFor(i)}),this.#n.set(i,this.#u());try{await o?.()}catch(A){throw this.#g.get(i)===a&&this.#g.delete(i),A}return a})}async abortRemoval(t){let{botId:o}=this.#f(t);return this.#S(o,async()=>this.#g.get(o)!==t?!1:(this.#g.delete(o),Object.hasOwn(this.#r,o)&&(this.#n.set(o,this.#u()),this.#p.has(o)||this.#p.set(o,this.#B())),!0))}async finishRemoval(t){let{botId:o,incarnation:i}=this.#f(t);return this.#S(o,async()=>this.#g.get(o)!==t?{removed:!1,persisted:!0,error:null,stale:!0}:this.incarnationFor(o)!==i?(this.#g.delete(o),{removed:!1,persisted:!0,error:null,stale:!0}):(this.#g.delete(o),this.#Q(o)))}async retireAfterConfigCommit(t){let o=xt(t);return this.#S(o,async()=>(this.#g.delete(o),this.#Q(o)))}flushPendingRemoval(t){if(this.#d.has(t))return this.#S(t,async()=>{this.#d.has(t)&&await this.#m()})}async remove(t){let o=await this.retireAfterConfigCommit(t);if(o.error)throw o.error;return o.removed}async reconcile(t){let o=new Set([...t].map(xt)),i=new Set([...Object.keys(this.#r),...Object.keys(this.#l),...Object.keys(this.#o),...Object.keys(this.#i),...Object.keys(this.#a),...this.#d]);for(let e of i)o.has(e)||await this.remove(e)}decorateStatus(t){return!t||typeof t!="object"||!Array.isArray(t.bots)?t:{...t,bots:t.bots.map(o=>o?.botId?{...o,workspace:this.workspaceFor(o.botId),agentPreset:this.agentPresetFor(o.botId),contextEnhancement:this.contextEnhancementFor(o.botId),accessPolicy:this.accessPolicyFor(o.botId)}:o)}}#u(){let t=this.#s;return this.#s+=1,t}#B(){let t=this.#c;return this.#c+=1,t}#f(t){if(!t||typeof t!="object")throw new TypeError("Invalid workspace removal transaction");let o=this.#I.get(t);if(!o)throw new TypeError("Invalid workspace removal transaction");return o}async#Q(t){let o=Object.hasOwn(this.#r,t),i=Object.hasOwn(this.#l,t),e=Object.hasOwn(this.#o,t),a=Object.hasOwn(this.#i,t),A=Object.hasOwn(this.#a,t),r=o||i||e||a||A||this.#d.has(t);if(delete this.#r[t],delete this.#l[t],delete this.#o[t],delete this.#i[t],delete this.#a[t],this.#n.delete(t),this.#p.delete(t),!r)return{removed:!1,persisted:!0,error:null,stale:!1};try{return await this.#m(),{removed:o,persisted:!0,error:null,stale:!1}}catch(s){return this.#d.add(t),{removed:o,persisted:!1,error:s,stale:!1}}}async#S(t,o){let i=this.#h.then(o,o),e=i.then(()=>{},()=>{});return this.#h=e,this.#C.set(t,e),e.finally(()=>{this.#C.get(t)===e&&this.#C.delete(t)}),i}async#y(t=this.#o,o=this.#i,i=this.#t,e=this.#a){await SCe(this.#e,mCe({version:i,workspaces:this.#r,agentPresets:this.#l,contextEnhancement:t,deliveryTargets:o,accessPolicies:e})),this.#d.clear()}async#m(){if(Object.keys(this.#r).length>0||Object.keys(this.#l).length>0||Object.keys(this.#o).length>0||Object.keys(this.#i).length>0||Object.keys(this.#a).length>0){await this.#y();return}try{await hCe(this.#e),this.#d.clear()}catch(t){if(t?.code!=="ENOENT")throw t;this.#d.clear()}}};function VE(n){if(!n)return null;let t=typeof n=="function"?n():n;return t&&typeof t.then=="function"?t.then($n):$n(t)}function m1(){let n=new Error("Agent Preset \u4E0D\u5B58\u5728\u6216\u4E0D\u53EF\u7528\u3002");return n.code="agent-preset-unavailable",n}function Lp(n){if(n())return;let t=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw t.code="workspace-bot-not-found",t}function Q1(n,t,o){let i=e=>{let a=n.decorateStatus(e);if(!o||!a||typeof a!="object")return a;let A=s=>s?{...a,agentPresetCatalog:s}:a,r=VE(o);return r&&typeof r.then=="function"?r.then(A):A(r)};return t&&typeof t.then=="function"?t.then(i):i(t)}function wCe(n){return Promise.resolve(n.status())}function Ha(n,{workspaces:t,method:o="remove",botIdFromRemoved:i=A=>A?.botId,saveMethod:e="save",botIdFromSave:a=A=>A?.botId}){if(!n||!t||typeof n[o]!="function")throw new TypeError("configStore removal observer dependencies are required");return new Proxy(n,{get(A,r){let s=Reflect.get(A,r,A);return r===o?async(...g)=>{let c=await s.apply(A,g),I=c?i(c,g):null;return I&&await t.retireAfterConfigCommit(I),c}:r===e&&typeof s=="function"?(...g)=>{let c=t.flushPendingRemoval(a(g[0],g));return c?c.then(()=>s.apply(A,g)):s.apply(A,g)}:typeof s=="function"?s.bind(A):s}})}function Ka(n,{botId:t,workspaces:o,state:i,agentPresetCatalog:e}={}){if(!n||!o||!i)throw new TypeError("harness, workspaces, and state are required");let a=o.incarnationFor(t),A=()=>o.has(t)&&o.incarnationFor(t)===a,r=async(I=e)=>{let d;try{d=await VE(I)??$n(null)}catch(B){throw Lp(A),B}return Lp(A),{agentPreset:o.agentPresetFor(t),agentPresetCatalog:d}},s=new Map,g=new Proxy(n,{get(I,d){if(d==="agentPresetSettings")return async(f={})=>{f?.signal?.throwIfAborted(),Lp(A);let Q=await r();return f?.signal?.throwIfAborted(),Q};if(d==="updateAgentPreset")return async(f,Q={})=>{Q?.signal?.throwIfAborted(),Lp(A);let y=f==="--default"?null:Tp(f),m=null;if(y&&({agentPresetCatalog:m}=await r(),Q?.signal?.throwIfAborted(),!m.items.some(_=>_.id===y)))throw m1();if(await o.setAgentPreset(t,y,{incarnation:a}),Lp(A),m)return{agentPreset:o.agentPresetFor(t),agentPresetCatalog:m};try{return await r()}catch(_){if(_?.code==="workspace-bot-not-found")throw _;return Lp(A),{agentPreset:o.agentPresetFor(t),agentPresetCatalog:$n(null)}}};if(d==="currentWorkspace")return()=>{if(!A()){let f=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw f.code="workspace-bot-not-found",f}return o.workspaceFor(t)};if(d==="assertWorkspaceScope")return()=>{if(!A()){let f=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw f.code="workspace-bot-not-found",f}};if((d==="listWorkspaces"||d==="listWorkspaceSessions"||d==="listModels")&&typeof I[d]=="function")return async(...f)=>{if(!A()){let y=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw y.code="workspace-bot-not-found",y}let Q=await I[d](...f);if(!A()){let y=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw y.code="workspace-bot-not-found",y}return Q};if(d==="switchWorkspace")return f=>{if(!A()){let Q=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");return Q.code="workspace-bot-not-found",Promise.reject(Q)}return o.setWorkspace(t,f,{clearSessions:()=>i.clearSessions(),incarnation:a})};if(d==="bindWorkspaceSession")return async(f,Q)=>{if(typeof f!="string"||!f||typeof Q!="string"||!Q)throw new TypeError("conversationKey and sessionId are required");if(!A()){let T=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw T.code="workspace-bot-not-found",T}if(typeof I.adoptWorkspaceSession!="function")throw new TypeError("Harness does not support adopting workspace sessions");let y=o.generationFor(t),m=await I.adoptWorkspaceSession(Q);if(!A()){let T=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw T.code="workspace-bot-not-found",T}if(y!==o.generationFor(t))throw PI("The bot workspace changed while the session was being adopted.");if(!m||typeof m!="object"||m.sessionId!==Q||typeof m.workspace!="string")throw new TypeError("Harness returned an invalid adopted workspace session");let _=await o.bindWorkspaceSession(t,m.workspace,{conversationKey:f,sessionId:Q,clearSessions:()=>i.clearSessions(),setSession:(T,R)=>i.setSession(T,R),incarnation:a,expectedGeneration:y});if(!A()){let T=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw T.code="workspace-bot-not-found",T}if(_.generation!==o.generationFor(t))throw PI("The bot workspace changed before the session binding completed.");return s.set(Q,_.generation),{...m,workspace:_.workspace,sessionId:_.sessionId}};if(d==="createSession")return async(f={})=>{if(await o.whenBotIdle(t),!A()){let _=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw _.code="workspace-bot-not-found",_}let Q=o.generationFor(t),y=o.agentPresetFor(t),m=await I.createSession({...f,workspace:o.workspaceFor(t),...y==null?{}:{agentPreset:y}});return s.set(m,Q),m};if(d==="workspaceSession")return f=>{if(typeof f!="string"||!f)throw new TypeError("sessionId is required");let Q=s.get(f)??o.generationFor(t);s.delete(f);let y=()=>A()&&Q===o.generationFor(t),m=async(T,R,K)=>{if(!y())throw PI(`The bot workspace changed before this ${K} started.`);let L=await I[T](f,...R);if(!y())throw PI(`The bot workspace changed while this ${K} was running.`);return L},_=async(T,R,K)=>{if(!y())throw PI(`The bot workspace changed before this ${K} started.`);return I[T](f,...R)};return Object.freeze({sessionId:f,async sessionExists(...T){if(!y())return!1;let R=await I.sessionExists(f,...T);return y()&&R},models(...T){return m("getSessionModels",T,"model listing")},readHistory(...T){return m("readSessionHistory",T,"history read")},...typeof I.renameSession=="function"?{renameTitle(...T){return _("renameSession",T,"title rename")}}:{},selectModel(...T){return m("selectSessionModel",T,"model selection")},isRunning(...T){return m("isSessionRunning",T,"run-state check")},hasActiveTurn(...T){return m("hasActiveTurn",T,"turn ownership check")},stopActiveTurn(...T){return _("stopActiveTurn",T,"turn stop")},steerActiveTurn(...T){return _("steerActiveTurn",T,"turn steering")},ask(...T){if(!y())throw PI("The bot workspace changed before this prompt started.");return I.ask(f,...T)}})};if(d==="sessionExists")return(f,...Q)=>{if(!A())return!1;let y=s.get(f);return y!==void 0&&y!==o.generationFor(t)?(s.delete(f),!1):I.sessionExists(f,...Q)};if(d==="ask")return(f,...Q)=>{let y=s.get(f);if(s.delete(f),!A()||y!==void 0&&y!==o.generationFor(t)){let m=new Error("The bot workspace changed before this prompt started.");throw m.code=ua,m}return I.ask(f,...Q)};if(d==="executeCommand"&&typeof I.executeCommand=="function")return(f,...Q)=>{let y=s.get(f);if(s.delete(f),!A()||y!==void 0&&y!==o.generationFor(t)){let m=new Error("The bot workspace changed before this command started.");throw m.code=ua,m}return I.executeCommand(f,...Q)};let B=Reflect.get(I,d,I);return typeof B=="function"?B.bind(I):B}}),c=new Proxy(i,{get(I,d){if(d===KM)return I;if(d==="sessionFor")return(f,...Q)=>{if(!A())return null;let y=I.sessionFor(f,...Q);return y&&!s.has(y)&&s.set(y,o.generationFor(t)),y};if(d==="setSession")return(f,Q,...y)=>{let m=s.get(Q);return!A()||m!==void 0&&m!==o.generationFor(t)?(s.delete(Q),!1):I.setSession(f,Q,...y)};let B=Reflect.get(I,d,I);return typeof B=="function"?B.bind(I):B}});return Object.freeze({harness:g,state:c})}function xa(n,{workspaces:t,stateFor:o,agentPresetCatalog:i}={}){if(!n||!t||typeof o!="function")throw new TypeError("controller, workspaces, and stateFor are required");let e=new Map,a=(d,B)=>{let Q=(e.get(d)??Promise.resolve()).catch(()=>{}).then(B);return e.set(d,Q),Q.finally(()=>{e.get(d)===Q&&e.delete(d)})},A=d=>Q1(t,d,i),r=(d,B)=>{let f=t.incarnationFor(d);return a(d,async()=>{if(!(await n.status())?.bots?.some(m=>m?.botId===d)){let m=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw m.code="workspace-bot-not-found",m}let y=await o(d);return await t.setWorkspace(d,B,{clearSessions:()=>y.clearSessions(),incarnation:f}),A(await n.status())})},s=(d,B)=>{let f=t.incarnationFor(d),Q=Tp(B);return a(d,async()=>{if(!(await n.status())?.bots?.some(_=>_?.botId===d)){let _=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw _.code="workspace-bot-not-found",_}let m=Q&&i?await VE(i):null;if(Q&&i&&!m?.items.some(_=>_.id===Q))throw m1();return await t.setAgentPreset(d,Q,{incarnation:f}),Q1(t,await n.status(),m??i)})},g=(d,B,f)=>{let Q=t.incarnationFor(d),y=kI(B);return a(d,async()=>{let m=await n.status();if(!m?.bots?.some(L=>L?.botId===d)){let L=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw L.code="workspace-bot-not-found",L}let _=await VE(i),T=t.decorateStatus(m),R={...T,bots:T.bots.map(L=>L?.botId===d?{...L,contextEnhancement:y}:L),..._?{agentPresetCatalog:_}:{}},K=f?await f(R):R;return await t.setContextEnhancement(d,y,{incarnation:Q}),K})},c=(d,B,f)=>{let Q=t.incarnationFor(d),y=Ic(B);return a(d,async()=>{let m=await n.status();if(!m?.bots?.some(L=>L?.botId===d)){let L=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw L.code="workspace-bot-not-found",L}let _=await VE(i),T=t.decorateStatus(m),R={...T,bots:T.bots.map(L=>L?.botId===d?{...L,accessPolicy:y}:L),..._?{agentPresetCatalog:_}:{}},K=f?await f(R):R;return await t.setAccessPolicy(d,y,{incarnation:Q}),K})},I=(d,B)=>a(d,async()=>{let f=await t.beginRemoval(d,{clearSessions:async()=>{try{let Q=await o(d);if(!Q||typeof Q.clearSessions!="function")throw new TypeError("bot state does not support session cleanup");await Q.clearSessions()}catch(Q){console.warn(`[dsh-im] ignored session cleanup failure while deleting bot ${d}:`,Q?.message??Q)}}});try{let Q=await B();return await t.finishRemoval(f),A(Q)}catch(Q){let y=await wCe(n).catch(()=>null);throw Array.isArray(y?.bots)&&!y.bots.some(_=>_?.botId===d)?await t.finishRemoval(f):await t.abortRemoval(f),Q}});return new Proxy(n,{get(d,B){if(B==="updateWorkspace")return r;if(B==="updateAgentPreset")return s;if(B==="updateContextEnhancement")return g;if(B==="updateAccessPolicy")return c;let f=Reflect.get(d,B,d);return typeof f!="function"?f:B==="deleteBot"?(Q,...y)=>I(Q,()=>f.call(d,Q,...y)):B==="disconnect"?async(...Q)=>{let m=(await d.status())?.bots?.[0]?.botId;return m?I(m,()=>f.apply(d,Q)):A(f.apply(d,Q))}:(...Q)=>A(f.apply(d,Q))}})}var S1=new Set(["weixin","feishu","dingtalk","wecom","qq","slack","telegram","discord","whatsapp"]);function DCe(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function OCe(n){return typeof n=="string"&&n.length>0&&n.length<=512&&n.trim()===n&&!/[\s:\u0000-\u001f\u007f]/u.test(n)}function v_(n,t){let o=`${t}:`;if(!n.startsWith(o))return null;let i=n.slice(o.length);return OCe(i)?i:null}function ZE(n,t){for(let[o,i,e]of t){let a=v_(n,o);if(a)return{kind:i,route:{[e]:a}}}return null}function bCe(n){let t=v_(n,"p2p");return t?.startsWith("ou_")?{kind:"user",route:{openId:t}}:ZE(n,[["group","group","chatId"]])}function MCe(n){let t=v_(n,"direct");if(t&&/^[A-Za-z0-9_-]{1,128}$/.test(t))return{kind:"conversation",route:{channelId:t}};let o=/^group:([^:]+):(\d{1,20}(?:\.\d{1,20})?)$/.exec(n);return!o||!/^[A-Za-z0-9_-]{1,128}$/.test(o[1])?null:{kind:"thread",route:{channelId:o[1],threadTs:o[2]}}}function _Ce(n){let t=/^(direct|group):(-?\d+)(?::([1-9]\d*))?$/.exec(n);if(!t)return null;let o=Number(t[2]);if(!Number.isSafeInteger(o)||t[1]==="direct"&&t[3]!==void 0)return null;if(t[3]===void 0)return{kind:"chat",route:{chatId:t[2]}};let i=Number(t[3]);return!Number.isSafeInteger(i)||i<=0?null:{kind:"topic",route:{chatId:t[2],messageThreadId:i}}}function TCe(n){let t=/^(?:direct|group):(\d{1,32})$/.exec(n);return t?{kind:"channel",route:{channelId:t[1]}}:null}function NCe(n){let t=/^direct:(\d{5,32}@(s\.whatsapp\.net|lid))$/.exec(n);if(t)return{kind:"user",route:{jid:t[1]}};let o=/^group:(\d{5,32}(?:-\d{1,32})?@g\.us)$/.exec(n);return o?{kind:"group",route:{jid:o[1]}}:null}function RCe(n,t){if(!S1.has(n)||typeof t!="string")return null;switch(n){case"weixin":return ZE(t,[["p2p","user","toUserId"]]);case"feishu":return bCe(t);case"dingtalk":return ZE(t,[["p2p","user","userId"],["group","group","openConversationId"]]);case"wecom":return ZE(t,[["direct","user","chatId"],["group","group","chatId"]]);case"qq":return ZE(t,[["c2c","user","userOpenId"],["group","group","groupOpenId"]]);case"slack":return MCe(t);case"telegram":return _Ce(t);case"discord":return TCe(t);case"whatsapp":return NCe(t);default:return null}}function w1(n,t){if(!S1.has(n)||!DCe(t))return[];let o=[],i=new Set;for(let e of Object.keys(t)){let a=RCe(n,e);if(!a)continue;let A=JSON.stringify(a);i.has(A)||(i.add(A),o.push(a))}return o}var kCe=new Set(["weixin","feishu","dingtalk","wecom","qq","slack","telegram","discord","whatsapp"]);function FQ(n){return kCe.has(n)}function pc(n){let t=new Error(n);return t.code="invalid-target",t}function vCe(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function P_(n,t,o){if(!vCe(n))throw pc(`${o} must be an object`);if(Object.keys(n).find(e=>!t.includes(e))!==void 0)throw pc(`${o} contains an unknown field`)}function GQ(n,t){if(typeof n!="string"||!n||n.trim()!==n)throw pc(`${t} must be a non-empty string without surrounding whitespace`);return n}function PCe(n){if(typeof n!="string"||!n.trim()||n.trim().length>80)throw pc("target.name must contain 1 to 80 characters");return n.trim()}function lc(n,t){P_(n,t,"route");let o={};for(let i of t)o[i]=GQ(n[i],`route.${i}`);return o}function lg(n,t){if(!t.includes(n))throw pc("target kind is not supported by this channel");return n}function GCe(n,t,o){switch(n){case"weixin":return lg(t,["user"]),lc(o,["toUserId"]);case"feishu":return lg(t,["user","group"]),lc(o,t==="user"?["openId"]:["chatId"]);case"dingtalk":return lg(t,["user","group"]),lc(o,t==="user"?["userId"]:["openConversationId"]);case"wecom":return lg(t,["user","group"]),lc(o,["chatId"]);case"qq":return lg(t,["user","group"]),lc(o,t==="user"?["userOpenId"]:["groupOpenId"]);case"slack":return lg(t,["conversation","thread"]),lc(o,t==="conversation"?["channelId"]:["channelId","threadTs"]);case"telegram":{lg(t,["chat","topic"]),P_(o,t==="chat"?["chatId"]:["chatId","messageThreadId"],"route");let i=GQ(o.chatId,"route.chatId");if(!/^-?\d+$/.test(i))throw pc("route.chatId must be a decimal string");if(t==="chat")return{chatId:i};if(!Number.isSafeInteger(o.messageThreadId)||o.messageThreadId<=0)throw pc("route.messageThreadId must be a positive integer");return{chatId:i,messageThreadId:o.messageThreadId}}case"discord":return lg(t,["channel"]),lc(o,["channelId"]);case"whatsapp":{lg(t,["user","group"]);let i=lc(o,["jid"]);if(!(t==="user"?/^\d{5,32}@(s\.whatsapp\.net|lid)$/.test(i.jid):/^\d{5,32}(?:-\d{1,32})?@g\.us$/.test(i.jid)))throw pc(`route.jid must be a ${t} WhatsApp JID`);return i}default:throw new TypeError(`Unsupported delivery channel: ${n}`)}}function Up(n,t,{targetIdRequired:o=!0}={}){if(!FQ(n))throw new TypeError(`Unsupported delivery channel: ${n}`);P_(t,o?["targetId","name","kind","route"]:["name","kind","route"],"target");let i={};return o&&(i.targetId=GQ(t.targetId,"target.targetId")),t.name!==void 0&&(i.name=PCe(t.name)),i.kind=GQ(t.kind,"target.kind"),i.route=GCe(n,i.kind,t.route),i}function Ya({channel:n,workspaces:t,coreController:o,stateFor:i}){if(!FQ(n))throw new TypeError(`Unsupported delivery channel: ${n}`);if(!t||typeof t!="object")throw new TypeError("delivery adapter requires a workspace store");if(!o||typeof o!="object")throw new TypeError("delivery adapter requires a proactive text controller");if(typeof i!="function")throw new TypeError("delivery adapter requires a bot state getter");return Object.freeze({channel:n,ownsBot:e=>t.has(e),listTargets:e=>t.listDeliveryTargets(e),async listSuggestions(e){let a=await i(e);if(!a||typeof a.snapshot!="function")throw new TypeError("delivery suggestion state cannot be inspected");return w1(n,a.snapshot()?.sessions).map(r=>Up(n,r,{targetIdRequired:!1}))},createTarget:(e,a)=>t.createDeliveryTarget(e,Up(n,a)),updateTarget:(e,a,A)=>t.updateDeliveryTarget(e,a,Up(n,A,{targetIdRequired:!1})),deleteTarget:(e,a)=>t.deleteDeliveryTarget(e,a),async sendText(e,a,A,r={}){let s=Up(n,a);if(typeof o.sendProactiveText!="function")throw new TypeError("delivery controller cannot send proactive text");return await o.sendProactiveText(e,s,A,r),{sent:!0}}})}var D1=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function FCe(n){if(!Array.isArray(n)||n.length===0)return[...D1];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...D1]}var LQ=class{#e;#A;#t;#r;#l;#o;#i;#a=null;#n=null;#s=0;#p=!1;#c=!1;#g;#I;constructor({controller:t,harness:o,logger:i=console,retryDelaysMs:e,healthyIntervalMs:a=15e3,setTimeoutImpl:A=setTimeout,clearTimeoutImpl:r=clearTimeout}){if(!t||typeof t.initialize!="function"||typeof t.status!="function")throw new TypeError("ConnectionSupervisor requires a controller");if(!o||typeof o.ensureRunning!="function")throw new TypeError("ConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=FCe(e),this.#l=Number.isFinite(a)&&a>=0?a:15e3,this.#o=A,this.#i=r,this.#g=new Promise(s=>{this.#I=s})}get ready(){return this.#g}start(){return this.#c||this.#p?this:(this.#c=!0,this.#d(0),this)}async close(){this.#p||(this.#p=!0,this.#a!==null&&this.#i(this.#a),this.#a=null,await this.#n?.catch(()=>{}),this.#I?.(null),this.#I=null)}#d(t){this.#p||(this.#a=this.#o(()=>{this.#a=null,this.#h()},t),this.#a?.unref?.())}async#h(){if(this.#p||this.#n)return;let t=this.#C();this.#n=t;try{await t}finally{this.#n===t&&(this.#n=null)}}async#C(){try{if(await this.#A.ensureRunning(),this.#p)return;let t=await this.#e.initialize();if(this.#p)return;this.#I?.(t),this.#I=null;let{configured:o,connected:i}=t.totals;if(i{let A={namespace:"commands",method:"execute",args:{agentId:i,line:e,images:[]},signal:a.signal};try{return await o.invoke(A)}catch(r){if(r?.name!=="TypertGatewayError"||r.code!=="arguments-invalid"||r.endpoint!=="commands/execute"||r.message!=='typert gateway: commands/execute: args fields do not match the descriptor: unexpected "images"')throw r;return a.signal?.throwIfAborted(),o.invoke({...A,args:{agentId:i,line:e}})}}}}import{randomUUID as F_}from"node:crypto";var UQ=new WeakMap;function LCe(n){let t=n?.failure;return t&&typeof t=="object"&&typeof t.code=="string"&&typeof t.message=="string"?{code:t.code,message:t.message,details:t.details&&typeof t.details=="object"?t.details:{}}:n?.name==="AbortError"||n?.name==="RemoteInvocationCancelled"?{code:"cancelled",message:n instanceof Error?n.message:"Harness request was cancelled",details:{}}:{code:"internal",message:n instanceof Error?n.message:String(n),details:{}}}function Po(n,t){return Promise.resolve().then(t).then(o=>({rpcId:n.rpcId,result:{ok:!0,value:o}}),o=>({rpcId:n.rpcId,result:{ok:!1,error:LCe(o)}}))}function O1(n,t,o,i){return{namespace:n,method:t,args:o,...i===void 0?{}:{signal:i}}}function HQ(n,t){let o=new Error(n);return o.name="UserQuestionError",o.code=t,o}function UCe(n,t){return!n||typeof n!="object"||n.sessionId!==t.sessionId||!n.answer||typeof n.answer!="object"||!Array.isArray(n.answer.answers)||n.answer.answers.length!==t.questions.length?!1:n.answer.answers.every((o,i)=>{let e=t.questions[i];if(!o||typeof o!="object"||o.id!==e.id||!Array.isArray(o.selected)||o.selected.some(r=>typeof r!="string")||new Set(o.selected).size!==o.selected.length||o.custom!==void 0&&typeof o.custom!="string")return!1;let a=o.custom?.trim();if(a!==void 0&&!a||e.multiSelect!==!0&&(a!==void 0&&o.selected.length>0||o.selected.length>1))return!1;let A=new Set(e.options?.map(r=>r.label)??[]);return o.selected.every(r=>A.has(r))})}function HCe(n){if(n?.type==="event"&&n.event&&typeof n.event=="object")return[{event:n.event}];let t=n?.type==="chunks"?n.event:null;if(!t||typeof t!="object")throw new Error("Harness returned an invalid session history record");let{data:o}=t,i=t.type,e=i==="chunkrow/tool-call-chunks"?o?.args:o?.texts;if(!o||!Array.isArray(e)||e.length===0||e.some(A=>typeof A!="string")||!Array.isArray(o.dt)||o.dt.length!==e.length-1)throw new Error("Harness returned an invalid packed session chunk");let a=t.time;return e.map((A,r)=>{r>0&&(a+=o.dt[r-1]);let s;if(i==="chunkrow/text-chunks")s={type:"text-delta",index:o.index,text:A};else if(i==="chunkrow/reasoning-chunks")s={type:"reasoning-delta",index:o.index,text:A};else if(i==="chunkrow/tool-call-chunks")s={type:"tool-call-delta",index:o.index,id:o.id,...Object.hasOwn(o,"name")?{name:o.name}:{},argumentsDelta:A};else throw new Error(`Harness returned an unsupported packed session chunk: ${String(i)}`);return{event:{type:"assistant/chunk",seq:t.seq+r,time:a,data:{turn:o.turn,step:o.step,chunk:s}}}})}function b1(n){if(!Array.isArray(n))throw new Error("Harness returned invalid session history records");return n.flatMap(HCe)}var L_=class{#e=[];#A=null;#t=!1;#r;#l;#o;constructor(t,o){this.#r=t,this.#o=o,this.#l=()=>this.close(),t?.addEventListener("abort",this.#l,{once:!0}),t?.aborted&&this.close()}push(t){if(!this.#t)if(this.#A){let o=this.#A;this.#A=null,o({value:t,done:!1})}else this.#e.push(t)}next(){return this.#e.length>0?Promise.resolve({value:this.#e.shift(),done:!1}):this.#t?Promise.resolve({value:void 0,done:!0}):new Promise(t=>{this.#A=t})}return(){return this.close(),Promise.resolve({value:void 0,done:!0})}close(){if(!this.#t&&(this.#t=!0,this.#r?.removeEventListener("abort",this.#l),this.#o?.(),this.#o=null,this.#A)){let t=this.#A;this.#A=null,t({value:void 0,done:!0})}}[Symbol.asyncIterator](){return this}},U_=class{#e;#A;#t=new Set;#r=new Map;#l=new Map;#o=new Map;#i=[];#a=!1;constructor(t,o,i){this.#e=o,this.#A=i,this.host=Object.freeze({describe:e=>Po(e,()=>({ready:!0,transport:"typert"}))}),this.workspace=Object.freeze({list:(e,a)=>Po(e,()=>this.#p(a)),create:(e,a)=>Po(e,()=>this.#n("workspace","create",{request:e.payload},a))}),this.sessions=Object.freeze({list:(e,a)=>Po(e,()=>this.#n("session","list",{_request:e.payload},a)),create:(e,a)=>Po(e,()=>this.#n("session","create",{request:e.payload},a)),history:(e,a)=>Po(e,()=>this.#g(e.payload,a)),prompt:(e,a)=>Po(e,()=>this.#n("session","prompt",{request:{requestId:e.rpcId,...e.payload}},a)),rename:(e,a)=>Po(e,()=>this.#n("session","rename",{request:e.payload},a)),cancel:(e,a)=>Po(e,()=>this.#n("session","cancel",{request:{sessionId:e.payload.sessionId}},a)),models:(e,a)=>Po(e,()=>this.#h(e.payload.sessionId,a)),selectModel:(e,a)=>Po(e,()=>this.#n("session","selectModel",{request:e.payload},a))}),this.llm=Object.freeze({models:(e,a)=>Po(e,async()=>{let A=await this.#d(a);return{groups:A.groups,failures:A.failures}})}),this.events=Object.freeze({mux:(e,a)=>this.#C(a)}),this.respond=e=>Promise.resolve(this.#m(e)),typeof t?.on=="function"&&(this.#i.push(t.on("session/event",(e,a)=>{let A=e?.id;typeof A!="string"||!a||typeof a!="object"||(Number.isSafeInteger(a.seq)&&this.#I(A,a.seq),this.#u({type:"session/event",sessionId:A,event:a}))},{global:!0})),this.#i.push(t.on("approval/request",(e,a)=>this.#y(e,a),{global:!0,prepend:!0})),this.#i.push(t.on("user-questions/request",(e,a)=>this.#Q(e,a),{global:!0,prepend:!0})))}async#n(t,o,i,e){return this.#e.invoke(O1(t,o,i,e))}async#s(t,o,i,e){let a=new AbortController,A=e?AbortSignal.any([e,a.signal]):a.signal,r;try{r=(await this.#e.stream(O1(t,o,i,A)))[Symbol.asyncIterator]();let g=await r.next();if(g.done)throw new Error(`Harness ${t}.${o} stream ended before its baseline`);return g.value}finally{a.abort(new DOMException("Baseline received","AbortError")),await Promise.resolve(r?.return?.()).catch(()=>{})}}async#p(t){let o=await this.#s("workspace","follow",{},t);if(o?.type!=="baseline"||!o.value||typeof o.value!="object")throw new Error("Harness workspace.follow returned no baseline");return o.value}async#c(t,o,i){let e=await this.#s("session","follow",{request:{address:{kind:"session",sessionId:t},maxMessages:o}},i);if(e?.type!=="snapshot"||!Number.isSafeInteger(e.cursor))throw new Error("Harness session.follow returned no snapshot");return this.#I(t,e.cursor),e}async#g(t,o){let{sessionId:i,maxMessages:e=50,beforeSeq:a}=t,A=this.#o.get(i);if(A===void 0){let s=await this.#c(i,e,o);if(A=this.#o.get(i)??s.cursor,a===void 0&&A===s.cursor)return{events:b1(s.records),hasMore:s.hasMore===!0,...s.projections===void 0?{}:{projections:s.projections}}}let r=await this.#n("session","page",{request:{address:{kind:"session",sessionId:i},throughSeq:A,maxMessages:e,...a===void 0?{}:{beforeSeq:a}}},o);return{events:b1(r.records),hasMore:r.hasMore===!0}}#I(t,o){let i=this.#o.get(t);(i===void 0||o>i)&&this.#o.set(t,o)}#d(t){return this.#n("session","modelCatalog",{},t)}async#h(t,o){let[i,e]=await Promise.all([this.#d(o),this.#n("session","list",{_request:{}},o)]),a=e?.items?.find(s=>s?.sessionId===t);if(!a){let s=new Error(`session "${t}" not found`);throw s.failure={code:"session-not-found",message:s.message,details:{sessionId:t}},s}let A=a.projections?.values?.modelSelection,r=A?.next??A?.lastUsed??i.default;return{current:r,routable:i.routableProviders.includes(r.provider),groups:i.groups,failures:i.failures}}#C(t){let o;o=new L_(t,()=>this.#t.delete(o)),this.#t.add(o);for(let i of this.#r.values())o.push(this.#f(i));for(let i of this.#l.values())o.push(this.#S(i));return o}#u(t,o=F_()){let i={rpcId:o,payload:t};for(let e of this.#t)e.push(i)}#B(t){let o=t?.session?.id??t?.id;return typeof o!="string"||!t?.session||!Array.isArray(t.session.events)?null:u1(this.#A,o,t.session.events)?{sessionId:o,session:t.session}:null}#f(t){return{rpcId:t.rpcId,payload:{type:"question/requested",sessionId:t.sessionId,questions:t.questions}}}#Q(t,o){let i=this.#B(t?.agent);return i?t.signal?.aborted?Promise.reject(HQ("ask_user_question was aborted before the user answered","ASK_ABORTED")):new Promise((e,a)=>{let A={rpcId:F_(),sessionId:i.sessionId,questions:t.questions,signal:t.signal,settle:(s,g)=>{this.#r.delete(A.rpcId)&&(t.signal?.removeEventListener("abort",r),this.#u({type:"question/resolved",sessionId:A.sessionId,questionRpcId:A.rpcId,outcome:s}),s==="answered"?e(g):a(g))}},r=()=>A.settle("cancelled",HQ("ask_user_question was aborted before the user answered","ASK_ABORTED"));this.#r.set(A.rpcId,A),t.signal?.addEventListener("abort",r,{once:!0}),this.#u(this.#f(A).payload,A.rpcId)}):o()}#S(t){return{rpcId:t.rpcId,payload:{type:"approval/requested",sessionId:t.sessionId,approvalId:t.approvalId,toolName:t.toolName,...t.callId===void 0?{}:{callId:t.callId},...t.reason===void 0?{}:{reason:t.reason}}}}#y(t,o){let i=this.#B(t?.agent);if(!i)return o();if(t.signal?.aborted)return Promise.resolve("cancelled");let e=new Set([...this.#l.values()].map(r=>r.approvalId)),a=new Set,A;for(let r=i.session.events.length-1;r>=0;r-=1){let s=i.session.events[r];if(s.type==="approval/decided")a.add(s.data?.id);else if(s.type==="approval/asked"){let g=s.data?.id;if(!g||a.has(g)||e.has(g)||(t.callId??null)!==(s.data?.callId??null))continue;A=g;break}}return A===void 0?o():new Promise(r=>{let s={rpcId:F_(),sessionId:i.sessionId,approvalId:A,toolName:t.toolName,callId:t.callId,reason:t.reason,settle:c=>{this.#l.delete(s.rpcId)&&(t.signal?.removeEventListener("abort",g),this.#u({type:"approval/resolved",sessionId:s.sessionId,approvalId:s.approvalId,outcome:c}),r(c))}},g=()=>s.settle("cancelled");this.#l.set(s.rpcId,s),t.signal?.addEventListener("abort",g,{once:!0}),this.#u(this.#S(s).payload,s.rpcId)})}#m(t){let o=this.#l.get(t?.rpcId);if(o){let a=t?.result?.value;return t?.result?.ok!==!0||!a||typeof a!="object"||a.sessionId!==o.sessionId||a.approvalId!==o.approvalId||a.outcome!=="allowed-once"&&a.outcome!=="rejected"?{accepted:!1,reason:"bad-response"}:(o.settle(a.outcome),{accepted:!0})}let i=this.#r.get(t?.rpcId);if(!i)return{accepted:!1,reason:"not-pending"};if(t?.result?.ok!==!0)return t?.result?.error?.code!=="cancelled"?{accepted:!1,reason:"bad-response"}:(i.settle("cancelled",HQ("the user cancelled ask_user_question","ASK_CANCELLED")),{accepted:!0});if(!UCe(t.result.value,i))return{accepted:!1,reason:"bad-response"};let e={answers:t.result.value.answer.answers.map(a=>({id:a.id,selected:[...a.selected],...a.custom===void 0?{}:{custom:a.custom}}))};return i.settle("answered",e),{accepted:!0}}dispose(){if(!this.#a){this.#a=!0;for(let t of[...this.#t])t.close();for(let t of[...this.#l.values()])t.settle("cancelled");for(let t of[...this.#r.values()])t.settle("cancelled",HQ("dsh-im interaction adapter was disposed","ASK_ABORTED"));for(let t of this.#i.splice(0).reverse())t?.()}}};function M1(n){let t=n?.root??n;if(!t||!["object","function"].includes(typeof t))throw new TypeError("dsh-im requires a Cordis Host context");let o=UQ.get(t);if(o)return o;let i=n?.typertGateway;if(!i||typeof i.invoke!="function"||typeof i.stream!="function")throw new TypeError("dsh-im requires the modern Host Typert gateway");let e=new U_(n,i,t);return UQ.set(t,e),typeof n.effect=="function"&&n.effect(()=>()=>{UQ.get(t)===e&&UQ.delete(t),e.dispose()},"dsh-im: modern Harness compatibility API"),e}function KCe(n,t){return n&&Object.hasOwn(n,t)?n[t]:typeof n?.get=="function"?n.get(t):void 0}function aa(n,t={}){return t.harnessBaseUrl!==void 0?{baseUrl:new URL(t.harnessBaseUrl)}:{apiProxy:KCe(n,"apiProxy")??M1(n),interactionScope:n.root??n}}import{randomUUID as xCe}from"node:crypto";function YCe(n){if(typeof n?.get!="function")return;let t;try{t=n.get("agents")}catch{return}if(t!=null){if(typeof t.get!="function")throw new TypeError('dsh-im requires a callable AgentRegistry when ctx.get("agents") is present');return t}}function jCe(n,t,o){if(n?.status!=="running")return!1;let i=n?.session?.events;if(!Array.isArray(i))return!1;let e=null,a=!1;for(let A of i){if(A?.type==="turn/start"){e=A.data?.turn??null,a=!1;continue}if(A?.type==="turn/end"&&A.data?.turn===e){e=null,a=!1;continue}e===t&&A?.type==="user/message"&&A.data?.source?.rpcId===o&&(a=!0)}return e===t&&a}function _1(n){if(!n||typeof n!="object"||Object.isFrozen(n))return n;for(let t of Object.values(n))_1(t);return Object.freeze(n)}function JCe(n){return _1({id:xCe(),role:"user",content:[{type:"text",text:n}],source:{kind:"user"}})}function qCe(n){let t=new Error("Session is busy with an active turn or maintenance task",{cause:n});return t.code="agent-busy",t}function zCe(n){return({sessionId:t,expectedTurn:o,promptRpcId:i,action:e,text:a})=>{let A=n.get(t);if(A){if(!jCe(A,o,i))return!1;if(e==="stop")return A.cancel({kind:"user"},{keepInbox:!0}),!0;if(e==="steer")return typeof a!="string"||!a.trim()?!1:(A.inject(JCe(a)),!0);throw new TypeError(`Unsupported Harness control action: ${String(e)}`)}}}function VCe(n){return({sessionId:t,operation:o})=>{if(typeof o!="function")throw new TypeError("maintenance operation is required");let i=n.get(t);if(!i)return o();try{return i.runMaintenance(e=>{if(n.get(t)!==i){let a=new Error("Session agent changed before maintenance started");throw a.code="agent-unavailable",a}return o(e)})}catch(e){throw qCe(e)}}}function WCe(n){return({sessionId:t,workspace:o,files:i,signal:e})=>{let A=n.get(t)?.session?.header?.cwd,r=typeof A=="string"&&A?A:o;if(typeof r!="string"||!r)throw new Ro("inbound-file-workspace-unavailable","The Harness Session workspace is unavailable for inbound files.");return vY({files:i},{workspace:r,signal:e})}}function Ja(n,t={}){let{controlExecutor:o,sessionMaintenanceExecutor:i,fileIngressExecutor:e}=t;if(o!==void 0&&typeof o!="function")throw new TypeError("controlExecutor must be a function");if(i!==void 0&&typeof i!="function")throw new TypeError("sessionMaintenanceExecutor must be a function");if(e!==void 0&&typeof e!="function")throw new TypeError("fileIngressExecutor must be a function");let a=o&&i&&e?void 0:YCe(n);return{controlExecutor:o??(a?zCe(a):void 0),sessionMaintenanceExecutor:i??(a?VCe(a):void 0),fileIngressExecutor:e??WCe(a??{get:()=>{}})}}function T1(n){return n.map(t=>({id:t,canExecuteCommands:!0}))}function pg(n=[]){return bQ({mode:"open",open:{defaultCanExecuteCommands:!0,commandPermissionOverrides:[]},allowlist:{users:T1(n)}})}function dc(n=[]){return bQ({mode:"allowlist",open:{defaultCanExecuteCommands:!1,commandPermissionOverrides:[]},allowlist:{users:T1(n)}})}function dg(n){return[...new Set((Array.isArray(n)?n:[n]).filter(t=>typeof t=="string"||typeof t=="number"||typeof t=="bigint").map(t=>String(t).trim()).filter(Boolean))]}function ZCe(n){return dg(n).map(t=>`${t.replace(/^\+/,"")}@s.whatsapp.net`)}function nr(n,t={}){let o=String(n??"").trim().toLowerCase();if(o==="weixin")return Ig({direct:dc(),group:dc()});if(o==="feishu"){let e=dg(t.ownerOpenIds??t.ownerOpenId).includes("*")?pg():dc();return Ig({direct:e,group:e})}if(o==="qq"){let i=dg(t.ownerUserOpenid);return Ig({direct:i.includes("*")?pg():dc(),group:pg()})}if(o==="telegram"){let i=dg(t.allowedUsers);return(t.accessMode??"compatible")==="private-allowlist"?Ig({direct:dc(i),group:dc()}):Ig({direct:pg(i),group:pg()})}if(o==="whatsapp"){let i=t.accessMode??"self-only",e=ZCe(t.allowedNumbers);return i==="open"?Ig({direct:pg(e),group:pg()}):Ig({direct:dc(i==="private-allowlist"?e:[]),group:dc()})}if(["dingtalk","wecom","slack","discord"].includes(o))return Ig({direct:pg(),group:pg()});throw new TypeError(`Unsupported access-policy channel: ${n}`)}function XCe(n,t={}){let o=String(n??"").trim().toLowerCase();if(o==="weixin")return dg(t.ownerUserId);if(o==="feishu")return dg(t.ownerOpenIds??t.ownerOpenId).filter(i=>i!=="*");if(o==="dingtalk"){let i=Array.isArray(t.approvedSenders)?t.approvedSenders:[];return dg(i.map(e=>e?.staffId))}return o==="qq"?dg(t.ownerUserOpenid).filter(i=>i!=="*"):o==="whatsapp"?dg(t.accountJid):[]}function qa(n,t,{channel:o,config:i,equals:e}={}){if(!n||typeof n.accessPolicyFor!="function")throw new TypeError("A workspace store with access policies is required");let a=new Set(XCe(o,i)),A=typeof e=="function"?e:(r,s)=>r===s;return Object.freeze({botId:t,getSettings:()=>n.accessPolicyFor(t),isPrivileged(r,s){if(!["direct","group"].includes(s))return!1;let g=Array.isArray(r)?r:[r];try{return g.some(c=>typeof c=="string"&&[...a].some(I=>A(c.trim(),I)===!0))}catch{return!1}}})}function Aue(n){let t=FI(n.dshHome??process.env.DSH_HOME??XE(eue(),".dsh")),o=FI(n.dataDir??XE(t,"integrations","dsh-dingtalk"));return{root:o,config:FI(n.configPath??XE(o,"config.json")),bots:FI(n.botsDir??XE(o,"bots")),workspaces:FI(n.workspacesPath??XE(o,"workspaces.json"))}}async function H_(n,t={},o={}){if(!n?.credentials)throw new TypeError("dsh-dingtalk requires ctx.credentials");let i=aa(n,t),e=o.ConfigStore??pQ,a=o.DeviceAuth??hQ,A=o.StateStore??vQ,r=o.HarnessClient??RQ,s=o.Controller??PE,g=o.Runtime??jE,c=o.createConnectionSupervisor??G_,I=typeof n.logger=="function"?n.logger("dsh-dingtalk"):n.logger??console,d=()=>La(n),B=Aue(t),f=await new e(B.config).load(),Q=FI(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=typeof f.list=="function",T=_?f.list():[];_&&await m.reconcile(T.map($=>$.botId)),await Promise.all(T.map($=>m.ensure($.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("dingtalk",$)})));let R=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,K=o.deviceAuth??new a({baseUrl:t.registrationBaseUrl}),L=new Map,U=$=>FI(B.bots,$,"state.json"),z=async $=>{let ie=L.get($);return ie||(ie=await new A(U($)).load(),L.set($,ie)),ie},q=ja(n,o.commandExecutor),{controlExecutor:x,sessionMaintenanceExecutor:G,fileIngressExecutor:V}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),F=new r({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...q?{commandExecutor:q}:{},...x?{controlExecutor:x}:{},...G?{sessionMaintenanceExecutor:G}:{},...V?{fileIngressExecutor:V}:{}}),N=new s({deviceAuth:K,credentials:n.credentials,configStore:R,logger:I,createRuntime:async({botId:$,config:ie,clientSecret:pe})=>{let se=await z($);await m.ensure($,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("dingtalk",ie)});let Te=Ka(F,{botId:$,workspaces:m,state:se,agentPresetCatalog:d});return new g({config:ie,clientSecret:pe,harness:Te.harness,state:Te.state,contextEnhancement:{botId:$,getSettings:()=>m.contextEnhancementFor($)},accessPolicy:qa(m,$,{channel:"dingtalk",config:ie}),replyTimeoutMs:t.replyTimeoutMs??6e5,maxMessageChars:t.maxMessageChars??4e3,connectTimeoutMs:t.connectTimeoutMs??15e3,logger:{error:(...Qe)=>I.error?.(`[${$}]`,...Qe),warn:(...Qe)=>I.warn?.(`[${$}]`,...Qe),info:(...Qe)=>I.info?.(`[${$}]`,...Qe),debug:(...Qe)=>I.debug?.(`[${$}]`,...Qe)}})},deleteState:async({botId:$})=>{let ie=L.get($);if(L.delete($),ie&&typeof ie.remove=="function")await ie.remove();else try{await $Ce(U($))}catch(pe){if(pe?.code!=="ENOENT")throw pe}}}),k=xa(N,{workspaces:m,stateFor:z,agentPresetCatalog:d}),J=c({controller:k,harness:F,logger:I,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:k,deliveryAdapter:Ya({channel:"dingtalk",workspaces:m,coreController:N,stateFor:z}),ready:J.ready,async close(){await J.close(),await k.close(),F.stopManagedProcess()}}}import iue from"qrcode";var ki="bot.context-enhancement.set";function za(n){try{return!n||typeof n!="object"||Array.isArray(n)||Reflect.ownKeys(n).length!==2||!Object.hasOwn(n,"botId")||!Object.hasOwn(n,"config")||typeof n.botId!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)?!1:(kI(n.config),!0)}catch{return!1}}var Va="bot.access-policy.set";function Wa(n){try{return!n||typeof n!="object"||Array.isArray(n)||Reflect.ownKeys(n).length!==2||!Object.hasOwn(n,"botId")||!Object.hasOwn(n,"policy")||typeof n.botId!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)?!1:(Ic(n.policy),!0)}catch{return!1}}var tue=new Set(["loopback","trusted-host"]);function fr(n){if(n===void 0)return"loopback";if(tue.has(n))return n;throw new TypeError('dsh-im rpcAuthority must be "loopback" or "trusted-host"')}import{isAbsolute as rue}from"node:path";var vi="bot.workspace.set";function Za(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)&&Object.keys(n).every(t=>["botId","workspace"].includes(t))&&typeof n.botId=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)&&typeof n.workspace=="string"&&n.workspace.length<=4096&&rue(n.workspace.trim())}function Xa(n){return["workspace-not-absolute","workspace-not-found","workspace-not-directory","workspace-bot-not-found","agent-preset-invalid","agent-preset-unavailable","context-enhancement-invalid"].includes(n?.code)?{code:n.code,message:n.message}:null}var Pi="bot.preset.set";function aue(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function $a(n){return aue(n)&&Object.keys(n).every(t=>["botId","agentPreset"].includes(t))&&typeof n.botId=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)&&(n.agentPreset===null||typeof n.agentPreset=="string"&&l_.test(n.agentPreset))}var R1="/dingtalk",Ft=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va,approveSender:"bot.sender.approve",revokeSender:"bot.sender.revoke"}),k1=Object.freeze(Object.values(Ft)),oue=new Set(["clientSecret","client_secret","deviceCode","device_code","secretRef","staffId","senderStaffId","verificationUrl","verificationUri","userCode"]);function x_(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function hc(n,t){return x_(n)&&Object.keys(n).every(o=>t.includes(o))}function LI(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function N1(n,t){return typeof n=="string"&&n.trim().length>0&&n.length<=t}function nue(n,t){return x_(t)?n===Ft.status?hc(t,[])?null:"connection.status does not accept fields.":n===Ft.beginProvisioning?hc(t,["locale"])&&(t.locale===void 0||t.locale==="zh-CN")?null:"provision.begin received unsupported fields.":[Ft.pollProvisioning,Ft.cancelProvisioning].includes(n)?hc(t,["attemptId"])&&LI(t.attemptId)?null:`${n} requires an attemptId.`:n===Ft.bindCredentials?hc(t,["clientId","clientSecret"])&&N1(t.clientId,256)&&N1(t.clientSecret,1024)?null:"bot.bind-credentials requires Client ID and Client Secret.":n===Ft.reconnectBot?hc(t,["botId","sendTest"])&&LI(t.botId)&&(t.sendTest===void 0||t.sendTest===!0)?null:"bot.reconnect requires a botId and optional sendTest=true.":n===Ft.deleteBot?hc(t,["botId","confirm"])&&LI(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Ft.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Ft.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Ft.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===Ft.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":n===Ft.approveSender?hc(t,["botId","requestId","confirm"])&&LI(t.botId)&&LI(t.requestId)&&t.confirm===!0?null:"bot.sender.approve requires botId, requestId, and confirm=true.":n===Ft.revokeSender?hc(t,["botId","senderKey","confirm"])&&LI(t.botId)&&LI(t.senderKey)&&t.confirm===!0?null:"bot.sender.revoke requires botId, senderKey, and confirm=true.":"Unknown DingTalk endpoint.":"Payload must be an object."}function KQ(n){return{ok:!1,error:{code:"bad-request",message:n}}}function $E(){return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}}function sue(){return{ok:!1,error:{code:"dingtalk-operation-failed",message:"\u9489\u9489\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}function Hp(n){if(Array.isArray(n))return n.map(Hp);if(!x_(n))return n;let t={};for(let[o,i]of Object.entries(n))oue.has(o)||(t[o]=Hp(i));return t}async function gue(n){return iue.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function K_(n,t){return!n||typeof n.verificationUrl!="string"?Hp(n):Hp({...n,qrCodeDataUrl:await t(n.verificationUrl)})}async function is(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await K_(o.provisioning,t)),Hp(o)}function cue(n){for(let t of["status","startProvisioning","registrationStatus","cancelProvisioning","bindCredentials","reconnectBot","deleteBot","approveSender","revokeSender"])if(typeof n?.[t]!="function")throw new TypeError(`A complete DingTalk controller is required (${t})`)}function v1(n,{encodeQr:t=gue}={}){cue(n);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return $E();if(!k1.includes(e))return KQ("Unknown DingTalk endpoint.");let r=nue(e,a);if(r)return KQ(r);try{let s;if(e===Ft.status)s=await is(await n.status(),i);else if(e===Ft.beginProvisioning){let g=await n.startProvisioning({signal:A});if(A?.aborted)return await n.cancelProvisioning(g.attemptId),$E();s=await K_(g,i)}else if(e===Ft.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return KQ("The provisioning attempt no longer exists.");s=await K_(g,i)}else if(e===Ft.cancelProvisioning){if(s=await n.cancelProvisioning(a.attemptId),!s)return KQ("The provisioning attempt no longer exists.");s=Hp(s)}else if(e===Ft.bindCredentials)s=await is(await n.bindCredentials(a),i);else if(e===Ft.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return $E();let c;if(a.sendTest===!0)if(!g?.bots?.some(d=>d?.botId===a.botId&&d?.connected===!0)||typeof n.sendConnectionTest!="function")c=or(Cr("\u9489\u9489\u673A\u5668\u4EBA"));else try{await n.sendConnectionTest(a.botId),c=or()}catch(d){c=or(d)}s=await is({...g,...c?{testMessage:c}:{}},i)}else if(e===Ft.deleteBot)s=await is(await n.deleteBot(a.botId),i);else if(e===Ft.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await is(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===Ft.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>is(g,i))}else if(e===Ft.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>is(g,i))}else if(e===Ft.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await is(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else e===Ft.approveSender?s=await is(await n.approveSender(a.botId,a.requestId),i):s=await is(await n.revokeSender(a.botId,a.senderKey),i);return A?.aborted?$E():{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?$E():g?{ok:!1,error:g}:sue()}}}function xQ(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(R1,v1(t,o),{authority:fr(i)})}async function P1(n,t={}){if(t?.controller)return xQ(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await H_(n,t,t.internals),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=xQ(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-dingtalk: close bot connections"),e}import{createHash as Iue}from"node:crypto";import{mkdir as lue,readFile as pue,rename as due,unlink as hue,writeFile as Eue}from"node:fs/promises";import{dirname as Cue}from"node:path";var Y_=Object.freeze({version:1,bots:Object.freeze([])});function hg(n){return typeof n=="string"&&n.trim()?n.trim():null}function G1(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function eC(n,{botPrefix:t,tokenRefPrefix:o}){let i=hg(n);if(!i)throw new TypeError("platformId is required");let e=Iue("sha256").update(i).digest("hex").slice(0,24);return{botId:`${t}_${e}`,tokenRef:`${o}_${e.toUpperCase()}`}}function YQ(n,t){let o=hg(n)??"";return o.length<=10?o?`${o.slice(0,3)}\u2022\u2022\u2022`:t:`${o.slice(0,6)}\u2022\u2022\u2022\u2022${o.slice(-4)}`}var Kp=class{#e;#A;#t;#r;#l;#o;#i;#a=Y_;#n=Promise.resolve();constructor(t,{channel:o,botPrefix:i,tokenRefPrefix:e,normalizeBotExtension:a=()=>({})}){if(typeof a!="function")throw new TypeError("normalizeBotExtension must be a function");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=new RegExp(`^${G1(i)}_[a-f0-9]{24}$`),this.#i=new RegExp(`^${G1(e)}_[A-F0-9]{24}$`)}async load(){try{let t=this.#p(JSON.parse(await pue(this.#e,"utf8")));if(!t)throw new Error(`dsh-im ${this.#A} config contains invalid bot data`);this.#a=t}catch(t){if(t?.code!=="ENOENT")throw t;this.#a=Y_}return this}list(){return structuredClone(this.#a.bots)}get(t){let o=this.#a.bots.find(i=>i.botId===t);return o?structuredClone(o):null}getByPlatformId(t){let o=this.#a.bots.find(i=>i.platformId===t);return o?structuredClone(o):null}async save(t){let o=this.#s(t);if(!o)throw new Error(`Refusing to persist incomplete ${this.#A} bot data`);return this.#c(i=>{let e=i.find(r=>r.platformId===o.platformId&&r.botId!==o.botId),a=i.find(r=>r.tokenRef===o.tokenRef&&r.botId!==o.botId);if(e||a)throw new Error(`Duplicate ${this.#A} bot identity`);let A=i.findIndex(r=>r.botId===o.botId);return A===-1?i.push(o):i[A]=o,structuredClone(o)})}async remove(t){if(!this.#o.test(t))throw new TypeError(`Invalid ${this.#A} bot id`);return this.#c(o=>{let i=o.findIndex(a=>a.botId===t);if(i===-1)return null;let[e]=o.splice(i,1);return structuredClone(e)})}async clear(){let t=this.#n.then(async()=>{try{await hue(this.#e)}catch(o){if(o?.code!=="ENOENT")throw o}this.#a=Y_});this.#n=t.then(()=>{},()=>{}),await t}#s(t){if(!t||typeof t!="object")return null;let o=hg(t.platformId),i=hg(t.botId),e=hg(t.tokenRef),a=hg(t.name);if(!o||!i||!e||!a||!this.#o.test(i)||!this.#i.test(e))return null;let A=eC(o,{botPrefix:this.#t,tokenRefPrefix:this.#r});if(A.botId!==i||A.tokenRef!==e)return null;let r=this.#l(t);return!r||typeof r!="object"||Array.isArray(r)?null:Object.freeze({botId:i,platformId:o,tokenRef:e,name:a,username:hg(t.username),createdAt:hg(t.createdAt)??new Date().toISOString(),connectedAt:hg(t.connectedAt),...r})}#p(t){if(!t||t.version!==1||!Array.isArray(t.bots))return null;let o=t.bots.map(A=>this.#s(A));if(o.some(A=>A===null))return null;let i=new Set,e=new Set,a=new Set;for(let A of o){if(i.has(A.botId)||e.has(A.platformId)||a.has(A.tokenRef))return null;i.add(A.botId),e.add(A.platformId),a.add(A.tokenRef)}return Object.freeze({version:1,bots:Object.freeze(o)})}async#c(t){let o,i=this.#n.then(async()=>{let e=[...this.#a.bots];o=t(e);let a=Object.freeze({version:1,bots:Object.freeze(e)});await this.#g(a),this.#a=a});return this.#n=i.then(()=>{},()=>{}),await i,o}async#g(t){await lue(Cue(this.#e),{recursive:!0,mode:448});let o=`${this.#e}.tmp`;await Eue(o,`${JSON.stringify(t,null,2)} +`,{encoding:"utf8",mode:384}),await pCe(o,n)}async function f1(n){if(typeof n!="string"||!n.trim()||!y1(n.trim())){let i=new Error("\u5DE5\u4F5C\u533A\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84\u3002");throw i.code="workspace-not-absolute",i}let t=WE(n.trim()),o;try{o=await dCe(t)}catch(i){let e=new Error("\u5DE5\u4F5C\u533A\u8DEF\u5F84\u4E0D\u5B58\u5728\u3002",{cause:i});throw e.code="workspace-not-found",e}if(!o.isDirectory()){let i=new Error("\u5DE5\u4F5C\u533A\u8DEF\u5F84\u5FC5\u987B\u6307\u5411\u4E00\u4E2A\u76EE\u5F55\u3002");throw i.code="workspace-not-directory",i}return t}var ra=class{#e;#A;#t=1;#r={};#l={};#o={};#i=Object.create(null);#a=Object.create(null);#n=new Map;#s=1;#p=new Map;#c=1;#g=new Map;#I=new WeakMap;#d=new Set;#h=Promise.resolve();#C=new Map;constructor(t,{defaultWorkspace:o=process.cwd()}={}){if(typeof t!="string"||!t)throw new TypeError("workspace store path is required");this.#e=t,this.#A=WE(o)}async load(){try{let t=yCe(JSON.parse(await ICe(this.#e,"utf8")));if(!t)throw new Error("dsh-im workspace config is invalid");this.#t=t.version,this.#r=t.workspaces,this.#l=t.agentPresets,this.#o=t.contextEnhancement,this.#i=t.deliveryTargets,this.#a=t.accessPolicies}catch(t){if(t?.code!=="ENOENT")throw t;this.#t=1,this.#r={},this.#l={},this.#o={},this.#i=Object.create(null),this.#a=Object.create(null)}this.#n.clear(),this.#s=1,this.#p.clear(),this.#c=1,this.#g.clear(),this.#d.clear();for(let t of Object.keys(this.#r))this.#n.set(t,this.#u()),this.#p.set(t,this.#B());return this}has(t){let o=xt(t);return Object.hasOwn(this.#r,o)&&!this.#g.has(o)}incarnationFor(t){return this.#p.get(xt(t))??null}workspaceFor(t){return this.#r[xt(t)]??this.#A}agentPresetFor(t){return this.#l[xt(t)]??null}contextEnhancementFor(t){let o=xt(t);return this.has(o)&&Object.hasOwn(this.#o,o)?this.#o[o]:C_}accessPolicyFor(t){let o=xt(t);return this.has(o)&&Object.hasOwn(this.#a,o)?this.#a[o]:null}listDeliveryTargets(t){let o=xt(t);if(!this.has(o))throw ci("unknown-bot","Unknown bot");return Object.entries(this.#i[o]??{}).map(([i,e])=>GI(e,{targetId:i})).sort((i,e)=>i.targetId.localeCompare(e.targetId))}deliveryTargetFor(t,o){let i=xt(t),e=PQ(o);if(!this.has(i))throw ci("unknown-bot","Unknown bot");let a=this.#i[i]?.[e];return a?GI(a,{targetId:e}):null}async createDeliveryTarget(t,o){let i=xt(t),e=GI(o);return this.#S(i,async()=>{if(!this.has(i))throw ci("unknown-bot","Unknown bot");if(Object.hasOwn(this.#i[i]??{},e.targetId))throw ci("target-conflict","Target already exists");let{targetId:a,...A}=e,r={...this.#i,[i]:{...this.#i[i]??{},[a]:A}};return await this.#y(this.#o,r,2),this.#i=r,this.#t=2,GI(A,{targetId:a})})}async updateDeliveryTarget(t,o,i){let e=xt(t),a=PQ(o),A=GI(i,{targetId:a});return this.#S(e,async()=>{if(!this.has(e))throw ci("unknown-bot","Unknown bot");if(!Object.hasOwn(this.#i[e]??{},a))throw ci("unknown-target","Unknown target");let{targetId:r,...s}=A,g={...this.#i,[e]:{...this.#i[e],[a]:s}};return await this.#y(this.#o,g,2),this.#i=g,this.#t=2,GI(s,{targetId:a})})}async deleteDeliveryTarget(t,o){let i=xt(t),e=PQ(o);return this.#S(i,async()=>{if(!this.has(i))throw ci("unknown-bot","Unknown bot");if(!Object.hasOwn(this.#i[i]??{},e))throw ci("unknown-target","Unknown target");let a={...this.#i[i]};delete a[e];let A={...this.#i};return Object.keys(a).length>0?A[i]=a:delete A[i],await this.#y(this.#o,A,2),this.#i=A,this.#t=2,!0})}generationFor(t){return this.#n.get(xt(t))??null}async whenIdle(){await this.#h}async whenBotIdle(t){let o=xt(t);for(;;){let i=this.#C.get(o);if(!i||(await i,this.#C.get(o)===i))return}}async ensure(t,{workspace:o=this.#A,defaultAgentPreset:i,initialAccessPolicy:e}={}){let a=xt(t),A=WE(o);return this.#S(a,async()=>{let r=!this.#r[a],s=e!==void 0&&!Object.hasOwn(this.#a,a);if(r||s){let g=s?Ic(e):void 0,c=r?Tp(i):null,I=Object.hasOwn(this.#l,a),d=this.#l[a],B=s?{...this.#a,[a]:g}:this.#a;r&&(this.#r[a]=A,c&&(this.#l[a]=c),this.#n.set(a,this.#u()),this.#p.set(a,this.#B()));let f=s?2:this.#t;try{await this.#y(this.#o,this.#i,f,B)}catch(Q){throw r&&(delete this.#r[a],I?this.#l[a]=d:delete this.#l[a],this.#n.delete(a),this.#p.delete(a)),Q}this.#a=B,this.#t=f}else this.#n.has(a)||this.#n.set(a,this.#u());return this.#r[a]})}async setWorkspace(t,o,{clearSessions:i,incarnation:e}={}){let a=xt(t);if(!this.has(a)||e!==void 0&&e!==this.incarnationFor(a)){let r=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw r.code="workspace-bot-not-found",r}let A=await f1(o);return this.#S(a,async()=>{if(!this.has(a)||e!==void 0&&e!==this.incarnationFor(a)){let s=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw s.code="workspace-bot-not-found",s}if(A===this.workspaceFor(a))return A;let r=this.#r[a];this.#n.set(a,this.#u()),await i?.(),this.#r[a]=A;try{await this.#y()}catch(s){throw this.#r[a]=r,s}return A})}async setAgentPreset(t,o,{incarnation:i}={}){let e=xt(t);if(!this.has(e)||i!==void 0&&i!==this.incarnationFor(e)){let A=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw A.code="workspace-bot-not-found",A}let a=Tp(o);return this.#S(e,async()=>{if(!this.has(e)||i!==void 0&&i!==this.incarnationFor(e)){let r=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw r.code="workspace-bot-not-found",r}let A=this.#l[e]??null;if(A===a)return a;a?this.#l[e]=a:delete this.#l[e];try{await this.#y()}catch(r){throw A?this.#l[e]=A:delete this.#l[e],r}return a})}async setContextEnhancement(t,o,{incarnation:i}={}){let e=xt(t),a=i===void 0?this.incarnationFor(e):i,A=kI(o);return this.#S(e,async()=>{if(!this.has(e)||a!==this.incarnationFor(e)){let s=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw s.code="workspace-bot-not-found",s}let r={...this.#o,[e]:A};return await this.#y(r),this.#o=r,A})}async setAccessPolicy(t,o,{incarnation:i}={}){let e=xt(t),a=i===void 0?this.incarnationFor(e):i,A=Ic(o);return this.#S(e,async()=>{if(!this.has(e)||a!==this.incarnationFor(e)){let s=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw s.code="workspace-bot-not-found",s}let r={...this.#a,[e]:A};return await this.#y(this.#o,this.#i,2,r),this.#a=r,this.#t=2,A})}async bindWorkspaceSession(t,o,{conversationKey:i,sessionId:e,clearSessions:a,setSession:A,incarnation:r,expectedGeneration:s}={}){let g=xt(t);if(typeof i!="string"||!i||typeof e!="string"||!e)throw new TypeError("conversationKey and sessionId are required");if(typeof a!="function"||typeof A!="function")throw new TypeError("session state callbacks are required");if(!this.has(g)||r!==void 0&&r!==this.incarnationFor(g)){let I=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw I.code="workspace-bot-not-found",I}let c=await k_(await f1(o));return this.#S(g,async()=>{if(!this.has(g)||r!==void 0&&r!==this.incarnationFor(g)){let I=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw I.code="workspace-bot-not-found",I}if(s!==void 0&&s!==this.generationFor(g))throw PI("The bot workspace changed before the session binding could be committed.");if(!await uCe(c,this.workspaceFor(g))){let I=this.#r[g];this.#n.set(g,this.#u()),await a(),this.#r[g]=c;try{await this.#y()}catch(d){throw this.#r[g]=I,d}}return await A(i,e),{workspace:c,sessionId:e,generation:this.#n.get(g)}})}async invalidateSessions(t,{clearSessions:o}={}){let i=xt(t);return this.#S(i,async()=>{this.#n.set(i,this.#u()),await o?.()})}async beginRemoval(t,{clearSessions:o}={}){let i=xt(t);return this.#S(i,async()=>{let e=this.#g.get(i);if(e)return e;let a=Object.freeze({});this.#g.set(i,a),this.#I.set(a,{botId:i,incarnation:this.incarnationFor(i)}),this.#n.set(i,this.#u());try{await o?.()}catch(A){throw this.#g.get(i)===a&&this.#g.delete(i),A}return a})}async abortRemoval(t){let{botId:o}=this.#f(t);return this.#S(o,async()=>this.#g.get(o)!==t?!1:(this.#g.delete(o),Object.hasOwn(this.#r,o)&&(this.#n.set(o,this.#u()),this.#p.has(o)||this.#p.set(o,this.#B())),!0))}async finishRemoval(t){let{botId:o,incarnation:i}=this.#f(t);return this.#S(o,async()=>this.#g.get(o)!==t?{removed:!1,persisted:!0,error:null,stale:!0}:this.incarnationFor(o)!==i?(this.#g.delete(o),{removed:!1,persisted:!0,error:null,stale:!0}):(this.#g.delete(o),this.#Q(o)))}async retireAfterConfigCommit(t){let o=xt(t);return this.#S(o,async()=>(this.#g.delete(o),this.#Q(o)))}flushPendingRemoval(t){if(this.#d.has(t))return this.#S(t,async()=>{this.#d.has(t)&&await this.#m()})}async remove(t){let o=await this.retireAfterConfigCommit(t);if(o.error)throw o.error;return o.removed}async reconcile(t){let o=new Set([...t].map(xt)),i=new Set([...Object.keys(this.#r),...Object.keys(this.#l),...Object.keys(this.#o),...Object.keys(this.#i),...Object.keys(this.#a),...this.#d]);for(let e of i)o.has(e)||await this.remove(e)}decorateStatus(t){return!t||typeof t!="object"||!Array.isArray(t.bots)?t:{...t,bots:t.bots.map(o=>o?.botId?{...o,workspace:this.workspaceFor(o.botId),agentPreset:this.agentPresetFor(o.botId),contextEnhancement:this.contextEnhancementFor(o.botId),accessPolicy:this.accessPolicyFor(o.botId)}:o)}}#u(){let t=this.#s;return this.#s+=1,t}#B(){let t=this.#c;return this.#c+=1,t}#f(t){if(!t||typeof t!="object")throw new TypeError("Invalid workspace removal transaction");let o=this.#I.get(t);if(!o)throw new TypeError("Invalid workspace removal transaction");return o}async#Q(t){let o=Object.hasOwn(this.#r,t),i=Object.hasOwn(this.#l,t),e=Object.hasOwn(this.#o,t),a=Object.hasOwn(this.#i,t),A=Object.hasOwn(this.#a,t),r=o||i||e||a||A||this.#d.has(t);if(delete this.#r[t],delete this.#l[t],delete this.#o[t],delete this.#i[t],delete this.#a[t],this.#n.delete(t),this.#p.delete(t),!r)return{removed:!1,persisted:!0,error:null,stale:!1};try{return await this.#m(),{removed:o,persisted:!0,error:null,stale:!1}}catch(s){return this.#d.add(t),{removed:o,persisted:!1,error:s,stale:!1}}}async#S(t,o){let i=this.#h.then(o,o),e=i.then(()=>{},()=>{});return this.#h=e,this.#C.set(t,e),e.finally(()=>{this.#C.get(t)===e&&this.#C.delete(t)}),i}async#y(t=this.#o,o=this.#i,i=this.#t,e=this.#a){await SCe(this.#e,mCe({version:i,workspaces:this.#r,agentPresets:this.#l,contextEnhancement:t,deliveryTargets:o,accessPolicies:e})),this.#d.clear()}async#m(){if(Object.keys(this.#r).length>0||Object.keys(this.#l).length>0||Object.keys(this.#o).length>0||Object.keys(this.#i).length>0||Object.keys(this.#a).length>0){await this.#y();return}try{await hCe(this.#e),this.#d.clear()}catch(t){if(t?.code!=="ENOENT")throw t;this.#d.clear()}}};function VE(n){if(!n)return null;let t=typeof n=="function"?n():n;return t&&typeof t.then=="function"?t.then($n):$n(t)}function m1(){let n=new Error("Agent Preset \u4E0D\u5B58\u5728\u6216\u4E0D\u53EF\u7528\u3002");return n.code="agent-preset-unavailable",n}function Lp(n){if(n())return;let t=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw t.code="workspace-bot-not-found",t}function Q1(n,t,o){let i=e=>{let a=n.decorateStatus(e);if(!o||!a||typeof a!="object")return a;let A=s=>s?{...a,agentPresetCatalog:s}:a,r=VE(o);return r&&typeof r.then=="function"?r.then(A):A(r)};return t&&typeof t.then=="function"?t.then(i):i(t)}function wCe(n){return Promise.resolve(n.status())}function Ha(n,{workspaces:t,method:o="remove",botIdFromRemoved:i=A=>A?.botId,saveMethod:e="save",botIdFromSave:a=A=>A?.botId}){if(!n||!t||typeof n[o]!="function")throw new TypeError("configStore removal observer dependencies are required");return new Proxy(n,{get(A,r){let s=Reflect.get(A,r,A);return r===o?async(...g)=>{let c=await s.apply(A,g),I=c?i(c,g):null;return I&&await t.retireAfterConfigCommit(I),c}:r===e&&typeof s=="function"?(...g)=>{let c=t.flushPendingRemoval(a(g[0],g));return c?c.then(()=>s.apply(A,g)):s.apply(A,g)}:typeof s=="function"?s.bind(A):s}})}function Ka(n,{botId:t,workspaces:o,state:i,agentPresetCatalog:e}={}){if(!n||!o||!i)throw new TypeError("harness, workspaces, and state are required");let a=o.incarnationFor(t),A=()=>o.has(t)&&o.incarnationFor(t)===a,r=async(I=e)=>{let d;try{d=await VE(I)??$n(null)}catch(B){throw Lp(A),B}return Lp(A),{agentPreset:o.agentPresetFor(t),agentPresetCatalog:d}},s=new Map,g=new Proxy(n,{get(I,d){if(d==="agentPresetSettings")return async(f={})=>{f?.signal?.throwIfAborted(),Lp(A);let Q=await r();return f?.signal?.throwIfAborted(),Q};if(d==="updateAgentPreset")return async(f,Q={})=>{Q?.signal?.throwIfAborted(),Lp(A);let y=f==="--default"?null:Tp(f),m=null;if(y&&({agentPresetCatalog:m}=await r(),Q?.signal?.throwIfAborted(),!m.items.some(_=>_.id===y)))throw m1();if(await o.setAgentPreset(t,y,{incarnation:a}),Lp(A),m)return{agentPreset:o.agentPresetFor(t),agentPresetCatalog:m};try{return await r()}catch(_){if(_?.code==="workspace-bot-not-found")throw _;return Lp(A),{agentPreset:o.agentPresetFor(t),agentPresetCatalog:$n(null)}}};if(d==="currentWorkspace")return()=>{if(!A()){let f=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw f.code="workspace-bot-not-found",f}return o.workspaceFor(t)};if(d==="assertWorkspaceScope")return()=>{if(!A()){let f=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw f.code="workspace-bot-not-found",f}};if((d==="listWorkspaces"||d==="listWorkspaceSessions"||d==="listModels")&&typeof I[d]=="function")return async(...f)=>{if(!A()){let y=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw y.code="workspace-bot-not-found",y}let Q=await I[d](...f);if(!A()){let y=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw y.code="workspace-bot-not-found",y}return Q};if(d==="switchWorkspace")return f=>{if(!A()){let Q=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");return Q.code="workspace-bot-not-found",Promise.reject(Q)}return o.setWorkspace(t,f,{clearSessions:()=>i.clearSessions(),incarnation:a})};if(d==="bindWorkspaceSession")return async(f,Q)=>{if(typeof f!="string"||!f||typeof Q!="string"||!Q)throw new TypeError("conversationKey and sessionId are required");if(!A()){let T=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw T.code="workspace-bot-not-found",T}if(typeof I.adoptWorkspaceSession!="function")throw new TypeError("Harness does not support adopting workspace sessions");let y=o.generationFor(t),m=await I.adoptWorkspaceSession(Q);if(!A()){let T=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw T.code="workspace-bot-not-found",T}if(y!==o.generationFor(t))throw PI("The bot workspace changed while the session was being adopted.");if(!m||typeof m!="object"||m.sessionId!==Q||typeof m.workspace!="string")throw new TypeError("Harness returned an invalid adopted workspace session");let _=await o.bindWorkspaceSession(t,m.workspace,{conversationKey:f,sessionId:Q,clearSessions:()=>i.clearSessions(),setSession:(T,R)=>i.setSession(T,R),incarnation:a,expectedGeneration:y});if(!A()){let T=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw T.code="workspace-bot-not-found",T}if(_.generation!==o.generationFor(t))throw PI("The bot workspace changed before the session binding completed.");return s.set(Q,_.generation),{...m,workspace:_.workspace,sessionId:_.sessionId}};if(d==="createSession")return async(f={})=>{if(await o.whenBotIdle(t),!A()){let _=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw _.code="workspace-bot-not-found",_}let Q=o.generationFor(t),y=o.agentPresetFor(t),m=await I.createSession({...f,workspace:o.workspaceFor(t),...y==null?{}:{agentPreset:y}});return s.set(m,Q),m};if(d==="workspaceSession")return f=>{if(typeof f!="string"||!f)throw new TypeError("sessionId is required");let Q=s.get(f)??o.generationFor(t);s.delete(f);let y=()=>A()&&Q===o.generationFor(t),m=async(T,R,K)=>{if(!y())throw PI(`The bot workspace changed before this ${K} started.`);let L=await I[T](f,...R);if(!y())throw PI(`The bot workspace changed while this ${K} was running.`);return L},_=async(T,R,K)=>{if(!y())throw PI(`The bot workspace changed before this ${K} started.`);return I[T](f,...R)};return Object.freeze({sessionId:f,async sessionExists(...T){if(!y())return!1;let R=await I.sessionExists(f,...T);return y()&&R},models(...T){return m("getSessionModels",T,"model listing")},readHistory(...T){return m("readSessionHistory",T,"history read")},...typeof I.renameSession=="function"?{renameTitle(...T){return _("renameSession",T,"title rename")}}:{},selectModel(...T){return m("selectSessionModel",T,"model selection")},isRunning(...T){return m("isSessionRunning",T,"run-state check")},hasActiveTurn(...T){return m("hasActiveTurn",T,"turn ownership check")},stopActiveTurn(...T){return _("stopActiveTurn",T,"turn stop")},steerActiveTurn(...T){return _("steerActiveTurn",T,"turn steering")},ask(...T){if(!y())throw PI("The bot workspace changed before this prompt started.");return I.ask(f,...T)}})};if(d==="sessionExists")return(f,...Q)=>{if(!A())return!1;let y=s.get(f);return y!==void 0&&y!==o.generationFor(t)?(s.delete(f),!1):I.sessionExists(f,...Q)};if(d==="ask")return(f,...Q)=>{let y=s.get(f);if(s.delete(f),!A()||y!==void 0&&y!==o.generationFor(t)){let m=new Error("The bot workspace changed before this prompt started.");throw m.code=ua,m}return I.ask(f,...Q)};if(d==="executeCommand"&&typeof I.executeCommand=="function")return(f,...Q)=>{let y=s.get(f);if(s.delete(f),!A()||y!==void 0&&y!==o.generationFor(t)){let m=new Error("The bot workspace changed before this command started.");throw m.code=ua,m}return I.executeCommand(f,...Q)};let B=Reflect.get(I,d,I);return typeof B=="function"?B.bind(I):B}}),c=new Proxy(i,{get(I,d){if(d===KM)return I;if(d==="sessionFor")return(f,...Q)=>{if(!A())return null;let y=I.sessionFor(f,...Q);return y&&!s.has(y)&&s.set(y,o.generationFor(t)),y};if(d==="setSession")return(f,Q,...y)=>{let m=s.get(Q);return!A()||m!==void 0&&m!==o.generationFor(t)?(s.delete(Q),!1):I.setSession(f,Q,...y)};let B=Reflect.get(I,d,I);return typeof B=="function"?B.bind(I):B}});return Object.freeze({harness:g,state:c})}function xa(n,{workspaces:t,stateFor:o,agentPresetCatalog:i}={}){if(!n||!t||typeof o!="function")throw new TypeError("controller, workspaces, and stateFor are required");let e=new Map,a=(d,B)=>{let Q=(e.get(d)??Promise.resolve()).catch(()=>{}).then(B);return e.set(d,Q),Q.finally(()=>{e.get(d)===Q&&e.delete(d)})},A=d=>Q1(t,d,i),r=(d,B)=>{let f=t.incarnationFor(d);return a(d,async()=>{if(!(await n.status())?.bots?.some(m=>m?.botId===d)){let m=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw m.code="workspace-bot-not-found",m}let y=await o(d);return await t.setWorkspace(d,B,{clearSessions:()=>y.clearSessions(),incarnation:f}),A(await n.status())})},s=(d,B)=>{let f=t.incarnationFor(d),Q=Tp(B);return a(d,async()=>{if(!(await n.status())?.bots?.some(_=>_?.botId===d)){let _=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw _.code="workspace-bot-not-found",_}let m=Q&&i?await VE(i):null;if(Q&&i&&!m?.items.some(_=>_.id===Q))throw m1();return await t.setAgentPreset(d,Q,{incarnation:f}),Q1(t,await n.status(),m??i)})},g=(d,B,f)=>{let Q=t.incarnationFor(d),y=kI(B);return a(d,async()=>{let m=await n.status();if(!m?.bots?.some(L=>L?.botId===d)){let L=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw L.code="workspace-bot-not-found",L}let _=await VE(i),T=t.decorateStatus(m),R={...T,bots:T.bots.map(L=>L?.botId===d?{...L,contextEnhancement:y}:L),..._?{agentPresetCatalog:_}:{}},K=f?await f(R):R;return await t.setContextEnhancement(d,y,{incarnation:Q}),K})},c=(d,B,f)=>{let Q=t.incarnationFor(d),y=Ic(B);return a(d,async()=>{let m=await n.status();if(!m?.bots?.some(L=>L?.botId===d)){let L=new Error("\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002");throw L.code="workspace-bot-not-found",L}let _=await VE(i),T=t.decorateStatus(m),R={...T,bots:T.bots.map(L=>L?.botId===d?{...L,accessPolicy:y}:L),..._?{agentPresetCatalog:_}:{}},K=f?await f(R):R;return await t.setAccessPolicy(d,y,{incarnation:Q}),K})},I=(d,B)=>a(d,async()=>{let f=await t.beginRemoval(d,{clearSessions:async()=>{try{let Q=await o(d);if(!Q||typeof Q.clearSessions!="function")throw new TypeError("bot state does not support session cleanup");await Q.clearSessions()}catch(Q){console.warn(`[dsh-im] ignored session cleanup failure while deleting bot ${d}:`,Q?.message??Q)}}});try{let Q=await B();return await t.finishRemoval(f),A(Q)}catch(Q){let y=await wCe(n).catch(()=>null);throw Array.isArray(y?.bots)&&!y.bots.some(_=>_?.botId===d)?await t.finishRemoval(f):await t.abortRemoval(f),Q}});return new Proxy(n,{get(d,B){if(B==="updateWorkspace")return r;if(B==="updateAgentPreset")return s;if(B==="updateContextEnhancement")return g;if(B==="updateAccessPolicy")return c;let f=Reflect.get(d,B,d);return typeof f!="function"?f:B==="deleteBot"?(Q,...y)=>I(Q,()=>f.call(d,Q,...y)):B==="disconnect"?async(...Q)=>{let m=(await d.status())?.bots?.[0]?.botId;return m?I(m,()=>f.apply(d,Q)):A(f.apply(d,Q))}:(...Q)=>A(f.apply(d,Q))}})}var S1=new Set(["weixin","feishu","dingtalk","wecom","qq","slack","telegram","discord","whatsapp"]);function DCe(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function OCe(n){return typeof n=="string"&&n.length>0&&n.length<=512&&n.trim()===n&&!/[\s:\u0000-\u001f\u007f]/u.test(n)}function v_(n,t){let o=`${t}:`;if(!n.startsWith(o))return null;let i=n.slice(o.length);return OCe(i)?i:null}function ZE(n,t){for(let[o,i,e]of t){let a=v_(n,o);if(a)return{kind:i,route:{[e]:a}}}return null}function bCe(n){let t=v_(n,"p2p");return t?.startsWith("ou_")?{kind:"user",route:{openId:t}}:ZE(n,[["group","group","chatId"]])}function MCe(n){let t=v_(n,"direct");if(t&&/^[A-Za-z0-9_-]{1,128}$/.test(t))return{kind:"conversation",route:{channelId:t}};let o=/^group:([^:]+):(\d{1,20}(?:\.\d{1,20})?)$/.exec(n);return!o||!/^[A-Za-z0-9_-]{1,128}$/.test(o[1])?null:{kind:"thread",route:{channelId:o[1],threadTs:o[2]}}}function _Ce(n){let t=/^(direct|group):(-?\d+)(?::([1-9]\d*))?$/.exec(n);if(!t)return null;let o=Number(t[2]);if(!Number.isSafeInteger(o)||t[1]==="direct"&&t[3]!==void 0)return null;if(t[3]===void 0)return{kind:"chat",route:{chatId:t[2]}};let i=Number(t[3]);return!Number.isSafeInteger(i)||i<=0?null:{kind:"topic",route:{chatId:t[2],messageThreadId:i}}}function TCe(n){let t=/^(?:direct|group):(\d{1,32})$/.exec(n);return t?{kind:"channel",route:{channelId:t[1]}}:null}function NCe(n){let t=/^direct:(\d{5,32}@(s\.whatsapp\.net|lid))$/.exec(n);if(t)return{kind:"user",route:{jid:t[1]}};let o=/^group:(\d{5,32}(?:-\d{1,32})?@g\.us)$/.exec(n);return o?{kind:"group",route:{jid:o[1]}}:null}function RCe(n,t){if(!S1.has(n)||typeof t!="string")return null;switch(n){case"weixin":return ZE(t,[["p2p","user","toUserId"]]);case"feishu":return bCe(t);case"dingtalk":return ZE(t,[["p2p","user","userId"],["group","group","openConversationId"]]);case"wecom":return ZE(t,[["direct","user","chatId"],["group","group","chatId"]]);case"qq":return ZE(t,[["c2c","user","userOpenId"],["group","group","groupOpenId"]]);case"slack":return MCe(t);case"telegram":return _Ce(t);case"discord":return TCe(t);case"whatsapp":return NCe(t);default:return null}}function w1(n,t){if(!S1.has(n)||!DCe(t))return[];let o=[],i=new Set;for(let e of Object.keys(t)){let a=RCe(n,e);if(!a)continue;let A=JSON.stringify(a);i.has(A)||(i.add(A),o.push(a))}return o}var kCe=new Set(["weixin","feishu","dingtalk","wecom","qq","slack","telegram","discord","whatsapp"]);function FQ(n){return kCe.has(n)}function pc(n){let t=new Error(n);return t.code="invalid-target",t}function vCe(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function P_(n,t,o){if(!vCe(n))throw pc(`${o} must be an object`);if(Object.keys(n).find(e=>!t.includes(e))!==void 0)throw pc(`${o} contains an unknown field`)}function GQ(n,t){if(typeof n!="string"||!n||n.trim()!==n)throw pc(`${t} must be a non-empty string without surrounding whitespace`);return n}function PCe(n){if(typeof n!="string"||!n.trim()||n.trim().length>80)throw pc("target.name must contain 1 to 80 characters");return n.trim()}function lc(n,t){P_(n,t,"route");let o={};for(let i of t)o[i]=GQ(n[i],`route.${i}`);return o}function lg(n,t){if(!t.includes(n))throw pc("target kind is not supported by this channel");return n}function GCe(n,t,o){switch(n){case"weixin":return lg(t,["user"]),lc(o,["toUserId"]);case"feishu":return lg(t,["user","group"]),lc(o,t==="user"?["openId"]:["chatId"]);case"dingtalk":return lg(t,["user","group"]),lc(o,t==="user"?["userId"]:["openConversationId"]);case"wecom":return lg(t,["user","group"]),lc(o,["chatId"]);case"qq":return lg(t,["user","group"]),lc(o,t==="user"?["userOpenId"]:["groupOpenId"]);case"slack":return lg(t,["conversation","thread"]),lc(o,t==="conversation"?["channelId"]:["channelId","threadTs"]);case"telegram":{lg(t,["chat","topic"]),P_(o,t==="chat"?["chatId"]:["chatId","messageThreadId"],"route");let i=GQ(o.chatId,"route.chatId");if(!/^-?\d+$/.test(i))throw pc("route.chatId must be a decimal string");if(t==="chat")return{chatId:i};if(!Number.isSafeInteger(o.messageThreadId)||o.messageThreadId<=0)throw pc("route.messageThreadId must be a positive integer");return{chatId:i,messageThreadId:o.messageThreadId}}case"discord":return lg(t,["channel"]),lc(o,["channelId"]);case"whatsapp":{lg(t,["user","group"]);let i=lc(o,["jid"]);if(!(t==="user"?/^\d{5,32}@(s\.whatsapp\.net|lid)$/.test(i.jid):/^\d{5,32}(?:-\d{1,32})?@g\.us$/.test(i.jid)))throw pc(`route.jid must be a ${t} WhatsApp JID`);return i}default:throw new TypeError(`Unsupported delivery channel: ${n}`)}}function Up(n,t,{targetIdRequired:o=!0}={}){if(!FQ(n))throw new TypeError(`Unsupported delivery channel: ${n}`);P_(t,o?["targetId","name","kind","route"]:["name","kind","route"],"target");let i={};return o&&(i.targetId=GQ(t.targetId,"target.targetId")),t.name!==void 0&&(i.name=PCe(t.name)),i.kind=GQ(t.kind,"target.kind"),i.route=GCe(n,i.kind,t.route),i}function Ya({channel:n,workspaces:t,coreController:o,stateFor:i}){if(!FQ(n))throw new TypeError(`Unsupported delivery channel: ${n}`);if(!t||typeof t!="object")throw new TypeError("delivery adapter requires a workspace store");if(!o||typeof o!="object")throw new TypeError("delivery adapter requires a proactive text controller");if(typeof i!="function")throw new TypeError("delivery adapter requires a bot state getter");return Object.freeze({channel:n,ownsBot:e=>t.has(e),listTargets:e=>t.listDeliveryTargets(e),async listSuggestions(e){let a=await i(e);if(!a||typeof a.snapshot!="function")throw new TypeError("delivery suggestion state cannot be inspected");return w1(n,a.snapshot()?.sessions).map(r=>Up(n,r,{targetIdRequired:!1}))},createTarget:(e,a)=>t.createDeliveryTarget(e,Up(n,a)),updateTarget:(e,a,A)=>t.updateDeliveryTarget(e,a,Up(n,A,{targetIdRequired:!1})),deleteTarget:(e,a)=>t.deleteDeliveryTarget(e,a),async sendText(e,a,A,r={}){let s=Up(n,a);if(typeof o.sendProactiveText!="function")throw new TypeError("delivery controller cannot send proactive text");return await o.sendProactiveText(e,s,A,r),{sent:!0}}})}var D1=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function FCe(n){if(!Array.isArray(n)||n.length===0)return[...D1];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...D1]}var LQ=class{#e;#A;#t;#r;#l;#o;#i;#a=null;#n=null;#s=0;#p=!1;#c=!1;#g;#I;constructor({controller:t,harness:o,logger:i=console,retryDelaysMs:e,healthyIntervalMs:a=15e3,setTimeoutImpl:A=setTimeout,clearTimeoutImpl:r=clearTimeout}){if(!t||typeof t.initialize!="function"||typeof t.status!="function")throw new TypeError("ConnectionSupervisor requires a controller");if(!o||typeof o.ensureRunning!="function")throw new TypeError("ConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=FCe(e),this.#l=Number.isFinite(a)&&a>=0?a:15e3,this.#o=A,this.#i=r,this.#g=new Promise(s=>{this.#I=s})}get ready(){return this.#g}start(){return this.#c||this.#p?this:(this.#c=!0,this.#d(0),this)}async close(){this.#p||(this.#p=!0,this.#a!==null&&this.#i(this.#a),this.#a=null,await this.#n?.catch(()=>{}),this.#I?.(null),this.#I=null)}#d(t){this.#p||(this.#a=this.#o(()=>{this.#a=null,this.#h()},t),this.#a?.unref?.())}async#h(){if(this.#p||this.#n)return;let t=this.#C();this.#n=t;try{await t}finally{this.#n===t&&(this.#n=null)}}async#C(){try{if(await this.#A.ensureRunning(),this.#p)return;let t=await this.#e.initialize();if(this.#p)return;this.#I?.(t),this.#I=null;let{configured:o,connected:i}=t.totals;if(i{let A={namespace:"commands",method:"execute",args:{agentId:i,line:e,images:[]},signal:a.signal};try{return await o.invoke(A)}catch(r){if(r?.name!=="TypertGatewayError"||r.code!=="arguments-invalid"||r.endpoint!=="commands/execute"||r.message!=='typert gateway: commands/execute: args fields do not match the descriptor: unexpected "images"')throw r;return a.signal?.throwIfAborted(),o.invoke({...A,args:{agentId:i,line:e}})}}}}import{randomUUID as F_}from"node:crypto";var UQ=new WeakMap;function LCe(n){let t=n?.failure;return t&&typeof t=="object"&&typeof t.code=="string"&&typeof t.message=="string"?{code:t.code,message:t.message,details:t.details&&typeof t.details=="object"?t.details:{}}:n?.name==="AbortError"||n?.name==="RemoteInvocationCancelled"?{code:"cancelled",message:n instanceof Error?n.message:"Harness request was cancelled",details:{}}:{code:"internal",message:n instanceof Error?n.message:String(n),details:{}}}function Po(n,t){return Promise.resolve().then(t).then(o=>({rpcId:n.rpcId,result:{ok:!0,value:o}}),o=>({rpcId:n.rpcId,result:{ok:!1,error:LCe(o)}}))}function O1(n,t,o,i){return{namespace:n,method:t,args:o,...i===void 0?{}:{signal:i}}}function HQ(n,t){let o=new Error(n);return o.name="UserQuestionError",o.code=t,o}function UCe(n,t){return!n||typeof n!="object"||n.sessionId!==t.sessionId||!n.answer||typeof n.answer!="object"||!Array.isArray(n.answer.answers)||n.answer.answers.length!==t.questions.length?!1:n.answer.answers.every((o,i)=>{let e=t.questions[i];if(!o||typeof o!="object"||o.id!==e.id||!Array.isArray(o.selected)||o.selected.some(r=>typeof r!="string")||new Set(o.selected).size!==o.selected.length||o.custom!==void 0&&typeof o.custom!="string")return!1;let a=o.custom?.trim();if(a!==void 0&&!a||e.multiSelect!==!0&&(a!==void 0&&o.selected.length>0||o.selected.length>1))return!1;let A=new Set(e.options?.map(r=>r.label)??[]);return o.selected.every(r=>A.has(r))})}function HCe(n){if(n?.type==="event"&&n.event&&typeof n.event=="object")return[{event:n.event}];let t=n?.type==="chunks"?n.event:null;if(!t||typeof t!="object")throw new Error("Harness returned an invalid session history record");let{data:o}=t,i=t.type,e=i==="chunkrow/tool-call-chunks"?o?.args:o?.texts;if(!o||!Array.isArray(e)||e.length===0||e.some(A=>typeof A!="string")||!Array.isArray(o.dt)||o.dt.length!==e.length-1)throw new Error("Harness returned an invalid packed session chunk");let a=t.time;return e.map((A,r)=>{r>0&&(a+=o.dt[r-1]);let s;if(i==="chunkrow/text-chunks")s={type:"text-delta",index:o.index,text:A};else if(i==="chunkrow/reasoning-chunks")s={type:"reasoning-delta",index:o.index,text:A};else if(i==="chunkrow/tool-call-chunks")s={type:"tool-call-delta",index:o.index,id:o.id,...Object.hasOwn(o,"name")?{name:o.name}:{},argumentsDelta:A};else throw new Error(`Harness returned an unsupported packed session chunk: ${String(i)}`);return{event:{type:"assistant/chunk",seq:t.seq+r,time:a,data:{turn:o.turn,step:o.step,chunk:s}}}})}function b1(n){if(!Array.isArray(n))throw new Error("Harness returned invalid session history records");return n.flatMap(HCe)}var L_=class{#e=[];#A=null;#t=!1;#r;#l;#o;constructor(t,o){this.#r=t,this.#o=o,this.#l=()=>this.close(),t?.addEventListener("abort",this.#l,{once:!0}),t?.aborted&&this.close()}push(t){if(!this.#t)if(this.#A){let o=this.#A;this.#A=null,o({value:t,done:!1})}else this.#e.push(t)}next(){return this.#e.length>0?Promise.resolve({value:this.#e.shift(),done:!1}):this.#t?Promise.resolve({value:void 0,done:!0}):new Promise(t=>{this.#A=t})}return(){return this.close(),Promise.resolve({value:void 0,done:!0})}close(){if(!this.#t&&(this.#t=!0,this.#r?.removeEventListener("abort",this.#l),this.#o?.(),this.#o=null,this.#A)){let t=this.#A;this.#A=null,t({value:void 0,done:!0})}}[Symbol.asyncIterator](){return this}},U_=class{#e;#A;#t=new Set;#r=new Map;#l=new Map;#o=new Map;#i=[];#a=!1;constructor(t,o,i){this.#e=o,this.#A=i,this.host=Object.freeze({describe:e=>Po(e,()=>({ready:!0,transport:"typert"}))}),this.workspace=Object.freeze({list:(e,a)=>Po(e,()=>this.#p(a)),create:(e,a)=>Po(e,()=>this.#n("workspace","create",{request:e.payload},a))}),this.sessions=Object.freeze({list:(e,a)=>Po(e,()=>this.#n("session","list",{_request:e.payload},a)),create:(e,a)=>Po(e,()=>this.#n("session","create",{request:e.payload},a)),history:(e,a)=>Po(e,()=>this.#g(e.payload,a)),prompt:(e,a)=>Po(e,()=>this.#n("session","prompt",{request:{requestId:e.rpcId,...e.payload}},a)),rename:(e,a)=>Po(e,()=>this.#n("session","rename",{request:e.payload},a)),cancel:(e,a)=>Po(e,()=>this.#n("session","cancel",{request:{sessionId:e.payload.sessionId}},a)),models:(e,a)=>Po(e,()=>this.#h(e.payload.sessionId,a)),selectModel:(e,a)=>Po(e,()=>this.#n("session","selectModel",{request:e.payload},a))}),this.llm=Object.freeze({models:(e,a)=>Po(e,async()=>{let A=await this.#d(a);return{groups:A.groups,failures:A.failures}})}),this.events=Object.freeze({mux:(e,a)=>this.#C(a)}),this.respond=e=>Promise.resolve(this.#m(e)),typeof t?.on=="function"&&(this.#i.push(t.on("session/event",(e,a)=>{let A=e?.id;typeof A!="string"||!a||typeof a!="object"||(Number.isSafeInteger(a.seq)&&this.#I(A,a.seq),this.#u({type:"session/event",sessionId:A,event:a}))},{global:!0})),this.#i.push(t.on("approval/request",(e,a)=>this.#y(e,a),{global:!0,prepend:!0})),this.#i.push(t.on("user-questions/request",(e,a)=>this.#Q(e,a),{global:!0,prepend:!0})))}async#n(t,o,i,e){return this.#e.invoke(O1(t,o,i,e))}async#s(t,o,i,e){let a=new AbortController,A=e?AbortSignal.any([e,a.signal]):a.signal,r;try{r=(await this.#e.stream(O1(t,o,i,A)))[Symbol.asyncIterator]();let g=await r.next();if(g.done)throw new Error(`Harness ${t}.${o} stream ended before its baseline`);return g.value}finally{a.abort(new DOMException("Baseline received","AbortError")),await Promise.resolve(r?.return?.()).catch(()=>{})}}async#p(t){let o=await this.#s("workspace","follow",{},t);if(o?.type!=="baseline"||!o.value||typeof o.value!="object")throw new Error("Harness workspace.follow returned no baseline");return o.value}async#c(t,o,i){let e=await this.#s("session","follow",{request:{address:{kind:"session",sessionId:t},maxMessages:o}},i);if(e?.type!=="snapshot"||!Number.isSafeInteger(e.cursor))throw new Error("Harness session.follow returned no snapshot");return this.#I(t,e.cursor),e}async#g(t,o){let{sessionId:i,maxMessages:e=50,beforeSeq:a}=t,A=this.#o.get(i);if(A===void 0){let s=await this.#c(i,e,o);if(A=this.#o.get(i)??s.cursor,a===void 0&&A===s.cursor)return{events:b1(s.records),hasMore:s.hasMore===!0,...s.projections===void 0?{}:{projections:s.projections}}}let r=await this.#n("session","page",{request:{address:{kind:"session",sessionId:i},throughSeq:A,maxMessages:e,...a===void 0?{}:{beforeSeq:a}}},o);return{events:b1(r.records),hasMore:r.hasMore===!0}}#I(t,o){let i=this.#o.get(t);(i===void 0||o>i)&&this.#o.set(t,o)}#d(t){return this.#n("session","modelCatalog",{},t)}async#h(t,o){let[i,e]=await Promise.all([this.#d(o),this.#n("session","list",{_request:{}},o)]),a=e?.items?.find(s=>s?.sessionId===t);if(!a){let s=new Error(`session "${t}" not found`);throw s.failure={code:"session-not-found",message:s.message,details:{sessionId:t}},s}let A=a.projections?.values?.modelSelection,r=A?.next??A?.lastUsed??i.default;return{current:r,routable:i.routableProviders.includes(r.provider),groups:i.groups,failures:i.failures}}#C(t){let o;o=new L_(t,()=>this.#t.delete(o)),this.#t.add(o);for(let i of this.#r.values())o.push(this.#f(i));for(let i of this.#l.values())o.push(this.#S(i));return o}#u(t,o=F_()){let i={rpcId:o,payload:t};for(let e of this.#t)e.push(i)}#B(t){let o=t?.session?.id??t?.id;return typeof o!="string"||!t?.session||!Array.isArray(t.session.events)?null:u1(this.#A,o,t.session.events)?{sessionId:o,session:t.session}:null}#f(t){return{rpcId:t.rpcId,payload:{type:"question/requested",sessionId:t.sessionId,questions:t.questions}}}#Q(t,o){let i=this.#B(t?.agent);return i?t.signal?.aborted?Promise.reject(HQ("ask_user_question was aborted before the user answered","ASK_ABORTED")):new Promise((e,a)=>{let A={rpcId:F_(),sessionId:i.sessionId,questions:t.questions,signal:t.signal,settle:(s,g)=>{this.#r.delete(A.rpcId)&&(t.signal?.removeEventListener("abort",r),this.#u({type:"question/resolved",sessionId:A.sessionId,questionRpcId:A.rpcId,outcome:s}),s==="answered"?e(g):a(g))}},r=()=>A.settle("cancelled",HQ("ask_user_question was aborted before the user answered","ASK_ABORTED"));this.#r.set(A.rpcId,A),t.signal?.addEventListener("abort",r,{once:!0}),this.#u(this.#f(A).payload,A.rpcId)}):o()}#S(t){return{rpcId:t.rpcId,payload:{type:"approval/requested",sessionId:t.sessionId,approvalId:t.approvalId,toolName:t.toolName,...t.callId===void 0?{}:{callId:t.callId},...t.reason===void 0?{}:{reason:t.reason}}}}#y(t,o){let i=this.#B(t?.agent);if(!i)return o();if(t.signal?.aborted)return Promise.resolve("cancelled");let e=new Set([...this.#l.values()].map(r=>r.approvalId)),a=new Set,A;for(let r=i.session.events.length-1;r>=0;r-=1){let s=i.session.events[r];if(s.type==="approval/decided")a.add(s.data?.id);else if(s.type==="approval/asked"){let g=s.data?.id;if(!g||a.has(g)||e.has(g)||(t.callId??null)!==(s.data?.callId??null))continue;A=g;break}}return A===void 0?o():new Promise(r=>{let s={rpcId:F_(),sessionId:i.sessionId,approvalId:A,toolName:t.toolName,callId:t.callId,reason:t.reason,settle:c=>{this.#l.delete(s.rpcId)&&(t.signal?.removeEventListener("abort",g),this.#u({type:"approval/resolved",sessionId:s.sessionId,approvalId:s.approvalId,outcome:c}),r(c))}},g=()=>s.settle("cancelled");this.#l.set(s.rpcId,s),t.signal?.addEventListener("abort",g,{once:!0}),this.#u(this.#S(s).payload,s.rpcId)})}#m(t){let o=this.#l.get(t?.rpcId);if(o){let a=t?.result?.value;return t?.result?.ok!==!0||!a||typeof a!="object"||a.sessionId!==o.sessionId||a.approvalId!==o.approvalId||a.outcome!=="allowed-once"&&a.outcome!=="rejected"?{accepted:!1,reason:"bad-response"}:(o.settle(a.outcome),{accepted:!0})}let i=this.#r.get(t?.rpcId);if(!i)return{accepted:!1,reason:"not-pending"};if(t?.result?.ok!==!0)return t?.result?.error?.code!=="cancelled"?{accepted:!1,reason:"bad-response"}:(i.settle("cancelled",HQ("the user cancelled ask_user_question","ASK_CANCELLED")),{accepted:!0});if(!UCe(t.result.value,i))return{accepted:!1,reason:"bad-response"};let e={answers:t.result.value.answer.answers.map(a=>({id:a.id,selected:[...a.selected],...a.custom===void 0?{}:{custom:a.custom}}))};return i.settle("answered",e),{accepted:!0}}dispose(){if(!this.#a){this.#a=!0;for(let t of[...this.#t])t.close();for(let t of[...this.#l.values()])t.settle("cancelled");for(let t of[...this.#r.values()])t.settle("cancelled",HQ("dsh-im interaction adapter was disposed","ASK_ABORTED"));for(let t of this.#i.splice(0).reverse())t?.()}}};function M1(n){let t=n?.root??n;if(!t||!["object","function"].includes(typeof t))throw new TypeError("dsh-im requires a Cordis Host context");let o=UQ.get(t);if(o)return o;let i=n?.typertGateway;if(!i||typeof i.invoke!="function"||typeof i.stream!="function")throw new TypeError("dsh-im requires the modern Host Typert gateway");let e=new U_(n,i,t);return UQ.set(t,e),typeof n.effect=="function"&&n.effect(()=>()=>{UQ.get(t)===e&&UQ.delete(t),e.dispose()},"dsh-im: modern Harness compatibility API"),e}function KCe(n,t){return n&&Object.hasOwn(n,t)?n[t]:typeof n?.get=="function"?n.get(t):void 0}function aa(n,t={}){return t.harnessBaseUrl!==void 0?{baseUrl:new URL(t.harnessBaseUrl)}:{apiProxy:KCe(n,"apiProxy")??M1(n),interactionScope:n.root??n}}import{randomUUID as xCe}from"node:crypto";function YCe(n){if(typeof n?.get!="function")return;let t;try{t=n.get("agents")}catch{return}if(t!=null){if(typeof t.get!="function")throw new TypeError('dsh-im requires a callable AgentRegistry when ctx.get("agents") is present');return t}}function jCe(n,t,o){if(n?.status!=="running")return!1;let i=n?.session?.events;if(!Array.isArray(i))return!1;let e=null,a=!1;for(let A of i){if(A?.type==="turn/start"){e=A.data?.turn??null,a=!1;continue}if(A?.type==="turn/end"&&A.data?.turn===e){e=null,a=!1;continue}e===t&&A?.type==="user/message"&&A.data?.source?.rpcId===o&&(a=!0)}return e===t&&a}function _1(n){if(!n||typeof n!="object"||Object.isFrozen(n))return n;for(let t of Object.values(n))_1(t);return Object.freeze(n)}function JCe(n){return _1({id:xCe(),role:"user",content:[{type:"text",text:n}],source:{kind:"user"}})}function qCe(n){let t=new Error("Session is busy with an active turn or maintenance task",{cause:n});return t.code="agent-busy",t}function zCe(n){return({sessionId:t,expectedTurn:o,promptRpcId:i,action:e,text:a})=>{let A=n.get(t);if(A){if(!jCe(A,o,i))return!1;if(e==="stop")return A.cancel({kind:"user"},{keepInbox:!0}),!0;if(e==="steer")return typeof a!="string"||!a.trim()?!1:(A.inject(JCe(a)),!0);throw new TypeError(`Unsupported Harness control action: ${String(e)}`)}}}function VCe(n){return({sessionId:t,operation:o})=>{if(typeof o!="function")throw new TypeError("maintenance operation is required");let i=n.get(t);if(!i)return o();try{return i.runMaintenance(e=>{if(n.get(t)!==i){let a=new Error("Session agent changed before maintenance started");throw a.code="agent-unavailable",a}return o(e)})}catch(e){throw qCe(e)}}}function WCe(n){return({sessionId:t,workspace:o,files:i,signal:e})=>{let A=n.get(t)?.session?.header?.cwd,r=typeof A=="string"&&A?A:o;if(typeof r!="string"||!r)throw new Ro("inbound-file-workspace-unavailable","The Harness Session workspace is unavailable for inbound files.");return vY({files:i},{workspace:r,signal:e})}}function Ja(n,t={}){let{controlExecutor:o,sessionMaintenanceExecutor:i,fileIngressExecutor:e}=t;if(o!==void 0&&typeof o!="function")throw new TypeError("controlExecutor must be a function");if(i!==void 0&&typeof i!="function")throw new TypeError("sessionMaintenanceExecutor must be a function");if(e!==void 0&&typeof e!="function")throw new TypeError("fileIngressExecutor must be a function");let a=o&&i&&e?void 0:YCe(n);return{controlExecutor:o??(a?zCe(a):void 0),sessionMaintenanceExecutor:i??(a?VCe(a):void 0),fileIngressExecutor:e??WCe(a??{get:()=>{}})}}function T1(n){return n.map(t=>({id:t,canExecuteCommands:!0}))}function pg(n=[]){return bQ({mode:"open",open:{defaultCanExecuteCommands:!0,commandPermissionOverrides:[]},allowlist:{users:T1(n)}})}function dc(n=[]){return bQ({mode:"allowlist",open:{defaultCanExecuteCommands:!1,commandPermissionOverrides:[]},allowlist:{users:T1(n)}})}function dg(n){return[...new Set((Array.isArray(n)?n:[n]).filter(t=>typeof t=="string"||typeof t=="number"||typeof t=="bigint").map(t=>String(t).trim()).filter(Boolean))]}function ZCe(n){return dg(n).map(t=>`${t.replace(/^\+/,"")}@s.whatsapp.net`)}function nr(n,t={}){let o=String(n??"").trim().toLowerCase();if(o==="weixin")return Ig({direct:dc(),group:dc()});if(o==="feishu"){let e=dg(t.ownerOpenIds??t.ownerOpenId).includes("*")?pg():dc();return Ig({direct:e,group:e})}if(o==="qq"){let i=dg(t.ownerUserOpenid);return Ig({direct:i.includes("*")?pg():dc(),group:pg()})}if(o==="telegram"){let i=dg(t.allowedUsers);return(t.accessMode??"compatible")==="private-allowlist"?Ig({direct:dc(i),group:dc()}):Ig({direct:pg(i),group:pg()})}if(o==="whatsapp"){let i=t.accessMode??"self-only",e=ZCe(t.allowedNumbers);return i==="open"?Ig({direct:pg(e),group:pg()}):Ig({direct:dc(i==="private-allowlist"?e:[]),group:dc()})}if(["dingtalk","wecom","slack","discord"].includes(o))return Ig({direct:pg(),group:pg()});throw new TypeError(`Unsupported access-policy channel: ${n}`)}function XCe(n,t={}){let o=String(n??"").trim().toLowerCase();if(o==="weixin")return dg(t.ownerUserId);if(o==="feishu")return dg(t.ownerOpenIds??t.ownerOpenId).filter(i=>i!=="*");if(o==="dingtalk"){let i=Array.isArray(t.approvedSenders)?t.approvedSenders:[];return dg(i.map(e=>e?.staffId))}return o==="qq"?dg(t.ownerUserOpenid).filter(i=>i!=="*"):o==="whatsapp"?dg(t.accountJid):[]}function qa(n,t,{channel:o,config:i,equals:e}={}){if(!n||typeof n.accessPolicyFor!="function")throw new TypeError("A workspace store with access policies is required");let a=new Set(XCe(o,i)),A=typeof e=="function"?e:(r,s)=>r===s;return Object.freeze({botId:t,getSettings:()=>n.accessPolicyFor(t),isPrivileged(r,s){if(!["direct","group"].includes(s))return!1;let g=Array.isArray(r)?r:[r];try{return g.some(c=>typeof c=="string"&&[...a].some(I=>A(c.trim(),I)===!0))}catch{return!1}}})}function Aue(n){let t=FI(n.dshHome??process.env.DSH_HOME??XE(eue(),".dsh")),o=FI(n.dataDir??XE(t,"integrations","dsh-dingtalk"));return{root:o,config:FI(n.configPath??XE(o,"config.json")),bots:FI(n.botsDir??XE(o,"bots")),workspaces:FI(n.workspacesPath??XE(o,"workspaces.json"))}}async function H_(n,t={},o={}){if(!n?.credentials)throw new TypeError("dsh-dingtalk requires ctx.credentials");let i=aa(n,t),e=o.ConfigStore??pQ,a=o.DeviceAuth??hQ,A=o.StateStore??vQ,r=o.HarnessClient??RQ,s=o.Controller??PE,g=o.Runtime??jE,c=o.createConnectionSupervisor??G_,I=typeof n.logger=="function"?n.logger("dsh-dingtalk"):n.logger??console,d=()=>La(n),B=Aue(t),f=await new e(B.config).load(),Q=FI(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=typeof f.list=="function",T=_?f.list():[];_&&await m.reconcile(T.map($=>$.botId)),await Promise.all(T.map($=>m.ensure($.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("dingtalk",$)})));let R=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,K=o.deviceAuth??new a({baseUrl:t.registrationBaseUrl}),L=new Map,U=$=>FI(B.bots,$,"state.json"),z=async $=>{let ie=L.get($);return ie||(ie=await new A(U($)).load(),L.set($,ie)),ie},q=ja(n,o.commandExecutor),{controlExecutor:x,sessionMaintenanceExecutor:G,fileIngressExecutor:V}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),F=new r({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...q?{commandExecutor:q}:{},...x?{controlExecutor:x}:{},...G?{sessionMaintenanceExecutor:G}:{},...V?{fileIngressExecutor:V}:{}}),N=new s({deviceAuth:K,credentials:n.credentials,configStore:R,logger:I,createRuntime:async({botId:$,config:ie,clientSecret:pe})=>{let se=await z($);await m.ensure($,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("dingtalk",ie)});let Me=Ka(F,{botId:$,workspaces:m,state:se,agentPresetCatalog:d});return new g({config:ie,clientSecret:pe,harness:Me.harness,state:Me.state,contextEnhancement:{botId:$,getSettings:()=>m.contextEnhancementFor($)},accessPolicy:qa(m,$,{channel:"dingtalk",config:ie}),replyTimeoutMs:t.replyTimeoutMs??6e5,maxMessageChars:t.maxMessageChars??4e3,connectTimeoutMs:t.connectTimeoutMs??15e3,logger:{error:(...fe)=>I.error?.(`[${$}]`,...fe),warn:(...fe)=>I.warn?.(`[${$}]`,...fe),info:(...fe)=>I.info?.(`[${$}]`,...fe),debug:(...fe)=>I.debug?.(`[${$}]`,...fe)}})},deleteState:async({botId:$})=>{let ie=L.get($);if(L.delete($),ie&&typeof ie.remove=="function")await ie.remove();else try{await $Ce(U($))}catch(pe){if(pe?.code!=="ENOENT")throw pe}}}),k=xa(N,{workspaces:m,stateFor:z,agentPresetCatalog:d}),J=c({controller:k,harness:F,logger:I,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:k,deliveryAdapter:Ya({channel:"dingtalk",workspaces:m,coreController:N,stateFor:z}),ready:J.ready,async close(){await J.close(),await k.close(),F.stopManagedProcess()}}}import iue from"qrcode";var ki="bot.context-enhancement.set";function za(n){try{return!n||typeof n!="object"||Array.isArray(n)||Reflect.ownKeys(n).length!==2||!Object.hasOwn(n,"botId")||!Object.hasOwn(n,"config")||typeof n.botId!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)?!1:(kI(n.config),!0)}catch{return!1}}var Va="bot.access-policy.set";function Wa(n){try{return!n||typeof n!="object"||Array.isArray(n)||Reflect.ownKeys(n).length!==2||!Object.hasOwn(n,"botId")||!Object.hasOwn(n,"policy")||typeof n.botId!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)?!1:(Ic(n.policy),!0)}catch{return!1}}var tue=new Set(["loopback","trusted-host"]);function fr(n){if(n===void 0)return"loopback";if(tue.has(n))return n;throw new TypeError('dsh-im rpcAuthority must be "loopback" or "trusted-host"')}import{isAbsolute as rue}from"node:path";var vi="bot.workspace.set";function Za(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)&&Object.keys(n).every(t=>["botId","workspace"].includes(t))&&typeof n.botId=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)&&typeof n.workspace=="string"&&n.workspace.length<=4096&&rue(n.workspace.trim())}function Xa(n){return["workspace-not-absolute","workspace-not-found","workspace-not-directory","workspace-bot-not-found","agent-preset-invalid","agent-preset-unavailable","context-enhancement-invalid"].includes(n?.code)?{code:n.code,message:n.message}:null}var Pi="bot.preset.set";function aue(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function $a(n){return aue(n)&&Object.keys(n).every(t=>["botId","agentPreset"].includes(t))&&typeof n.botId=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n.botId)&&(n.agentPreset===null||typeof n.agentPreset=="string"&&l_.test(n.agentPreset))}var R1="/dingtalk",Ft=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va,approveSender:"bot.sender.approve",revokeSender:"bot.sender.revoke"}),k1=Object.freeze(Object.values(Ft)),oue=new Set(["clientSecret","client_secret","deviceCode","device_code","secretRef","staffId","senderStaffId","verificationUrl","verificationUri","userCode"]);function x_(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function hc(n,t){return x_(n)&&Object.keys(n).every(o=>t.includes(o))}function LI(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function N1(n,t){return typeof n=="string"&&n.trim().length>0&&n.length<=t}function nue(n,t){return x_(t)?n===Ft.status?hc(t,[])?null:"connection.status does not accept fields.":n===Ft.beginProvisioning?hc(t,["locale"])&&(t.locale===void 0||t.locale==="zh-CN")?null:"provision.begin received unsupported fields.":[Ft.pollProvisioning,Ft.cancelProvisioning].includes(n)?hc(t,["attemptId"])&&LI(t.attemptId)?null:`${n} requires an attemptId.`:n===Ft.bindCredentials?hc(t,["clientId","clientSecret"])&&N1(t.clientId,256)&&N1(t.clientSecret,1024)?null:"bot.bind-credentials requires Client ID and Client Secret.":n===Ft.reconnectBot?hc(t,["botId","sendTest"])&&LI(t.botId)&&(t.sendTest===void 0||t.sendTest===!0)?null:"bot.reconnect requires a botId and optional sendTest=true.":n===Ft.deleteBot?hc(t,["botId","confirm"])&&LI(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Ft.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Ft.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Ft.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===Ft.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":n===Ft.approveSender?hc(t,["botId","requestId","confirm"])&&LI(t.botId)&&LI(t.requestId)&&t.confirm===!0?null:"bot.sender.approve requires botId, requestId, and confirm=true.":n===Ft.revokeSender?hc(t,["botId","senderKey","confirm"])&&LI(t.botId)&&LI(t.senderKey)&&t.confirm===!0?null:"bot.sender.revoke requires botId, senderKey, and confirm=true.":"Unknown DingTalk endpoint.":"Payload must be an object."}function KQ(n){return{ok:!1,error:{code:"bad-request",message:n}}}function $E(){return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}}function sue(){return{ok:!1,error:{code:"dingtalk-operation-failed",message:"\u9489\u9489\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}function Hp(n){if(Array.isArray(n))return n.map(Hp);if(!x_(n))return n;let t={};for(let[o,i]of Object.entries(n))oue.has(o)||(t[o]=Hp(i));return t}async function gue(n){return iue.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function K_(n,t){return!n||typeof n.verificationUrl!="string"?Hp(n):Hp({...n,qrCodeDataUrl:await t(n.verificationUrl)})}async function is(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await K_(o.provisioning,t)),Hp(o)}function cue(n){for(let t of["status","startProvisioning","registrationStatus","cancelProvisioning","bindCredentials","reconnectBot","deleteBot","approveSender","revokeSender"])if(typeof n?.[t]!="function")throw new TypeError(`A complete DingTalk controller is required (${t})`)}function v1(n,{encodeQr:t=gue}={}){cue(n);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return $E();if(!k1.includes(e))return KQ("Unknown DingTalk endpoint.");let r=nue(e,a);if(r)return KQ(r);try{let s;if(e===Ft.status)s=await is(await n.status(),i);else if(e===Ft.beginProvisioning){let g=await n.startProvisioning({signal:A});if(A?.aborted)return await n.cancelProvisioning(g.attemptId),$E();s=await K_(g,i)}else if(e===Ft.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return KQ("The provisioning attempt no longer exists.");s=await K_(g,i)}else if(e===Ft.cancelProvisioning){if(s=await n.cancelProvisioning(a.attemptId),!s)return KQ("The provisioning attempt no longer exists.");s=Hp(s)}else if(e===Ft.bindCredentials)s=await is(await n.bindCredentials(a),i);else if(e===Ft.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return $E();let c;if(a.sendTest===!0)if(!g?.bots?.some(d=>d?.botId===a.botId&&d?.connected===!0)||typeof n.sendConnectionTest!="function")c=or(Cr("\u9489\u9489\u673A\u5668\u4EBA"));else try{await n.sendConnectionTest(a.botId),c=or()}catch(d){c=or(d)}s=await is({...g,...c?{testMessage:c}:{}},i)}else if(e===Ft.deleteBot)s=await is(await n.deleteBot(a.botId),i);else if(e===Ft.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await is(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===Ft.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>is(g,i))}else if(e===Ft.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>is(g,i))}else if(e===Ft.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await is(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else e===Ft.approveSender?s=await is(await n.approveSender(a.botId,a.requestId),i):s=await is(await n.revokeSender(a.botId,a.senderKey),i);return A?.aborted?$E():{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?$E():g?{ok:!1,error:g}:sue()}}}function xQ(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(R1,v1(t,o),{authority:fr(i)})}async function P1(n,t={}){if(t?.controller)return xQ(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await H_(n,t,t.internals),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=xQ(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-dingtalk: close bot connections"),e}import{createHash as Iue}from"node:crypto";import{mkdir as lue,readFile as pue,rename as due,unlink as hue,writeFile as Eue}from"node:fs/promises";import{dirname as Cue}from"node:path";var Y_=Object.freeze({version:1,bots:Object.freeze([])});function hg(n){return typeof n=="string"&&n.trim()?n.trim():null}function G1(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function eC(n,{botPrefix:t,tokenRefPrefix:o}){let i=hg(n);if(!i)throw new TypeError("platformId is required");let e=Iue("sha256").update(i).digest("hex").slice(0,24);return{botId:`${t}_${e}`,tokenRef:`${o}_${e.toUpperCase()}`}}function YQ(n,t){let o=hg(n)??"";return o.length<=10?o?`${o.slice(0,3)}\u2022\u2022\u2022`:t:`${o.slice(0,6)}\u2022\u2022\u2022\u2022${o.slice(-4)}`}var Kp=class{#e;#A;#t;#r;#l;#o;#i;#a=Y_;#n=Promise.resolve();constructor(t,{channel:o,botPrefix:i,tokenRefPrefix:e,normalizeBotExtension:a=()=>({})}){if(typeof a!="function")throw new TypeError("normalizeBotExtension must be a function");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=new RegExp(`^${G1(i)}_[a-f0-9]{24}$`),this.#i=new RegExp(`^${G1(e)}_[A-F0-9]{24}$`)}async load(){try{let t=this.#p(JSON.parse(await pue(this.#e,"utf8")));if(!t)throw new Error(`dsh-im ${this.#A} config contains invalid bot data`);this.#a=t}catch(t){if(t?.code!=="ENOENT")throw t;this.#a=Y_}return this}list(){return structuredClone(this.#a.bots)}get(t){let o=this.#a.bots.find(i=>i.botId===t);return o?structuredClone(o):null}getByPlatformId(t){let o=this.#a.bots.find(i=>i.platformId===t);return o?structuredClone(o):null}async save(t){let o=this.#s(t);if(!o)throw new Error(`Refusing to persist incomplete ${this.#A} bot data`);return this.#c(i=>{let e=i.find(r=>r.platformId===o.platformId&&r.botId!==o.botId),a=i.find(r=>r.tokenRef===o.tokenRef&&r.botId!==o.botId);if(e||a)throw new Error(`Duplicate ${this.#A} bot identity`);let A=i.findIndex(r=>r.botId===o.botId);return A===-1?i.push(o):i[A]=o,structuredClone(o)})}async remove(t){if(!this.#o.test(t))throw new TypeError(`Invalid ${this.#A} bot id`);return this.#c(o=>{let i=o.findIndex(a=>a.botId===t);if(i===-1)return null;let[e]=o.splice(i,1);return structuredClone(e)})}async clear(){let t=this.#n.then(async()=>{try{await hue(this.#e)}catch(o){if(o?.code!=="ENOENT")throw o}this.#a=Y_});this.#n=t.then(()=>{},()=>{}),await t}#s(t){if(!t||typeof t!="object")return null;let o=hg(t.platformId),i=hg(t.botId),e=hg(t.tokenRef),a=hg(t.name);if(!o||!i||!e||!a||!this.#o.test(i)||!this.#i.test(e))return null;let A=eC(o,{botPrefix:this.#t,tokenRefPrefix:this.#r});if(A.botId!==i||A.tokenRef!==e)return null;let r=this.#l(t);return!r||typeof r!="object"||Array.isArray(r)?null:Object.freeze({botId:i,platformId:o,tokenRef:e,name:a,username:hg(t.username),createdAt:hg(t.createdAt)??new Date().toISOString(),connectedAt:hg(t.connectedAt),...r})}#p(t){if(!t||t.version!==1||!Array.isArray(t.bots))return null;let o=t.bots.map(A=>this.#s(A));if(o.some(A=>A===null))return null;let i=new Set,e=new Set,a=new Set;for(let A of o){if(i.has(A.botId)||e.has(A.platformId)||a.has(A.tokenRef))return null;i.add(A.botId),e.add(A.platformId),a.add(A.tokenRef)}return Object.freeze({version:1,bots:Object.freeze(o)})}async#c(t){let o,i=this.#n.then(async()=>{let e=[...this.#a.bots];o=t(e);let a=Object.freeze({version:1,bots:Object.freeze(e)});await this.#g(a),this.#a=a});return this.#n=i.then(()=>{},()=>{}),await i,o}async#g(t){await lue(Cue(this.#e),{recursive:!0,mode:448});let o=`${this.#e}.tmp`;await Eue(o,`${JSON.stringify(t,null,2)} `,{encoding:"utf8",mode:384}),await due(o,this.#e)}};var F1=Object.freeze({botPrefix:"discord",tokenRefPrefix:"DSH_DISCORD_BOT_TOKEN"});function L1(n){return eC(n,F1)}function U1(n){return YQ(n,w("Discord\u673A\u5668\u4EBA"))}var jQ=class extends Kp{constructor(t){super(t,{channel:"Discord",...F1})}};function AC(n){return typeof n=="string"&&n.trim()?n.trim():null}function tC(n,t){return Object.freeze({code:n,message:t})}var xp=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s=new Map;#p=new Map;#c=new Map;#g=0;#I=!1;constructor({descriptor:t,credentials:o,configStore:i,inspectToken:e,deriveIdentity:a,maskPlatformId:A,createRuntime:r,deleteState:s=async()=>{},logger:g=console}){if(!t?.key||!t?.label||!t?.connectionLabel)throw new TypeError("TokenBotController requires a channel descriptor");if(!o||typeof o.resolve!="function"||typeof o.set!="function"||typeof o.unset!="function")throw new TypeError(`${t.label} requires the DSH credential provider`);if(!i||typeof i.list!="function"||typeof i.save!="function"||typeof i.remove!="function")throw new TypeError(`${t.label} requires a config store`);if(typeof e!="function"||typeof a!="function"||typeof A!="function"||typeof r!="function")throw new TypeError(`${t.label} controller dependencies are incomplete`);this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g}async initialize(){if(this.#I)return this.status();for(let t of this.#t.list())await this.#B(t.botId,async()=>{if(this.#I||this.#s.get(t.botId)?.status?.ready)return;let o=await this.#C(t.tokenRef);if(!o){this.#p.set(t.botId,tC("missing-token",w("{label}\u673A\u5668\u4EBA\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u79FB\u9664\u540E\u91CD\u65B0\u63A5\u5165\u3002",{label:this.#e.label})));return}try{await this.#d(t,o),this.#p.delete(t.botId)}catch(i){this.#p.set(t.botId,tC("connection-failed",w("{label}\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5\u3002",{label:this.#e.label}))),this.#n.warn?.(`[dsh-im:${this.#e.key}] bot ${t.botId} failed to initialize:`,i)}finally{this.#f()}});return this.status()}async bindCredentials({token:t}={}){if(this.#I)throw new Error(`${this.#e.label} controller is closed`);let o=AC(t);if(!o)throw new TypeError(`${this.#e.label} Bot Token is required`);let i=await this.#r(o),e=AC(i?.platformId),a=AC(i?.name);if(!e||!a)throw new Error(`${this.#e.label} returned an invalid bot identity`);let A=this.#l(e);return await this.#B(A.botId,async()=>{if(this.#I)throw new Error(`${this.#e.label} controller is closed`);let r=this.#t.getByPlatformId(e),s=await this.#A.resolve(A.tokenRef).catch(()=>{}),g={botId:A.botId,platformId:e,tokenRef:A.tokenRef,name:a,username:AC(i.username),createdAt:r?.createdAt??new Date().toISOString(),connectedAt:new Date().toISOString()};await this.#A.set(A.tokenRef,o);try{await this.#t.save(g)}catch(c){throw await this.#u(A.tokenRef,s),c}try{await this.#d(g,o),this.#p.delete(A.botId)}catch(c){this.#p.set(A.botId,tC("connection-failed",w("{label}\u673A\u5668\u4EBA\u5DF2\u63A5\u5165\uFF0C\u6D88\u606F\u8FDE\u63A5\u6682\u672A\u5C31\u7EEA\u3002",{label:this.#e.label}))),this.#n.warn?.(`[dsh-im:${this.#e.key}] bot ${A.botId} credential connection failed:`,c)}this.#f()}),this.status()}async reconnectBot(t){let o=this.#t.get(t);if(!o)throw new Error(`Unknown ${this.#e.label} bot`);return await this.#B(t,async()=>{let i=await this.#C(o.tokenRef);if(!i)throw new Error(`${this.#e.label} bot token is missing`);try{await this.#d(o,i),this.#p.delete(t)}catch(e){throw this.#p.set(t,tC("connection-failed",w("{label}\u8FDE\u63A5\u4ECD\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{label:this.#e.label}))),e}finally{this.#f()}}),this.status()}async updateBotConfig(t,o){if(this.#I)throw new Error(`${this.#e.label} controller is closed`);if(typeof o!="function")throw new TypeError("Bot config update must be a function");return await this.#B(t,async()=>{if(this.#I)throw new Error(`${this.#e.label} controller is closed`);let i=this.#t.get(t);if(!i)throw new Error(`Unknown ${this.#e.label} bot`);let e=await this.#C(i.tokenRef);if(!e)throw new Error(`${this.#e.label} bot token is missing`);if(this.#I)throw new Error(`${this.#e.label} controller is closed`);let a=o(i),A=await this.#t.save(a);try{await this.#d(A,e),this.#p.delete(t)}catch(r){throw this.#p.set(t,tC("connection-failed",w("{label}\u8FDE\u63A5\u4ECD\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{label:this.#e.label}))),r}finally{this.#f()}}),this.status()}async sendConnectionTest(t){let o=this.#t.get(t);if(!o)throw new Error(`Unknown ${this.#e.label} bot`);return this.#B(t,async()=>{let i=this.#s.get(t);if(!i?.status?.ready||typeof i.sendConnectionTest!="function"){let a=new Error(w("{label}\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5",{label:this.#e.label}));throw a.code="test-target-unavailable",a}let e=w("{name}\uFF08{id}\uFF09",{name:o.name,id:this.#o(o.platformId)});return await i.sendConnectionTest(ka(e,w("{label}\u673A\u5668\u4EBA",{label:this.#e.label}))),{sent:!0}})}async sendProactiveText(t,o,i,e={}){if(!this.#t.get(t))throw new Error(`Unknown ${this.#e.label} bot`);return this.#B(t,async()=>{let A=this.#s.get(t);if(!A?.status?.ready||typeof A.sendProactiveText!="function"){let r=new Error(w("{label}\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5",{label:this.#e.label}));throw r.code="bot-not-connected",r}return A.sendProactiveText(o,i,e)})}async deleteBot(t){let o=this.#t.get(t);if(!o)throw new Error(`Unknown ${this.#e.label} bot`);return await this.#B(t,async()=>{let i=await this.#A.resolve(o.tokenRef).catch(()=>{});await this.#h(t);try{await this.#A.unset(o.tokenRef),await this.#t.remove(t)}catch(e){throw i?.value&&(await this.#A.set(o.tokenRef,i.value).catch(()=>{}),await this.#d(o,i.value).catch(()=>{})),new Error(`Unable to remove the ${this.#e.label} bot safely.`,{cause:e})}await this.#a({botId:t,config:o}).catch(e=>{this.#n.warn?.(`[dsh-im:${this.#e.key}] bot ${t} state cleanup failed:`,e)}),this.#p.delete(t),this.#f()}),this.status()}status(){let t=this.#t.list().map(i=>{let e=this.#s.get(i.botId)?.status??null,a=e?.ready===!0&&e.connectionState==="connected"&&e.harnessReachable===!0,A=a?"connected":e?.connectionState==="connecting"?"connecting":this.#p.has(i.botId)||e?.connectionState==="failed"?"error":"offline";return{botId:i.botId,state:A,connected:a,configured:!0,bot:{name:i.name,username:i.username,idMasked:this.#o(i.platformId)},health:{status:a?"healthy":A==="error"?"error":"offline",summary:a?w("{label}{connectionLabel}\u8FD0\u884C\u6B63\u5E38",{label:this.#e.label,connectionLabel:w(this.#e.connectionLabel)}):A==="error"?w("{label}\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5",{label:this.#e.label}):w("{label}\u8FDE\u63A5\u5F53\u524D\u79BB\u7EBF",{label:this.#e.label}),lastCheckedAt:e?.lastCheckedAt??null,lastConnectedAt:e?.lastConnectedAt??null},stats:{messagesReceived:e?.messagesReceived??0,messagesReplied:e?.messagesReplied??0},lastMessageError:Xr(e?.lastMessageError),error:structuredClone(this.#p.get(i.botId)??null)}}),o=t.filter(i=>i.connected).length;return{schemaVersion:1,revision:this.#g,state:t.length===0?"disconnected":o===t.length?"connected":o>0?"degraded":"offline",bots:t,totals:{configured:t.length,connected:o}}}async close(){this.#I||(this.#I=!0,await Promise.allSettled([...this.#c.values()]),await Promise.allSettled([...this.#s.keys()].map(t=>this.#h(t))))}async#d(t,o){if(this.#I)throw new Error(`${this.#e.label} controller is closed`);if(await this.#h(t.botId),this.#I)throw new Error(`${this.#e.label} controller is closed`);let i=await this.#i({botId:t.botId,config:t,token:o});if(!i||typeof i.start!="function"||typeof i.stop!="function")throw new TypeError(`createRuntime returned an invalid ${this.#e.label} runtime`);this.#s.set(t.botId,i);try{await i.start()}catch(e){throw await i.stop().catch(()=>{}),this.#s.delete(t.botId),e}}async#h(t){let o=this.#s.get(t);this.#s.delete(t),await o?.stop().catch(i=>{this.#n.warn?.(`[dsh-im:${this.#e.key}] bot ${t} failed to stop cleanly:`,i)})}async#C(t){let o=await this.#A.resolve(t).catch(()=>{});return AC(o?.value)}async#u(t,o){o?.value?await this.#A.set(t,o.value).catch(()=>{}):await this.#A.unset(t).catch(()=>{})}#B(t,o){let a=(this.#c.get(t)??Promise.resolve()).catch(()=>{}).then(o).finally(()=>{this.#c.get(t)===a&&this.#c.delete(t)});return this.#c.set(t,a),a}#f(){this.#g+=1}};import{createHash as uue}from"node:crypto";var Bue="https://discord.com/api/v10/",fue=12e4,Que=new Set([50001,50013]),yue=new Set([40005]);function os(n){return typeof n=="string"&&n.trim()?n.trim():null}function H1(n,t){let o=AbortSignal.timeout(t);return n?AbortSignal.any([n,o]):o}function j_(n){return n?.reason instanceof Error?n.reason:new DOMException("The operation was aborted","AbortError")}function mue(n,t){if(!Number.isInteger(n)||n<1)throw new TypeError(`${t} must be a positive integer`);return n}function x1(n,t){return t?.providerCode!==void 0&&(n.providerCode=t.providerCode),t?.retry_after!==void 0&&(n.retry_after=t.retry_after,n.retryAfter=t.retry_after),Number.isInteger(t?.status)&&(n.status=t.status),n}function Sue(n){let t=Number(n?.providerCode),o=Number(n?.status),i=os(n?.message)??"",e="artifact-provider-rejected",a="Discord rejected the attachment.";o===401||o===403||Que.has(t)?(e="artifact-permission-required",a="Discord denied permission to send the attachment."):o===413||yue.has(t)||/(?:request|attachment|file).{0,24}too large/i.test(i)?(e="artifact-too-large",a="The attachment exceeds Discord's size limit."):o===429?(e="artifact-rate-limited",a="Discord rate-limited attachment delivery."):o>=500&&(e="artifact-delivery-uncertain",a="Discord attachment delivery result is uncertain.");let A=new Error(a,{cause:n});return A.code=e,x1(A,n)}function wue(n){let t=new Error("Discord attachment delivery result is uncertain",{cause:n});return t.code="artifact-delivery-uncertain",x1(t,n)}function Due(n,t){return new Promise((o,i)=>{if(t?.aborted){i(t.reason??new DOMException("Aborted","AbortError"));return}let e=setTimeout(o,n);e?.unref?.(),t?.addEventListener("abort",()=>{clearTimeout(e),i(t.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function ei(n,t){let o=os(n);if(!o||!/^\d{5,30}$/.test(o))throw new TypeError(`Invalid Discord ${t}`);return o}function K1(n){let t=os(n);if(!t)throw new TypeError("A Discord reaction emoji is required");return t}function Oue(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{4,}\.[A-Za-z0-9_-]{20,}$/.test(n.trim())}var rC=class{#e;#A;#t;#r;constructor({token:t,fetchImpl:o=fetch,baseUrl:i=Bue,fileUploadTimeoutMs:e=fue}){if(!Oue(t))throw new TypeError("Discord Bot Token is invalid");if(typeof o!="function")throw new TypeError("DiscordApi requires fetch");this.#e=t.trim(),this.#A=o,this.#t=new URL(i),this.#r=mue(e,"fileUploadTimeoutMs")}getCurrentUser(t={}){return this.#l("users/@me",{...t,method:"GET"})}getGatewayBot(t={}){return this.#l("gateway/bot",{...t,method:"GET"})}getChannel({channelId:t,signal:o}={}){return this.#l(`channels/${ei(t,"channel id")}`,{method:"GET",signal:o})}startThreadFromMessage({channelId:t,messageId:o,name:i,signal:e}={}){let a=os(i);if(!a||[...a].length>100)throw new TypeError("Discord thread name must contain 1-100 characters");if(e?.aborted)throw j_(e);return this.#l(`channels/${ei(t,"channel id")}/messages/${ei(o,"message id")}/threads`,{method:"POST",signal:e,body:{name:a}})}createMessage({channelId:t,content:o,replyToMessageId:i,signal:e}){return this.#l(`channels/${ei(t,"channel id")}/messages`,{method:"POST",signal:e,body:{content:o,allowed_mentions:{parse:[],replied_user:!1},...i?{message_reference:{message_id:ei(i,"message id"),channel_id:ei(t,"channel id"),fail_if_not_exists:!1}}:{}}})}async createFileMessage({channelId:t,file:o,replyToMessageId:i,signal:e}){if(!o||typeof o!="object"||typeof o.fileName!="string"||!o.fileName||!Buffer.isBuffer(o.bytes))throw new TypeError("A Discord attachment is required");let a=os(o.deliveryKey)??os(o.artifactId),A=a?uue("sha256").update(a).digest("hex").slice(0,25):void 0,r=new FormData;r.append("payload_json",JSON.stringify({allowed_mentions:{parse:[],replied_user:!1},attachments:[{id:0,filename:o.fileName}],...A?{nonce:A,enforce_nonce:!0}:{},...i?{message_reference:{message_id:ei(i,"message id"),channel_id:ei(t,"channel id"),fail_if_not_exists:!1}}:{}})),r.append("files[0]",new Blob([o.bytes],{type:o.mediaType??"application/octet-stream"}),o.fileName);let s=ei(t,"channel id");if(e?.aborted)throw j_(e);let g=H1(e,this.#r);try{return await this.#l(`channels/${s}/messages`,{method:"POST",signal:g,timeoutMs:this.#r,body:r,multipart:!0})}catch(c){throw e?.aborted?j_(e):c?.code?.startsWith?.("discord-")?Sue(c):wue(c)}}editMessage({channelId:t,messageId:o,content:i,signal:e}){return this.#l(`channels/${ei(t,"channel id")}/messages/${ei(o,"message id")}`,{method:"PATCH",signal:e,body:{content:i,allowed_mentions:{parse:[],replied_user:!1}}})}sendTyping({channelId:t,signal:o}){return this.#l(`channels/${ei(t,"channel id")}/typing`,{method:"POST",signal:o,expectBody:!1})}async addOwnReaction({channelId:t,messageId:o,emoji:i,signal:e}={}){let a=K1(i);return await this.#l(`channels/${ei(t,"channel id")}/messages/${ei(o,"message id")}/reactions/${encodeURIComponent(a)}/@me`,{method:"PUT",signal:e,expectBody:!1,retry:!1}),a}removeOwnReaction({channelId:t,messageId:o,emoji:i,signal:e}={}){let a=K1(i);return this.#l(`channels/${ei(t,"channel id")}/messages/${ei(o,"message id")}/reactions/${encodeURIComponent(a)}/@me`,{method:"DELETE",signal:e,expectBody:!1,retry:!1})}async#l(t,{method:o,body:i,signal:e,timeoutMs:a=15e3,expectBody:A=!0,retry:r=!0,multipart:s=!1}){let g;try{g=await this.#A(new URL(t,this.#t),{method:o,headers:{authorization:`Bot ${this.#e}`,...s?{}:{"content-type":"application/json"},"user-agent":"DeepSeek-Harness-dsh-im (https://github.com/xmanrui/dsh-im, 1.1.0)"},...i===void 0?{}:{body:s?i:JSON.stringify(i)},signal:H1(e,a),redirect:"error"})}catch(I){throw I?.name==="AbortError"||I?.name==="TimeoutError"?I:new Error(`Discord ${o} transport failed`)}let c=null;if(A||g.status===429||!g.ok)try{c=await g.json()}catch{if(A){let I=new Error(`Discord ${o} returned invalid JSON`);throw I.status=g?.status,I}}if(g.status===429&&r){let I=Math.min(1e4,Math.max(50,Number(c?.retry_after)*1e3||1e3));return await Due(I,e),this.#l(t,{method:o,body:i,signal:e,timeoutMs:a,expectBody:A,retry:!1,multipart:s})}if(!g.ok){let I=new Error(os(c?.message)??`Discord API failed with HTTP ${g.status}`);I.code=`discord-${g.status}`,I.status=g.status,(Number.isInteger(c?.code)||typeof c?.code=="string")&&(I.providerCode=c.code);let d=Number(c?.retry_after);throw Number.isFinite(d)&&d>=0&&(I.retry_after=d,I.retryAfter=d),I}return A?c:null}};async function Y1(n,t={}){let i=await new rC({token:n,...t}).getCurrentUser();if(!i?.id||i?.bot!==!0)throw new Error("Discord token does not belong to a bot");return{platformId:String(i.id),name:os(i.global_name)??os(i.username)??w("Discord\u673A\u5668\u4EBA"),username:os(i.username)}}var bue=Object.freeze({success(){},error(){},clear(){},settled:()=>Promise.resolve()});function j1(n,t){!n||typeof n!="object"||(n[t]=(n[t]??0)+1)}async function Mue(n,t){let o=AbortSignal.timeout(t),i,e=new Promise((a,A)=>{i=()=>A(o.reason??new DOMException("Timed out","TimeoutError")),o.addEventListener("abort",i,{once:!0})});try{return await Promise.race([n(o),e])}finally{o.removeEventListener("abort",i)}}function JQ({adapter:n,target:t,reactions:o,status:i,logger:e=console,label:a="channel",timeoutMs:A=2e3}={}){if(!t||typeof n?.addReaction!="function"||typeof n?.removeReaction!="function"||typeof o?.processing!="string"||!o.processing||!Number.isSafeInteger(A)||A<=0)return bue;let r=null,s=!1,g=async(B,f)=>{try{let Q=await Mue(f,A);return j1(i,B==="add"?"reactionsAdded":"reactionsRemoved"),{ok:!0,value:Q}}catch(Q){return j1(i,"reactionErrors"),e.warn?.(`[dsh-im:${a}] status reaction ${B} failed:`,Q?.message??Q?.name??String(Q)),{ok:!1,value:null}}},c=async B=>{if(r!==null){let Q=r;r=null,await g("remove",y=>n.removeReaction(t,Q,{signal:y}))}if(typeof B!="string"||!B)return;let f=await g("add",Q=>n.addReaction(t,B,{signal:Q}));f.ok&&f.value!==void 0&&f.value!==null&&(r=f.value)},I=c(o.processing),d=B=>{s||(s=!0,I=I.then(()=>c(B),()=>c(B)),I.catch(()=>{}))};return Object.freeze({success:()=>d(o.success),error:()=>d(o.error),clear:()=>d(null),settled:()=>I})}var J1="\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002",_ue="\u4EFB\u52A1\u5DF2\u5B8C\u6210\u3002";function Ii(n){return typeof n=="string"?n.trim():""}function Tue(n,t,o){return t.actor===o&&(n.kind!=="group"||n.addressed===!0)&&!Tt(n)&&!wt(n)&&!!Ii(n.content)}function Nue(n,t,o){let i=String(n??w("\u7ED3\u679C\u6587\u4EF6")).replace(/[\r\n]+/g," ").trim().slice(0,255)||w("\u7ED3\u679C\u6587\u4EF6");switch(t?.code){case"artifact-delivery-uncertain":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u7684\u53D1\u9001\u7ED3\u679C\u672A\u80FD\u786E\u8BA4\uFF0C\u8BF7\u5148\u68C0\u67E5\u804A\u5929\u5185\u662F\u5426\u5DF2\u6536\u5230\uFF0C\u4E0D\u8981\u7ACB\u5373\u91CD\u8BD5\u3002",{name:i});case"artifact-permission-required":return o?.key==="slack"?w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46 Slack \u5E94\u7528\u7F3A\u5C11 files:write \u6743\u9650\u3002\u8BF7\u66F4\u65B0 Manifest\u3001\u91CD\u65B0\u5B89\u88C5\u5E94\u7528\u5E76\u91CD\u65B0\u8FDE\u63A5\u673A\u5668\u4EBA\u540E\u91CD\u8BD5\u3002",{name:i}):o?.key==="discord"?w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u673A\u5668\u4EBA\u7F3A\u5C11 Discord \u7684 Send Messages\u3001Attach Files \u6216 Read Message History \u6743\u9650\u3002",{name:i}):o?.key==="telegram"?w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46 Telegram \u4E0D\u5141\u8BB8\u673A\u5668\u4EBA\u5728\u5F53\u524D\u804A\u5929\u53D1\u9001\u6587\u6863\uFF0C\u8BF7\u68C0\u67E5\u804A\u5929\u6743\u9650\u3002",{name:i}):w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u5F53\u524D\u673A\u5668\u4EBA\u6CA1\u6709\u6587\u4EF6\u53D1\u9001\u6743\u9650\uFF0C\u8BF7\u68C0\u67E5\u6E20\u9053\u6743\u9650\u3002",{name:i});case"artifact-too-large":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u8D85\u8FC7\u5F53\u524D\u6E20\u9053\u5927\u5C0F\u4E0A\u9650\uFF0C\u672A\u53D1\u9001\u3002",{name:i});case"artifact-empty":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u4E3A\u7A7A\uFF0C\u672A\u53D1\u9001\u3002",{name:i});case"artifact-invalid":case"artifact-changed":case"artifact-unavailable":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6\u6216\u51C6\u5907\u53D1\u9001\uFF0C\u8BF7\u786E\u8BA4\u6587\u4EF6\u4ECD\u53EF\u8BBF\u95EE\u540E\u91CD\u8BD5\u3002",{name:i});case"artifact-rate-limited":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u88AB\u5F53\u524D\u6E20\u9053\u9650\u6D41\uFF0C\u672A\u80FD\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:i});case"artifact-provider-rejected":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u5F53\u524D\u6E20\u9053\u62D2\u7EDD\u4E86\u8BE5\u6587\u4EF6\u6216\u6587\u4EF6\u6D88\u606F\u3002",{name:i});default:return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u5F53\u524D\u6E20\u9053\u6682\u65F6\u672A\u80FD\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:i})}}function io(){return{messagesReceived:0,messagesReplied:0,messagesRejected:0,lastMessageAt:null,lastReplyAt:null,lastRejectedAt:null,lastError:null,lastMessageError:null,reactionsAdded:0,reactionsRemoved:0,reactionErrors:0}}var ns=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p=new Map;#c=new Map;#g=new Map;#I=new Map;#d=new Set;#h=new Set;#C;#u=new Ti;constructor({descriptor:t,bot:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,status:r=io(),logger:s=console,replyTimeoutMs:g=6e5,signal:c}){if(!t?.key||!t?.label)throw new TypeError("A channel descriptor is required");if(!o||typeof o.sendText!="function")throw new TypeError("A bot client is required");if(!i||!e)throw new TypeError("Harness client and state store are required");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#s=c,this.#C=new Di({label:t.key,logger:s})}get status(){return structuredClone(this.#i)}accept(t,{contextSnapshot:o,accessDecision:i}={}){if(this.#s?.aborted)return Promise.resolve();let e=Ii(t?.conversationId),a=t?.kind==="group"?"group":"direct",A={...t,kind:a,conversationId:e},r=Ii(A.messageId),s=Ii(A.senderId);if(!r||!s||!e||A.senderIsBot===!0||this.#r.hasSeen(r)||this.#I.has(r))return Promise.resolve();if(a==="group"&&A.addressed!==!0)return this.#i.messagesRejected+=1,this.#i.lastRejectedAt=new Date().toISOString(),this.#I.set(r,null),this.#f(A,r,null);if(this.#o||i){let I=Tt(A),d=wt(A),B=i??fa(this.#o,{conversationType:a,senderIds:[s,Ii(A.senderAlternateId)].filter(Boolean),text:A.content,hasImages:I,hasFiles:d});if(!B.allowed)return this.#i.messagesRejected+=1,this.#i.lastRejectedAt=new Date().toISOString(),this.#I.set(r,null),this.#f(A,r,B.reason==="command-not-allowed"?w(ao):null,{recordReceived:B.reason==="command-not-allowed"})}this.#I.set(r,o===void 0?Aa(this.#l,t?.kind):o);let g=JQ({adapter:this.#A,target:A.kind==="direct"||A.addressed===!0?A.reactionTarget:null,reactions:this.#e.reactions,status:this.#i,logger:this.#a,label:this.#e.key});A.statusReaction=g;let c=this.#B(A,r,s);return c.then(()=>g.success(),()=>g.error()),c}#B(t,o,i){t.kind==="direct"&&So(this.#r,t.connectionTestTarget??t.replyTarget);let e=`${t.kind}:${t.conversationId}`,a=this.#c.get(e),A=Ii(t.content),r=Ni(A);if(r&&t.kind==="group"&&t.addressed===!0)return this.#f(t,o,es());if(r&&t.kind==="direct"){if(/^\/batch$/iu.test(A)&&(this.#p.has(e)||a||this.#C.hasPending(e)))return this.#f(t,o,No());let d=this.#u.handle(e,A,{plainText:!!A&&t.plainText!==!1&&!Tt(t)&&!wt(t)});if(d.handled)return d.kind==="submit"?this.#Q({...t,content:d.prompt,batchSubmission:{token:d.token}},o,i,e):this.#f(t,o,d.message)}else if(t.kind==="direct"&&this.#u.status(e).phase==="collecting"){let I=this.#u.handle(e,A,{plainText:!!A&&t.plainText!==!1&&!Tt(t)&&!wt(t)});if(I.handled)return this.#f(t,o,I.message)}let g=t.kind==="direct"&&this.#u.status(e).phase==="collecting"?null:Fa(A)?Ao:wt(t)?null:ni(A)?Mi:si(A)?to:gi(A)?_i:null;if(g&&(t.kind!=="group"||t.addressed===!0)){let I;return I=this.#S(t,o,e,g).finally(()=>{this.#I.delete(o),this.#h.delete(I)}),this.#h.add(I),I}let c=this.#C.claimReply({key:e,actor:i,messageId:o,text:Tt(t)||wt(t)?"":t.content,addressed:t.kind!=="group"||t.addressed===!0,hasPendingQuestion:!!a,questionCompletion:a?.submitting||a?.claimedReplyMessageId?a.queue:null,isQuestionPending:()=>this.#c.has(e),send:I=>this.#A.sendText(t.replyTarget,I)});if(c){let I;return I=c.process(async()=>this.#r.hasSeen(o)?!1:(await this.#r.markSeen(o),this.#i.messagesReceived+=1,this.#i.lastMessageAt=new Date().toISOString(),!0)).finally(()=>{this.#I.delete(o),this.#d.delete(I)}),this.#d.add(I),I}if(a&&a.actor!==i)return this.#Q(t,o,i,e);if(a?.submitting||a?.claimedReplyMessageId)return this.#Q(t,o,i,e);if(a){Tue(t,a,i)&&(a.claimedReplyMessageId=o);let d=(a.queue??Promise.resolve()).catch(()=>{}).then(()=>this.#D(t,o,i,e,a)).finally(()=>{this.#I.delete(o),a.claimedReplyMessageId===o&&(a.claimedReplyMessageId=null),a.queue===d&&(a.queue=null)});return a.queue=d,d}return this.#Q(t,o,i,e)}#f(t,o,i,{recordReceived:e=!0}={}){let a;return a=(async()=>{this.#r.hasSeen(o)||(await this.#r.markSeen(o),e&&(this.#i.messagesReceived+=1,this.#i.lastMessageAt=new Date().toISOString()),i&&await this.#A.sendText(t.replyTarget,i),this.#i.lastError=null)})().catch(async A=>{if(this.#s?.aborted){t.statusReaction?.clear();return}t.statusReaction?.error(),this.#i.lastError=A?.message??String(A);let r=At(this.#i,A);this.#a.error?.(`[dsh-im:${this.#e.key}] failed to process a batch input message [${r.referenceId}]:`,A)}).finally(()=>{this.#I.delete(o),this.#h.delete(a)}),this.#h.add(a),a}#Q(t,o,i,e,{releaseMessageId:a=!0,alreadyRecorded:A=!1}={}){let s=(this.#p.get(e)??Promise.resolve()).catch(()=>{}).then(()=>this.#m(t,o,i,e,{alreadyRecorded:A})).finally(()=>{a&&this.#I.delete(o),this.#p.get(e)===s&&this.#p.delete(e)});return this.#p.set(e,s),s}async waitForIdle(){await Promise.allSettled([...this.#p.values(),...[...this.#c.values()].flatMap(t=>t.queue?[t.queue]:[]),...this.#d,...this.#h])}async#S(t,o,i,e){if(this.#r.hasSeen(o))return;await this.#r.markSeen(o),this.#i.messagesReceived+=1,this.#i.lastMessageAt=new Date().toISOString();let a=t.replyTarget;try{let A=await e(Ii(t.content),this.#t,this.#r,i,{signal:this.#s,isDirect:t.kind==="direct",hasImages:Tt(t),hasFiles:wt(t),pendingInteraction:this.#c.has(i)||this.#C.hasPending(i),control:{owner:this,key:i}});A?.stopped&&await Promise.allSettled([this.#G(i),this.#C.closeRoute(i)]);for(let r of A?.messages??[A?.message])r&&await this.#A.sendText(a,r);this.#i.lastError=null}catch(A){if(A?.code==="turn-stopped"||this.#s?.aborted){t.statusReaction?.clear();return}t.statusReaction?.error(),this.#i.lastError=A?.message??String(A);let r=At(this.#i,A);this.#a.error?.(`[dsh-im:${this.#e.key}] failed to process a command [${r.referenceId}]:`,A),await this.#A.sendText(a,dt(r)).catch(()=>{})}}sendConnectionTest(t){return nc({state:this.#r,text:t,channelLabel:w("{label}\u673A\u5668\u4EBA",{label:this.#e.label}),send:(o,i)=>this.#A.sendText(o,i)})}sendProactiveText(t,o,{signal:i}={}){return i?.throwIfAborted(),this.#A.sendText(t,o)}async#y(t,o,i=[],e){let a=await vo({artifacts:i,baseReceipt:e,deliveryId:o,channelKey:this.#e.key,signal:this.#s,sendImage:typeof this.#A.sendImage=="function"?A=>this.#A.sendImage(t,A):void 0,sendFile:typeof this.#A.sendFile=="function"?A=>this.#A.sendFile(t,A):void 0,onFailure:(A,r)=>At(this.#i,r,{userMessage:Nue(A?.fileName,r,this.#e),reason:r?.code}),sendFailureNotice:(A,r,s)=>this.#A.sendText(t,dt(s)),logger:this.#a});return this.#i.artifactsSent=(this.#i.artifactsSent??0)+a.artifactsSent,this.#i.artifactSendErrors=(this.#i.artifactSendErrors??0)+a.artifactSendErrors,{receipt:a.receipt,userVisible:a.userVisible,artifactSendErrors:a.artifactSendErrors}}async#m(t,o,i,e,{alreadyRecorded:a=!1}={}){if(!a){if(this.#r.hasSeen(o))return;await this.#r.markSeen(o),this.#i.messagesReceived+=1,this.#i.lastMessageAt=new Date().toISOString()}let A=t.replyTarget,r=Ii(t.content),s=t.batchSubmission,g=null,c=!1;try{if(this.#s?.throwIfAborted(),t.kind==="group"&&t.addressed!==!0){this.#i.messagesRejected+=1,this.#i.lastRejectedAt=new Date().toISOString();return}let I=Tt(t),d=wt(t);if(!r&&!I&&!d){await this.#A.sendText(A,w("\u76EE\u524D\u652F\u6301\u6587\u5B57\u3001\u56FE\u7247\u548C\u6587\u4EF6\u6D88\u606F\u3002"));return}let B=r.toLowerCase();if(!I&&!d&&B==="/help"){await this.#A.sendText(A,[w("{label}\u673A\u5668\u4EBA\u5DF2\u8FDE\u63A5 DeepSeek Harness\u3002",{label:this.#e.label}),"",w("\u76F4\u63A5\u53D1\u9001\u6587\u5B57\u3001\u56FE\u7247\u6216\u6587\u4EF6\u5373\u53EF\u7EE7\u7EED\u5F53\u524D\u4F1A\u8BDD\u3002"),w("/new \u5F00\u542F\u4E00\u4E2A\u5168\u65B0\u4F1A\u8BDD"),w("/compact \u538B\u7F29\u5F53\u524D\u4F1A\u8BDD\u7684\u8F83\u65E9\u4E0A\u4E0B\u6587"),w("/history [\u6570\u91CF] \u67E5\u770B\u6700\u8FD1\u5386\u53F2\u6D88\u606F\uFF08\u9ED8\u8BA4 3 \u6761\uFF0C\u6700\u591A 5 \u6761\uFF09"),w("/workspace \u5DE5\u4F5C\u533A\u5E8F\u53F7\u6216\u7EDD\u5BF9\u8DEF\u5F84 \u5207\u6362\u5DE5\u4F5C\u533A"),w("/workspacelist \u5217\u51FA\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84"),w("/sessionlist \u6216 /sessions [\u5DE5\u4F5C\u533A\u5E8F\u53F7\u6216\u7EDD\u5BF9\u8DEF\u5F84] \u5217\u51FA\u4F1A\u8BDD ID \u548C\u6807\u9898"),w("/session Session ID \u6216\u5F53\u524D\u5DE5\u4F5C\u533A\u5E8F\u53F7 \u5C06\u5F53\u524D\u804A\u5929\u7ED1\u5B9A\u5230\u6307\u5B9A\u4F1A\u8BDD"),w("/models \u6309\u5E8F\u53F7\u5217\u51FA\u6240\u6709\u53EF\u7528\u6A21\u578B"),w("/reasoninglist \u6216 /reasonings \u6309\u5E8F\u53F7\u5217\u51FA\u5F53\u524D\u6A21\u578B\u53EF\u7528\u63A8\u7406\u7B49\u7EA7"),w("/reasoning [\u5E8F\u53F7\u3001\u7B49\u7EA7ID\u6216 --default] \u67E5\u770B\u6216\u5207\u6362\u5F53\u524D\u63A8\u7406\u7B49\u7EA7"),w("/model [\u5E8F\u53F7\u6216\u5B8C\u6574\u6A21\u578BID] [\u63A8\u7406\u7B49\u7EA7ID] \u67E5\u770B\u6216\u5207\u6362\u5F53\u524D\u4F1A\u8BDD\u6A21\u578B"),w("\u793A\u4F8B\uFF1A\u5148\u53D1 /models\uFF0C\u518D\u53D1 /model 2 [\u63A8\u7406\u7B49\u7EA7ID]"),w("/presetlist \u6216 /presets \u6309\u5E8F\u53F7\u5217\u51FA\u53EF\u7528 Agent Preset"),w("/preset [\u5E8F\u53F7\u6216\u5B8C\u6574ID] \u67E5\u770B\u6216\u8BBE\u7F6E\u5F53\u524D\u673A\u5668\u4EBA Agent Preset"),w("\u7EAF\u6570\u5B57 ID\uFF1A/preset id:"),w("/preset --default \u8DDF\u968F Host \u9ED8\u8BA4"),w("/stop \u505C\u6B62\u5F53\u524D\u4EFB\u52A1"),w("/steer \u8865\u5145\u6307\u4EE4 \u7EA0\u504F\u5F53\u524D\u4EFB\u52A1"),w("/batch \u5F00\u59CB\u6279\u91CF\u8F93\u5165\uFF08\u4EC5\u79C1\u804A\uFF0C\u6700\u591A 10 \u6761\u6587\u5B57\uFF09"),w("/send \u63D0\u4EA4\u5F53\u524D\u6279\u6B21"),w("/cancel \u53D6\u6D88\u5F53\u524D\u6279\u6B21"),w("/status \u68C0\u67E5\u8FDE\u63A5\u72B6\u6001"),w("/version \u67E5\u770B\u63D2\u4EF6\u7248\u672C"),w("/help \u663E\u793A\u672C\u5E2E\u52A9")].join(` `));return}if(!I&&!d&&B==="/status"){await this.#t.ensureRunning({signal:this.#s}),await this.#A.sendText(A,w("{label}\u673A\u5668\u4EBA\u4E0E DeepSeek Harness \u8FDE\u63A5\u6B63\u5E38\u3002",{label:this.#e.label}));return}let f=!I&&!d?await Mo(r,this.#t,e):null;if(f){for(let F of f.messages??[f.message])await this.#A.sendText(A,F);return}if(!I&&!d&&B==="/new"){await this.#r.clearSession(e),await this.#A.sendText(A,w("\u5DF2\u5F00\u542F\u65B0\u4F1A\u8BDD\u3002\u8BF7\u53D1\u9001\u4F60\u7684\u95EE\u9898\u3002"));return}let Q=!I&&!d?await bi(r,this.#t,this.#r,e,{signal:this.#s}):null;if(Q){await this.#A.sendText(A,Q.message);return}await this.#A.sendTyping?.(A).catch(F=>{this.#a.warn?.(`[dsh-im:${this.#e.key}] typing indicator failed:`,F)});let y=!1;if(typeof this.#A.openDeliveryStream=="function")try{g=await this.#A.openDeliveryStream(A),c=!0}catch(F){this.#a.warn?.(`[dsh-im:${this.#e.key}] unable to start a semantic reply stream; using final delivery:`,F)}else if(typeof this.#A.openStream=="function")try{g=await this.#A.openStream(A)}catch(F){this.#a.warn?.(`[dsh-im:${this.#e.key}] unable to start a streamed reply; using text:`,F)}let m=I?await Oo(t,{signal:this.#s}):void 0,_=this.#I.get(o),T=!1;if(_){let F=m??r;m=To(F,_,()=>({channel:this.#e.key,senderId:i,senderName:t.contextSource?.()?.senderName,conversationTitle:t.contextSource?.()?.conversationTitle})),T=m!==F}let{answer:R,artifacts:K=[]}=await Oi({harness:this.#t,state:this.#r,key:e,text:r,content:m,contextEnhanced:T,createOptions:this.#s?{signal:this.#s}:void 0,existsOptions:this.#s?{signal:this.#s}:void 0,askOptions:{timeoutMs:this.#n,signal:this.#s,control:{owner:this,key:e},onUpdate:g?async F=>{let N=F.type==="text"?F.text:F.type==="tool"?w("\u6B63\u5728\u4F7F\u7528{name}\u2026",{name:F.name}):F.text;if(N){let k=F.type==="text"?"markdown":"plain";await g.update(c?ts(N,k):N)}}:void 0,onInteraction:F=>this.#E(F,{key:e,actor:i,target:A,requiresMention:t.kind==="group"&&t.requiresMention!==!1}),onInteractionResolved:F=>this.#N(F),files:t.files}});s&&this.#u.complete(e,s.token);let L=!Ii(R)&&K.length>0,U=L?w(_ue):R,z=L?"plain":"markdown",q=null,x=null;if(g)try{let F=await g.finish(c?ts(U,z):U);y=!0,x=Zt({deliveryId:o,presentation:F?.presentation??g.presentation??`${this.#e.key}-stream`,providerMessageIds:[...Ua(g),...Ua(F)],deliveryOutcome:F?.deliveryOutcome,reason:F?.reason})}catch(F){g.cancel?.(),this.#a.warn?.(`[dsh-im:${this.#e.key}] streamed reply finalization failed; using text:`,F)}if(!y)try{let F=typeof this.#A.sendDelivery=="function"?await this.#A.sendDelivery(A,ts(U,z)):await this.#A.sendText(A,U);x=Zt({deliveryId:o,presentation:F?.presentation??`${this.#e.key}-text`,providerMessageIds:Ua(F),deliveryOutcome:F?.deliveryOutcome,reason:F?.reason})}catch(F){q=va(F)}let G=x?.deliveryOutcome==="unknown";x?.deliveryOutcome==="failed"?q=va(new Error(`Final text delivery failed (${x.reason??"unknown"})`),{uncertain:!1}):G&&(q=va(new Error(`Final text delivery outcome is unknown (${x.reason??"unknown"})`)));let V=await this.#y(A,o,K,x);if(q&&(!V.userVisible||G))throw q.deliveryReceipt=V.receipt,q;return q&&V.artifactSendErrors===0&&At(this.#i,q),V.userVisible&&(this.#i.messagesReplied+=1,this.#i.lastReplyAt=new Date().toISOString(),this.#i.lastError=null,!q&&V.artifactSendErrors===0&&wo(this.#i)),V.receipt}catch(I){let d=I?.code==="turn-stopped";s&&d&&this.#u.complete(e,s.token);let B=s&&!d?this.#u.fail(e,s.token):null;if(d){if(t.statusReaction?.clear(),g)try{await g.finish(w("\u5DF2\u505C\u6B62\u3002"))}catch{g.cancel?.()}return}if(this.#s?.aborted){t.statusReaction?.clear(),g?.cancel?.();return}t.statusReaction?.error(),this.#i.lastError=I?.message??String(I);let f=async T=>{let R=typeof g?.fail=="function"?"fail":typeof g?.finish=="function"?"finish":null;if(!R)return!1;try{let K=await g[R](T);return R==="fail"?!!K&&K.deliveryOutcome!=="failed":K!==!1&&K?.deliveryOutcome!=="failed"}catch(K){return this.#a.warn?.(`[dsh-im:${this.#e.key}] unable to finalize the failed stream:`,K),!1}},Q=bo(I),y=ko(I),m=At(this.#i,I,{userMessage:y??Q,reason:eo(I)?.reason}),_=B?.retained?`${dt(m)} @@ -235,7 +235,7 @@ ${B.message}`:dt(m);if(this.#a.error?.(`[dsh-im:${this.#e.key}] failed to proces ${o}`:o,1900),a=[];for(let[A,r]of e.entries()){let s=await this.#e.createMessage({channelId:t.channelId,content:r,replyToMessageId:A===0?t.replyToMessageId:void 0,signal:this.#A});i&&A===0&&this.#t.add(t),typeof s?.id=="string"&&s.id&&a.push(s.id)}return{providerMessageIds:a}}sendTyping(t){return this.#e.sendTyping({channelId:t.channelId,signal:this.#A})}sendFile(t,o){return this.#e.createFileMessage({channelId:t.channelId,file:o,replyToMessageId:t.replyToMessageId,signal:this.#A})}addReaction(t,o,{signal:i}={}){return this.#e.addOwnReaction({channelId:t.channelId,messageId:t.messageId,emoji:o,signal:this.#r(i)})}removeReaction(t,o,{signal:i}={}){return this.#e.removeOwnReaction({channelId:t.channelId,messageId:t.messageId,emoji:o,signal:this.#r(i)})}async openStream(t){let o=!this.#t.has(t)&&t?.notice?String(t.notice):null,i=a=>o?`${o} ${a}`:a;return VQ({limit:o?1800:1900,create:async a=>{let A=await this.#e.createMessage({channelId:t.channelId,content:i(a),replyToMessageId:t.replyToMessageId,signal:this.#A});return o&&this.#t.add(t),A.id},edit:(a,A)=>this.#e.editMessage({channelId:t.channelId,messageId:a,content:i(A),signal:this.#A}),sendRemainder:a=>this.#e.createMessage({channelId:t.channelId,content:a,signal:this.#A}),messageIdForResult:a=>a?.id}).start()}#r(t){return t??this.#A}};function $ue(){return{startedAt:null,ready:!1,connectionState:"idle",harnessReachable:!1,lastCheckedAt:null,lastConnectedAt:null,lastError:null,...io()}}var iC=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c;#g=$ue();#I=null;#d=null;#h=null;#C=null;#u=null;#B=null;#f=null;#Q=null;#S=null;#y=!0;#m=null;#D=0;#E=0;#N=!0;#T=null;#O=new Map;#w=new Map;constructor({config:t,token:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,logger:r=console,replyTimeoutMs:s=6e5,connectTimeoutMs:g=2e4,createApi:c=B=>new rC(B),createWebSocket:I=B=>new WebSocket(B),random:d=Math.random}){if(!t||!o||!i||!e)throw new TypeError("DiscordRuntime requires config, token, Harness, and state");if(typeof I!="function")throw new TypeError("DiscordRuntime requires WebSocket");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#s=c,this.#p=I,this.#c=d}get status(){return structuredClone(this.#g)}async sendConnectionTest(t){if(!this.#g.ready||!this.#d){let o=new Error("Discord bot is not connected");throw o.code="test-target-unavailable",o}return this.#d.sendConnectionTest(t)}async sendProactiveText(t,o,i={}){if(!this.#g.ready||!this.#d){let a=new Error("Discord bot is not connected");throw a.code="bot-not-connected",a}let e=typeof t?.route?.channelId=="string"?t.route.channelId.trim():"";if(t?.kind!=="channel"||!e){let a=new TypeError("Invalid Discord proactive delivery target");throw a.code="invalid-target",a}return this.#d.sendProactiveText({channelId:e},o,i)}async start(){return this.#g.ready&&this.#C?this.status:this.#T?this.#T:(this.#T=this.#R().finally(()=>{this.#T=null}),this.#T)}async#R(){await this.stop(),this.#N=!1,this.#f=null,this.#B=null,this.#Q=null,this.#D=0,this.#O.clear(),this.#w.clear(),this.#g.startedAt=new Date().toISOString(),this.#g.connectionState="connecting",this.#g.lastError=null,await this.#t.ensureRunning(),this.#g.harnessReachable=!0;let t=new AbortController;this.#h=t;let o=this.#s({token:this.#A});this.#I=o;try{let[i,e]=await Promise.all([o.getCurrentUser({signal:t.signal}),o.getGatewayBot({signal:t.signal})]);if(String(i?.id??"")!==this.#e.platformId||i?.bot!==!0)throw new Error("Discord token identity does not match the saved bot");this.#u=e?.url;let a=new V_({api:o,signal:t.signal});this.#d=new qQ({bot:a,harness:this.#t,state:this.#r,contextEnhancement:this.#l,accessPolicy:this.#o,status:this.#g,logger:this.#i,replyTimeoutMs:this.#a,signal:t.signal});let A;try{await Promise.race([this.#_(!1),new Promise((r,s)=>{A=setTimeout(()=>s(new Error("Discord Gateway did not become ready in time")),this.#n)})])}finally{clearTimeout(A)}return this.status}catch(i){throw this.#g.ready=!1,this.#g.connectionState="failed",this.#g.lastError=i?.message??String(i),await this.stop(),i}}#_(t){if(this.#N)return Promise.reject(new Error("Discord runtime is stopped"));let o=++this.#E,i=Yue(t&&this.#B?this.#B:this.#u),e=this.#p(i);this.#C=e;let a=!1;return new Promise((A,r)=>{let s=()=>{if(a||o!==this.#E)return;a=!0,this.#D=0;let g=Date.now();this.#g.ready=!0,this.#g.connectionState="connected",this.#g.lastCheckedAt=g,this.#g.lastConnectedAt=g,this.#g.lastError=null,A()};q_(e,"message",g=>{if(o!==this.#E||this.#N)return;let c=jue(g);if(!c)return;let I;try{I=JSON.parse(c)}catch{this.#i.warn?.("[dsh-im:discord] ignored malformed Gateway JSON");return}if(Number.isSafeInteger(I.s)&&(this.#Q=I.s),I.op===10){this.#P(I.d?.heartbeat_interval,e,o),t&&this.#f?this.#F(e,{op:6,d:{token:this.#A,session_id:this.#f,seq:this.#Q}}):this.#F(e,{op:2,d:{token:this.#A,intents:kue,properties:{os:process.platform,browser:"dsh-im",device:"dsh-im"}}});return}if(I.op===11){this.#y=!0,this.#g.lastCheckedAt=Date.now();return}if(I.op===1){this.#H(e);return}if(I.op===7){e.close(4e3,"Reconnect requested");return}if(I.op===9){I.d!==!0&&(this.#f=null,this.#B=null,this.#Q=null),e.close(4e3,"Invalid session");return}if(I.op===0){if(I.t==="READY")this.#f=I.d?.session_id??null,this.#B=I.d?.resume_gateway_url??null,s();else if(I.t==="RESUMED")s();else if(I.t==="GUILD_CREATE")for(let d of[...I.d?.channels??[],...I.d?.threads??[]])this.#G(d);else if(I.t==="CHANNEL_CREATE"||I.t==="CHANNEL_UPDATE"||I.t==="THREAD_CREATE"||I.t==="THREAD_UPDATE")this.#G(I.d);else if(I.t==="CHANNEL_DELETE"||I.t==="THREAD_DELETE")I.d?.id&&this.#O.delete(String(I.d.id));else if(I.t==="THREAD_LIST_SYNC")for(let d of I.d?.threads??[])this.#G(d);else if(I.t==="MESSAGE_CREATE"){let d=this.#d;I.d&&d&&this.#k(I.d,d).catch(B=>{o!==this.#E||this.#N||this.#i.error?.(`[dsh-im:discord] bot ${this.#e.botId} message handling failed:`,B)})}}}),q_(e,"close",(g={})=>{if(o!==this.#E)return;if(this.#U(),this.#C===e&&(this.#C=null),this.#N){a||r(new DOMException("Stopped","AbortError"));return}let c=Jue(Number(g.code)||0);if(this.#g.ready=!1,this.#g.connectionState="connecting",this.#g.lastError=c.message,a||(a=!0,r(c)),c.code==="discord-401"||c.code==="discord-intents"){this.#g.connectionState="failed";return}this.#L()}),q_(e,"error",()=>{o!==this.#E||this.#N||(this.#g.lastError="Discord Gateway WebSocket error")})})}#G(t){t?.id&&this.#O.set(String(t.id),t)}async#k(t,o){let i=String(t?.id??"");if(!i||this.#r.hasSeen(i))return;let e=t3(t,this.#e.platformId),a;if(e?.kind==="group"&&e.addressed===!0&&e.senderIsBot!==!0&&(a=fa(this.#o,{conversationType:"group",senderIds:[e.senderId],text:e.content,hasImages:e.images.length>0,hasFiles:e.files.length>0}),!a.allowed)){await o.accept(e,{accessDecision:a});return}let A=this.#w.get(i);if(!A){let r=Aa(this.#l,t.guild_id?"group":"direct"),s=Xue(t,this.#e.platformId,{api:this.#I,channel:this.#O.get(String(t.channel_id)),signal:this.#h?.signal,onChannel:g=>this.#G(g)});A={pendingRoute:s,contextSnapshot:r},this.#w.set(i,A),s.finally(()=>{this.#w.get(i)===A&&this.#w.delete(i)}).catch(()=>{})}try{let r=await A.pendingRoute;r&&await o.accept(r,{contextSnapshot:A.contextSnapshot,...a?{accessDecision:a}:{}})}catch(r){throw r?.code==="discord-thread-create-uncertain"&&await this.#r.markSeen(i),r}}#F(t,o){t.readyState===1&&t.send(JSON.stringify(o))}#P(t,o,i){if(this.#U(),!Number.isFinite(t)||t<1e3){o.close(4e3,"Invalid heartbeat interval");return}this.#y=!0;let e=a=>{this.#S=setTimeout(()=>{if(!(this.#N||i!==this.#E||this.#C!==o)){if(!this.#y){o.close(4e3,"Heartbeat was not acknowledged");return}this.#H(o),e(t)}},a),this.#S?.unref?.()};e(Math.floor(t*this.#c()))}#H(t){this.#y=!1,this.#F(t,{op:1,d:this.#Q})}#U(){this.#S!==null&&clearTimeout(this.#S),this.#S=null,this.#y=!0}#L(){if(this.#N||this.#m!==null)return;let t=z1[Math.min(this.#D,z1.length-1)];this.#D+=1,this.#m=setTimeout(()=>{this.#m=null,this.#_(!!this.#f).catch(o=>{this.#N||(this.#i.warn?.("[dsh-im:discord] Gateway reconnect failed:",o),this.#L())})},t),this.#m?.unref?.()}async stop(){this.#N=!0,this.#E+=1,this.#h?.abort(),this.#h=null,this.#m!==null&&clearTimeout(this.#m),this.#m=null,this.#U();let t=this.#C,o=this.#d;this.#C=null,this.#d=null,this.#I=null,this.#w.clear();try{t&&t.readyState<2&&t.close(1e3,"Plugin stopped")}catch(i){this.#i.warn?.(`[dsh-im:discord] bot ${this.#e.botId} failed to close Gateway:`,i)}return await Promise.race([o?.waitForIdle()??Promise.resolve(),new Promise(i=>setTimeout(i,2e3))]),this.#g.ready=!1,this.#g.connectionState="idle",this.status}};import{mkdir as eBe,readFile as ABe,rename as tBe,unlink as rBe,writeFile as aBe}from"node:fs/promises";import{dirname as iBe}from"node:path";var WQ=Object.freeze({version:1,sessions:{},seenMessageIds:[],cursor:null});function oBe(n){if(!n||typeof n!="object")return structuredClone(WQ);let t={};if(n.sessions&&typeof n.sessions=="object"&&!Array.isArray(n.sessions))for(let[o,i]of Object.entries(n.sessions))typeof o=="string"&&o&&typeof i=="string"&&i&&(t[o]=i);return{version:1,sessions:t,seenMessageIds:Array.isArray(n.seenMessageIds)?n.seenMessageIds.filter(o=>typeof o=="string"&&o).slice(-1e3):[],cursor:Number.isSafeInteger(n.cursor)&&n.cursor>=0?n.cursor:null}}var gs=class{#e;#A=structuredClone(WQ);#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{this.#A=oBe(JSON.parse(await ABe(this.#e,"utf8")))}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=structuredClone(WQ),await this.#r()}return this}sessionFor(t){return this.#A.sessions[t]??null}async setSession(t,o){this.#A.sessions[t]=o,await this.#r()}async clearSession(t){delete this.#A.sessions[t],await this.#r()}async clearSessions(){this.#A.sessions={},await this.#r()}hasSeen(t){return this.#A.seenMessageIds.includes(t)}async markSeen(t){this.hasSeen(t)||(this.#A.seenMessageIds.push(t),this.#A.seenMessageIds.length>1e3&&this.#A.seenMessageIds.splice(0,this.#A.seenMessageIds.length-1e3),await this.#r())}cursor(){return this.#A.cursor}async setCursor(t){if(!Number.isSafeInteger(t)||t<0)throw new TypeError("Invalid update cursor");this.#A.cursor=t,await this.#r()}snapshot(){return structuredClone(this.#A)}async remove(){try{await rBe(this.#e)}catch(t){if(t?.code!=="ENOENT")throw t}this.#A=structuredClone(WQ)}async#r(){let t=`${JSON.stringify(this.#A,null,2)} -`,o=this.#t.then(async()=>{await eBe(iBe(this.#e),{recursive:!0,mode:448});let i=`${this.#e}.tmp`;await aBe(i,t,{encoding:"utf8",mode:384}),await tBe(i,this.#e)});this.#t=o.then(()=>{},()=>{}),await o}};var ZQ=class extends gs{};import{unlink as sBe}from"node:fs/promises";import{homedir as gBe}from"node:os";import{join as oC,resolve as HI}from"node:path";var r3=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function nBe(n){if(!Array.isArray(n)||n.length===0)return[...r3];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...r3]}var Z_=class{#e;#A;#t;#r;#l;#o;#i;#a;#n=null;#s=null;#p=0;#c=!1;#g=!1;#I;#d;constructor({channel:t,controller:o,harness:i,logger:e=console,retryDelaysMs:a,healthyIntervalMs:A=15e3,setTimeoutImpl:r=setTimeout,clearTimeoutImpl:s=clearTimeout}){if(!t)throw new TypeError("TokenConnectionSupervisor requires a channel");if(!o||typeof o.initialize!="function"||typeof o.status!="function")throw new TypeError("TokenConnectionSupervisor requires a controller");if(!i||typeof i.ensureRunning!="function")throw new TypeError("TokenConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=nBe(a),this.#o=Number.isFinite(A)&&A>=0?A:15e3,this.#i=r,this.#a=s,this.#I=new Promise(g=>{this.#d=g})}get ready(){return this.#I}start(){return this.#g||this.#c?this:(this.#g=!0,this.#h(0),this)}async close(){this.#c||(this.#c=!0,this.#n!==null&&this.#a(this.#n),this.#n=null,await this.#s?.catch(()=>{}),this.#d?.(null),this.#d=null)}#h(t){this.#c||(this.#n=this.#i(()=>{this.#n=null,this.#C()},t),this.#n?.unref?.())}async#C(){if(this.#c||this.#s)return;let t=this.#u();this.#s=t;try{await t}finally{this.#s===t&&(this.#s=null)}}async#u(){try{if(await this.#t.ensureRunning(),this.#c)return;let t=await this.#A.initialize();if(this.#c)return;this.#d?.(t),this.#d=null;let{configured:o,connected:i}=t.totals;if(inr(e==="telegram"?"telegram":"discord",Ne),R=typeof n.logger=="function"?n.logger(`dsh-im:${e}`):n.logger??console,K=()=>La(n),L=X_(t,e),U=await new d(L.config).load(),z=HI(t.workspace??process.cwd()),q=o.WorkspaceStore??ra,x=o.workspaces??await new q(L.workspaces,{defaultWorkspace:z}).load(),G=U.list();await x.reconcile(G.map(Ne=>Ne.botId)),await Promise.all(G.map(Ne=>x.ensure(Ne.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:T(Ne)})));let V=typeof U.remove=="function"?Ha(U,{workspaces:x}):U,F=new Map,N=Ne=>HI(L.bots,Ne,"state.json"),k=async Ne=>{let We=F.get(Ne);return We||(We=await new B(N(Ne)).load(),F.set(Ne,We)),We},J=ja(n,o.commandExecutor),{controlExecutor:$,sessionMaintenanceExecutor:ie,fileIngressExecutor:pe}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),se=new f({...I,workspace:z,autostart:!1,dshBin:t.dshBin??"dsh",...J?{commandExecutor:J}:{},...$?{controlExecutor:$}:{},...ie?{sessionMaintenanceExecutor:ie}:{},...pe?{fileIngressExecutor:pe}:{}}),Te=new Q({credentials:n.credentials,configStore:V,logger:R,...o.inspectToken?{inspectToken:o.inspectToken}:{},createRuntime:async({botId:Ne,config:We,token:ve})=>{let aA=await k(Ne);await x.ensure(Ne,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:T(We)});let fe=Ka(se,{botId:Ne,workspaces:x,state:aA,agentPresetCatalog:K});return new y({...m,config:We,token:ve,harness:fe.harness,state:fe.state,contextEnhancement:{botId:Ne,getSettings:()=>x.contextEnhancementFor(Ne)},accessPolicy:qa(x,Ne,{channel:e,config:We}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??2e4,logger:{error:(...Ie)=>R.error?.(`[${Ne}]`,...Ie),warn:(...Ie)=>R.warn?.(`[${Ne}]`,...Ie),info:(...Ie)=>R.info?.(`[${Ne}]`,...Ie),debug:(...Ie)=>R.debug?.(`[${Ne}]`,...Ie)}})},deleteState:async({botId:Ne})=>{let We=F.get(Ne);if(F.delete(Ne),We&&typeof We.remove=="function")await We.remove();else try{await sBe(N(Ne))}catch(ve){if(ve?.code!=="ENOENT")throw ve}}}),Qe=xa(Te,{workspaces:x,stateFor:k,agentPresetCatalog:K}),ke=_({channel:e,controller:Qe,harness:se,logger:R,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:Qe,...FQ(e)?{deliveryAdapter:Ya({channel:e,workspaces:x,coreController:Te,stateFor:k})}:{},ready:ke.ready,async close(){await ke.close(),await Qe.close(),se.stopManagedProcess()}}}function $_(n,t={},o={}){return XQ(n,t,o,{channel:"discord",ConfigStore:jQ,StateStore:ZQ,HarnessClient:zQ,Controller:aC,Runtime:iC})}var Tr=Object.freeze({status:"connection.status",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va}),cBe=Object.freeze(Object.values(Tr)),IBe=new Set(["token","botToken","tokenRef","platformId","secret","secretRef"]),lBe=new Set(["telegram-transport-error","telegram-timeout","telegram-response-invalid"]);function AT(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function $Q(n,t){return AT(n)&&Object.keys(n).every(o=>t.includes(o))}function a3(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function pBe(n){return typeof n=="string"&&n.trim().length>=20&&n.length<=4096}function dBe(n,t){return AT(t)?n===Tr.status?$Q(t,[])?null:"connection.status does not accept fields.":n===Tr.bindCredentials?$Q(t,["token"])&&pBe(t.token)?null:"bot.bind-credentials requires a Bot Token.":n===Tr.reconnectBot?$Q(t,["botId","sendTest"])&&a3(t.botId)&&(t.sendTest===void 0||typeof t.sendTest=="boolean")?null:"bot.reconnect requires a botId.":n===Tr.deleteBot?$Q(t,["botId","confirm"])&&a3(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Tr.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Tr.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Tr.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===Tr.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Unknown bot endpoint.":"Payload must be an object."}function eT(n){if(Array.isArray(n))return n.map(eT);if(!AT(n))return n;let t={};for(let[o,i]of Object.entries(n))IBe.has(o)||(t[o]=eT(i));return t}function hBe(n,t){let o=Xa(t);return o||(t?.code==="webhook-configured"?{code:"webhook-configured",message:t.message}:t?.code==="telegram-401"||t?.code==="discord-401"?{code:"invalid-token",message:`${n} Bot Token \u65E0\u6548\uFF0C\u8BF7\u91CD\u65B0\u586B\u5199\u3002`}:n==="Telegram"&&lBe.has(t?.code)?{code:"telegram-network-error",message:"\u65E0\u6CD5\u8BBF\u95EE Telegram Bot API\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u4EE3\u7406\u8BBE\u7F6E\uFF1BNode.js 22.21+ \u53EF\u8BBE\u7F6E NODE_USE_ENV_PROXY=1\uFF0C\u5E76\u914D\u7F6E HTTPS_PROXY\u3001HTTP_PROXY \u548C NO_PROXY\uFF0C\u7136\u540E\u91CD\u542F dsh web\u3002"}:t?.code==="discord-intents"?{code:"discord-intents",message:t.message}:{code:`${n.toLowerCase()}-operation-failed`,message:`${n} \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002`})}function ey(n,{channel:t}){for(let o of["status","bindCredentials","reconnectBot","deleteBot"])if(typeof n?.[o]!="function")throw new TypeError(`A complete ${t} controller is required (${o})`);return async(o,i,e)=>{if(e?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!cBe.includes(o))return{ok:!1,error:{code:"bad-request",message:`Unknown ${t} endpoint.`}};let a=dBe(o,i);if(a)return{ok:!1,error:{code:"bad-request",message:a}};try{let A;if(o===Tr.status)A=await n.status();else if(o===Tr.bindCredentials)A=await n.bindCredentials(i);else if(o===Tr.reconnectBot){if(A=await n.reconnectBot(i.botId),e?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(i.sendTest===!0){let r=null;try{if(A?.bots?.find(s=>s?.botId===i.botId)?.connected!==!0){let s=new Error("Bot is not connected");throw s.code="test-target-unavailable",s}if(typeof n.sendConnectionTest!="function"){let s=new Error("Connection test is unavailable");throw s.code="test-target-unavailable",s}await n.sendConnectionTest(i.botId)}catch(s){r=s}A={...A,testMessage:or(r)}}}else if(o===Tr.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");A=await n.updateWorkspace(i.botId,i.workspace)}else if(o===Tr.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");A=await n.updateContextEnhancement(i.botId,i.config)}else if(o===Tr.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");A=await n.updateAccessPolicy(i.botId,i.policy)}else if(o===Tr.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");A=await n.updateAgentPreset(i.botId,i.agentPreset)}else A=await n.deleteBot(i.botId);return e?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:eT(A)}}catch(A){return e?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:hBe(t,A)}}}}function i3(n,t,{channel:o,rpcChannel:i,authority:e}){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(i,ey(t,{channel:o}),{authority:fr(e)})}var o3="/discord",n3=Tr,EBe=Object.freeze(Object.values(n3));function Ay(n,t,o){return i3(n,t,{channel:"Discord",rpcChannel:o3,authority:o})}async function s3(n,t={}){if(t?.controller)return Ay(n,t.controller,t.rpcAuthority);let o=await $_(n,t,t.internals??{}),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=Ay(n,o.controller,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close Discord bot connections"),e}import{homedir as FBe}from"node:os";import{join as iT,resolve as oT}from"node:path";import{mkdir as CBe,readFile as uBe,rename as BBe,unlink as fBe,writeFile as QBe}from"node:fs/promises";import{dirname as yBe,isAbsolute as mBe}from"node:path";var Jp="office-harness.v1",g3="/office",qp=Object.freeze({status:"connection.status",configure:"connector.configure",reconnect:"connector.reconnect",test:"connector.test",remove:"connector.remove"}),Qn=Object.freeze({stream:"/api/harness/connector/stream",heartbeat:"/api/harness/connector/heartbeat",job:"/api/harness/connector/jobs/:id",accept:"/api/harness/connector/jobs/:id/accept",renew:"/api/harness/connector/jobs/:id/renew",progress:"/api/harness/connector/jobs/:id/progress",approval:"/api/harness/connector/jobs/:id/approval",result:"/api/harness/connector/jobs/:id/result",fail:"/api/harness/connector/jobs/:id/fail"});function nC(n){let t=new URL(typeof n=="string"?n.trim():""),o=t.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(t.hostname);if(t.protocol!=="https:"&&!o)throw new TypeError("AI Office URL must use HTTPS (HTTP is allowed only for loopback testing)");if(t.username||t.password||t.search||t.hash)throw new TypeError("AI Office URL must be a bare origin");return t.pathname="/",t}function ty(n){let t=nC(n);return Object.fromEntries(Object.entries(Qn).map(([o,i])=>[o,new URL(i,t).toString()]))}var SBe=/^[a-z][a-z0-9-]{1,63}$/,wBe=/^[a-z0-9][a-z0-9_-]{2,63}$/i;function zp(n){return typeof n=="string"&&n.trim()?n.trim():null}function c3(n,{kind:t}){if(!n||typeof n!="object"||Array.isArray(n))return null;let o={};for(let[i,e]of Object.entries(n)){let a=zp(i),A=zp(e);if(!a||!SBe.test(a)||!A||t==="workspace"&&!mBe(A)||t==="preset"&&A.length>8e3)return null;o[a]=A}return Object.freeze(o)}function ry(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let t;try{t=nC(n.baseUrl).origin}catch{return null}let o=zp(n.deviceId),i=zp(n.deviceTokenRef),e=c3(n.workspaces??{},{kind:"workspace"}),a=c3(n.instructionPresets??{},{kind:"preset"}),A=Number(n.maxConcurrency??1),r=Number(n.heartbeatSeconds??30);return!o||!wBe.test(o)||!i||!/^DSH_OFFICE_DEVICE_TOKEN_[A-F0-9]{24}$/.test(i)||!e||!a||!Number.isInteger(A)||A<1||A>4||!Number.isInteger(r)||r<10||r>300?null:Object.freeze({version:1,protocolVersion:Jp,baseUrl:t,deviceId:o,deviceTokenRef:i,maxConcurrency:A,heartbeatSeconds:r,workspaces:e,instructionPresets:a,createdAt:zp(n.createdAt)??new Date().toISOString(),updatedAt:zp(n.updatedAt)??new Date().toISOString()})}var ay=class{#e;#A=null;#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{let t=ry(JSON.parse(await uBe(this.#e,"utf8")));if(!t)throw new Error("dsh-im AI Office config is invalid");this.#A=t}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=null}return this}get(){return this.#A?structuredClone(this.#A):null}async save(t){let o=ry(t);if(!o)throw new Error("Refusing to persist invalid AI Office configuration");let i=this.#t.then(async()=>{await CBe(yBe(this.#e),{recursive:!0,mode:448});let e=`${this.#e}.tmp`;await QBe(e,`${JSON.stringify(o,null,2)} +`,o=this.#t.then(async()=>{await eBe(iBe(this.#e),{recursive:!0,mode:448});let i=`${this.#e}.tmp`;await aBe(i,t,{encoding:"utf8",mode:384}),await tBe(i,this.#e)});this.#t=o.then(()=>{},()=>{}),await o}};var ZQ=class extends gs{};import{unlink as sBe}from"node:fs/promises";import{homedir as gBe}from"node:os";import{join as oC,resolve as HI}from"node:path";var r3=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function nBe(n){if(!Array.isArray(n)||n.length===0)return[...r3];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...r3]}var Z_=class{#e;#A;#t;#r;#l;#o;#i;#a;#n=null;#s=null;#p=0;#c=!1;#g=!1;#I;#d;constructor({channel:t,controller:o,harness:i,logger:e=console,retryDelaysMs:a,healthyIntervalMs:A=15e3,setTimeoutImpl:r=setTimeout,clearTimeoutImpl:s=clearTimeout}){if(!t)throw new TypeError("TokenConnectionSupervisor requires a channel");if(!o||typeof o.initialize!="function"||typeof o.status!="function")throw new TypeError("TokenConnectionSupervisor requires a controller");if(!i||typeof i.ensureRunning!="function")throw new TypeError("TokenConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=nBe(a),this.#o=Number.isFinite(A)&&A>=0?A:15e3,this.#i=r,this.#a=s,this.#I=new Promise(g=>{this.#d=g})}get ready(){return this.#I}start(){return this.#g||this.#c?this:(this.#g=!0,this.#h(0),this)}async close(){this.#c||(this.#c=!0,this.#n!==null&&this.#a(this.#n),this.#n=null,await this.#s?.catch(()=>{}),this.#d?.(null),this.#d=null)}#h(t){this.#c||(this.#n=this.#i(()=>{this.#n=null,this.#C()},t),this.#n?.unref?.())}async#C(){if(this.#c||this.#s)return;let t=this.#u();this.#s=t;try{await t}finally{this.#s===t&&(this.#s=null)}}async#u(){try{if(await this.#t.ensureRunning(),this.#c)return;let t=await this.#A.initialize();if(this.#c)return;this.#d?.(t),this.#d=null;let{configured:o,connected:i}=t.totals;if(inr(e==="telegram"?"telegram":"discord",Ne),R=typeof n.logger=="function"?n.logger(`dsh-im:${e}`):n.logger??console,K=()=>La(n),L=X_(t,e),U=await new d(L.config).load(),z=HI(t.workspace??process.cwd()),q=o.WorkspaceStore??ra,x=o.workspaces??await new q(L.workspaces,{defaultWorkspace:z}).load(),G=U.list();await x.reconcile(G.map(Ne=>Ne.botId)),await Promise.all(G.map(Ne=>x.ensure(Ne.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:T(Ne)})));let V=typeof U.remove=="function"?Ha(U,{workspaces:x}):U,F=new Map,N=Ne=>HI(L.bots,Ne,"state.json"),k=async Ne=>{let We=F.get(Ne);return We||(We=await new B(N(Ne)).load(),F.set(Ne,We)),We},J=ja(n,o.commandExecutor),{controlExecutor:$,sessionMaintenanceExecutor:ie,fileIngressExecutor:pe}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),se=new f({...I,workspace:z,autostart:!1,dshBin:t.dshBin??"dsh",...J?{commandExecutor:J}:{},...$?{controlExecutor:$}:{},...ie?{sessionMaintenanceExecutor:ie}:{},...pe?{fileIngressExecutor:pe}:{}}),Me=new Q({credentials:n.credentials,configStore:V,logger:R,...o.inspectToken?{inspectToken:o.inspectToken}:{},createRuntime:async({botId:Ne,config:We,token:ve})=>{let aA=await k(Ne);await x.ensure(Ne,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:T(We)});let Qe=Ka(se,{botId:Ne,workspaces:x,state:aA,agentPresetCatalog:K});return new y({...m,config:We,token:ve,harness:Qe.harness,state:Qe.state,contextEnhancement:{botId:Ne,getSettings:()=>x.contextEnhancementFor(Ne)},accessPolicy:qa(x,Ne,{channel:e,config:We}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??2e4,logger:{error:(...Ie)=>R.error?.(`[${Ne}]`,...Ie),warn:(...Ie)=>R.warn?.(`[${Ne}]`,...Ie),info:(...Ie)=>R.info?.(`[${Ne}]`,...Ie),debug:(...Ie)=>R.debug?.(`[${Ne}]`,...Ie)}})},deleteState:async({botId:Ne})=>{let We=F.get(Ne);if(F.delete(Ne),We&&typeof We.remove=="function")await We.remove();else try{await sBe(N(Ne))}catch(ve){if(ve?.code!=="ENOENT")throw ve}}}),fe=xa(Me,{workspaces:x,stateFor:k,agentPresetCatalog:K}),ke=_({channel:e,controller:fe,harness:se,logger:R,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:fe,...FQ(e)?{deliveryAdapter:Ya({channel:e,workspaces:x,coreController:Me,stateFor:k})}:{},ready:ke.ready,async close(){await ke.close(),await fe.close(),se.stopManagedProcess()}}}function $_(n,t={},o={}){return XQ(n,t,o,{channel:"discord",ConfigStore:jQ,StateStore:ZQ,HarnessClient:zQ,Controller:aC,Runtime:iC})}var Tr=Object.freeze({status:"connection.status",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va}),cBe=Object.freeze(Object.values(Tr)),IBe=new Set(["token","botToken","tokenRef","platformId","secret","secretRef"]),lBe=new Set(["telegram-transport-error","telegram-timeout","telegram-response-invalid"]);function AT(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function $Q(n,t){return AT(n)&&Object.keys(n).every(o=>t.includes(o))}function a3(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function pBe(n){return typeof n=="string"&&n.trim().length>=20&&n.length<=4096}function dBe(n,t){return AT(t)?n===Tr.status?$Q(t,[])?null:"connection.status does not accept fields.":n===Tr.bindCredentials?$Q(t,["token"])&&pBe(t.token)?null:"bot.bind-credentials requires a Bot Token.":n===Tr.reconnectBot?$Q(t,["botId","sendTest"])&&a3(t.botId)&&(t.sendTest===void 0||typeof t.sendTest=="boolean")?null:"bot.reconnect requires a botId.":n===Tr.deleteBot?$Q(t,["botId","confirm"])&&a3(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Tr.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Tr.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Tr.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===Tr.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Unknown bot endpoint.":"Payload must be an object."}function eT(n){if(Array.isArray(n))return n.map(eT);if(!AT(n))return n;let t={};for(let[o,i]of Object.entries(n))IBe.has(o)||(t[o]=eT(i));return t}function hBe(n,t){let o=Xa(t);return o||(t?.code==="webhook-configured"?{code:"webhook-configured",message:t.message}:t?.code==="telegram-401"||t?.code==="discord-401"?{code:"invalid-token",message:`${n} Bot Token \u65E0\u6548\uFF0C\u8BF7\u91CD\u65B0\u586B\u5199\u3002`}:n==="Telegram"&&lBe.has(t?.code)?{code:"telegram-network-error",message:"\u65E0\u6CD5\u8BBF\u95EE Telegram Bot API\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u6216\u4EE3\u7406\u8BBE\u7F6E\uFF1BNode.js 22.21+ \u53EF\u8BBE\u7F6E NODE_USE_ENV_PROXY=1\uFF0C\u5E76\u914D\u7F6E HTTPS_PROXY\u3001HTTP_PROXY \u548C NO_PROXY\uFF0C\u7136\u540E\u91CD\u542F dsh web\u3002"}:t?.code==="discord-intents"?{code:"discord-intents",message:t.message}:{code:`${n.toLowerCase()}-operation-failed`,message:`${n} \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002`})}function ey(n,{channel:t}){for(let o of["status","bindCredentials","reconnectBot","deleteBot"])if(typeof n?.[o]!="function")throw new TypeError(`A complete ${t} controller is required (${o})`);return async(o,i,e)=>{if(e?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!cBe.includes(o))return{ok:!1,error:{code:"bad-request",message:`Unknown ${t} endpoint.`}};let a=dBe(o,i);if(a)return{ok:!1,error:{code:"bad-request",message:a}};try{let A;if(o===Tr.status)A=await n.status();else if(o===Tr.bindCredentials)A=await n.bindCredentials(i);else if(o===Tr.reconnectBot){if(A=await n.reconnectBot(i.botId),e?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(i.sendTest===!0){let r=null;try{if(A?.bots?.find(s=>s?.botId===i.botId)?.connected!==!0){let s=new Error("Bot is not connected");throw s.code="test-target-unavailable",s}if(typeof n.sendConnectionTest!="function"){let s=new Error("Connection test is unavailable");throw s.code="test-target-unavailable",s}await n.sendConnectionTest(i.botId)}catch(s){r=s}A={...A,testMessage:or(r)}}}else if(o===Tr.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");A=await n.updateWorkspace(i.botId,i.workspace)}else if(o===Tr.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");A=await n.updateContextEnhancement(i.botId,i.config)}else if(o===Tr.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");A=await n.updateAccessPolicy(i.botId,i.policy)}else if(o===Tr.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");A=await n.updateAgentPreset(i.botId,i.agentPreset)}else A=await n.deleteBot(i.botId);return e?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:eT(A)}}catch(A){return e?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:hBe(t,A)}}}}function i3(n,t,{channel:o,rpcChannel:i,authority:e}){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(i,ey(t,{channel:o}),{authority:fr(e)})}var o3="/discord",n3=Tr,EBe=Object.freeze(Object.values(n3));function Ay(n,t,o){return i3(n,t,{channel:"Discord",rpcChannel:o3,authority:o})}async function s3(n,t={}){if(t?.controller)return Ay(n,t.controller,t.rpcAuthority);let o=await $_(n,t,t.internals??{}),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=Ay(n,o.controller,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close Discord bot connections"),e}import{homedir as FBe}from"node:os";import{join as iT,resolve as oT}from"node:path";import{mkdir as CBe,readFile as uBe,rename as BBe,unlink as fBe,writeFile as QBe}from"node:fs/promises";import{dirname as yBe,isAbsolute as mBe}from"node:path";var Jp="office-harness.v1",g3="/office",qp=Object.freeze({status:"connection.status",configure:"connector.configure",reconnect:"connector.reconnect",test:"connector.test",remove:"connector.remove"}),Qn=Object.freeze({stream:"/api/harness/connector/stream",heartbeat:"/api/harness/connector/heartbeat",job:"/api/harness/connector/jobs/:id",accept:"/api/harness/connector/jobs/:id/accept",renew:"/api/harness/connector/jobs/:id/renew",progress:"/api/harness/connector/jobs/:id/progress",approval:"/api/harness/connector/jobs/:id/approval",result:"/api/harness/connector/jobs/:id/result",fail:"/api/harness/connector/jobs/:id/fail"});function nC(n){let t=new URL(typeof n=="string"?n.trim():""),o=t.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(t.hostname);if(t.protocol!=="https:"&&!o)throw new TypeError("AI Office URL must use HTTPS (HTTP is allowed only for loopback testing)");if(t.username||t.password||t.search||t.hash)throw new TypeError("AI Office URL must be a bare origin");return t.pathname="/",t}function ty(n){let t=nC(n);return Object.fromEntries(Object.entries(Qn).map(([o,i])=>[o,new URL(i,t).toString()]))}var SBe=/^[a-z][a-z0-9-]{1,63}$/,wBe=/^[a-z0-9][a-z0-9_-]{2,63}$/i;function zp(n){return typeof n=="string"&&n.trim()?n.trim():null}function c3(n,{kind:t}){if(!n||typeof n!="object"||Array.isArray(n))return null;let o={};for(let[i,e]of Object.entries(n)){let a=zp(i),A=zp(e);if(!a||!SBe.test(a)||!A||t==="workspace"&&!mBe(A)||t==="preset"&&A.length>8e3)return null;o[a]=A}return Object.freeze(o)}function ry(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let t;try{t=nC(n.baseUrl).origin}catch{return null}let o=zp(n.deviceId),i=zp(n.deviceTokenRef),e=c3(n.workspaces??{},{kind:"workspace"}),a=c3(n.instructionPresets??{},{kind:"preset"}),A=Number(n.maxConcurrency??1),r=Number(n.heartbeatSeconds??30);return!o||!wBe.test(o)||!i||!/^DSH_OFFICE_DEVICE_TOKEN_[A-F0-9]{24}$/.test(i)||!e||!a||!Number.isInteger(A)||A<1||A>4||!Number.isInteger(r)||r<10||r>300?null:Object.freeze({version:1,protocolVersion:Jp,baseUrl:t,deviceId:o,deviceTokenRef:i,maxConcurrency:A,heartbeatSeconds:r,workspaces:e,instructionPresets:a,createdAt:zp(n.createdAt)??new Date().toISOString(),updatedAt:zp(n.updatedAt)??new Date().toISOString()})}var ay=class{#e;#A=null;#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{let t=ry(JSON.parse(await uBe(this.#e,"utf8")));if(!t)throw new Error("dsh-im AI Office config is invalid");this.#A=t}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=null}return this}get(){return this.#A?structuredClone(this.#A):null}async save(t){let o=ry(t);if(!o)throw new Error("Refusing to persist invalid AI Office configuration");let i=this.#t.then(async()=>{await CBe(yBe(this.#e),{recursive:!0,mode:448});let e=`${this.#e}.tmp`;await QBe(e,`${JSON.stringify(o,null,2)} `,{mode:384}),await BBe(e,this.#e),this.#A=o});return this.#t=i.then(()=>{},()=>{}),await i,this.get()}async clear(){let t=this.#t.then(async()=>{try{await fBe(this.#e)}catch(o){if(o?.code!=="ENOENT")throw o}this.#A=null});this.#t=t.then(()=>{},()=>{}),await t}};import{createHash as PBe}from"node:crypto";import{setTimeout as kBe}from"node:timers/promises";function tT(n,t){let o=new Error(`AI Office ${n} failed: HTTP ${t.status}`);return o.code=t.status===401?"invalid-device-token":t.status===404?"office-hook-unavailable":t.status===409?"office-job-conflict":"office-transport-failed",o}function Vp(n,t="office-transport-failed",o){let i=new Error(n,o===void 0?void 0:{cause:o});return i.code=t,i}function rT(n,t){return t?.aborted||n?.name==="AbortError"}function DBe(n){let t="message",o,i=[];for(let a of n.split(/\r?\n/))a.startsWith("event:")?t=a.slice(6).trim()||"message":a.startsWith("id:")?o=a.slice(3).trim()||void 0:a.startsWith("data:")&&i.push(a.slice(5).trimStart());if(i.length===0)return null;let e;try{e=JSON.parse(i.join(` `))}catch{throw new Error("AI Office SSE returned invalid JSON")}return{id:o,type:typeof e?.type=="string"?e.type:t,data:e}}var iy=class{#e;#A;#t;#r;constructor({baseUrl:t,deviceId:o,token:i,fetchImpl:e=fetch}){this.#e=t,this.#A=o,this.#t=i,this.#r=e}hooks(){return ty(this.#e)}#l(t={}){return{authorization:`Bearer ${this.#t}`,"x-harness-device-id":this.#A,...t}}async heartbeat(t,{signal:o}={}){let i;try{i=await this.#r(new URL(Qn.heartbeat,this.#e),{method:"POST",headers:this.#l({accept:"application/json","content-type":"application/json"}),body:JSON.stringify(t),signal:o,redirect:"error"})}catch(a){throw rT(a,o)?a:Vp("AI Office heartbeat request could not be completed",void 0,a)}if(!i.ok)throw tT("heartbeat",i);let e;try{e=await i.json()}catch(a){throw Vp("AI Office heartbeat returned invalid JSON","office-protocol-mismatch",a)}if(!e||typeof e!="object"||e.ok!==!0||e.protocolVersion!==Jp)throw Vp("AI Office heartbeat protocol does not match","office-protocol-mismatch");return e}async#o(t,{method:o="POST",body:i,leaseToken:e,signal:a}={}){let A=this.#l({accept:"application/json"});i!==void 0&&(A["content-type"]="application/json"),e&&(A["x-harness-lease-token"]=e);let r;try{r=await this.#r(new URL(t,this.#e),{method:o,headers:A,...i===void 0?{}:{body:JSON.stringify(i)},signal:a,redirect:"error",cache:"no-store"})}catch(s){throw rT(s,a)?s:Vp("AI Office Job request could not be completed",void 0,s)}if(!r.ok)throw tT("Job request",r);try{return await r.json()}catch(s){throw Vp("AI Office Job returned invalid JSON","office-protocol-mismatch",s)}}async getJob(t,o={}){return this.#o(Qn.job.replace(":id",t),{...o,method:"GET"})}async acceptJob(t,o={}){return this.#o(Qn.accept.replace(":id",t),o)}async renewJob(t,o,i={}){return this.#o(Qn.renew.replace(":id",t),{...i,leaseToken:o})}async progressJob(t,o,i,e={}){return this.#o(Qn.progress.replace(":id",t),{...e,leaseToken:o,body:i})}async requestApproval(t,o,i,e={}){return this.#o(Qn.approval.replace(":id",t),{...e,leaseToken:o,body:i})}async completeJob(t,o,i,e={}){return this.#o(Qn.result.replace(":id",t),{...e,leaseToken:o,body:i})}async failJob(t,o,i,e={}){return this.#o(Qn.fail.replace(":id",t),{...e,leaseToken:o,body:i})}async stream({signal:t,lastEventId:o,onOpen:i,onEvent:e}){let a=this.#l({accept:"text/event-stream"});o&&(a["last-event-id"]=o);let A;try{A=await this.#r(new URL(Qn.stream,this.#e),{method:"GET",headers:a,signal:t,redirect:"error",cache:"no-store"})}catch(c){throw rT(c,t)?c:Vp("AI Office SSE request could not be completed",void 0,c)}if(!A.ok)throw tT("stream",A);if(!A.headers.get("content-type")?.toLowerCase().includes("text/event-stream"))throw new Error("AI Office stream did not return text/event-stream");if(!A.body)throw new Error("AI Office stream returned no body");i?.();let r=A.body.getReader(),s=new TextDecoder,g="";for(;;){let{value:c,done:I}=await r.read();if(I)break;g=`${g}${s.decode(c,{stream:!0})}`.replaceAll(`\r `,` @@ -250,7 +250,7 @@ ${a}`:a;return VQ({limit:o?1800:1900,create:async a=>{let A=await this.#e.create ${t}`).digest("hex").slice(0,24).toUpperCase()}`}var ny=class{#e;#A;#t;#r;#l=null;#o=Promise.resolve();constructor({credentials:t,configStore:o,logger:i=console,createRuntime:e}){if(!t?.resolve||!t?.set||!t?.unset)throw new TypeError("AI Office requires the Harness credential provider");if(!o?.get||!o?.save||!o?.clear)throw new TypeError("AI Office requires a config store");this.#e=t,this.#A=o,this.#t=i,this.#r=e??(a=>new Zp(a))}async initialize(){let t=this.#A.get();if(t){let o=await this.#e.resolve(t.deviceTokenRef).catch(()=>{});o?.value&&await this.#a(t,o.value)}return this.status()}async configure(t={}){return this.#s(async()=>{let o=this.#A.get(),i=aT(t.baseUrl),e=aT(t.deviceId);if(!i||!e)throw new TypeError("Office URL and Device ID are required");let a=nC(i).origin,A=GBe(a,e),r=aT(t.deviceToken),s=await this.#e.resolve(A).catch(()=>{}),g=r??s?.value;if(!g||g.length<32)throw new TypeError("Device Token must contain at least 32 characters");let c=new Date().toISOString(),I=ry({version:1,baseUrl:a,deviceId:e,deviceTokenRef:A,maxConcurrency:t.maxConcurrency,heartbeatSeconds:t.heartbeatSeconds,workspaces:t.workspaces,instructionPresets:t.instructionPresets,createdAt:o?.createdAt??c,updatedAt:c});if(!I)throw new TypeError("AI Office connector configuration is invalid");await this.#e.set(A,g);try{await this.#A.save(I)}catch(d){throw s?.value?await this.#e.set(A,s.value).catch(()=>{}):await this.#e.unset(A).catch(()=>{}),d}return o?.deviceTokenRef&&o.deviceTokenRef!==A&&await this.#e.unset(o.deviceTokenRef).catch(()=>{}),await this.#a(I,g),this.status()})}async reconnect(){return this.#s(async()=>{let t=this.#A.get();if(!t)throw new Error("AI Office connector is not configured");return await this.#a(t),this.status()})}async test(){let t=this.#A.get();if(!t)throw new Error("AI Office connector is not configured");let o=await this.#i(t),i=this.#r({config:t,token:o,logger:this.#t});try{await i.testConnection(AbortSignal.timeout(1e4))}finally{await i.stop().catch(()=>{})}return{tested:!0,snapshot:await this.status()}}async remove(){return this.#s(async()=>{let t=this.#A.get();return await this.#n(),t?.deviceTokenRef&&await this.#e.unset(t.deviceTokenRef).catch(()=>{}),await this.#A.clear(),this.status()})}async status(){let t=this.#A.get();if(!t)return{schemaVersion:1,configured:!1,connected:!1,state:"unconfigured"};let o=await this.#e.resolve(t.deviceTokenRef).catch(()=>{}),i=this.#l?.status??null;return{schemaVersion:1,configured:!0,connected:i?.connected===!0,state:i?.state??(o?.value?"idle":"missing-token"),config:{protocolVersion:t.protocolVersion,baseUrl:t.baseUrl,deviceId:t.deviceId,maxConcurrency:t.maxConcurrency,heartbeatSeconds:t.heartbeatSeconds,workspaces:t.workspaces,instructionPresets:t.instructionPresets,hooks:ty(t.baseUrl)},health:i,tokenConfigured:!!o?.value}}async close(){await this.#o.catch(()=>{}),await this.#n()}async#i(t){let o=await this.#e.resolve(t.deviceTokenRef).catch(()=>{});if(!o?.value)throw new Error("AI Office Device Token is missing");return o.value}async#a(t,o){await this.#n();let i=o??await this.#i(t),e=this.#r({config:t,token:i,logger:this.#t});this.#l=e,e.start()}async#n(){let t=this.#l;this.#l=null,t&&await t.stop()}#s(t){let o=this.#o.then(t,t);return this.#o=o.then(()=>{},()=>{}),o}};function LBe(n={}){let t=oT(n.dshHome??process.env.DSH_HOME??iT(FBe(),".dsh")),o=oT(n.dataDir??iT(t,"integrations","dsh-office"));return{root:o,config:oT(n.configPath??iT(o,"config.json"))}}async function p3(n,t={},o={}){let i=aa(n,t),e=o.ConfigStore??ay,a=o.Controller??ny,A=o.Runtime??Zp,r=o.HarnessClient??ur,s=LBe(t),g=await new e(s.config).load(),c=typeof n.logger=="function"?n.logger("dsh-im:office"):n.logger??console,I=o.createHarness??(({workspace:B})=>new r({...i,workspace:B,autostart:!1,dshBin:t.dshBin??"dsh",rpcIdPrefix:"office",logPrefix:"dsh-im:office"})),d=new a({credentials:n.credentials,configStore:g,logger:c,createRuntime:B=>new A({...B,createHarness:I,...o.transport?{transport:o.transport}:{}})});return await d.initialize(),{controller:d,close:()=>d.close(),paths:s}}function nT(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function sC(n,t){return nT(n)&&Object.keys(n).every(o=>t.includes(o))}function UBe(n){return sC(n,["baseUrl","deviceId","deviceToken","maxConcurrency","heartbeatSeconds","workspaces","instructionPresets"])&&typeof n.baseUrl=="string"&&typeof n.deviceId=="string"&&(n.deviceToken===void 0||typeof n.deviceToken=="string")&&nT(n.workspaces)&&nT(n.instructionPresets)}function HBe(n){for(let t of["status","configure","reconnect","test","remove"])if(typeof n?.[t]!="function")throw new TypeError(`AI Office controller requires ${t}()`);return async(t,o,i)=>{if(i?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};try{let e;if(t===qp.status&&sC(o,[]))e=await n.status();else if(t===qp.configure&&UBe(o))e=await n.configure(o);else if(t===qp.reconnect&&sC(o,[]))e=await n.reconnect();else if(t===qp.test&&sC(o,[]))e=await n.test();else if(t===qp.remove&&sC(o,["confirm"])&&o.confirm===!0)e=await n.remove();else return{ok:!1,error:{code:"bad-request",message:"Invalid AI Office connector request."}};return{ok:!0,value:e}}catch(e){let a=e?.code==="invalid-device-token"?"invalid-device-token":e?.code==="office-hook-unavailable"?"office-hook-unavailable":"office-operation-failed",A=a==="invalid-device-token"?"AI Office Device Token \u65E0\u6548\u3002":a==="office-hook-unavailable"?"AI Office Hook \u5C1A\u672A\u4E0A\u7EBF\u6216\u5730\u5740\u4E0D\u6B63\u786E\u3002":e instanceof TypeError?e.message:"AI Office \u8FDE\u63A5\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002";return{ok:!1,error:{code:a,message:A}}}}}function sT(n,t,o){return n.connection.rpc.handle(g3,HBe(t),{authority:fr(o)})}async function d3(n,t={}){if(t.controller)return sT(n,t.controller,t.rpcAuthority);let o=await p3(n,t,t.internals??{}),i=sT(n,o.controller,t.rpcAuthority);return n.effect(()=>async()=>o.close(),"dsh-im: close AI Office connector"),i}var KBe=new Set(["starting","qr_ready","polling","slow_down","domain_switched"]);function xBe(n){let t=n?.client_id??n?.appId,o=n?.client_secret??n?.appSecret;if(typeof t!="string"||t.length===0||typeof o!="string"||o.length===0)throw new TypeError("Feishu registration returned invalid credentials");return{appId:t,appSecret:o,userInfo:n?.user_info??n?.userInfo}}async function YBe(n){return typeof n.status!="function"?{}:await n.status()}function jBe(n){return n?.connected===!0?!0:n?.ready===!0&&n?.feishuLongConnectionState==="connected"&&n?.harnessReachable===!0}var sy=class{#e;#A;#t;#r;#l=!1;#o=null;constructor({createProvisioningManager:t,credentialStore:o,connectionManager:i,registrationOptions:e={}}={}){if(typeof t!="function")throw new TypeError("createProvisioningManager is required");if(!o||typeof o.save!="function"||typeof o.clear!="function")throw new TypeError("credentialStore.save/clear are required");if(!i||typeof i.connect!="function"||typeof i.disconnect!="function")throw new TypeError("connectionManager.connect/disconnect are required");if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError("registrationOptions must be an object");if(this.#e=o,this.#A=i,this.#t=structuredClone(e),this.#r=t({onCredentials:a=>this.#i(a)}),!this.#r||typeof this.#r.start!="function"||typeof this.#r.status!="function"||typeof this.#r.cancel!="function")throw new TypeError("The provisioning manager must implement start/status/cancel")}async startRegistration(){return this.#o=null,await this.#r.start(structuredClone(this.#t)),this.status()}async cancelRegistration(){return await this.#r.cancel(),this.status()}async disconnect(){await this.#r.cancel(),await this.#A.disconnect();try{await this.#e.clear(),this.#l=!1,this.#o=null}catch{this.#o={code:"credential_removal_failed",message:"Unable to remove the Feishu credentials."}}return this.status()}async status(){let t=await this.#r.status(),o=await YBe(this.#A),i=jBe(o),e=this.#l;if(typeof this.#e.configured=="function")try{e=await this.#e.configured()}catch{e=this.#l}let a="unconfigured";return i?a="connected":KBe.has(t?.state)?a="registering":t?.state==="saving"?a="connecting":this.#o||t?.state==="error"?a="error":e&&(a="disconnected"),{phase:a,connected:i,configured:e,registration:t,connection:o,error:this.#o??t?.error??null}}async close(){await this.#r.cancel(),await this.#A.disconnect()}async#i(t){let o=xBe(t);try{await this.#e.save(o),this.#l=!0,await this.#A.connect(o),this.#o=null}catch{throw this.#o={code:"connection_failed",message:"The bot was created, but its connection could not be started."},new Error("Unable to activate the Feishu connection.")}}};function gT(n){return new sy(n)}import{homedir as uve}from"node:os";import{join as jd,resolve as kc}from"node:path";import{unlink as Bve}from"node:fs/promises";var iP={};Fr(iP,{AESCipher:()=>fu,AccessTokenError:()=>Fd,Aily:()=>vv,AppType:()=>us,CAppTicket:()=>Bu,CTenantAccessToken:()=>du,CardActionHandler:()=>Tv,Client:()=>Ym,ClientAssertionError:()=>ri,DefaultCache:()=>Hm,Domain:()=>Bs,EventDispatcher:()=>Jm,LarkChannel:()=>Xm,LarkChannelError:()=>Lt,LoggerLevel:()=>co,LoggerProxy:()=>Tc,WSClient:()=>zm,adaptDefault:()=>v0e,adaptExpress:()=>P0e,adaptKoa:()=>G0e,adaptKoaRouter:()=>F0e,createLarkChannel:()=>yRe,defaultHttpInstance:()=>Ld,defaultLogger:()=>Mg,generateChallenge:()=>yu,internalCache:()=>Qu,messageCard:()=>U0e,normalize:()=>A6,normalizeBotAdded:()=>$W,normalizeCardAction:()=>XW,normalizeComment:()=>e6,normalizeReaction:()=>zv,registerApp:()=>Z0e,withAll:()=>M0e,withHelpDeskCredential:()=>T0e,withTenantKey:()=>_0e,withTenantToken:()=>N0e,withUserAccessToken:()=>R0e});function gC(n,t){return function(){return n.apply(t,arguments)}}var{toString:JBe}=Object.prototype,{getPrototypeOf:Xp}=Object,{iterator:IC,toStringTag:C3}=Symbol,cy=(({hasOwnProperty:n})=>(t,o)=>n.call(t,o))(Object.prototype),cC=(n,t)=>{let o=n,i=[];for(;o!=null&&o!==Object.prototype;){if(i.indexOf(o)!==-1)return!1;if(i.push(o),cy(o,t))return!0;o=Xp(o)}return!1},qBe=(n,t)=>n!=null&&cC(n,t)?n[t]:void 0,IT=(n=>t=>{let o=JBe.call(t);return n[o]||(n[o]=o.slice(8,-1).toLowerCase())})(Object.create(null)),Go=n=>(n=n.toLowerCase(),t=>IT(t)===n),Iy=n=>t=>typeof t===n,{isArray:xI}=Array,YI=Iy("undefined");function $p(n){return n!==null&&!YI(n)&&n.constructor!==null&&!YI(n.constructor)&&Gi(n.constructor.isBuffer)&&n.constructor.isBuffer(n)}var u3=Go("ArrayBuffer");function zBe(n){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(n):t=n&&n.buffer&&u3(n.buffer),t}var VBe=Iy("string"),Gi=Iy("function"),B3=Iy("number"),ed=n=>n!==null&&typeof n=="object",WBe=n=>n===!0||n===!1,gy=n=>{if(!ed(n))return!1;let t=Xp(n);return(t===null||t===Object.prototype||Xp(t)===null)&&!cC(n,C3)&&!cC(n,IC)},ZBe=n=>{if(!ed(n)||$p(n))return!1;try{return Object.keys(n).length===0&&Object.getPrototypeOf(n)===Object.prototype}catch{return!1}},XBe=Go("Date"),$Be=Go("File"),efe=n=>!!(n&&typeof n.uri<"u"),Afe=n=>n&&typeof n.getParts<"u",tfe=Go("Blob"),rfe=Go("FileList"),afe=Go("Set"),ife=n=>ed(n)&&Gi(n.pipe);function ofe(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}var h3=ofe(),E3=typeof h3.FormData<"u"?h3.FormData:void 0,nfe=n=>{if(!n)return!1;if(E3&&n instanceof E3)return!0;let t=Xp(n);if(!t||t===Object.prototype||!Gi(n.append))return!1;let o=IT(n);return o==="formdata"||o==="object"&&Gi(n.toString)&&n.toString()==="[object FormData]"},sfe=Go("URLSearchParams"),[gfe,cfe,Ife,lfe]=["ReadableStream","Request","Response","Headers"].map(Go),pfe=n=>n.trim?n.trim():n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function lC(n,t,{allOwnKeys:o=!1}={}){if(n===null||typeof n>"u")return;let i,e;if(typeof n!="object"&&(n=[n]),xI(n))for(i=0,e=n.length;i0;)if(e=o[i],t===e.toLowerCase())return e;return null}var KI=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Q3=n=>!YI(n)&&n!==KI;function cT(...n){let{caseless:t,skipUndefined:o}=Q3(this)&&this||{},i={},e=(a,A)=>{if(A==="__proto__"||A==="constructor"||A==="prototype")return;let r=t&&typeof A=="string"&&f3(i,A)||A,s=cy(i,r)?i[r]:void 0;gy(s)&&gy(a)?i[r]=cT(s,a):gy(a)?i[r]=cT({},a):xI(a)?i[r]=a.slice():(!o||!YI(a))&&(i[r]=a)};for(let a=0,A=n.length;a(lC(t,(e,a)=>{o&&Gi(e)?Object.defineProperty(n,a,{__proto__:null,value:gC(e,o),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(n,a,{__proto__:null,value:e,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),n),hfe=n=>(n.charCodeAt(0)===65279&&(n=n.slice(1)),n),Efe=(n,t,o,i)=>{n.prototype=Object.create(t.prototype,i),Object.defineProperty(n.prototype,"constructor",{__proto__:null,value:n,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(n,"super",{__proto__:null,value:t.prototype}),o&&Object.assign(n.prototype,o)},Cfe=(n,t,o,i)=>{let e,a,A,r={};if(t=t||{},n==null)return t;do{for(e=Object.getOwnPropertyNames(n),a=e.length;a-- >0;)A=e[a],(!i||i(A,n,t))&&!r[A]&&(t[A]=n[A],r[A]=!0);n=o!==!1&&Xp(n)}while(n&&(!o||o(n,t))&&n!==Object.prototype);return t},ufe=(n,t,o)=>{n=String(n),(o===void 0||o>n.length)&&(o=n.length),o-=t.length;let i=n.indexOf(t,o);return i!==-1&&i===o},Bfe=n=>{if(!n)return null;if(xI(n))return n;let t=n.length;if(!B3(t))return null;let o=new Array(t);for(;t-- >0;)o[t]=n[t];return o},ffe=(n=>t=>n&&t instanceof n)(typeof Uint8Array<"u"&&Xp(Uint8Array)),Qfe=(n,t)=>{let i=(n&&n[IC]).call(n),e;for(;(e=i.next())&&!e.done;){let a=e.value;t.call(n,a[0],a[1])}},yfe=(n,t)=>{let o,i=[];for(;(o=n.exec(t))!==null;)i.push(o);return i},mfe=Go("HTMLFormElement"),Sfe=n=>n.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(o,i,e){return i.toUpperCase()+e}),{propertyIsEnumerable:wfe}=Object.prototype,Dfe=Go("RegExp"),y3=(n,t)=>{let o=Object.getOwnPropertyDescriptors(n),i={};lC(o,(e,a)=>{let A;(A=t(e,a,n))!==!1&&(i[a]=A||e)}),Object.defineProperties(n,i)},Ofe=n=>{y3(n,(t,o)=>{if(Gi(n)&&["arguments","caller","callee"].includes(o))return!1;let i=n[o];if(Gi(i)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")})}})},bfe=(n,t)=>{let o={},i=e=>{e.forEach(a=>{o[a]=!0})};return xI(n)?i(n):i(String(n).split(t)),o},Mfe=()=>{},_fe=(n,t)=>n!=null&&Number.isFinite(n=+n)?n:t;function Tfe(n){return!!(n&&Gi(n.append)&&n[C3]==="FormData"&&n[IC])}var Nfe=n=>{let t=new WeakSet,o=i=>{if(ed(i)){if(t.has(i))return;if($p(i))return i;if(!("toJSON"in i)){t.add(i);let e;if(afe(i)){e=[];for(let a of i){let A=o(a);!YI(A)&&e.push(A)}}else e=xI(i)?[]:{},lC(i,(a,A)=>{let r=o(a);!YI(r)&&(e[A]=r)});return t.delete(i),e}}return i};return o(n)},Rfe=Go("AsyncFunction"),kfe=n=>n&&(ed(n)||Gi(n))&&Gi(n.then)&&Gi(n.catch),m3=((n,t)=>n?setImmediate:t?((o,i)=>(KI.addEventListener("message",({source:e,data:a})=>{e===KI&&a===o&&i.length&&i.shift()()},!1),e=>{i.push(e),KI.postMessage(o,"*")}))(`axios@${Math.random()}`,[]):o=>setTimeout(o))(typeof setImmediate=="function",Gi(KI.postMessage)),vfe=typeof queueMicrotask<"u"?queueMicrotask.bind(KI):typeof process<"u"&&process.nextTick||m3,S3=n=>n!=null&&Gi(n[IC]),Pfe=n=>n!=null&&cC(n,IC)&&S3(n),Z={isArray:xI,isArrayBuffer:u3,isBuffer:$p,isFormData:nfe,isArrayBufferView:zBe,isString:VBe,isNumber:B3,isBoolean:WBe,isObject:ed,isPlainObject:gy,isEmptyObject:ZBe,isReadableStream:gfe,isRequest:cfe,isResponse:Ife,isHeaders:lfe,isUndefined:YI,isDate:XBe,isFile:$Be,isReactNativeBlob:efe,isReactNative:Afe,isBlob:tfe,isRegExp:Dfe,isFunction:Gi,isStream:ife,isURLSearchParams:sfe,isTypedArray:ffe,isFileList:rfe,forEach:lC,merge:cT,extend:dfe,trim:pfe,stripBOM:hfe,inherits:Efe,toFlatObject:Cfe,kindOf:IT,kindOfTest:Go,endsWith:ufe,toArray:Bfe,forEachEntry:Qfe,matchAll:yfe,isHTMLForm:mfe,hasOwnProperty:cy,hasOwnProp:cy,hasOwnInPrototypeChain:cC,getSafeProp:qBe,reduceDescriptors:y3,freezeMethods:Ofe,toObjectSet:bfe,toCamelCase:Sfe,noop:Mfe,toFiniteNumber:_fe,findKey:f3,global:KI,isContextDefined:Q3,isSpecCompliantForm:Tfe,toJSONObject:Nfe,isAsyncFn:Rfe,isThenable:kfe,setImmediate:m3,asap:vfe,isIterable:S3,isSafeIterable:Pfe};var Gfe=Z.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),w3=n=>{let t={},o,i,e;return n&&n.split(` `).forEach(function(A){e=A.indexOf(":"),o=A.substring(0,e).trim().toLowerCase(),i=A.substring(e+1).trim();let r=Z.hasOwnProp(t,o);!o||r&&Z.hasOwnProp(Gfe,o)||(o==="set-cookie"?r?t[o].push(i):t[o]=[i]:t[o]=r?t[o]+", "+i:i)}),t};function Ffe(n){let t=0,o=n.length;for(;tt;){let i=n.charCodeAt(o-1);if(i!==9&&i!==32)break;o-=1}return t===0&&o===n.length?n:n.slice(t,o)}var Lfe=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),Ufe=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function lT(n,t){return Z.isArray(n)?n.map(o=>lT(o,t)):Ffe(String(n).replace(t,""))}var D3=n=>lT(n,Lfe),Hfe=n=>lT(n,Ufe);function Ad(n){let t=Object.create(null);return Z.forEach(n.toJSON(),(o,i)=>{t[i]=Hfe(o)}),t}var O3=Symbol("internals");function pC(n){return n&&String(n).trim().toLowerCase()}function ly(n){return n===!1||n==null?n:Z.isArray(n)?n.map(ly):D3(String(n))}function Kfe(n){let t=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,i;for(;i=o.exec(n);)t[i[1]]=i[2];return t}var xfe=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function pT(n){let t=0,o=n.length;for(;tt;){let i=n.charCodeAt(o-1);if(i!==9&&i!==32)break;o-=1}return t===0&&o===n.length?n:n.slice(t,o)}function Yfe(n){let t=n.length-1;if(t<1||n.charCodeAt(0)!==34||n.charCodeAt(t)!==34)return n;let o="";for(let i=1;i=t))return n;o+=n[i]}return o}function jfe(n){let t=Object.create(null),o=String(n),i=0,e=!1,a=!1;function A(r){let s=pT(o.slice(i,r)),g=s.indexOf("=");if(g<1)return;let c=pT(s.slice(0,g));if(!xfe.test(c))return;let I=c.toLowerCase();if(I==="__proto__"||I==="constructor"||I==="prototype")return;let d=pT(s.slice(g+1));t[I]=Yfe(d)}for(let r=0;r/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(n.trim());function dT(n,t,o,i,e){if(Z.isFunction(i))return i.call(this,t,o);if(e&&(t=o),!!Z.isString(t)){if(Z.isString(i))return t.indexOf(i)!==-1;if(Z.isRegExp(i))return i.test(t)}}function qfe(n){return n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,o,i)=>o.toUpperCase()+i)}function zfe(n,t){let o=Z.toCamelCase(" "+t);["get","set","has"].forEach(i=>{Object.defineProperty(n,i+o,{__proto__:null,value:function(e,a,A){return this[i].call(this,t,e,a,A)},configurable:!0})})}var td=class{constructor(t){t&&this.set(t)}set(t,o,i){let e=this;function a(r,s,g){let c=pC(s);if(!c)return;let I=Z.findKey(e,c);(!I||e[I]===void 0||g===!0||g===void 0&&e[I]!==!1)&&(e[I||s]=ly(r))}let A=(r,s)=>Z.forEach(r,(g,c)=>a(g,c,s));if(Z.isPlainObject(t)||t instanceof this.constructor)A(t,o);else if(Z.isString(t)&&(t=t.trim())&&!Jfe(t))A(w3(t),o);else if(Z.isObject(t)&&Z.isSafeIterable(t)){let r=Object.create(null),s,g;for(let c of t){if(!Z.isArray(c))throw new TypeError("Object iterator must return a key-value pair");g=c[0],Z.hasOwnProp(r,g)?(s=r[g],r[g]=Z.isArray(s)?[...s,c[1]]:[s,c[1]]):r[g]=c[1]}A(r,o)}else t!=null&&a(o,t,i);return this}get(t,o){if(t=pC(t),t){let i=Z.findKey(this,t);if(i){let e=this[i];if(!o)return e;if(o===!0)return Kfe(e);if(Z.isFunction(o))return o.call(this,e,i);if(Z.isRegExp(o))return o.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,o){if(t=pC(t),t){let i=Z.findKey(this,t);return!!(i&&this[i]!==void 0&&(!o||dT(this,this[i],i,o)))}return!1}delete(t,o){let i=this,e=!1;function a(A){if(A=pC(A),A){let r=Z.findKey(i,A);r&&(!o||dT(i,i[r],r,o))&&(delete i[r],e=!0)}}return Z.isArray(t)?t.forEach(a):a(t),e}clear(t){let o=Object.keys(this),i=o.length,e=!1;for(;i--;){let a=o[i];(!t||dT(this,this[a],a,t,!0))&&(delete this[a],e=!0)}return e}normalize(t){let o=this,i={};return Z.forEach(this,(e,a)=>{let A=Z.findKey(i,a);if(A){o[A]=ly(e),delete o[a];return}let r=t?qfe(a):String(a).trim();r!==a&&delete o[a],o[r]=ly(e),i[r]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){let o=Object.create(null);return Z.forEach(this,(i,e)=>{i!=null&&i!==!1&&(o[e]=t&&Z.isArray(i)?i.join(", "):i)}),o}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,o])=>t+": "+o).join(` `)}getSetCookie(){let t=this.get("set-cookie");return Z.isArray(t)?t:t==null||t===!1?[]:[t]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static parseParameters(t){return jfe(t)}static concat(t,...o){let i=new this(t);return o.forEach(e=>i.set(e)),i}static accessor(t){let i=(this[O3]=this[O3]={accessors:{}}).accessors,e=this.prototype;function a(A){let r=pC(A);i[r]||(zfe(e,A),i[r]=!0)}return Z.isArray(t)?t.forEach(a):a(t),this}};td.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);Z.reduceDescriptors(td.prototype,({value:n},t)=>{let o=t[0].toUpperCase()+t.slice(1);return{get:()=>n,set(i){this[o]=i}}});Z.freezeMethods(td);var Ht=td;var dC="[REDACTED ****]";function Vfe(n){if(Z.hasOwnProp(n,"toJSON"))return!0;let t=Object.getPrototypeOf(n);for(;t&&t!==Object.prototype;){if(Z.hasOwnProp(t,"toJSON"))return!0;t=Object.getPrototypeOf(t)}return!1}function Wfe(n,t){let o=new Set(t.map(a=>String(a).toLowerCase())),i=[],e=a=>{if(a===null||typeof a!="object"||Z.isBuffer(a))return a;if(i.indexOf(a)!==-1)return;a instanceof Ht&&(a=a.toJSON()),i.push(a);let A;if(Z.isArray(a))A=[],a.forEach((r,s)=>{let g=e(r);Z.isUndefined(g)||(A[s]=g)});else{if(!Z.isPlainObject(a)&&Vfe(a))return i.pop(),a;A=Object.create(null);for(let[r,s]of Object.entries(a)){let g=o.has(r.toLowerCase())?dC:e(s);Z.isUndefined(g)||(A[r]=g)}}return i.pop(),A};return e(n)}function b3(n){try{return String(n)}catch{return""}}function Zfe(n){return n.errors.map(o=>{try{return o&&o.message?b3(o.message):b3(o)}catch{return""}}).filter(Boolean).join("; ")||n.name||"AggregateError"}var Qa=class n extends Error{static from(t,o,i,e,a,A){let r=t.message;!r&&Z.isArray(t.errors)&&t.errors.length&&(r=Zfe(t));let s=new n(r,o||t.code,i,e,a);return Object.defineProperty(s,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),s.name=t.name,t.status!=null&&s.status==null&&(s.status=t.status),A&&Object.assign(s,A),s}constructor(t,o,i,e,a){super(t),Object.defineProperty(this,"message",{__proto__:null,value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,o&&(this.code=o),i&&(this.config=i),e&&(this.request=e),a&&(this.response=a,this.status=a.status)}toJSON(){let t=this.config,o=t&&Z.hasOwnProp(t,"redact")?t.redact:void 0,i=Z.isArray(o)&&o.length>0?Wfe(t,o):Z.toJSONObject(t);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:i,code:this.code,status:this.status}}};Qa.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";Qa.ERR_BAD_OPTION="ERR_BAD_OPTION";Qa.ECONNABORTED="ECONNABORTED";Qa.ETIMEDOUT="ETIMEDOUT";Qa.ECONNREFUSED="ECONNREFUSED";Qa.ERR_NETWORK="ERR_NETWORK";Qa.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";Qa.ERR_DEPRECATED="ERR_DEPRECATED";Qa.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";Qa.ERR_BAD_REQUEST="ERR_BAD_REQUEST";Qa.ERR_CANCELED="ERR_CANCELED";Qa.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";Qa.ERR_INVALID_URL="ERR_INVALID_URL";Qa.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";var De=Qa;var _J=qe(MJ(),1),yy=_J.default;var my={isBufferAvailable(){return typeof Buffer<"u"},from(n){return Buffer.from(n)}};var FT=100;function GT(n){return Z.isPlainObject(n)||Z.isArray(n)}function TJ(n){return Z.endsWith(n,"[]")?n.slice(0,-2):n}function PT(n,t,o){return n?n.concat(t).map(function(e,a){return e=TJ(e),!o&&a?"["+e+"]":e}).join(o?".":""):t}function Pye(n){return Z.isArray(n)&&!n.some(GT)}var Gye=Z.toFlatObject(Z,{},null,function(t){return/^is[A-Z]/.test(t)});function Fye(n,t,o){if(!Z.isObject(n))throw new TypeError("target must be an object");t=t||new(yy||FormData),o=Z.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,function(_,T){return!Z.isUndefined(T[_])});let i=o.metaTokens,e=o.visitor||f,a=o.dots,A=o.indexes,r=o.Blob||typeof Blob<"u"&&Blob,s=o.maxDepth===void 0?FT:o.maxDepth,g=r&&Z.isSpecCompliantForm(t),c=[];if(!Z.isFunction(e))throw new TypeError("visitor must be a function");function I(m){if(m===null)return"";if(Z.isDate(m))return m.toISOString();if(Z.isBoolean(m))return m.toString();if(!g&&Z.isBlob(m))throw new De("Blob is not supported. Use a Buffer instead.");if(Z.isArrayBuffer(m)||Z.isTypedArray(m)){if(g&&typeof r=="function")return new r([m]);if(my&&my.isBufferAvailable())return my.from(m);throw new De("Blob is not supported. Use a Buffer instead.",De.ERR_NOT_SUPPORT)}return m}function d(m){if(m>s)throw new De("Object is too deeply nested ("+m+" levels). Max depth: "+s,De.ERR_FORM_DATA_DEPTH_EXCEEDED)}function B(m,_){if(s===1/0)return JSON.stringify(m);let T=[];return JSON.stringify(m,function(K,L){if(!Z.isObject(L))return L;for(;T.length&&T[T.length-1]!==this;)T.pop();return T.push(L),d(_+T.length-1),L})}function f(m,_,T){let R=m;if(Z.isReactNative(t)&&Z.isReactNativeBlob(m))return t.append(PT(T,_,a),I(m)),!1;if(m&&!T&&typeof m=="object"){if(Z.endsWith(_,"{}"))_=i?_:_.slice(0,-2),m=B(m,1);else if(Z.isArray(m)&&Pye(m)||(Z.isFileList(m)||Z.endsWith(_,"[]"))&&(R=Z.toArray(m)))return _=TJ(_),R.forEach(function(L,U){!(Z.isUndefined(L)||L===null)&&t.append(A===!0?PT([_],U,a):A===null?_:_+"[]",I(L))}),!1}return GT(m)?!0:(t.append(PT(T,_,a),I(m)),!1)}let Q=Object.assign(Gye,{defaultVisitor:f,convertValue:I,isVisitable:GT});function y(m,_,T=0){if(!Z.isUndefined(m)){if(d(T),c.indexOf(m)!==-1)throw new Error("Circular reference detected in "+_.join("."));c.push(m),Z.forEach(m,function(K,L){(!(Z.isUndefined(K)||K===null)&&e.call(t,K,Z.isString(L)?L.trim():L,_,Q))===!0&&y(K,_?_.concat(L):[L],T+1)}),c.pop()}}if(!Z.isObject(n))throw new TypeError("data must be an object");return y(n),t}var uc=Fye;function NJ(n){let t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(n).replace(/[!'()~]|%20/g,function(i){return t[i]})}function RJ(n,t){this._pairs=[],n&&uc(n,this,t)}var kJ=RJ.prototype;kJ.append=function(t,o){this._pairs.push([t,o])};kJ.toString=function(t){let o=t?i=>t.call(this,i,NJ):NJ;return this._pairs.map(function(e){return o(e[0])+"="+o(e[1])},"").join("&")};var vJ=RJ;function Lye(n){return encodeURIComponent(n).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function JI(n,t,o){if(!t)return n;n=n||"";let i=Z.isFunction(o)?{serialize:o}:o,e=Z.getSafeProp(i,"encode")||Lye,a=Z.getSafeProp(i,"serialize"),A;if(a?A=a(t,i):A=Z.isURLSearchParams(t)?t.toString():new vJ(t,i).toString(e),A){let r=n.indexOf("#");r!==-1&&(n=n.slice(0,r)),n+=(n.indexOf("?")===-1?"?":"&")+A}return n}var LT=class{constructor(){this.handlers=[]}use(t,o,i){return this.handlers.push({fulfilled:t,rejected:o,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){Z.forEach(this.handlers,function(i){i!==null&&t(i)})}},UT=LT;var Bc={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0};import Hye from"crypto";import Uye from"url";var PJ=Uye.URLSearchParams;var HT="abcdefghijklmnopqrstuvwxyz",GJ="0123456789",FJ={DIGIT:GJ,ALPHA:HT,ALPHA_DIGIT:HT+HT.toUpperCase()+GJ},Kye=(n=16,t=FJ.ALPHA_DIGIT)=>{let o="",{length:i}=t,e=new Uint32Array(n);Hye.randomFillSync(e);for(let a=0;axT,hasStandardBrowserEnv:()=>xye,hasStandardBrowserWebWorkerEnv:()=>Yye,navigator:()=>KT,origin:()=>jye});var xT=typeof window<"u"&&typeof document<"u",KT=typeof navigator=="object"&&navigator||void 0,xye=xT&&(!KT||["ReactNative","NativeScript","NS"].indexOf(KT.product)<0),Yye=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",jye=xT&&window.location.href||"http://localhost";var Bt={...YT,...LJ};function jT(n,t){return uc(n,new Bt.classes.URLSearchParams,{visitor:function(o,i,e,a){return Bt.isNode&&Z.isBuffer(o)?(this.append(i,o.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...t})}var UJ=FT;function HJ(n){if(n>UJ)throw new De("FormData field is too deeply nested ("+n+" levels). Max depth: "+UJ,De.ERR_FORM_DATA_DEPTH_EXCEEDED)}function Jye(n){let t=[],o=/[^.[\]]+|\[([^.[\]]*)]/g,i;for(;(i=o.exec(n))!==null;)HJ(t.length),t.push(i[0]==="[]"?"":i[1]||i[0]);return t}function qye(n){let t={},o=Object.keys(n),i,e=o.length,a;for(i=0;i=o.length;return A=!A&&Z.isArray(e)?e.length:A,s?(Z.hasOwnProp(e,A)?e[A]=Z.isArray(e[A])?e[A].concat(i):[e[A],i]:e[A]=i,!r):((!Z.hasOwnProp(e,A)||!Z.isObject(e[A]))&&(e[A]=[]),t(o,i,e[A],a)&&Z.isArray(e[A])&&(e[A]=qye(e[A])),!r)}if(Z.isFormData(n)&&Z.isFunction(n.entries)){let o={};return Z.forEachEntry(n,(i,e)=>{t(Jye(i),e,o,0)}),o}return null}var Sy=zye;var nd=(n,t)=>n!=null&&Z.hasOwnProp(n,t)?n[t]:void 0;function Vye(n,t,o){if(Z.isString(n))try{return(t||JSON.parse)(n),Z.trim(n)}catch(i){if(i.name!=="SyntaxError")throw i}return(o||JSON.stringify)(n)}var JT={transitional:Bc,adapter:["xhr","http","fetch"],transformRequest:[function(t,o){let i=o.getContentType()||"",e=i.indexOf("application/json")>-1,a=Z.isObject(t);if(a&&Z.isHTMLForm(t)&&(t=new FormData(t)),Z.isFormData(t))return e?JSON.stringify(Sy(t)):t;if(Z.isArrayBuffer(t)||Z.isBuffer(t)||Z.isStream(t)||Z.isFile(t)||Z.isBlob(t)||Z.isReadableStream(t))return t;if(Z.isArrayBufferView(t))return t.buffer;if(Z.isURLSearchParams(t))return o.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let r;if(a){let s=nd(this,"formSerializer");if(i.indexOf("application/x-www-form-urlencoded")>-1)return jT(t,s).toString();if((r=Z.isFileList(t))||i.indexOf("multipart/form-data")>-1){let g=nd(this,"env"),c=g&&g.FormData;return uc(r?{"files[]":t}:t,c&&new c,s)}}return a||e?(o.setContentType("application/json",!1),Vye(t)):t}],transformResponse:[function(t){let o=nd(this,"transitional")||JT.transitional,i=o&&o.forcedJSONParsing,e=nd(this,"responseType"),a=e==="json";if(Z.isResponse(t)||Z.isReadableStream(t))return t;if(t&&Z.isString(t)&&(i&&!e||a)){let r=!(o&&o.silentJSONParsing)&&a;try{return JSON.parse(t,nd(this,"parseReviver"))}catch(s){if(r)throw s.name==="SyntaxError"?De.from(s,De.ERR_BAD_RESPONSE,this,null,nd(this,"response")):s}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Bt.classes.FormData,Blob:Bt.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Z.forEach(["delete","get","head","post","put","patch","query"],n=>{JT.headers[n]={}});var sd=JT;function fC(n,t){let o=this||sd,i=t||o,e=Ht.from(i.headers),a=i.data;return Z.forEach(n,function(r){a=r.call(o,a,e.normalize(),t?t.status:void 0)}),e.normalize(),a}function QC(n){return!!(n&&n.__CANCEL__)}var qT=class extends De{constructor(t,o,i){super(t??"canceled",De.ERR_CANCELED,o,i),this.name="CanceledError",this.__CANCEL__=!0}},oo=qT;function cs(n,t,o){let i=o.config.validateStatus;!o.status||!i||i(o.status)?n(o):t(new De("Request failed with status code "+o.status,o.status>=400&&o.status<500?De.ERR_BAD_REQUEST:De.ERR_BAD_RESPONSE,o.config,o.request,o))}function zT(n){return typeof n!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(n)}function VT(n,t){if(!t)return n;let o=n.length;for(;o>0&&n.charCodeAt(o-1)===47;)o--;return n.slice(0,o)+"/"+t.replace(/^\/+/,"")}var Wye=/^https?:(?!\/\/)/i,Zye=/[\t\n\r]/g;function Xye(n){let t=0;for(;t`${o}${i}${dC}`)}function Ame(n){let t=n.replace(/^(https?:\/{0,2})[^/?#]*@/i,`$1${dC}@`),o=t.indexOf("#"),e=(o===-1?t:t.slice(0,o)).replace(/([?&][^=&#]*=)[^&#]*/g,`$1${dC}`);return o===-1?e:`${e}#${eme(t.slice(o+1))}`}function KJ(n,t){if(typeof n=="string"){let o=$ye(n);if(Wye.test(o))throw new De(`Invalid URL ${JSON.stringify(Ame(o))}: missing "//" after protocol`,De.ERR_INVALID_URL,t)}}function qI(n,t,o,i){KJ(t,i);let e=!zT(t);return n&&(e||o===!1)?(KJ(n,i),VT(n,t)):t}var tme={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};function rme(n){try{return new URL(n)}catch{return null}}function xJ(n){var t=(typeof n=="string"?rme(n):n)||{},o=t.protocol,i=t.host,e=t.port;if(typeof i!="string"||!i||typeof o!="string"||(o=o.split(":",1)[0],i=i.replace(/:\d*$/,""),e=parseInt(e)||tme[o]||0,!ame(i,e)))return"";var a=WT(o+"_proxy")||WT("all_proxy");return a&&a.indexOf("://")===-1&&(a=o+"://"+a),a}function ame(n,t){var o=WT("no_proxy").toLowerCase();return o?o==="*"?!1:o.split(/[,\s]/).every(function(i){if(!i)return!0;var e=i.match(/^(.+):(\d+)$/),a=e?e[1]:i,A=e?parseInt(e[2]):0;return A&&A!==t?!0:/^[.*]/.test(a)?(a.charAt(0)==="*"&&(a=a.slice(1)),!n.endsWith(a)):n!==a}):!0}function WT(n){return process.env[n.toLowerCase()]||process.env[n.toUpperCase()]||""}var _0=qe(o0(),1),Uq=qe(Iq(),1);import Fq from"http";import Lq from"https";import RSe from"http2";import kSe from"util";import{resolve as bq}from"path";import Fo from"zlib";var Eg="1.19.0";function _C(n){let t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(n);return t&&t[1]||""}var aSe=/^([^,;]+\/[^,;]+)?((?:;[^,;=]+=[^,;]+)*)(;base64)?,([\s\S]*)$/;function B0(n,t,o){let i=o&&o.Blob||Bt.classes.Blob,e=_C(n);if(t===void 0&&i&&(t=!0),e==="data"){n=e.length?n.slice(e.length+1):n;let a=aSe.exec(n);if(!a)throw new De("Invalid URL",De.ERR_INVALID_URL);let A=a[1],r=a[2],s=a[3]?"base64":"utf8",g=a[4],c="";A?c=r?A+r:A:r&&(c="text/plain"+r);let I=s==="base64"?Buffer.from(g,"base64"):Buffer.from(decodeURIComponent(g),s);if(t){if(!i)throw new De("Blob is not supported",De.ERR_NOT_SUPPORT);return new i([I],{type:c})}return I}throw new De("Unsupported protocol "+e,De.ERR_NOT_SUPPORT)}import mn from"stream";var iSe=["content-type","content-length"];function TC(n,t,o){if(o!=="content-only"){n.set(t);return}Object.entries(t||{}).forEach(([i,e])=>{iSe.includes(i.toLowerCase())&&n.set(i,e)})}import oSe from"stream";var f0=Symbol("internals"),Q0=class extends oSe.Transform{constructor(t){t=Z.toFlatObject(t,{maxRate:0,chunkSize:64*1024,minChunkSize:100,timeWindow:500,ticksRate:2,samplesCount:15},null,(i,e)=>!Z.isUndefined(e[i])),super({readableHighWaterMark:t.chunkSize});let o=this[f0]={timeWindow:t.timeWindow,chunkSize:t.chunkSize,maxRate:t.maxRate,minChunkSize:t.minChunkSize,bytesSeen:0,isCaptured:!1,notifiedBytesLoaded:0,ts:Date.now(),bytes:0,onReadCallback:null};this.on("newListener",i=>{i==="progress"&&(o.isCaptured||(o.isCaptured=!0))})}_read(t){let o=this[f0];return o.onReadCallback&&o.onReadCallback(),super._read(t)}_transform(t,o,i){let e=this[f0],a=e.maxRate,A=this.readableHighWaterMark,r=e.timeWindow,s=1e3/r,g=a/s,c=e.minChunkSize!==!1?Math.max(e.minChunkSize,g*.01):0,I=(B,f)=>{let Q=Buffer.byteLength(B);e.bytesSeen+=Q,e.bytes+=Q,e.isCaptured&&this.emit("progress",e.bytesSeen),this.push(B)?process.nextTick(f):e.onReadCallback=()=>{e.onReadCallback=null,process.nextTick(f)}},d=(B,f)=>{let Q=Buffer.byteLength(B),y=null,m=A,_,T=0;if(a){let R=Date.now();(!e.ts||(T=R-e.ts)>=r)&&(e.ts=R,_=g-e.bytes,e.bytes=_<0?-_:0,T=0),_=g-e.bytes}if(a){if(_<=0)return setTimeout(()=>{f(null,B)},r-T);_m&&Q-m>c&&(y=B.subarray(m),B=B.subarray(0,m)),I(B,y?()=>{process.nextTick(f,null,y)}:f)};d(t,function B(f,Q){if(f)return i(f);Q?d(Q,B):i(null)})}},y0=Q0;import{EventEmitter as vSe}from"events";import sSe from"util";import{Readable as gSe}from"stream";var{asyncIterator:lq}=Symbol,nSe=async function*(n){n.stream?yield*n.stream():n.arrayBuffer?yield await n.arrayBuffer():n[lq]?yield*n[lq]():yield n},_y=nSe;var cSe=Bt.ALPHABET.ALPHA_DIGIT+"-_",NC=typeof TextEncoder=="function"?new TextEncoder:new sSe.TextEncoder,XI=`\r -`,ISe=NC.encode(XI),lSe=2,m0=class{constructor(t,o){let{escapeName:i}=this.constructor,e=Z.isString(o),a=`Content-Disposition: form-data; name="${i(t)}"${!e&&o.name?`; filename="${i(o.name)}"`:""}${XI}`;if(e)o=NC.encode(String(o).replace(/\r?\n|\r\n?/g,XI));else{let A=String(o.type||"application/octet-stream").replace(/[\r\n]/g,"");a+=`Content-Type: ${A}${XI}`}this.headers=NC.encode(a+XI),this.contentLength=e?o.byteLength:o.size,this.size=this.headers.byteLength+this.contentLength+lSe,this.name=t,this.value=o}async*encode(){yield this.headers;let{value:t}=this;Z.isTypedArray(t)?yield t:yield*_y(t),yield ISe}static escapeName(t){return String(t).replace(/[\r\n"]/g,o=>({"\r":"%0D","\n":"%0A",'"':"%22"})[o])}},pSe=(n,t,o)=>{let{tag:i="form-data-boundary",size:e=25,boundary:a=i+"-"+Bt.generateString(e,cSe)}=o||{};if(!Z.isFormData(n))throw new TypeError("FormData instance required");if(a.length<1||a.length>70)throw new Error("boundary must be 1-70 characters long");let A=NC.encode("--"+a+XI),r=NC.encode("--"+a+"--"+XI),s=r.byteLength,g=Array.from(n.entries()).map(([I,d])=>{let B=new m0(I,d);return s+=B.size,B});s+=A.byteLength*g.length,s=Z.toFiniteNumber(s);let c={"Content-Type":`multipart/form-data; boundary=${a}`};return Number.isFinite(s)&&(c["Content-Length"]=s),t&&t(c),gSe.from((async function*(){for(let I of g)yield A,yield*I.encode();yield r})())},pq=pSe;import dSe from"stream";var S0=class extends dSe.Transform{__transform(t,o,i){this.push(t),i()}_transform(t,o,i){if(t.length!==0&&(this._transform=this.__transform,t[0]!==120)){let e=Buffer.alloc(2);e[0]=120,e[1]=156,this.push(e,o)}this.__transform(t,o,i)}},dq=S0;import hSe from"http2";import ESe from"util";var w0=class{constructor(){this.sessions=Object.create(null)}getSession(t,o){o=Object.assign({sessionTimeout:1e3},o);let i=this.sessions[t];if(i){let I=i.length;for(let d=0;d{if(a)return;a=!0,A&&(clearTimeout(A),A=null);let I=i,d=I.length,B=d;for(;B--;)if(I[B][0]===e){d===1?delete this.sessions[t]:I.splice(B,1),e.closed||e.close();return}},s=e.request,{sessionTimeout:g}=o;if(g!=null){let I=0;e.request=function(){let d=s.apply(this,arguments);return I++,A&&(clearTimeout(A),A=null),d.once("close",()=>{--I||(A=setTimeout(()=>{A=null,r()},g))}),d}}e.once("close",r);let c=[e,o];return i?i.push(c):i=this.sessions[t]=[c],e}},hq=w0;var CSe=(n,t)=>Z.isAsyncFn(n)?function(...o){let i=o.pop();n.apply(this,o).then(e=>{try{t?i(null,...t(e)):i(null,e)}catch(a){i(a)}},i)}:n,Eq=CSe;var uSe=new Set(["localhost","0.0.0.0"]),Bq=n=>{let t=n.split(".");return t.length!==4||t[0]!=="127"?!1:t.every(o=>/^\d+$/.test(o)&&Number(o)>=0&&Number(o)<=255)},D0=n=>{if(/^0[xX][0-9a-fA-F]+$/.test(n)){let t=parseInt(n.slice(2),16);return Number.isFinite(t)?t:null}if(n.length>1&&/^0[0-7]+$/.test(n)){let t=parseInt(n,8);return Number.isFinite(t)?t:null}if(n.length>1&&/^0[0-9]+$/.test(n))return null;if(/^[0-9]+$/.test(n)){let t=parseInt(n,10);return Number.isFinite(t)?t:null}return null},BSe=n=>{if(typeof n!="string"||!n||n.indexOf(":")!==-1)return n;let t=n;if(t.charAt(0)==="["&&t.charAt(t.length-1)==="]"&&(t=t.slice(1,-1)),t=t.replace(/\.+$/,""),!/^[0-9.xXa-fA-F]+$/.test(t))return n;let o=t.split(".");if(o.some(c=>c===""))return n;if(o.length===4){let c=o.map(D0);return c.some(I=>I===null||I<0||I>255)?n:c.join(".")}if(o.length>4||o.length===1)return n;let i=o.slice(0,-1),e=o[o.length-1],a=4-i.length,A=D0(e);if(A===null)return n;let r=(1<<8*a)-1;if(A<0||A>r)return n;let s=new Array(a).fill(0);for(let c=a-1,I=A;c>=0;c--,I>>=8)s[c]=I&255;let g=i.map(D0);return g.some(c=>c===null||c<0||c>255)?n:[...g,...s].join(".")},O0=n=>/^0{1,4}$/.test(n),fSe=n=>{if(n==="::")return!0;let t=n.indexOf("::");if(t!==-1){if(t!==n.lastIndexOf("::"))return!1;let i=n.slice(0,t),e=n.slice(t+2),a=i?i.split(":"):[],A=e?e.split(":"):[];return a.length+A.length<8&&a.every(O0)&&A.every(O0)}let o=n.split(":");return o.length===8&&o.every(O0)},QSe=n=>{if(n==="::1")return!0;let t=n.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/i);if(t)return Bq(t[1]);let o=n.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);if(o){let e=parseInt(o[1],16);return e>=32512&&e<=32767}let i=n.split(":");if(i.length===8){for(let e=0;e<7;e++)if(!/^0+$/.test(i[e]))return!1;return/^0*1$/.test(i[7])}return!1},Cq=n=>n?uSe.has(n)||Bq(n)||fSe(n)?!0:QSe(n):!1,ySe={http:80,https:443,ws:80,wss:443,ftp:21},mSe=n=>{let t=n,o=0;if(t.charAt(0)==="["){let a=t.indexOf("]");if(a!==-1){let A=t.slice(1,a),r=t.slice(a+1);return r.charAt(0)===":"&&/^\d+$/.test(r.slice(1))&&(o=Number.parseInt(r.slice(1),10)),[A,o]}}let i=t.indexOf(":"),e=t.lastIndexOf(":");return i!==-1&&i===e&&/^\d+$/.test(t.slice(e+1))&&(o=Number.parseInt(t.slice(e+1),10),t=t.slice(0,e)),[t,o]},SSe=/^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:(\d+\.\d+\.\d+\.\d+)$/i,wSe=/^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i,DSe=n=>{if(typeof n!="string"||n.indexOf(":")===-1)return n;let t=n.match(SSe);if(t)return t[1];let o=n.match(wSe);if(o){let i=parseInt(o[1],16),e=parseInt(o[2],16);return`${i>>8}.${i&255}.${e>>8}.${e&255}`}return n},uq=n=>{if(!n)return n;n.charAt(0)==="["&&n.charAt(n.length-1)==="]"&&(n=n.slice(1,-1));let t=n.replace(/\.+$/,""),o=BSe(t);return o!==t?o:DSe(t)};function b0(n){let t;try{t=new URL(n)}catch{return!1}let o=(process.env.no_proxy||process.env.NO_PROXY||"").toLowerCase();if(!o)return!1;if(o==="*")return!0;let i=Number.parseInt(t.port,10)||ySe[t.protocol.split(":",1)[0]]||0,e=uq(t.hostname.toLowerCase());return o.split(/[\s,]+/).some(a=>{if(!a)return!1;if(a==="*")return!0;let[A,r]=mSe(a);return A=uq(A),!A||r&&r!==i?!1:(A.charAt(0)==="*"&&(A=A.slice(1)),A.charAt(0)==="."?e.endsWith(A):e===A||Cq(e)&&Cq(A))})}function OSe(n,t){n=n||10;let o=new Array(n),i=new Array(n),e=0,a=0,A;return t=t!==void 0?t:1e3,function(s){let g=Date.now(),c=i[a];A||(A=g),o[e]=s,i[e]=g;let I=a,d=0;for(;I!==e;)d+=o[I++],I=I%n;if(e=(e+1)%n,e===a&&(a=(a+1)%n),g-A{o=c,e=null,a&&(clearTimeout(a),a=null),n(...g)};return[(...g)=>{let c=Date.now(),I=c-o;I>=i?A(g,c):(e=g,a||(a=setTimeout(()=>{a=null,A(e)},i-I)))},()=>e&&A(e)]}var Qq=bSe;var Cg=(n,t,o=3)=>{let i=0,e=fq(50,250);return Qq(a=>{if(!a||typeof a.loaded!="number")return;let A=a.loaded,r=a.lengthComputable?a.total:void 0,s=Math.max(0,r!=null?Math.min(A,r):A),g=Math.max(0,s-i),c=e(g);i=Math.max(i,s);let I={loaded:s,total:r,progress:r?s/r:void 0,bytes:g,rate:c||void 0,estimated:c&&r?(r-s)/c:void 0,event:a,lengthComputable:r!=null,[t?"download":"upload"]:!0};n(I)},o)},pd=(n,t)=>{let o=n!=null;return[i=>t[0]({lengthComputable:o,total:n,loaded:i}),t[1]]},dd=(n,t=Z.asap)=>(...o)=>t(()=>n(...o));var yq=n=>n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102,Sq=(n,t,o)=>t+2n<=57?n-48:(n&223)-55,MSe=n=>n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===43||n===47||n===45||n===95,_Se=n=>n===9||n===10||n===12||n===13||n===32,TSe=n=>{let t=Math.floor(n/4),o=n%4;return t*3+(o===2?1:o===3?2:0)},wq=n=>{let t=n.length,o=0;return t>0&&n.charCodeAt(t-1)===61&&(o++,t>1&&n.charCodeAt(t-2)===61&&o++),Math.floor((t-o)*3/4)},NSe=n=>{let t=n.length,o=0,i=0,e=!1;for(let a=0;a0){e=!0;continue}o++}}return e||i>2||i>0&&(o+i)%4!==0||o%4===1?wq(n):TSe(o)},Dq=(n,t)=>{if(!n||typeof n!="string"||!n.startsWith("data:"))return 0;let o=n.indexOf(",");if(o<0)return 0;let i=n.slice(5,o),e=n.slice(o+1);if(/;base64/i.test(i))return t(e);let A=0;for(let r=0,s=e.length;r=55296&&g<=56319&&r+1=56320&&c<=57343?(A+=4,r++):A+=3}else A+=3}return A};function M0(n){let t=typeof n=="string"?n.indexOf("#"):-1;return Dq(t===-1?n:n.slice(0,t),NSe)}function Oq(n){return Dq(n,wq)}var Mq={flush:Fo.constants.Z_SYNC_FLUSH,finishFlush:Fo.constants.Z_SYNC_FLUSH},PSe={flush:Fo.constants.BROTLI_OPERATION_FLUSH,finishFlush:Fo.constants.BROTLI_OPERATION_FLUSH},GSe={flush:Fo.constants.ZSTD_e_flush,finishFlush:Fo.constants.ZSTD_e_flush},Hq=Z.isFunction(Fo.createBrotliDecompress),Kq=Z.isFunction(Fo.createZstdDecompress),xq="gzip, compress, deflate"+(Hq?", br":""),FSe=xq+(Kq?", zstd":""),_q=typeof process<"u"&&process.nextTick?process.nextTick.bind(process):Z.asap,{http:LSe,https:USe}=Uq.default,T0=/https:?/,Tq=Symbol("axios.http.socketListener"),Ty=Symbol("axios.http.currentReq"),Yq=Symbol("axios.http.installedTunnel"),HSe=new Map,Nq=new WeakMap,Rq={22:21,24:5};function KSe(n=process.versions&&process.versions.node){if(!n)return!1;let[t,o]=n.split(".").map(i=>Number(i));return!Number.isInteger(t)||!Number.isInteger(o)?!1:t>24?!0:Rq[t]!=null&&o>=Rq[t]}function xSe(n,t=process.versions&&process.versions.node){if(!KSe(t))return!1;let o=n&&n.options;return!!(o&&Z.hasOwnProp(o,"proxyEnv")&&o.proxyEnv!=null)}function YSe(n,t,o){return T0.test(n.protocol)?o||Lq.globalAgent:t||Fq.globalAgent}function jSe(n,t){let o=n.protocol+"//"+n.hostname+":"+(n.port||"")+"#"+(n.auth||""),i=t?Nq.get(t)||Nq.set(t,new Map).get(t):HSe,e=i.get(o);if(e)return e;let a=t&&t.options?{...t.options,...n}:n;if(e=new _0.default(a),t&&t.options){let A={...t.options},r=e.callback;e.callback=function(g,c){return r.call(this,g,{...A,...c})}}return e[Yq]=!0,i.set(o,e),e}var kq=Bt.protocols.map(n=>n+":"),vq=n=>{if(!Z.isString(n))return n;try{return decodeURIComponent(n)}catch{return n}},Pq=(n,[t,o])=>(n.on("end",o).on("error",o),t),JSe=new hq;function qSe(n,t,o){n.beforeRedirects.proxy&&n.beforeRedirects.proxy(n),n.beforeRedirects.auth&&n.beforeRedirects.auth(n),n.beforeRedirects.sensitiveHeaders&&n.beforeRedirects.sensitiveHeaders(n,o),n.beforeRedirects.config&&n.beforeRedirects.config(n,t,o)}function zSe(n,t){n&&Object.keys(n).forEach(o=>{t.has(o.toLowerCase())&&delete n[o]})}function VSe(n,t){if(!t)return!1;try{return new URL(t.url).origin===new URL(n.href).origin}catch{return!1}}function jq(n,t,o,i,e,a){let A=t,r=YSe(n,a,e);if(!A&&A!==!1&&!xSe(r)){let s=xJ(o);s&&(b0(o)||(A=new URL(s)))}if(i&&n.headers)for(let s of Object.keys(n.headers))s.toLowerCase()==="proxy-authorization"&&delete n.headers[s];if(i&&n.agent&&n.agent[Yq]&&(n.agent=void 0),A){let s=A instanceof URL,g=f=>s||Z.hasOwnProp(A,f)?A[f]:void 0,c=g("username"),I=g("password"),d=Z.hasOwnProp(A,"auth")?A.auth:void 0;if(c&&(d=(c||"")+":"+(I||"")),d){let f=typeof d=="object",Q=f&&Z.hasOwnProp(d,"username")?d.username:void 0,y=f&&Z.hasOwnProp(d,"password")?d.password:void 0;if(!!(Q||y))d=(Q||"")+":"+(y||"");else if(f)throw new De("Invalid proxy authorization",De.ERR_BAD_OPTION,{proxy:A})}if(T0.test(n.protocol)){if(!(e instanceof _0.default)){let f=g("hostname")||g("host"),Q=g("port"),y=g("protocol"),m=y?y.includes(":")?y:`${y}:`:"http:",_=f&&f.includes(":")&&!f.startsWith("[")?`[${f}]`:f,T=new URL(`${m}//${_}${Q?":"+Q:""}`),R={protocol:T.protocol,hostname:T.hostname.replace(/^\[|\]$/g,""),port:T.port,auth:d&&typeof d=="string"?d:void 0};T.protocol==="https:"&&(R.ALPNProtocols=["http/1.1"]);let K=jSe(R,e);n.agent=K,n.agents&&(n.agents.https=K)}}else{if(d){let m=Buffer.from(d,"utf8").toString("base64");n.headers["Proxy-Authorization"]="Basic "+m}let f=!1;for(let m of Object.keys(n.headers))if(m.toLowerCase()==="host"){f=!0;break}f||(n.headers.host=n.hostname+(n.port?":"+n.port:""));let Q=g("hostname")||g("host");n.hostname=Q,n.host=Q,n.port=g("port"),n.path=o;let y=g("protocol");y&&(n.protocol=y.includes(":")?y:`${y}:`)}}n.beforeRedirects.proxy=function(g){jq(g,t,g.href,!0,e,a)}}var WSe=typeof process<"u"&&Z.kindOf(process)==="process",ZSe=n=>new Promise((t,o)=>{let i,e,a=(s,g)=>{e||(e=!0,i&&i(s,g))},A=s=>{a(s),t(s)},r=s=>{a(s,!0),o(s)};n(A,r,s=>i=s).catch(r)}),XSe=({address:n,family:t})=>{if(!Z.isString(n))throw TypeError("address must be a string");return{address:n,family:t||(n.indexOf(".")<0?6:4)}},Gq=(n,t)=>XSe(Z.isObject(n)?n:{address:n,family:t}),$Se={request(n,t){let o=n.protocol+"//"+n.hostname+":"+(n.port||(n.protocol==="https:"?443:80)),{http2Options:i,headers:e}=n,a=JSe.getSession(o,i),{HTTP2_HEADER_SCHEME:A,HTTP2_HEADER_METHOD:r,HTTP2_HEADER_PATH:s,HTTP2_HEADER_STATUS:g}=RSe.constants,c={[A]:n.protocol.replace(":",""),[r]:n.method,[s]:n.path};Z.forEach(e,(d,B)=>{B.charAt(0)!==":"&&(c[B]=d)});let I=a.request(c);return I.once("response",d=>{let B=I;d=Object.assign({},d);let f=d[g];delete d[g],B.headers=d,B.statusCode=+f,t(B)}),I}},Jq=WSe&&function(t){return ZSe(async function(i,e,a){let A=Be=>Z.getSafeProp(t,Be),r=A("transitional")||Bc,s=A("data"),g=A("lookup"),c=A("family"),I=A("httpVersion");I===void 0&&(I=1);let d=A("http2Options"),B=A("httpAgent"),f=A("httpsAgent"),Q=A("proxy"),y=A("responseType"),m=A("responseEncoding"),_=A("socketPath"),T=A("method").toUpperCase(),R=A("maxRedirects"),K=A("maxBodyLength"),L=A("maxContentLength"),U=A("decompress"),z,q=!1,x,G;if(I=+I,Number.isNaN(I))throw TypeError(`Invalid protocol version: '${t.httpVersion}' is not a number`);if(I!==1&&I!==2)throw TypeError(`Unsupported protocol version '${I}'`);let V=I===2;if(g){let Be=Eq(g,Re=>Z.isArray(Re)?Re:[Re]);g=(Re,Ue,MA)=>{Be(Re,Ue,(Ke,_A,at)=>{if(Ke)return MA(Ke);let wA=Z.isArray(_A)?_A.map(lt=>Gq(lt)):[Gq(_A,at)];Ue.all?MA(Ke,wA):MA(Ke,wA[0].address,wA[0].family)})}}let F=new vSe;function N(Be){try{F.emit("abort",!Be||Be.type?new oo(null,t,x):Be)}catch{}}function k(){G&&(clearTimeout(G),G=null)}function J(){let Be=A("timeout"),Re=Be?"timeout of "+Be+"ms exceeded":"timeout exceeded",Ue=A("timeoutErrorMessage");return Ue&&(Re=Ue),new De(Re,r.clarifyTimeoutError?De.ETIMEDOUT:De.ECONNABORTED,t,x)}F.once("abort",e);let $=()=>{k(),t.cancelToken&&t.cancelToken.unsubscribe(N),t.signal&&t.signal.removeEventListener("abort",N),F.removeAllListeners()};(t.cancelToken||t.signal)&&(t.cancelToken&&t.cancelToken.subscribe(N),t.signal&&(t.signal.aborted?N():t.signal.addEventListener("abort",N))),a((Be,Re)=>{if(z=!0,k(),Re){q=!0,$();return}let{data:Ue}=Be;if(Ue instanceof mn.Readable||Ue instanceof mn.Duplex){let MA=mn.finished(Ue,()=>{MA(),$()})}else $()});let ie=qI(A("baseURL"),A("url"),A("allowAbsoluteUrls"),t),pe=_?"http://localhost":Bt.hasBrowserEnv?Bt.origin:void 0,se=new URL(ie,pe),Te=se.protocol||kq[0];if(Te==="data:"){if(L>-1){let Re=String(A("url")||ie||"");if(Oq(Re)>L)return e(new De("maxContentLength size of "+L+" exceeded",De.ERR_BAD_RESPONSE,t))}let Be;if(T!=="GET")return cs(i,e,{status:405,statusText:"method not allowed",headers:{},config:t});try{Be=B0(A("url"),y==="blob",{Blob:t.env&&t.env.Blob})}catch(Re){throw De.from(Re,De.ERR_BAD_REQUEST,t)}return y==="text"?(Be=Be.toString(m),(!m||m==="utf8")&&(Be=Z.stripBOM(Be))):y==="stream"&&(Be=mn.Readable.from(Be)),cs(i,e,{data:Be,status:200,statusText:"OK",headers:new Ht,config:t})}if(kq.indexOf(Te)===-1)return e(new De("Unsupported protocol "+Te,De.ERR_BAD_REQUEST,t));let Qe=Ht.from(t.headers).normalize();Qe.set("User-Agent","axios/"+Eg,!1);let{onUploadProgress:ke,onDownloadProgress:Ne}=t,We=t.maxRate,ve,aA;if(Z.isSpecCompliantForm(s)){let Be=Qe.getContentType(/boundary=([-_\w\d]{10,70})/i);s=pq(s,Re=>{Qe.set(Re)},{tag:`axios-${Eg}-boundary`,boundary:Be&&Be[1]||void 0})}else if(Z.isFormData(s)&&Z.isFunction(s.getHeaders)&&s.getHeaders!==Object.prototype.getHeaders){if(TC(Qe,s.getHeaders(),A("formDataHeaderPolicy")),!Qe.hasContentLength())try{let Be=await kSe.promisify(s.getLength).call(s);Number.isFinite(Be)&&Be>=0&&Qe.setContentLength(Be)}catch{}}else if(Z.isBlob(s)||Z.isFile(s))s.size&&Qe.setContentType(s.type||"application/octet-stream"),Qe.setContentLength(s.size||0),s=mn.Readable.from(_y(s));else if(s&&!Z.isStream(s)){if(!Buffer.isBuffer(s))if(Z.isArrayBuffer(s))s=Buffer.from(new Uint8Array(s));else if(Z.isString(s))s=Buffer.from(s,"utf-8");else return e(new De("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",De.ERR_BAD_REQUEST,t));if(Qe.setContentLength(s.length,!1),K>-1&&s.length>K)return e(new De("Request body larger than maxBodyLength limit",De.ERR_BAD_REQUEST,t))}let fe=Z.toFiniteNumber(Qe.getContentLength());Z.isArray(We)?(ve=We[0],aA=We[1]):ve=aA=We,s&&(ke||ve)&&(Z.isStream(s)||(s=mn.Readable.from(s,{objectMode:!1})),s=mn.pipeline([s,new y0({maxRate:Z.toFiniteNumber(ve)})],Z.noop),ke&&s.on("progress",Pq(s,pd(fe,Cg(dd(ke,_q),!1,3)))));let Ie,Xe=A("auth");if(Xe){let Be=Z.getSafeProp(Xe,"username")||"",Re=Z.getSafeProp(Xe,"password")||"";Ie=Be+":"+Re}if(!Ie&&(se.username||se.password)){let Be=vq(se.username),Re=vq(se.password);Ie=Be+":"+Re}Ie&&Qe.delete("authorization");let je;try{je=JI(se.pathname+se.search,A("params"),A("paramsSerializer")).replace(/^\?/,"")}catch(Be){return e(De.from(Be,De.ERR_BAD_REQUEST,t,null,null,{url:A("url"),exists:!0}))}Qe.set("Accept-Encoding",Z.hasOwnProp(r,"advertiseZstdAcceptEncoding")&&r.advertiseZstdAcceptEncoding===!0?FSe:xq,!1);let Oe=Object.assign(Object.create(null),{path:je,method:T,headers:Ad(Qe),agents:{http:B,https:f},auth:Ie,protocol:Te,family:c,beforeRedirect:qSe,beforeRedirects:Object.create(null),http2Options:d});if(!Z.isUndefined(g)&&(Oe.lookup=g),_){if(typeof _!="string")return e(new De("socketPath must be a string",De.ERR_BAD_OPTION_VALUE,t));let Be=A("allowedSocketPaths");if(Be!=null){let Re=Array.isArray(Be)?Be:[Be],Ue=bq(_);if(!Re.some(Ke=>typeof Ke=="string"&&bq(Ke)===Ue))return e(new De(`socketPath "${_}" is not permitted by allowedSocketPaths`,De.ERR_BAD_OPTION_VALUE,t))}Oe.socketPath=_}else Oe.hostname=se.hostname.startsWith("[")?se.hostname.slice(1,-1):se.hostname,Oe.port=se.port,jq(Oe,Q,Te+"//"+se.hostname+(se.port?":"+se.port:"")+Oe.path,!1,f,B);let EA,hA=!1,iA=!1,Ze=T0.test(Oe.protocol);if(Oe.agent==null&&(Oe.agent=Ze?f:B),V)EA=$Se;else{let Be=A("transport");if(Be)EA=Be;else if(R===0)EA=Ze?Lq:Fq,hA=!0;else{iA=!0,Oe.sensitiveHeaders=[],R&&(Oe.maxRedirects=R);let Re=A("beforeRedirect");if(Re&&(Oe.beforeRedirects.config=Re),Ie){let MA=se.origin,Ke=Ie;Oe.beforeRedirects.auth=function(at){try{new URL(at.href).origin===MA&&(at.auth=Ke)}catch{}}}let Ue=A("sensitiveHeaders");if(Ue!=null){if(!Z.isArray(Ue))return e(new De("sensitiveHeaders must be an array of strings",De.ERR_BAD_OPTION_VALUE,t));let MA=new Set;for(let Ke of Ue){if(!Z.isString(Ke))return e(new De("sensitiveHeaders must be an array of strings",De.ERR_BAD_OPTION_VALUE,t));MA.add(Ke.toLowerCase())}MA.size&&(Oe.sensitiveHeaders=Array.from(MA),Oe.beforeRedirects.sensitiveHeaders=function(_A,at){VSe(_A,at)||zSe(_A.headers,MA)})}EA=Ze?USe:LSe}}K>-1?Oe.maxBodyLength=K:Oe.maxBodyLength=1/0,Oe.insecureHTTPParser=!!A("insecureHTTPParser"),x=EA.request(Oe,function(Re){if(k(),x.destroyed)return;let Ue=[Re],MA=Z.toFiniteNumber(Re.headers["content-length"]);if(Ne||aA){let wA=new y0({maxRate:Z.toFiniteNumber(aA)});Ne&&wA.on("progress",Pq(wA,pd(MA,Cg(dd(Ne,_q),!0,3)))),Ue.push(wA)}let Ke=Re,_A=Re.req||x;if(U!==!1&&Re.headers["content-encoding"])switch((T==="HEAD"||Re.statusCode===204)&&delete Re.headers["content-encoding"],(Re.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":Ue.push(Fo.createUnzip(Mq)),delete Re.headers["content-encoding"];break;case"deflate":Ue.push(new dq),Ue.push(Fo.createUnzip(Mq)),delete Re.headers["content-encoding"];break;case"br":Hq&&(Ue.push(Fo.createBrotliDecompress(PSe)),delete Re.headers["content-encoding"]);break;case"zstd":Kq&&(Ue.push(Fo.createZstdDecompress(GSe)),delete Re.headers["content-encoding"]);break}Ke=Ue.length>1?mn.pipeline(Ue,Z.noop):Ue[0];let at={status:Re.statusCode,statusText:Re.statusMessage,headers:new Ht(Re.headers),config:t,request:_A};if(y==="stream"){if(L>-1){let wA=L,lt=Ke;async function*Er(){let UA=0;for await(let de of lt){if(UA+=de.length,UA>wA)throw new De("maxContentLength size of "+wA+" exceeded",De.ERR_BAD_RESPONSE,t,_A);yield de}}Ke=mn.Readable.from(Er(),{objectMode:!1})}at.data=Ke,cs(i,e,at)}else{let wA=[],lt=0;Ke.on("data",function(UA){wA.push(UA),lt+=UA.length,L>-1&<>L&&(q=!0,Ke.destroy(),N(new De("maxContentLength size of "+L+" exceeded",De.ERR_BAD_RESPONSE,t,_A)))}),Ke.on("aborted",function(){if(q)return;let UA=new De("stream has been aborted",De.ERR_BAD_RESPONSE,t,_A,at);Ke.destroy(UA),e(UA)}),Ke.on("error",function(UA){q||e(De.from(UA,null,t,_A,at))}),Ke.on("end",function(){try{let UA=wA.length===1?wA[0]:Buffer.concat(wA);y!=="arraybuffer"&&(UA=UA.toString(m),(!m||m==="utf8")&&(UA=Z.stripBOM(UA))),at.data=UA}catch(UA){return e(De.from(UA,null,t,at.request,at))}cs(i,e,at)})}F.once("abort",wA=>{Ke.destroyed||(Ke.emit("error",wA),Ke.destroy())})}),F.once("abort",Be=>{x.close?x.close():x.destroy(Be)}),x.on("error",function(Re){e(De.from(Re,null,t,x))});let bA=new Set;if(x.on("socket",function(Re){typeof Re.setKeepAlive=="function"&&Re.setKeepAlive(!0,1e3*60),Re[Tq]||(Re.on("error",function(MA){let Ke=Re[Ty];Ke&&!Ke.destroyed&&Ke.destroy(MA)}),Re[Tq]=!0),Re[Ty]=x,bA.add(Re)}),x.once("close",function(){k();for(let Re of bA)Re[Ty]===x&&(Re[Ty]=null);bA.clear()}),A("timeout")){let Be=parseInt(A("timeout"),10);if(Number.isNaN(Be)){N(new De("error trying to parse `config.timeout` to int",De.ERR_BAD_OPTION_VALUE,t,x));return}let Re=function(){z||N(J())};hA&&Be>0&&(G=setTimeout(Re,Be)),x.setTimeout(Be,Re)}else x.setTimeout(0);if(Z.isStream(s)){let Be=!1,Re=!1;s.on("end",()=>{Be=!0}),s.once("error",MA=>{Re=!0,x.destroy(MA)}),s.on("close",()=>{!Be&&!Re&&N(new oo("Request stream has been aborted",t,x))});let Ue=s;if(K>-1&&!iA){let MA=K,Ke=0;Ue=mn.pipeline([s,new mn.Transform({transform(_A,at,wA){if(Ke+=_A.length,Ke>MA)return wA(new De("Request body larger than maxBodyLength limit",De.ERR_BAD_REQUEST,t,x));wA(null,_A)}})],Z.noop),Ue.on("error",_A=>{x.destroyed||x.destroy(_A)})}Ue.pipe(x)}else s&&x.write(s),x.end()})};var qq=Bt.hasStandardBrowserEnv?((n,t)=>o=>(o=new URL(o,Bt.origin),n.protocol===o.protocol&&n.host===o.host&&(t||n.port===o.port)))(new URL(Bt.origin),Bt.navigator&&/(msie|trident)/i.test(Bt.navigator.userAgent)):()=>!0;var zq=Bt.hasStandardBrowserEnv?{write(n,t,o,i,e,a,A){if(typeof document>"u")return;let r=[`${n}=${encodeURIComponent(t)}`];Z.isNumber(o)&&r.push(`expires=${new Date(o).toUTCString()}`),Z.isString(i)&&r.push(`path=${i}`),Z.isString(e)&&r.push(`domain=${e}`),a===!0&&r.push("secure"),Z.isString(A)&&r.push(`SameSite=${A}`),document.cookie=r.join("; ")},read(n){if(typeof document>"u")return null;let t=document.cookie.split(";");for(let o=0;on instanceof Ht?{...n}:n,ewe=n=>Object.getOwnPropertySymbols&&Object.getOwnPropertyDescriptor?Object.keys(n).concat(Object.getOwnPropertySymbols(n).filter(t=>Object.getOwnPropertyDescriptor(n,t).enumerable)):Object.keys(n);function Sn(n,t){n=n||{},t=t||{};let o=Object.create(null);Object.defineProperty(o,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function i(c,I,d,B){return Z.isPlainObject(c)&&Z.isPlainObject(I)?Z.merge.call({caseless:B},c,I):Z.isPlainObject(I)?Z.merge({},I):Z.isArray(I)?I.slice():I}function e(c,I,d,B){if(Z.isUndefined(I)){if(!Z.isUndefined(c))return i(void 0,c,d,B)}else return i(c,I,d,B)}function a(c,I){if(!Z.isUndefined(I))return i(void 0,I)}function A(c,I){if(Z.isUndefined(I)){if(!Z.isUndefined(c))return i(void 0,c)}else return i(void 0,I)}function r(c){let I=Z.hasOwnProp(t,"transitional")?t.transitional:void 0;if(!Z.isUndefined(I))if(Z.isPlainObject(I)){if(Z.hasOwnProp(I,c))return I[c]}else return;let d=Z.hasOwnProp(n,"transitional")?n.transitional:void 0;if(Z.isPlainObject(d)&&Z.hasOwnProp(d,c))return d[c]}function s(c,I,d){if(Z.hasOwnProp(t,d))return i(c,I);if(Z.hasOwnProp(n,d))return i(void 0,c)}let g={url:a,method:a,data:a,baseURL:A,transformRequest:A,transformResponse:A,paramsSerializer:A,timeout:A,timeoutMessage:A,withCredentials:A,withXSRFToken:A,adapter:A,responseType:A,xsrfCookieName:A,xsrfHeaderName:A,onUploadProgress:A,onDownloadProgress:A,decompress:A,maxContentLength:A,maxBodyLength:A,beforeRedirect:A,transport:A,httpAgent:A,httpsAgent:A,cancelToken:A,socketPath:A,allowedSocketPaths:A,responseEncoding:A,validateStatus:s,headers:(c,I,d)=>e(Vq(c),Vq(I),d,!0)};return Z.forEach(ewe({...n,...t}),function(I){if(I==="__proto__"||I==="constructor"||I==="prototype")return;let d=Z.hasOwnProp(g,I)?g[I]:e,B=Z.hasOwnProp(n,I)?n[I]:void 0,f=Z.hasOwnProp(t,I)?t[I]:void 0,Q=d(B,f,I);Z.isUndefined(Q)&&d!==s||(o[I]=Q)}),Z.hasOwnProp(t,"validateStatus")&&Z.isUndefined(t.validateStatus)&&r("validateStatusUndefinedResolves")===!1&&(Z.hasOwnProp(n,"validateStatus")?o.validateStatus=i(void 0,n.validateStatus):delete o.validateStatus),o}var Awe=n=>encodeURIComponent(n).replace(/%([0-9A-F]{2})/gi,(t,o)=>String.fromCharCode(parseInt(o,16)));function twe(n){let t=Sn({},n),o=d=>Z.hasOwnProp(t,d)?t[d]:void 0,i=o("data"),e=o("withXSRFToken"),a=o("xsrfHeaderName"),A=o("xsrfCookieName"),r=o("headers"),s=o("auth"),g=o("baseURL"),c=o("allowAbsoluteUrls"),I=o("url");if(t.headers=r=Ht.from(r),t.url=JI(qI(g,I,c,t),o("params"),o("paramsSerializer")),s){let d=Z.getSafeProp(s,"username")||"",B=Z.getSafeProp(s,"password")||"";try{r.set("Authorization","Basic "+btoa(d+":"+(B?Awe(B):"")))}catch(f){throw De.from(f,De.ERR_BAD_OPTION_VALUE,n)}}if(Z.isFormData(i)&&(Bt.hasStandardBrowserEnv||Bt.hasStandardBrowserWebWorkerEnv||Z.isReactNative(i)?r.setContentType(void 0):Z.isFunction(i.getHeaders)&&TC(r,i.getHeaders(),o("formDataHeaderPolicy"))),Bt.hasStandardBrowserEnv&&(Z.isFunction(e)&&(e=e(t)),e===!0||e==null&&qq(t.url))){let B=a&&A&&zq.read(A);B&&r.set(a,B)}return t}var Ny=twe;var rwe=typeof XMLHttpRequest<"u",Wq=rwe&&function(n){return new Promise(function(o,i){let e=Ny(n),a=e.data,A=Ht.from(e.headers).normalize(),{responseType:r,onUploadProgress:s,onDownloadProgress:g}=e,c,I,d,B,f;function Q(){B&&B(),f&&f(),e.cancelToken&&e.cancelToken.unsubscribe(c),e.signal&&e.signal.removeEventListener("abort",c)}let y=new XMLHttpRequest;y.open(e.method.toUpperCase(),e.url,!0),y.timeout=e.timeout;function m(){if(!y)return;let T=Ht.from("getAllResponseHeaders"in y&&y.getAllResponseHeaders()),K={data:!r||r==="text"||r==="json"?y.responseText:y.response,status:y.status,statusText:y.statusText,headers:T,config:n,request:y};cs(function(U){o(U),Q()},function(U){i(U),Q()},K),y=null}"onloadend"in y?y.onloadend=m:y.onreadystatechange=function(){!y||y.readyState!==4||y.status===0&&!(y.responseURL&&y.responseURL.startsWith("file:"))||setTimeout(m)},y.onabort=function(){y&&(i(new De("Request aborted",De.ECONNABORTED,n,y)),Q(),y=null)},y.onerror=function(R){let K=R&&R.message?R.message:"Network Error",L=new De(K,De.ERR_NETWORK,n,y);L.event=R||null,i(L),Q(),y=null},y.ontimeout=function(){let R=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",K=e.transitional||Bc;e.timeoutErrorMessage&&(R=e.timeoutErrorMessage),i(new De(R,K.clarifyTimeoutError?De.ETIMEDOUT:De.ECONNABORTED,n,y)),Q(),y=null},a===void 0&&A.setContentType(null),"setRequestHeader"in y&&Z.forEach(Ad(A),function(R,K){y.setRequestHeader(K,R)}),Z.isUndefined(e.withCredentials)||(y.withCredentials=!!e.withCredentials),r&&r!=="json"&&(y.responseType=e.responseType),g&&([d,f]=Cg(g,!0),y.addEventListener("progress",d)),s&&y.upload&&([I,B]=Cg(s),y.upload.addEventListener("progress",I),y.upload.addEventListener("loadend",B)),(e.cancelToken||e.signal)&&(c=T=>{y&&(i(!T||T.type?new oo(null,n,y):T),y.abort(),Q(),y=null)},e.cancelToken&&e.cancelToken.subscribe(c),e.signal&&(e.signal.aborted?c():e.signal.addEventListener("abort",c)));let _=_C(e.url);if(_&&!Bt.protocols.includes(_)){i(new De("Unsupported protocol "+_+":",De.ERR_BAD_REQUEST,n)),Q();return}y.send(a||null)})};var awe=(n,t)=>{if(n=n?n.filter(Boolean):[],!t&&!n.length)return;let o=new AbortController,i=!1,e=function(s){if(!i){i=!0,A();let g=s instanceof Error?s:this.reason;o.abort(g instanceof De?g:new oo(g instanceof Error?g.message:g))}},a=t&&setTimeout(()=>{a=null,e(new De(`timeout of ${t}ms exceeded`,De.ETIMEDOUT))},t),A=()=>{n&&(a&&clearTimeout(a),a=null,n.forEach(s=>{s.unsubscribe?s.unsubscribe(e):s.removeEventListener("abort",e)}),n=null)};n.forEach(s=>{if(!i){if(s.aborted){e.call(s);return}s.addEventListener("abort",e,{once:!0})}});let{signal:r}=o;return r.unsubscribe=()=>Z.asap(A),r},Zq=awe;var iwe=function*(n,t){let o=n.byteLength;if(!t||o{let e=owe(n,t),a=0,A,r=s=>{A||(A=!0,i&&i(s))};return new ReadableStream({async pull(s){try{let{done:g,value:c}=await e.next();if(g){r(),s.close();return}let I=c.byteLength;if(o){let d=a+=I;o(d)}s.enqueue(new Uint8Array(c))}catch(g){throw r(g),g}},cancel(s){return r(s),e.return()}},{highWaterMark:2})};var Xq=64*1024,{isFunction:Ry}=Z,swe=n=>encodeURIComponent(n).replace(/%([0-9A-F]{2})/gi,(t,o)=>String.fromCharCode(parseInt(o,16))),$q=n=>{if(!Z.isString(n))return n;try{return decodeURIComponent(n)}catch{return n}},e4=(n,...t)=>{try{return!!n(...t)}catch{return!1}},gwe=n=>{let t=n.indexOf("://"),o=n;return t!==-1&&(o=o.slice(t+3)),o.includes("@")||o.includes(":")},cwe=n=>{let t=Z.global!==void 0&&Z.global!==null?Z.global:globalThis,{ReadableStream:o,TextEncoder:i}=t;n=Z.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},n);let{fetch:e,Request:a,Response:A}=n,r=e?Ry(e):typeof fetch=="function",s=Ry(a),g=Ry(A);if(!r)return!1;let c=r&&Ry(o),I=r&&(typeof i=="function"?(m=>_=>m.encode(_))(new i):async m=>new Uint8Array(await new a(m).arrayBuffer())),d=s&&c&&e4(()=>{let m=!1,_=new a(Bt.origin,{body:new o,method:"POST",get duplex(){return m=!0,"half"}}),T=_.headers.has("Content-Type");return _.body!=null&&_.body.cancel(),m&&!T}),B=g&&c&&e4(()=>Z.isReadableStream(new A("").body)),f={stream:B&&(m=>m.body)};r&&["text","arrayBuffer","blob","formData","stream"].forEach(m=>{!f[m]&&(f[m]=(_,T)=>{let R=_&&_[m];if(R)return R.call(_);throw new De(`Response type '${m}' is not supported`,De.ERR_NOT_SUPPORT,T)})});let Q=async m=>{if(m==null)return 0;if(Z.isBlob(m))return m.size;if(Z.isSpecCompliantForm(m))return(await new a(Bt.origin,{method:"POST",body:m}).arrayBuffer()).byteLength;if(Z.isArrayBufferView(m)||Z.isArrayBuffer(m))return m.byteLength;if(Z.isURLSearchParams(m)&&(m=m+""),Z.isString(m))return(await I(m)).byteLength},y=async(m,_)=>{let T=Z.toFiniteNumber(m.getContentLength());return T??Q(_)};return async m=>{let{url:_,method:T,data:R,signal:K,cancelToken:L,timeout:U,onDownloadProgress:z,onUploadProgress:q,responseType:x,headers:G,withCredentials:V="same-origin",fetchOptions:F,maxContentLength:N,maxBodyLength:k}=Ny(m),J=Z.isNumber(N)&&N>-1,$=Z.isNumber(k)&&k>-1,ie=ve=>Z.hasOwnProp(m,ve)?m[ve]:void 0,pe=e||fetch;x=x?(x+"").toLowerCase():"text";let se=Zq([K,L&&L.toAbortSignal()],U),Te=null,Qe=se&&se.unsubscribe&&(()=>{se.unsubscribe()}),ke,Ne=null,We=()=>new De("Request body larger than maxBodyLength limit",De.ERR_BAD_REQUEST,m,Te);try{let ve,aA=ie("auth");if(aA){let Ze=Z.getSafeProp(aA,"username")||"",bA=Z.getSafeProp(aA,"password")||"";ve={username:Ze,password:bA}}if(gwe(_)){let Ze=new URL(_,Bt.origin);if(!ve&&(Ze.username||Ze.password)){let bA=$q(Ze.username),Be=$q(Ze.password);ve={username:bA,password:Be}}(Ze.username||Ze.password)&&(Ze.username="",Ze.password="",_=Ze.href)}if(ve&&(G.delete("authorization"),G.set("Authorization","Basic "+btoa(swe((ve.username||"")+":"+(ve.password||""))))),J&&typeof _=="string"&&_.startsWith("data:")&&M0(_)>N)throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Te);if($&&T!=="get"&&T!=="head"){let Ze=await Q(R);if(typeof Ze=="number"&&isFinite(Ze)&&(ke=Ze,Ze>k))throw We()}let fe=$&&(Z.isReadableStream(R)||Z.isStream(R)),Ie=(Ze,bA,Be)=>N0(Ze,Xq,Re=>{if($&&Re>k)throw Ne=We();bA&&bA(Re)},Be);if(d&&T!=="get"&&T!=="head"&&(q||fe)){if(ke=ke??await y(G,R),ke!==0||fe){let Ze=new a(_,{method:"POST",body:R,duplex:"half"}),bA;if(Z.isFormData(R)&&(bA=Ze.headers.get("content-type"))&&G.setContentType(bA),Ze.body){let[Be,Re]=q&&pd(ke,Cg(dd(q)))||[];R=Ie(Ze.body,Be,Re)}}}else if(fe&&!s&&c&&T!=="get"&&T!=="head")R=Ie(R);else if(fe&&s&&!d&&T!=="get"&&T!=="head")throw new De("Stream request bodies are not supported by the current fetch implementation",De.ERR_NOT_SUPPORT,m,Te);Z.isString(V)||(V=V?"include":"omit");let Xe=s&&"credentials"in a.prototype;if(Z.isFormData(R)){let Ze=G.getContentType();Ze&&/^multipart\/form-data/i.test(Ze)&&!/boundary=/i.test(Ze)&&G.delete("content-type")}G.set("User-Agent","axios/"+Eg,!1);let je={...F,signal:se,method:T.toUpperCase(),headers:Ad(G.normalize()),body:R,duplex:"half",credentials:Xe?V:void 0};Te=s&&new a(_,je);let Oe=await(s?pe(Te,F):pe(_,je)),EA=Ht.from(Oe.headers);if(J){let Ze=Z.toFiniteNumber(EA.getContentLength());if(Ze!=null&&Ze>N)throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Te)}let hA=B&&(x==="stream"||x==="response");if(B&&Oe.body&&(z||J||hA&&Qe)){let Ze={};["status","statusText","headers"].forEach(Ke=>{Ze[Ke]=Oe[Ke]});let bA=Z.toFiniteNumber(EA.getContentLength()),[Be,Re]=z&&pd(bA,Cg(dd(z),!0))||[],Ue=0,MA=Ke=>{if(J&&(Ue=Ke,Ue>N))throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Te);Be&&Be(Ke)};Oe=new A(N0(Oe.body,Xq,MA,()=>{Re&&Re(),Qe&&Qe()}),Ze)}x=x||"text";let iA=await f[Z.findKey(f,x)||"text"](Oe,m);if(J&&!B&&!hA){let Ze;if(iA!=null&&(typeof iA.byteLength=="number"?Ze=iA.byteLength:typeof iA.size=="number"?Ze=iA.size:typeof iA=="string"&&(Ze=typeof i=="function"?new i().encode(iA).byteLength:iA.length)),typeof Ze=="number"&&Ze>N)throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Te)}return!hA&&Qe&&Qe(),await new Promise((Ze,bA)=>{cs(Ze,bA,{data:iA,headers:Ht.from(Oe.headers),status:Oe.status,statusText:Oe.statusText,config:m,request:Te})})}catch(ve){if(Qe&&Qe(),se&&se.aborted&&se.reason instanceof De){let aA=se.reason;throw aA.config=m,Te&&(aA.request=Te),ve!==aA&&Object.defineProperty(aA,"cause",{__proto__:null,value:ve,writable:!0,enumerable:!1,configurable:!0}),aA}if(Ne)throw Te&&!Ne.request&&(Ne.request=Te),Ne;if(ve instanceof De)throw Te&&!ve.request&&(ve.request=Te),ve;if(ve&&ve.name==="TypeError"&&/Load failed|fetch/i.test(ve.message)){let aA=new De("Network Error",De.ERR_NETWORK,m,Te,ve&&ve.response);throw Object.defineProperty(aA,"cause",{__proto__:null,value:ve.cause||ve,writable:!0,enumerable:!1,configurable:!0}),aA}throw De.from(ve,ve&&ve.code,m,Te,ve&&ve.response)}}},Iwe=new Map,R0=n=>{let t=n&&n.env||{},{fetch:o,Request:i,Response:e}=t,a=[i,e,o],A=a.length,r=A,s,g,c=Iwe;for(;r--;)s=a[r],g=c.get(s),g===void 0&&c.set(s,g=r?new Map:cwe(t)),c=g;return g},EsA=R0();var k0={http:Jq,xhr:Wq,fetch:{get:R0}};Z.forEach(k0,(n,t)=>{if(n){try{Object.defineProperty(n,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(n,"adapterName",{__proto__:null,value:t})}});var A4=n=>`- ${n}`,pwe=n=>Z.isFunction(n)||n===null||n===!1;function dwe(n,t){n=Z.isArray(n)?n:[n];let{length:o}=n,i,e,a={};for(let A=0;A`adapter ${s} `+(g===!1?"is not supported by the environment":"is not available in the build")),r=o?A.length>1?`since : +`,ISe=NC.encode(XI),lSe=2,m0=class{constructor(t,o){let{escapeName:i}=this.constructor,e=Z.isString(o),a=`Content-Disposition: form-data; name="${i(t)}"${!e&&o.name?`; filename="${i(o.name)}"`:""}${XI}`;if(e)o=NC.encode(String(o).replace(/\r?\n|\r\n?/g,XI));else{let A=String(o.type||"application/octet-stream").replace(/[\r\n]/g,"");a+=`Content-Type: ${A}${XI}`}this.headers=NC.encode(a+XI),this.contentLength=e?o.byteLength:o.size,this.size=this.headers.byteLength+this.contentLength+lSe,this.name=t,this.value=o}async*encode(){yield this.headers;let{value:t}=this;Z.isTypedArray(t)?yield t:yield*_y(t),yield ISe}static escapeName(t){return String(t).replace(/[\r\n"]/g,o=>({"\r":"%0D","\n":"%0A",'"':"%22"})[o])}},pSe=(n,t,o)=>{let{tag:i="form-data-boundary",size:e=25,boundary:a=i+"-"+Bt.generateString(e,cSe)}=o||{};if(!Z.isFormData(n))throw new TypeError("FormData instance required");if(a.length<1||a.length>70)throw new Error("boundary must be 1-70 characters long");let A=NC.encode("--"+a+XI),r=NC.encode("--"+a+"--"+XI),s=r.byteLength,g=Array.from(n.entries()).map(([I,d])=>{let B=new m0(I,d);return s+=B.size,B});s+=A.byteLength*g.length,s=Z.toFiniteNumber(s);let c={"Content-Type":`multipart/form-data; boundary=${a}`};return Number.isFinite(s)&&(c["Content-Length"]=s),t&&t(c),gSe.from((async function*(){for(let I of g)yield A,yield*I.encode();yield r})())},pq=pSe;import dSe from"stream";var S0=class extends dSe.Transform{__transform(t,o,i){this.push(t),i()}_transform(t,o,i){if(t.length!==0&&(this._transform=this.__transform,t[0]!==120)){let e=Buffer.alloc(2);e[0]=120,e[1]=156,this.push(e,o)}this.__transform(t,o,i)}},dq=S0;import hSe from"http2";import ESe from"util";var w0=class{constructor(){this.sessions=Object.create(null)}getSession(t,o){o=Object.assign({sessionTimeout:1e3},o);let i=this.sessions[t];if(i){let I=i.length;for(let d=0;d{if(a)return;a=!0,A&&(clearTimeout(A),A=null);let I=i,d=I.length,B=d;for(;B--;)if(I[B][0]===e){d===1?delete this.sessions[t]:I.splice(B,1),e.closed||e.close();return}},s=e.request,{sessionTimeout:g}=o;if(g!=null){let I=0;e.request=function(){let d=s.apply(this,arguments);return I++,A&&(clearTimeout(A),A=null),d.once("close",()=>{--I||(A=setTimeout(()=>{A=null,r()},g))}),d}}e.once("close",r);let c=[e,o];return i?i.push(c):i=this.sessions[t]=[c],e}},hq=w0;var CSe=(n,t)=>Z.isAsyncFn(n)?function(...o){let i=o.pop();n.apply(this,o).then(e=>{try{t?i(null,...t(e)):i(null,e)}catch(a){i(a)}},i)}:n,Eq=CSe;var uSe=new Set(["localhost","0.0.0.0"]),Bq=n=>{let t=n.split(".");return t.length!==4||t[0]!=="127"?!1:t.every(o=>/^\d+$/.test(o)&&Number(o)>=0&&Number(o)<=255)},D0=n=>{if(/^0[xX][0-9a-fA-F]+$/.test(n)){let t=parseInt(n.slice(2),16);return Number.isFinite(t)?t:null}if(n.length>1&&/^0[0-7]+$/.test(n)){let t=parseInt(n,8);return Number.isFinite(t)?t:null}if(n.length>1&&/^0[0-9]+$/.test(n))return null;if(/^[0-9]+$/.test(n)){let t=parseInt(n,10);return Number.isFinite(t)?t:null}return null},BSe=n=>{if(typeof n!="string"||!n||n.indexOf(":")!==-1)return n;let t=n;if(t.charAt(0)==="["&&t.charAt(t.length-1)==="]"&&(t=t.slice(1,-1)),t=t.replace(/\.+$/,""),!/^[0-9.xXa-fA-F]+$/.test(t))return n;let o=t.split(".");if(o.some(c=>c===""))return n;if(o.length===4){let c=o.map(D0);return c.some(I=>I===null||I<0||I>255)?n:c.join(".")}if(o.length>4||o.length===1)return n;let i=o.slice(0,-1),e=o[o.length-1],a=4-i.length,A=D0(e);if(A===null)return n;let r=(1<<8*a)-1;if(A<0||A>r)return n;let s=new Array(a).fill(0);for(let c=a-1,I=A;c>=0;c--,I>>=8)s[c]=I&255;let g=i.map(D0);return g.some(c=>c===null||c<0||c>255)?n:[...g,...s].join(".")},O0=n=>/^0{1,4}$/.test(n),fSe=n=>{if(n==="::")return!0;let t=n.indexOf("::");if(t!==-1){if(t!==n.lastIndexOf("::"))return!1;let i=n.slice(0,t),e=n.slice(t+2),a=i?i.split(":"):[],A=e?e.split(":"):[];return a.length+A.length<8&&a.every(O0)&&A.every(O0)}let o=n.split(":");return o.length===8&&o.every(O0)},QSe=n=>{if(n==="::1")return!0;let t=n.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/i);if(t)return Bq(t[1]);let o=n.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);if(o){let e=parseInt(o[1],16);return e>=32512&&e<=32767}let i=n.split(":");if(i.length===8){for(let e=0;e<7;e++)if(!/^0+$/.test(i[e]))return!1;return/^0*1$/.test(i[7])}return!1},Cq=n=>n?uSe.has(n)||Bq(n)||fSe(n)?!0:QSe(n):!1,ySe={http:80,https:443,ws:80,wss:443,ftp:21},mSe=n=>{let t=n,o=0;if(t.charAt(0)==="["){let a=t.indexOf("]");if(a!==-1){let A=t.slice(1,a),r=t.slice(a+1);return r.charAt(0)===":"&&/^\d+$/.test(r.slice(1))&&(o=Number.parseInt(r.slice(1),10)),[A,o]}}let i=t.indexOf(":"),e=t.lastIndexOf(":");return i!==-1&&i===e&&/^\d+$/.test(t.slice(e+1))&&(o=Number.parseInt(t.slice(e+1),10),t=t.slice(0,e)),[t,o]},SSe=/^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:(\d+\.\d+\.\d+\.\d+)$/i,wSe=/^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i,DSe=n=>{if(typeof n!="string"||n.indexOf(":")===-1)return n;let t=n.match(SSe);if(t)return t[1];let o=n.match(wSe);if(o){let i=parseInt(o[1],16),e=parseInt(o[2],16);return`${i>>8}.${i&255}.${e>>8}.${e&255}`}return n},uq=n=>{if(!n)return n;n.charAt(0)==="["&&n.charAt(n.length-1)==="]"&&(n=n.slice(1,-1));let t=n.replace(/\.+$/,""),o=BSe(t);return o!==t?o:DSe(t)};function b0(n){let t;try{t=new URL(n)}catch{return!1}let o=(process.env.no_proxy||process.env.NO_PROXY||"").toLowerCase();if(!o)return!1;if(o==="*")return!0;let i=Number.parseInt(t.port,10)||ySe[t.protocol.split(":",1)[0]]||0,e=uq(t.hostname.toLowerCase());return o.split(/[\s,]+/).some(a=>{if(!a)return!1;if(a==="*")return!0;let[A,r]=mSe(a);return A=uq(A),!A||r&&r!==i?!1:(A.charAt(0)==="*"&&(A=A.slice(1)),A.charAt(0)==="."?e.endsWith(A):e===A||Cq(e)&&Cq(A))})}function OSe(n,t){n=n||10;let o=new Array(n),i=new Array(n),e=0,a=0,A;return t=t!==void 0?t:1e3,function(s){let g=Date.now(),c=i[a];A||(A=g),o[e]=s,i[e]=g;let I=a,d=0;for(;I!==e;)d+=o[I++],I=I%n;if(e=(e+1)%n,e===a&&(a=(a+1)%n),g-A{o=c,e=null,a&&(clearTimeout(a),a=null),n(...g)};return[(...g)=>{let c=Date.now(),I=c-o;I>=i?A(g,c):(e=g,a||(a=setTimeout(()=>{a=null,A(e)},i-I)))},()=>e&&A(e)]}var Qq=bSe;var Cg=(n,t,o=3)=>{let i=0,e=fq(50,250);return Qq(a=>{if(!a||typeof a.loaded!="number")return;let A=a.loaded,r=a.lengthComputable?a.total:void 0,s=Math.max(0,r!=null?Math.min(A,r):A),g=Math.max(0,s-i),c=e(g);i=Math.max(i,s);let I={loaded:s,total:r,progress:r?s/r:void 0,bytes:g,rate:c||void 0,estimated:c&&r?(r-s)/c:void 0,event:a,lengthComputable:r!=null,[t?"download":"upload"]:!0};n(I)},o)},pd=(n,t)=>{let o=n!=null;return[i=>t[0]({lengthComputable:o,total:n,loaded:i}),t[1]]},dd=(n,t=Z.asap)=>(...o)=>t(()=>n(...o));var yq=n=>n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102,Sq=(n,t,o)=>t+2n<=57?n-48:(n&223)-55,MSe=n=>n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===43||n===47||n===45||n===95,_Se=n=>n===9||n===10||n===12||n===13||n===32,TSe=n=>{let t=Math.floor(n/4),o=n%4;return t*3+(o===2?1:o===3?2:0)},wq=n=>{let t=n.length,o=0;return t>0&&n.charCodeAt(t-1)===61&&(o++,t>1&&n.charCodeAt(t-2)===61&&o++),Math.floor((t-o)*3/4)},NSe=n=>{let t=n.length,o=0,i=0,e=!1;for(let a=0;a0){e=!0;continue}o++}}return e||i>2||i>0&&(o+i)%4!==0||o%4===1?wq(n):TSe(o)},Dq=(n,t)=>{if(!n||typeof n!="string"||!n.startsWith("data:"))return 0;let o=n.indexOf(",");if(o<0)return 0;let i=n.slice(5,o),e=n.slice(o+1);if(/;base64/i.test(i))return t(e);let A=0;for(let r=0,s=e.length;r=55296&&g<=56319&&r+1=56320&&c<=57343?(A+=4,r++):A+=3}else A+=3}return A};function M0(n){let t=typeof n=="string"?n.indexOf("#"):-1;return Dq(t===-1?n:n.slice(0,t),NSe)}function Oq(n){return Dq(n,wq)}var Mq={flush:Fo.constants.Z_SYNC_FLUSH,finishFlush:Fo.constants.Z_SYNC_FLUSH},PSe={flush:Fo.constants.BROTLI_OPERATION_FLUSH,finishFlush:Fo.constants.BROTLI_OPERATION_FLUSH},GSe={flush:Fo.constants.ZSTD_e_flush,finishFlush:Fo.constants.ZSTD_e_flush},Hq=Z.isFunction(Fo.createBrotliDecompress),Kq=Z.isFunction(Fo.createZstdDecompress),xq="gzip, compress, deflate"+(Hq?", br":""),FSe=xq+(Kq?", zstd":""),_q=typeof process<"u"&&process.nextTick?process.nextTick.bind(process):Z.asap,{http:LSe,https:USe}=Uq.default,T0=/https:?/,Tq=Symbol("axios.http.socketListener"),Ty=Symbol("axios.http.currentReq"),Yq=Symbol("axios.http.installedTunnel"),HSe=new Map,Nq=new WeakMap,Rq={22:21,24:5};function KSe(n=process.versions&&process.versions.node){if(!n)return!1;let[t,o]=n.split(".").map(i=>Number(i));return!Number.isInteger(t)||!Number.isInteger(o)?!1:t>24?!0:Rq[t]!=null&&o>=Rq[t]}function xSe(n,t=process.versions&&process.versions.node){if(!KSe(t))return!1;let o=n&&n.options;return!!(o&&Z.hasOwnProp(o,"proxyEnv")&&o.proxyEnv!=null)}function YSe(n,t,o){return T0.test(n.protocol)?o||Lq.globalAgent:t||Fq.globalAgent}function jSe(n,t){let o=n.protocol+"//"+n.hostname+":"+(n.port||"")+"#"+(n.auth||""),i=t?Nq.get(t)||Nq.set(t,new Map).get(t):HSe,e=i.get(o);if(e)return e;let a=t&&t.options?{...t.options,...n}:n;if(e=new _0.default(a),t&&t.options){let A={...t.options},r=e.callback;e.callback=function(g,c){return r.call(this,g,{...A,...c})}}return e[Yq]=!0,i.set(o,e),e}var kq=Bt.protocols.map(n=>n+":"),vq=n=>{if(!Z.isString(n))return n;try{return decodeURIComponent(n)}catch{return n}},Pq=(n,[t,o])=>(n.on("end",o).on("error",o),t),JSe=new hq;function qSe(n,t,o){n.beforeRedirects.proxy&&n.beforeRedirects.proxy(n),n.beforeRedirects.auth&&n.beforeRedirects.auth(n),n.beforeRedirects.sensitiveHeaders&&n.beforeRedirects.sensitiveHeaders(n,o),n.beforeRedirects.config&&n.beforeRedirects.config(n,t,o)}function zSe(n,t){n&&Object.keys(n).forEach(o=>{t.has(o.toLowerCase())&&delete n[o]})}function VSe(n,t){if(!t)return!1;try{return new URL(t.url).origin===new URL(n.href).origin}catch{return!1}}function jq(n,t,o,i,e,a){let A=t,r=YSe(n,a,e);if(!A&&A!==!1&&!xSe(r)){let s=xJ(o);s&&(b0(o)||(A=new URL(s)))}if(i&&n.headers)for(let s of Object.keys(n.headers))s.toLowerCase()==="proxy-authorization"&&delete n.headers[s];if(i&&n.agent&&n.agent[Yq]&&(n.agent=void 0),A){let s=A instanceof URL,g=f=>s||Z.hasOwnProp(A,f)?A[f]:void 0,c=g("username"),I=g("password"),d=Z.hasOwnProp(A,"auth")?A.auth:void 0;if(c&&(d=(c||"")+":"+(I||"")),d){let f=typeof d=="object",Q=f&&Z.hasOwnProp(d,"username")?d.username:void 0,y=f&&Z.hasOwnProp(d,"password")?d.password:void 0;if(!!(Q||y))d=(Q||"")+":"+(y||"");else if(f)throw new De("Invalid proxy authorization",De.ERR_BAD_OPTION,{proxy:A})}if(T0.test(n.protocol)){if(!(e instanceof _0.default)){let f=g("hostname")||g("host"),Q=g("port"),y=g("protocol"),m=y?y.includes(":")?y:`${y}:`:"http:",_=f&&f.includes(":")&&!f.startsWith("[")?`[${f}]`:f,T=new URL(`${m}//${_}${Q?":"+Q:""}`),R={protocol:T.protocol,hostname:T.hostname.replace(/^\[|\]$/g,""),port:T.port,auth:d&&typeof d=="string"?d:void 0};T.protocol==="https:"&&(R.ALPNProtocols=["http/1.1"]);let K=jSe(R,e);n.agent=K,n.agents&&(n.agents.https=K)}}else{if(d){let m=Buffer.from(d,"utf8").toString("base64");n.headers["Proxy-Authorization"]="Basic "+m}let f=!1;for(let m of Object.keys(n.headers))if(m.toLowerCase()==="host"){f=!0;break}f||(n.headers.host=n.hostname+(n.port?":"+n.port:""));let Q=g("hostname")||g("host");n.hostname=Q,n.host=Q,n.port=g("port"),n.path=o;let y=g("protocol");y&&(n.protocol=y.includes(":")?y:`${y}:`)}}n.beforeRedirects.proxy=function(g){jq(g,t,g.href,!0,e,a)}}var WSe=typeof process<"u"&&Z.kindOf(process)==="process",ZSe=n=>new Promise((t,o)=>{let i,e,a=(s,g)=>{e||(e=!0,i&&i(s,g))},A=s=>{a(s),t(s)},r=s=>{a(s,!0),o(s)};n(A,r,s=>i=s).catch(r)}),XSe=({address:n,family:t})=>{if(!Z.isString(n))throw TypeError("address must be a string");return{address:n,family:t||(n.indexOf(".")<0?6:4)}},Gq=(n,t)=>XSe(Z.isObject(n)?n:{address:n,family:t}),$Se={request(n,t){let o=n.protocol+"//"+n.hostname+":"+(n.port||(n.protocol==="https:"?443:80)),{http2Options:i,headers:e}=n,a=JSe.getSession(o,i),{HTTP2_HEADER_SCHEME:A,HTTP2_HEADER_METHOD:r,HTTP2_HEADER_PATH:s,HTTP2_HEADER_STATUS:g}=RSe.constants,c={[A]:n.protocol.replace(":",""),[r]:n.method,[s]:n.path};Z.forEach(e,(d,B)=>{B.charAt(0)!==":"&&(c[B]=d)});let I=a.request(c);return I.once("response",d=>{let B=I;d=Object.assign({},d);let f=d[g];delete d[g],B.headers=d,B.statusCode=+f,t(B)}),I}},Jq=WSe&&function(t){return ZSe(async function(i,e,a){let A=Be=>Z.getSafeProp(t,Be),r=A("transitional")||Bc,s=A("data"),g=A("lookup"),c=A("family"),I=A("httpVersion");I===void 0&&(I=1);let d=A("http2Options"),B=A("httpAgent"),f=A("httpsAgent"),Q=A("proxy"),y=A("responseType"),m=A("responseEncoding"),_=A("socketPath"),T=A("method").toUpperCase(),R=A("maxRedirects"),K=A("maxBodyLength"),L=A("maxContentLength"),U=A("decompress"),z,q=!1,x,G;if(I=+I,Number.isNaN(I))throw TypeError(`Invalid protocol version: '${t.httpVersion}' is not a number`);if(I!==1&&I!==2)throw TypeError(`Unsupported protocol version '${I}'`);let V=I===2;if(g){let Be=Eq(g,Re=>Z.isArray(Re)?Re:[Re]);g=(Re,Ue,MA)=>{Be(Re,Ue,(Ke,_A,at)=>{if(Ke)return MA(Ke);let wA=Z.isArray(_A)?_A.map(lt=>Gq(lt)):[Gq(_A,at)];Ue.all?MA(Ke,wA):MA(Ke,wA[0].address,wA[0].family)})}}let F=new vSe;function N(Be){try{F.emit("abort",!Be||Be.type?new oo(null,t,x):Be)}catch{}}function k(){G&&(clearTimeout(G),G=null)}function J(){let Be=A("timeout"),Re=Be?"timeout of "+Be+"ms exceeded":"timeout exceeded",Ue=A("timeoutErrorMessage");return Ue&&(Re=Ue),new De(Re,r.clarifyTimeoutError?De.ETIMEDOUT:De.ECONNABORTED,t,x)}F.once("abort",e);let $=()=>{k(),t.cancelToken&&t.cancelToken.unsubscribe(N),t.signal&&t.signal.removeEventListener("abort",N),F.removeAllListeners()};(t.cancelToken||t.signal)&&(t.cancelToken&&t.cancelToken.subscribe(N),t.signal&&(t.signal.aborted?N():t.signal.addEventListener("abort",N))),a((Be,Re)=>{if(z=!0,k(),Re){q=!0,$();return}let{data:Ue}=Be;if(Ue instanceof mn.Readable||Ue instanceof mn.Duplex){let MA=mn.finished(Ue,()=>{MA(),$()})}else $()});let ie=qI(A("baseURL"),A("url"),A("allowAbsoluteUrls"),t),pe=_?"http://localhost":Bt.hasBrowserEnv?Bt.origin:void 0,se=new URL(ie,pe),Me=se.protocol||kq[0];if(Me==="data:"){if(L>-1){let Re=String(A("url")||ie||"");if(Oq(Re)>L)return e(new De("maxContentLength size of "+L+" exceeded",De.ERR_BAD_RESPONSE,t))}let Be;if(T!=="GET")return cs(i,e,{status:405,statusText:"method not allowed",headers:{},config:t});try{Be=B0(A("url"),y==="blob",{Blob:t.env&&t.env.Blob})}catch(Re){throw De.from(Re,De.ERR_BAD_REQUEST,t)}return y==="text"?(Be=Be.toString(m),(!m||m==="utf8")&&(Be=Z.stripBOM(Be))):y==="stream"&&(Be=mn.Readable.from(Be)),cs(i,e,{data:Be,status:200,statusText:"OK",headers:new Ht,config:t})}if(kq.indexOf(Me)===-1)return e(new De("Unsupported protocol "+Me,De.ERR_BAD_REQUEST,t));let fe=Ht.from(t.headers).normalize();fe.set("User-Agent","axios/"+Eg,!1);let{onUploadProgress:ke,onDownloadProgress:Ne}=t,We=t.maxRate,ve,aA;if(Z.isSpecCompliantForm(s)){let Be=fe.getContentType(/boundary=([-_\w\d]{10,70})/i);s=pq(s,Re=>{fe.set(Re)},{tag:`axios-${Eg}-boundary`,boundary:Be&&Be[1]||void 0})}else if(Z.isFormData(s)&&Z.isFunction(s.getHeaders)&&s.getHeaders!==Object.prototype.getHeaders){if(TC(fe,s.getHeaders(),A("formDataHeaderPolicy")),!fe.hasContentLength())try{let Be=await kSe.promisify(s.getLength).call(s);Number.isFinite(Be)&&Be>=0&&fe.setContentLength(Be)}catch{}}else if(Z.isBlob(s)||Z.isFile(s))s.size&&fe.setContentType(s.type||"application/octet-stream"),fe.setContentLength(s.size||0),s=mn.Readable.from(_y(s));else if(s&&!Z.isStream(s)){if(!Buffer.isBuffer(s))if(Z.isArrayBuffer(s))s=Buffer.from(new Uint8Array(s));else if(Z.isString(s))s=Buffer.from(s,"utf-8");else return e(new De("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",De.ERR_BAD_REQUEST,t));if(fe.setContentLength(s.length,!1),K>-1&&s.length>K)return e(new De("Request body larger than maxBodyLength limit",De.ERR_BAD_REQUEST,t))}let Qe=Z.toFiniteNumber(fe.getContentLength());Z.isArray(We)?(ve=We[0],aA=We[1]):ve=aA=We,s&&(ke||ve)&&(Z.isStream(s)||(s=mn.Readable.from(s,{objectMode:!1})),s=mn.pipeline([s,new y0({maxRate:Z.toFiniteNumber(ve)})],Z.noop),ke&&s.on("progress",Pq(s,pd(Qe,Cg(dd(ke,_q),!1,3)))));let Ie,Xe=A("auth");if(Xe){let Be=Z.getSafeProp(Xe,"username")||"",Re=Z.getSafeProp(Xe,"password")||"";Ie=Be+":"+Re}if(!Ie&&(se.username||se.password)){let Be=vq(se.username),Re=vq(se.password);Ie=Be+":"+Re}Ie&&fe.delete("authorization");let je;try{je=JI(se.pathname+se.search,A("params"),A("paramsSerializer")).replace(/^\?/,"")}catch(Be){return e(De.from(Be,De.ERR_BAD_REQUEST,t,null,null,{url:A("url"),exists:!0}))}fe.set("Accept-Encoding",Z.hasOwnProp(r,"advertiseZstdAcceptEncoding")&&r.advertiseZstdAcceptEncoding===!0?FSe:xq,!1);let Oe=Object.assign(Object.create(null),{path:je,method:T,headers:Ad(fe),agents:{http:B,https:f},auth:Ie,protocol:Me,family:c,beforeRedirect:qSe,beforeRedirects:Object.create(null),http2Options:d});if(!Z.isUndefined(g)&&(Oe.lookup=g),_){if(typeof _!="string")return e(new De("socketPath must be a string",De.ERR_BAD_OPTION_VALUE,t));let Be=A("allowedSocketPaths");if(Be!=null){let Re=Array.isArray(Be)?Be:[Be],Ue=bq(_);if(!Re.some(Ke=>typeof Ke=="string"&&bq(Ke)===Ue))return e(new De(`socketPath "${_}" is not permitted by allowedSocketPaths`,De.ERR_BAD_OPTION_VALUE,t))}Oe.socketPath=_}else Oe.hostname=se.hostname.startsWith("[")?se.hostname.slice(1,-1):se.hostname,Oe.port=se.port,jq(Oe,Q,Me+"//"+se.hostname+(se.port?":"+se.port:"")+Oe.path,!1,f,B);let EA,hA=!1,iA=!1,Ze=T0.test(Oe.protocol);if(Oe.agent==null&&(Oe.agent=Ze?f:B),V)EA=$Se;else{let Be=A("transport");if(Be)EA=Be;else if(R===0)EA=Ze?Lq:Fq,hA=!0;else{iA=!0,Oe.sensitiveHeaders=[],R&&(Oe.maxRedirects=R);let Re=A("beforeRedirect");if(Re&&(Oe.beforeRedirects.config=Re),Ie){let MA=se.origin,Ke=Ie;Oe.beforeRedirects.auth=function(at){try{new URL(at.href).origin===MA&&(at.auth=Ke)}catch{}}}let Ue=A("sensitiveHeaders");if(Ue!=null){if(!Z.isArray(Ue))return e(new De("sensitiveHeaders must be an array of strings",De.ERR_BAD_OPTION_VALUE,t));let MA=new Set;for(let Ke of Ue){if(!Z.isString(Ke))return e(new De("sensitiveHeaders must be an array of strings",De.ERR_BAD_OPTION_VALUE,t));MA.add(Ke.toLowerCase())}MA.size&&(Oe.sensitiveHeaders=Array.from(MA),Oe.beforeRedirects.sensitiveHeaders=function(_A,at){VSe(_A,at)||zSe(_A.headers,MA)})}EA=Ze?USe:LSe}}K>-1?Oe.maxBodyLength=K:Oe.maxBodyLength=1/0,Oe.insecureHTTPParser=!!A("insecureHTTPParser"),x=EA.request(Oe,function(Re){if(k(),x.destroyed)return;let Ue=[Re],MA=Z.toFiniteNumber(Re.headers["content-length"]);if(Ne||aA){let wA=new y0({maxRate:Z.toFiniteNumber(aA)});Ne&&wA.on("progress",Pq(wA,pd(MA,Cg(dd(Ne,_q),!0,3)))),Ue.push(wA)}let Ke=Re,_A=Re.req||x;if(U!==!1&&Re.headers["content-encoding"])switch((T==="HEAD"||Re.statusCode===204)&&delete Re.headers["content-encoding"],(Re.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":Ue.push(Fo.createUnzip(Mq)),delete Re.headers["content-encoding"];break;case"deflate":Ue.push(new dq),Ue.push(Fo.createUnzip(Mq)),delete Re.headers["content-encoding"];break;case"br":Hq&&(Ue.push(Fo.createBrotliDecompress(PSe)),delete Re.headers["content-encoding"]);break;case"zstd":Kq&&(Ue.push(Fo.createZstdDecompress(GSe)),delete Re.headers["content-encoding"]);break}Ke=Ue.length>1?mn.pipeline(Ue,Z.noop):Ue[0];let at={status:Re.statusCode,statusText:Re.statusMessage,headers:new Ht(Re.headers),config:t,request:_A};if(y==="stream"){if(L>-1){let wA=L,lt=Ke;async function*Er(){let UA=0;for await(let de of lt){if(UA+=de.length,UA>wA)throw new De("maxContentLength size of "+wA+" exceeded",De.ERR_BAD_RESPONSE,t,_A);yield de}}Ke=mn.Readable.from(Er(),{objectMode:!1})}at.data=Ke,cs(i,e,at)}else{let wA=[],lt=0;Ke.on("data",function(UA){wA.push(UA),lt+=UA.length,L>-1&<>L&&(q=!0,Ke.destroy(),N(new De("maxContentLength size of "+L+" exceeded",De.ERR_BAD_RESPONSE,t,_A)))}),Ke.on("aborted",function(){if(q)return;let UA=new De("stream has been aborted",De.ERR_BAD_RESPONSE,t,_A,at);Ke.destroy(UA),e(UA)}),Ke.on("error",function(UA){q||e(De.from(UA,null,t,_A,at))}),Ke.on("end",function(){try{let UA=wA.length===1?wA[0]:Buffer.concat(wA);y!=="arraybuffer"&&(UA=UA.toString(m),(!m||m==="utf8")&&(UA=Z.stripBOM(UA))),at.data=UA}catch(UA){return e(De.from(UA,null,t,at.request,at))}cs(i,e,at)})}F.once("abort",wA=>{Ke.destroyed||(Ke.emit("error",wA),Ke.destroy())})}),F.once("abort",Be=>{x.close?x.close():x.destroy(Be)}),x.on("error",function(Re){e(De.from(Re,null,t,x))});let bA=new Set;if(x.on("socket",function(Re){typeof Re.setKeepAlive=="function"&&Re.setKeepAlive(!0,1e3*60),Re[Tq]||(Re.on("error",function(MA){let Ke=Re[Ty];Ke&&!Ke.destroyed&&Ke.destroy(MA)}),Re[Tq]=!0),Re[Ty]=x,bA.add(Re)}),x.once("close",function(){k();for(let Re of bA)Re[Ty]===x&&(Re[Ty]=null);bA.clear()}),A("timeout")){let Be=parseInt(A("timeout"),10);if(Number.isNaN(Be)){N(new De("error trying to parse `config.timeout` to int",De.ERR_BAD_OPTION_VALUE,t,x));return}let Re=function(){z||N(J())};hA&&Be>0&&(G=setTimeout(Re,Be)),x.setTimeout(Be,Re)}else x.setTimeout(0);if(Z.isStream(s)){let Be=!1,Re=!1;s.on("end",()=>{Be=!0}),s.once("error",MA=>{Re=!0,x.destroy(MA)}),s.on("close",()=>{!Be&&!Re&&N(new oo("Request stream has been aborted",t,x))});let Ue=s;if(K>-1&&!iA){let MA=K,Ke=0;Ue=mn.pipeline([s,new mn.Transform({transform(_A,at,wA){if(Ke+=_A.length,Ke>MA)return wA(new De("Request body larger than maxBodyLength limit",De.ERR_BAD_REQUEST,t,x));wA(null,_A)}})],Z.noop),Ue.on("error",_A=>{x.destroyed||x.destroy(_A)})}Ue.pipe(x)}else s&&x.write(s),x.end()})};var qq=Bt.hasStandardBrowserEnv?((n,t)=>o=>(o=new URL(o,Bt.origin),n.protocol===o.protocol&&n.host===o.host&&(t||n.port===o.port)))(new URL(Bt.origin),Bt.navigator&&/(msie|trident)/i.test(Bt.navigator.userAgent)):()=>!0;var zq=Bt.hasStandardBrowserEnv?{write(n,t,o,i,e,a,A){if(typeof document>"u")return;let r=[`${n}=${encodeURIComponent(t)}`];Z.isNumber(o)&&r.push(`expires=${new Date(o).toUTCString()}`),Z.isString(i)&&r.push(`path=${i}`),Z.isString(e)&&r.push(`domain=${e}`),a===!0&&r.push("secure"),Z.isString(A)&&r.push(`SameSite=${A}`),document.cookie=r.join("; ")},read(n){if(typeof document>"u")return null;let t=document.cookie.split(";");for(let o=0;on instanceof Ht?{...n}:n,ewe=n=>Object.getOwnPropertySymbols&&Object.getOwnPropertyDescriptor?Object.keys(n).concat(Object.getOwnPropertySymbols(n).filter(t=>Object.getOwnPropertyDescriptor(n,t).enumerable)):Object.keys(n);function Sn(n,t){n=n||{},t=t||{};let o=Object.create(null);Object.defineProperty(o,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function i(c,I,d,B){return Z.isPlainObject(c)&&Z.isPlainObject(I)?Z.merge.call({caseless:B},c,I):Z.isPlainObject(I)?Z.merge({},I):Z.isArray(I)?I.slice():I}function e(c,I,d,B){if(Z.isUndefined(I)){if(!Z.isUndefined(c))return i(void 0,c,d,B)}else return i(c,I,d,B)}function a(c,I){if(!Z.isUndefined(I))return i(void 0,I)}function A(c,I){if(Z.isUndefined(I)){if(!Z.isUndefined(c))return i(void 0,c)}else return i(void 0,I)}function r(c){let I=Z.hasOwnProp(t,"transitional")?t.transitional:void 0;if(!Z.isUndefined(I))if(Z.isPlainObject(I)){if(Z.hasOwnProp(I,c))return I[c]}else return;let d=Z.hasOwnProp(n,"transitional")?n.transitional:void 0;if(Z.isPlainObject(d)&&Z.hasOwnProp(d,c))return d[c]}function s(c,I,d){if(Z.hasOwnProp(t,d))return i(c,I);if(Z.hasOwnProp(n,d))return i(void 0,c)}let g={url:a,method:a,data:a,baseURL:A,transformRequest:A,transformResponse:A,paramsSerializer:A,timeout:A,timeoutMessage:A,withCredentials:A,withXSRFToken:A,adapter:A,responseType:A,xsrfCookieName:A,xsrfHeaderName:A,onUploadProgress:A,onDownloadProgress:A,decompress:A,maxContentLength:A,maxBodyLength:A,beforeRedirect:A,transport:A,httpAgent:A,httpsAgent:A,cancelToken:A,socketPath:A,allowedSocketPaths:A,responseEncoding:A,validateStatus:s,headers:(c,I,d)=>e(Vq(c),Vq(I),d,!0)};return Z.forEach(ewe({...n,...t}),function(I){if(I==="__proto__"||I==="constructor"||I==="prototype")return;let d=Z.hasOwnProp(g,I)?g[I]:e,B=Z.hasOwnProp(n,I)?n[I]:void 0,f=Z.hasOwnProp(t,I)?t[I]:void 0,Q=d(B,f,I);Z.isUndefined(Q)&&d!==s||(o[I]=Q)}),Z.hasOwnProp(t,"validateStatus")&&Z.isUndefined(t.validateStatus)&&r("validateStatusUndefinedResolves")===!1&&(Z.hasOwnProp(n,"validateStatus")?o.validateStatus=i(void 0,n.validateStatus):delete o.validateStatus),o}var Awe=n=>encodeURIComponent(n).replace(/%([0-9A-F]{2})/gi,(t,o)=>String.fromCharCode(parseInt(o,16)));function twe(n){let t=Sn({},n),o=d=>Z.hasOwnProp(t,d)?t[d]:void 0,i=o("data"),e=o("withXSRFToken"),a=o("xsrfHeaderName"),A=o("xsrfCookieName"),r=o("headers"),s=o("auth"),g=o("baseURL"),c=o("allowAbsoluteUrls"),I=o("url");if(t.headers=r=Ht.from(r),t.url=JI(qI(g,I,c,t),o("params"),o("paramsSerializer")),s){let d=Z.getSafeProp(s,"username")||"",B=Z.getSafeProp(s,"password")||"";try{r.set("Authorization","Basic "+btoa(d+":"+(B?Awe(B):"")))}catch(f){throw De.from(f,De.ERR_BAD_OPTION_VALUE,n)}}if(Z.isFormData(i)&&(Bt.hasStandardBrowserEnv||Bt.hasStandardBrowserWebWorkerEnv||Z.isReactNative(i)?r.setContentType(void 0):Z.isFunction(i.getHeaders)&&TC(r,i.getHeaders(),o("formDataHeaderPolicy"))),Bt.hasStandardBrowserEnv&&(Z.isFunction(e)&&(e=e(t)),e===!0||e==null&&qq(t.url))){let B=a&&A&&zq.read(A);B&&r.set(a,B)}return t}var Ny=twe;var rwe=typeof XMLHttpRequest<"u",Wq=rwe&&function(n){return new Promise(function(o,i){let e=Ny(n),a=e.data,A=Ht.from(e.headers).normalize(),{responseType:r,onUploadProgress:s,onDownloadProgress:g}=e,c,I,d,B,f;function Q(){B&&B(),f&&f(),e.cancelToken&&e.cancelToken.unsubscribe(c),e.signal&&e.signal.removeEventListener("abort",c)}let y=new XMLHttpRequest;y.open(e.method.toUpperCase(),e.url,!0),y.timeout=e.timeout;function m(){if(!y)return;let T=Ht.from("getAllResponseHeaders"in y&&y.getAllResponseHeaders()),K={data:!r||r==="text"||r==="json"?y.responseText:y.response,status:y.status,statusText:y.statusText,headers:T,config:n,request:y};cs(function(U){o(U),Q()},function(U){i(U),Q()},K),y=null}"onloadend"in y?y.onloadend=m:y.onreadystatechange=function(){!y||y.readyState!==4||y.status===0&&!(y.responseURL&&y.responseURL.startsWith("file:"))||setTimeout(m)},y.onabort=function(){y&&(i(new De("Request aborted",De.ECONNABORTED,n,y)),Q(),y=null)},y.onerror=function(R){let K=R&&R.message?R.message:"Network Error",L=new De(K,De.ERR_NETWORK,n,y);L.event=R||null,i(L),Q(),y=null},y.ontimeout=function(){let R=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",K=e.transitional||Bc;e.timeoutErrorMessage&&(R=e.timeoutErrorMessage),i(new De(R,K.clarifyTimeoutError?De.ETIMEDOUT:De.ECONNABORTED,n,y)),Q(),y=null},a===void 0&&A.setContentType(null),"setRequestHeader"in y&&Z.forEach(Ad(A),function(R,K){y.setRequestHeader(K,R)}),Z.isUndefined(e.withCredentials)||(y.withCredentials=!!e.withCredentials),r&&r!=="json"&&(y.responseType=e.responseType),g&&([d,f]=Cg(g,!0),y.addEventListener("progress",d)),s&&y.upload&&([I,B]=Cg(s),y.upload.addEventListener("progress",I),y.upload.addEventListener("loadend",B)),(e.cancelToken||e.signal)&&(c=T=>{y&&(i(!T||T.type?new oo(null,n,y):T),y.abort(),Q(),y=null)},e.cancelToken&&e.cancelToken.subscribe(c),e.signal&&(e.signal.aborted?c():e.signal.addEventListener("abort",c)));let _=_C(e.url);if(_&&!Bt.protocols.includes(_)){i(new De("Unsupported protocol "+_+":",De.ERR_BAD_REQUEST,n)),Q();return}y.send(a||null)})};var awe=(n,t)=>{if(n=n?n.filter(Boolean):[],!t&&!n.length)return;let o=new AbortController,i=!1,e=function(s){if(!i){i=!0,A();let g=s instanceof Error?s:this.reason;o.abort(g instanceof De?g:new oo(g instanceof Error?g.message:g))}},a=t&&setTimeout(()=>{a=null,e(new De(`timeout of ${t}ms exceeded`,De.ETIMEDOUT))},t),A=()=>{n&&(a&&clearTimeout(a),a=null,n.forEach(s=>{s.unsubscribe?s.unsubscribe(e):s.removeEventListener("abort",e)}),n=null)};n.forEach(s=>{if(!i){if(s.aborted){e.call(s);return}s.addEventListener("abort",e,{once:!0})}});let{signal:r}=o;return r.unsubscribe=()=>Z.asap(A),r},Zq=awe;var iwe=function*(n,t){let o=n.byteLength;if(!t||o{let e=owe(n,t),a=0,A,r=s=>{A||(A=!0,i&&i(s))};return new ReadableStream({async pull(s){try{let{done:g,value:c}=await e.next();if(g){r(),s.close();return}let I=c.byteLength;if(o){let d=a+=I;o(d)}s.enqueue(new Uint8Array(c))}catch(g){throw r(g),g}},cancel(s){return r(s),e.return()}},{highWaterMark:2})};var Xq=64*1024,{isFunction:Ry}=Z,swe=n=>encodeURIComponent(n).replace(/%([0-9A-F]{2})/gi,(t,o)=>String.fromCharCode(parseInt(o,16))),$q=n=>{if(!Z.isString(n))return n;try{return decodeURIComponent(n)}catch{return n}},e4=(n,...t)=>{try{return!!n(...t)}catch{return!1}},gwe=n=>{let t=n.indexOf("://"),o=n;return t!==-1&&(o=o.slice(t+3)),o.includes("@")||o.includes(":")},cwe=n=>{let t=Z.global!==void 0&&Z.global!==null?Z.global:globalThis,{ReadableStream:o,TextEncoder:i}=t;n=Z.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},n);let{fetch:e,Request:a,Response:A}=n,r=e?Ry(e):typeof fetch=="function",s=Ry(a),g=Ry(A);if(!r)return!1;let c=r&&Ry(o),I=r&&(typeof i=="function"?(m=>_=>m.encode(_))(new i):async m=>new Uint8Array(await new a(m).arrayBuffer())),d=s&&c&&e4(()=>{let m=!1,_=new a(Bt.origin,{body:new o,method:"POST",get duplex(){return m=!0,"half"}}),T=_.headers.has("Content-Type");return _.body!=null&&_.body.cancel(),m&&!T}),B=g&&c&&e4(()=>Z.isReadableStream(new A("").body)),f={stream:B&&(m=>m.body)};r&&["text","arrayBuffer","blob","formData","stream"].forEach(m=>{!f[m]&&(f[m]=(_,T)=>{let R=_&&_[m];if(R)return R.call(_);throw new De(`Response type '${m}' is not supported`,De.ERR_NOT_SUPPORT,T)})});let Q=async m=>{if(m==null)return 0;if(Z.isBlob(m))return m.size;if(Z.isSpecCompliantForm(m))return(await new a(Bt.origin,{method:"POST",body:m}).arrayBuffer()).byteLength;if(Z.isArrayBufferView(m)||Z.isArrayBuffer(m))return m.byteLength;if(Z.isURLSearchParams(m)&&(m=m+""),Z.isString(m))return(await I(m)).byteLength},y=async(m,_)=>{let T=Z.toFiniteNumber(m.getContentLength());return T??Q(_)};return async m=>{let{url:_,method:T,data:R,signal:K,cancelToken:L,timeout:U,onDownloadProgress:z,onUploadProgress:q,responseType:x,headers:G,withCredentials:V="same-origin",fetchOptions:F,maxContentLength:N,maxBodyLength:k}=Ny(m),J=Z.isNumber(N)&&N>-1,$=Z.isNumber(k)&&k>-1,ie=ve=>Z.hasOwnProp(m,ve)?m[ve]:void 0,pe=e||fetch;x=x?(x+"").toLowerCase():"text";let se=Zq([K,L&&L.toAbortSignal()],U),Me=null,fe=se&&se.unsubscribe&&(()=>{se.unsubscribe()}),ke,Ne=null,We=()=>new De("Request body larger than maxBodyLength limit",De.ERR_BAD_REQUEST,m,Me);try{let ve,aA=ie("auth");if(aA){let Ze=Z.getSafeProp(aA,"username")||"",bA=Z.getSafeProp(aA,"password")||"";ve={username:Ze,password:bA}}if(gwe(_)){let Ze=new URL(_,Bt.origin);if(!ve&&(Ze.username||Ze.password)){let bA=$q(Ze.username),Be=$q(Ze.password);ve={username:bA,password:Be}}(Ze.username||Ze.password)&&(Ze.username="",Ze.password="",_=Ze.href)}if(ve&&(G.delete("authorization"),G.set("Authorization","Basic "+btoa(swe((ve.username||"")+":"+(ve.password||""))))),J&&typeof _=="string"&&_.startsWith("data:")&&M0(_)>N)throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Me);if($&&T!=="get"&&T!=="head"){let Ze=await Q(R);if(typeof Ze=="number"&&isFinite(Ze)&&(ke=Ze,Ze>k))throw We()}let Qe=$&&(Z.isReadableStream(R)||Z.isStream(R)),Ie=(Ze,bA,Be)=>N0(Ze,Xq,Re=>{if($&&Re>k)throw Ne=We();bA&&bA(Re)},Be);if(d&&T!=="get"&&T!=="head"&&(q||Qe)){if(ke=ke??await y(G,R),ke!==0||Qe){let Ze=new a(_,{method:"POST",body:R,duplex:"half"}),bA;if(Z.isFormData(R)&&(bA=Ze.headers.get("content-type"))&&G.setContentType(bA),Ze.body){let[Be,Re]=q&&pd(ke,Cg(dd(q)))||[];R=Ie(Ze.body,Be,Re)}}}else if(Qe&&!s&&c&&T!=="get"&&T!=="head")R=Ie(R);else if(Qe&&s&&!d&&T!=="get"&&T!=="head")throw new De("Stream request bodies are not supported by the current fetch implementation",De.ERR_NOT_SUPPORT,m,Me);Z.isString(V)||(V=V?"include":"omit");let Xe=s&&"credentials"in a.prototype;if(Z.isFormData(R)){let Ze=G.getContentType();Ze&&/^multipart\/form-data/i.test(Ze)&&!/boundary=/i.test(Ze)&&G.delete("content-type")}G.set("User-Agent","axios/"+Eg,!1);let je={...F,signal:se,method:T.toUpperCase(),headers:Ad(G.normalize()),body:R,duplex:"half",credentials:Xe?V:void 0};Me=s&&new a(_,je);let Oe=await(s?pe(Me,F):pe(_,je)),EA=Ht.from(Oe.headers);if(J){let Ze=Z.toFiniteNumber(EA.getContentLength());if(Ze!=null&&Ze>N)throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Me)}let hA=B&&(x==="stream"||x==="response");if(B&&Oe.body&&(z||J||hA&&fe)){let Ze={};["status","statusText","headers"].forEach(Ke=>{Ze[Ke]=Oe[Ke]});let bA=Z.toFiniteNumber(EA.getContentLength()),[Be,Re]=z&&pd(bA,Cg(dd(z),!0))||[],Ue=0,MA=Ke=>{if(J&&(Ue=Ke,Ue>N))throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Me);Be&&Be(Ke)};Oe=new A(N0(Oe.body,Xq,MA,()=>{Re&&Re(),fe&&fe()}),Ze)}x=x||"text";let iA=await f[Z.findKey(f,x)||"text"](Oe,m);if(J&&!B&&!hA){let Ze;if(iA!=null&&(typeof iA.byteLength=="number"?Ze=iA.byteLength:typeof iA.size=="number"?Ze=iA.size:typeof iA=="string"&&(Ze=typeof i=="function"?new i().encode(iA).byteLength:iA.length)),typeof Ze=="number"&&Ze>N)throw new De("maxContentLength size of "+N+" exceeded",De.ERR_BAD_RESPONSE,m,Me)}return!hA&&fe&&fe(),await new Promise((Ze,bA)=>{cs(Ze,bA,{data:iA,headers:Ht.from(Oe.headers),status:Oe.status,statusText:Oe.statusText,config:m,request:Me})})}catch(ve){if(fe&&fe(),se&&se.aborted&&se.reason instanceof De){let aA=se.reason;throw aA.config=m,Me&&(aA.request=Me),ve!==aA&&Object.defineProperty(aA,"cause",{__proto__:null,value:ve,writable:!0,enumerable:!1,configurable:!0}),aA}if(Ne)throw Me&&!Ne.request&&(Ne.request=Me),Ne;if(ve instanceof De)throw Me&&!ve.request&&(ve.request=Me),ve;if(ve&&ve.name==="TypeError"&&/Load failed|fetch/i.test(ve.message)){let aA=new De("Network Error",De.ERR_NETWORK,m,Me,ve&&ve.response);throw Object.defineProperty(aA,"cause",{__proto__:null,value:ve.cause||ve,writable:!0,enumerable:!1,configurable:!0}),aA}throw De.from(ve,ve&&ve.code,m,Me,ve&&ve.response)}}},Iwe=new Map,R0=n=>{let t=n&&n.env||{},{fetch:o,Request:i,Response:e}=t,a=[i,e,o],A=a.length,r=A,s,g,c=Iwe;for(;r--;)s=a[r],g=c.get(s),g===void 0&&c.set(s,g=r?new Map:cwe(t)),c=g;return g},EsA=R0();var k0={http:Jq,xhr:Wq,fetch:{get:R0}};Z.forEach(k0,(n,t)=>{if(n){try{Object.defineProperty(n,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(n,"adapterName",{__proto__:null,value:t})}});var A4=n=>`- ${n}`,pwe=n=>Z.isFunction(n)||n===null||n===!1;function dwe(n,t){n=Z.isArray(n)?n:[n];let{length:o}=n,i,e,a={};for(let A=0;A`adapter ${s} `+(g===!1?"is not supported by the environment":"is not available in the build")),r=o?A.length>1?`since : `+A.map(A4).join(` `):" "+A4(A[0]):"as no adapter specified";throw new De("There is no suitable adapter to dispatch the request "+r,De.ERR_NOT_SUPPORT)}return e}var ky={getAdapter:dwe,adapters:k0};function v0(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new oo(null,n)}function RC(n){return v0(n),n.headers=Ht.from(n.headers),n.data=fC.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),ky.getAdapter(n.adapter||sd.adapter,n)(n).then(function(i){v0(n),n.response=i;try{i.data=fC.call(n,n.transformResponse,i)}finally{delete n.response}return i.headers=Ht.from(i.headers),i},function(i){if(!QC(i)&&(v0(n),i&&i.response)){n.response=i.response;try{i.response.data=fC.call(n,n.transformResponse,i.response)}finally{delete n.response}i.response.headers=Ht.from(i.response.headers)}return Promise.reject(i)})}var vy={};["object","boolean","number","function","string","symbol"].forEach((n,t)=>{vy[n]=function(i){return typeof i===n||"a"+(t<1?"n ":" ")+n}});var t4={};vy.transitional=function(t,o,i){function e(a,A){return"[Axios v"+Eg+"] Transitional option '"+a+"'"+A+(i?". "+i:"")}return(a,A,r)=>{if(t===!1)throw new De(e(A," has been removed"+(o?" in "+o:"")),De.ERR_DEPRECATED);return o&&!t4[A]&&(t4[A]=!0,console.warn(e(A," has been deprecated since v"+o+" and will be removed in the near future"))),t?t(a,A,r):!0}};vy.spelling=function(t){return(o,i)=>(console.warn(`${i} is likely a misspelling of ${t}`),!0)};function hwe(n,t,o){if(typeof n!="object"||n===null)throw new De("options must be an object",De.ERR_BAD_OPTION_VALUE);let i=Object.keys(n),e=i.length;for(;e-- >0;){let a=i[e],A=Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0;if(A){let r=n[a],s=r===void 0||A(r,a,n);if(s!==!0)throw new De("option "+a+" must be "+s,De.ERR_BAD_OPTION_VALUE);continue}if(o!==!0)throw new De("Unknown option "+a,De.ERR_BAD_OPTION)}}var kC={assertOptions:hwe,validators:vy};var ti=kC.validators,hd=class{constructor(t){this.defaults=t||{},this.interceptors={request:new UT,response:new UT}}async request(t,o){try{return await this._request(t,o)}catch(i){if(i instanceof Error){let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;let a=(()=>{if(!e.stack)return"";let A=e.stack.indexOf(` `);return A===-1?"":e.stack.slice(A+1)})();try{if(!i.stack)i.stack=a;else if(a){let A=a.indexOf(` @@ -364,7 +364,7 @@ ${w("\u5185\u5BB9\u8F83\u957F\uFF0C\u751F\u6210\u5B8C\u6210\u540E\u5C06\u5206\u6 `)+1;e(A&&(a=await this.#o(t,i.replyTo),e.push(a),A=!1),a),g={get messageId(){return a.messageId},rotate:async()=>{if(!A){A=!0;try{await this.#i(a,`${CP(r)} ${w("\u2935\uFE0F \u6700\u7EC8\u7ED3\u679C\u89C1\u4E0B\u65B9")}`),await this.#a(a)}catch(I){console.warn("[dsh-feishu] unable to finalize the superseded stream card:",I.message)}}},setContent:async I=>{let d=String(I??"")||"\u2026",B=await s();await this.#i(B,CP(d)),r=d}};await o.markdown(g);let c=Mke(r);for(let[I,d]of c.entries()){let B=I===0?await s():await this.#o(t,i.replyTo);I>0&&e.push(B),await this.#i(B,d),await this.#a(B)}return{messageId:e[0].messageId,providerMessageIds:e.map(I=>I.messageId)}}catch(r){for(let s of e)await this.#s(s.messageId);throw r}}async sendFile(t,o,{replyTo:i,signal:e}={}){return this.#l(t,o,{replyTo:i,signal:e,messageType:"file",presentation:"feishu-file"})}async sendImage(t,o,{replyTo:i,signal:e}={}){return this.#l(t,o,{replyTo:i,signal:e,messageType:"image",presentation:"feishu-image"})}async#l(t,o,{replyTo:i,signal:e,messageType:a,presentation:A}){if(e?.throwIfAborted(),typeof t!="string"||!t)throw new TypeError("chatId is required");if(!o||typeof o!="object"||typeof o.artifactId!="string"||!o.artifactId||typeof o.deliveryKey!="string"||!o.deliveryKey||typeof o.fileName!="string"||!o.fileName||!Buffer.isBuffer(o.bytes))throw new TypeError("A materialized result file is required");let r;try{r=await k6(Q=>{Q.throwIfAborted();let y=a==="image"?this.#e.im.v1.image.create({data:{image_type:"message",image:o.bytes}}):this.#e.im.v1.file.create({data:{file_type:"stream",file_name:o.fileName,file:o.bytes}});return Bn(o,y),y},{signal:e,timeoutMs:this.#t,stage:"upload"})}catch(Q){throw e?.aborted?uP(e):_u("upload",Q)}e?.throwIfAborted();let s=a==="image"?r?.image_key??r?.data?.image_key:r?.file_key??r?.data?.file_key;if(typeof s!="string"||!s)throw _u("upload",void 0,r?.code);let g=Oke(o,t,a),c=JSON.stringify(a==="image"?{image_key:s}:{file_key:s}),I=i?{path:{message_id:i},data:{msg_type:a,content:c,uuid:g}}:{params:{receive_id_type:"chat_id"},data:{receive_id:t,msg_type:a,content:c,uuid:g}},d=()=>{let Q=i?this.#e.im.v1.message.reply(I):this.#e.im.v1.message.create(I);return Bn(o,Q),Q},B;try{B=await k6(async Q=>{Q.throwIfAborted();let y;try{y=await d()}catch(m){if(G6(m)!==230049)throw m;y={code:230049}}return Q.throwIfAborted(),Number(y?.code)===230049&&(y=await d(),Q.throwIfAborted()),y},{signal:e,timeoutMs:this.#r,stage:"message send"})}catch(Q){throw e?.aborted?uP(e):_u("message send",Q,void 0,{uncertain:!0})}if(Number.isFinite(Number(B?.code))&&Number(B.code)!==0)throw _u("message send",void 0,B.code,{uncertain:!0});let f=B?.data?.message_id;if(typeof f!="string"||!f)throw _u("message send",void 0,void 0,{uncertain:!0});return Zt({deliveryId:o.deliveryKey,presentation:A,providerMessageIds:[f],artifacts:[{artifactId:o.artifactId,outcome:"sent"}]})}async#o(t,o){let i=CP(this.#A),a=Cl("Feishu card.create",await this.#e.cardkit.v1.card.create({data:{type:"card_json",data:JSON.stringify(_ke(i))}}))?.data?.card_id;if(!a)throw new Error("Feishu card.create returned no card_id");let A=await this.#n(t,a,o);return{cardId:a,messageId:A,content:i,sequence:0}}async#i(t,o){if(o===t.content)return;let i=await this.#e.cardkit.v1.cardElement.content({path:{card_id:t.cardId,element_id:v6},data:{content:o,sequence:++t.sequence,uuid:`content_${t.cardId}_${t.sequence}`}});Cl("Feishu cardElement.content",i),t.content=o}async#a(t){let o=await this.#e.cardkit.v1.card.settings({path:{card_id:t.cardId},data:{settings:JSON.stringify({config:{streaming_mode:!1,summary:{content:bke(t.content)||w("\u56DE\u7B54\u5B8C\u6210")}}}),sequence:++t.sequence,uuid:`settings_${t.cardId}_${t.sequence}`}});Cl("Feishu card.settings",o)}async#n(t,o,i){let e=JSON.stringify({type:"card",data:{card_id:o}}),a=i?await this.#e.im.v1.message.reply({path:{message_id:i},data:{msg_type:"interactive",content:e}}):await this.#e.im.v1.message.create({params:{receive_id_type:"chat_id"},data:{receive_id:t,msg_type:"interactive",content:e}});Cl("Feishu message send",a);let A=a?.data?.message_id;if(!A)throw new Error("Feishu message send returned no message_id");return A}async#s(t){try{let o=await this.#e.im.v1.message.delete({path:{message_id:t}});Cl("Feishu message delete",o)}catch(o){console.warn("[bridge] unable to recall a failed streaming card:",o.message)}}async addReaction(t,o){let e=Cl("Feishu reaction.create",await this.#e.im.v1.messageReaction.create({path:{message_id:t},data:{reaction_type:{emoji_type:o}}}))?.data?.reaction_id;if(!e)throw new Error("Feishu reaction.create returned no reaction_id");return e}async removeReaction(t,o){Cl("Feishu reaction.delete",await this.#e.im.v1.messageReaction.delete({path:{message_id:t,reaction_id:o}}))}};var L6="/open-apis/application/v7/app_slash_commands",Tke=new Set(["99991640","99991672"]),ES=Object.freeze(["application:app_slash_command:read","application:app_slash_command:write"]),U6="ai-agent_outlined",fP=Object.freeze([{command:"menu",icon:"skill_outlined",default:"\u6253\u5F00\u529F\u80FD\u83DC\u5355",en_us:"Open the feature menu"},{command:"new",icon:"ai-deepthink_outlined",default:"\u5F00\u542F\u5168\u65B0\u4F1A\u8BDD",en_us:"Start a fresh session"},{command:"help",icon:"promptword_outlined",default:"\u67E5\u770B\u5E2E\u52A9",en_us:"Show help"},{command:"status",icon:"ai-functions_outlined",default:"\u67E5\u770B\u673A\u5668\u4EBA\u72B6\u6001",en_us:"Show bot status"},{command:"compact",icon:"ai-block_outlined",default:"\u538B\u7F29\u5F53\u524D\u4F1A\u8BDD\u4E0A\u4E0B\u6587",en_us:"Compact the current session"},{command:"sessionlist",icon:"chat-ai_outlined",default:"\u5217\u51FA\u4F1A\u8BDD",en_us:"List sessions"},{command:"workspacelist",icon:"folder_outlined",default:"\u5217\u51FA\u5DE5\u4F5C\u533A",en_us:"List workspaces"},{command:"watch",icon:"flag_outlined",default:"\u5173\u6CE8\u4E00\u4E2A\u4F1A\u8BDD",en_us:"Watch a session"},{command:"unwatch",icon:"clear_outlined",default:"\u53D6\u6D88\u5173\u6CE8\u4F1A\u8BDD",en_us:"Unwatch a session"},{command:"watchlist",icon:"flag_outlined",default:"\u67E5\u770B\u5173\u6CE8\u5217\u8868",en_us:"List watched sessions"},{command:"archived",icon:"folder_outlined",default:"\u8BBE\u7F6E\u5F52\u6863\u4F1A\u8BDD\u663E\u9690\uFF08on/off\uFF09",en_us:"Show or hide archived sessions (on/off)"}]);function QP(n,t){let o=n==="lark"?"https://open.larksuite.com":"https://open.feishu.cn";return new URL(t,o)}function F6(n,t){if(!n||typeof n!="object"||Array.isArray(n))throw new Error(`${t} returned a non-JSON response`);if(n.code!==0){let o=new Error(`${t} failed: ${n.msg||`code ${n.code}`}`);throw o.code=String(n.code),o.msg=n.msg,o}return n}function yP(n,t){let o=AbortSignal.timeout(t);return n?AbortSignal.any([n,o]):o}async function mP(n,t,o){try{return F6(await n.request(t),o)}catch(i){let e=i?.response?.data;if(e&&typeof e=="object"&&!Array.isArray(e)&&Object.hasOwn(e,"code"))return F6(e,o);throw i}}async function Nke({appId:n,appSecret:t,domain:o,httpInstance:i,timeoutMs:e,signal:a}){if(!n||!t)throw new Error("Feishu slash registration requires app credentials");if(!i||typeof i.request!="function")throw new TypeError("Feishu slash registration requires an HTTP instance");let A=await mP(i,{method:"POST",url:QP(o,"/open-apis/auth/v3/tenant_access_token/internal").href,headers:{"content-type":"application/json; charset=utf-8"},data:{app_id:n,app_secret:t},signal:yP(a,e),timeout:e},"Feishu authentication");if(!A.tenant_access_token)throw new Error("Feishu authentication returned no tenant access token");return A.tenant_access_token}async function Rke({tenantAccessToken:n,domain:t,httpInstance:o,timeoutMs:i,signal:e}){let a=await mP(o,{method:"GET",url:QP(t,L6).href,headers:{authorization:`Bearer ${n}`,"content-type":"application/json; charset=utf-8"},signal:yP(e,i),timeout:i},"Feishu slash command list");return Array.isArray(a.data?.items)?a.data.items:[]}async function kke({tenantAccessToken:n,domain:t,httpInstance:o,timeoutMs:i,signal:e,command:a,description:A,icon:r=U6}){let s={command:a};return A&&(A.default_value||A.i18n)?s.description=A:typeof A=="string"&&A.trim()&&(s.description={default_value:A.trim()}),r&&(s.description={...s.description??{},icon:{icon_key:r}}),(await mP(o,{method:"POST",url:QP(t,L6).href,headers:{authorization:`Bearer ${n}`,"content-type":"application/json; charset=utf-8"},data:s,signal:yP(e,i),timeout:i},`Feishu slash command create (/${a})`)).data?.command_id??null}async function H6({appId:n,appSecret:t,domain:o="feishu",httpInstance:i,timeoutMs:e=15e3,signal:a,manifest:A=fP}){let r=await Nke({appId:n,appSecret:t,domain:o,httpInstance:i,timeoutMs:e,signal:a}),s=new Set((await Rke({tenantAccessToken:r,domain:o,httpInstance:i,timeoutMs:e,signal:a})).map(I=>I.command)),g=[],c=[];for(let I of A){let d=String(I.command??"").replace(/^\//,"");if(d&&!s.has(d))try{let B={default_value:I.default??I.en_us??d,i18n:{zh_cn:I.default??d,en_us:I.en_us??I.default??d}},f=await kke({tenantAccessToken:r,domain:o,httpInstance:i,timeoutMs:e,signal:a,command:d,description:B,icon:I.icon??U6});g.push({command:d,command_id:f})}catch(B){if(B?.code==="40000000"&&/already exists/i.test(B?.msg??"")){s.add(d);continue}if(Tke.has(B?.code)||/(?:lacks permission|access denied)/i.test(B?.msg??"")){c.push({command:d,error:B});break}c.push({command:d,error:B?.message??String(B)})}}return{created:g,existing:[...s].filter(I=>I!=null),failed:c}}var Pke=15e3,Gke="\u2705 \u4FEE\u590D\u5B8C\u6210\uFF1A\u5DF2\u5B9E\u6D4B\u6536\u5230 card.action.trigger\uFF0C\u83DC\u5355\u6309\u94AE\u73B0\u5728\u53EF\u7528\u3002",Fke="\u26A0\uFE0F \u4FEE\u590D\u9A8C\u8BC1\u8D85\u65F6\uFF1A\u672A\u6536\u5230\u6D4B\u8BD5\u5361\u6309\u94AE\u7684 card.action.trigger\uFF0C\u4E0D\u80FD\u786E\u8BA4\u6309\u94AE\u5DF2\u4FEE\u590D\u3002\u8BF7\u4E0D\u8981\u91CD\u590D\u6388\u6743\uFF1B\u5148\u68C0\u67E5\u98DE\u4E66\u5F00\u653E\u5E73\u53F0\u7684\u5361\u7247\u56DE\u8C03\u914D\u7F6E\uFF0C\u786E\u8BA4\u540E\u518D\u53D1\u9001 /repair\u3002",SP="\u26A0\uFE0F \u4FEE\u590D\u9A8C\u8BC1\u5931\u8D25\uFF1A\u65E0\u6CD5\u53D1\u9001\u4E13\u7528\u6D4B\u8BD5\u5361\uFF0C\u4E0D\u80FD\u786E\u8BA4 card.action.trigger \u5DF2\u6062\u590D\u3002\u8BF7\u4E0D\u8981\u91CD\u590D\u6388\u6743\uFF1B\u5148\u68C0\u67E5\u673A\u5668\u4EBA\u6D88\u606F\u6743\u9650\u548C\u8FDE\u63A5\u72B6\u6001\u3002",Lke="\u26A0\uFE0F \u4FEE\u590D\u9A8C\u8BC1\u4E2D\u65AD\uFF1ARuntime \u5DF2\u505C\u6B62\uFF0C\u672A\u5B8C\u6210 card.action.trigger \u5B9E\u6D4B\uFF0C\u4E0D\u80FD\u786E\u8BA4\u4FEE\u590D\u6210\u529F\u3002\u8BF7\u4E0D\u8981\u91CD\u590D\u6388\u6743\uFF1B\u5148\u7B49\u5F85\u673A\u5668\u4EBA\u6062\u590D\u8FDE\u63A5\u3002",Uke=new Set(["connected","connecting","reconnecting"]);function Mn(n){return typeof n=="string"&&n.trim()?n.trim():null}function Hke(n){return Mn(n?.operator?.open_id)??Mn(n?.operator?.operator_id?.open_id)}function Kke(n,t){try{let o=n?.getConnectionStatus?.()?.state;return typeof o=="string"&&o?o:t}catch{return t}}function Yd(n,t){let o=new Error(t);return o.code=n,o}function xke(n,t){if(!n||typeof n.request!="function")return;let o=i=>({...i??{},timeout:i?.timeout??t});return{request:i=>n.request(o(i)),get:(i,e)=>n.get(i,o(e)),delete:(i,e)=>n.delete(i,o(e)),head:(i,e)=>n.head(i,o(e)),options:(i,e)=>n.options(i,o(e)),post:(i,e,a)=>n.post(i,e,o(a)),put:(i,e,a)=>n.put(i,e,o(a)),patch:(i,e,a)=>n.patch(i,e,o(a))}}function Yke({allowedSenderCount:n=1}={}){return{startedAt:null,ready:!1,feishuLongConnectionState:"idle",harnessReachable:!1,messagesReceived:0,messagesReplied:0,messagesRejected:0,reactionsAdded:0,reactionsRemoved:0,reactionErrors:0,streamResponses:0,streamUpdates:0,streamFallbacks:0,streamErrors:0,cardActionsReceived:0,cardActionProbesVerified:0,lastMessageAt:null,lastReplyAt:null,lastRejectedAt:null,lastCardActionAt:null,lastError:null,agentPreset:"standard",authorizationMode:"sender-open-id-allowlist",allowedSenderCount:n,slashCommandRegistration:"idle",slashCommandsRegistered:0,slashCommandsExisting:0,slashCommandsFailed:0,slashCommandsError:null}}var CS=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c;#g;#I;#d;#h;#C;#u;#B=null;#f=null;#Q=null;#S=null;#y=null;#m=null;#D=new Map;#E;#N=!0;constructor({lark:t,botId:o,appId:i,appSecret:e,domain:a="feishu",botOpenId:A,groupResponseMode:r,ownerOpenId:s,ownerOpenIds:g,harness:c,state:I,contextEnhancement:d,accessPolicy:B,repair:f,replyTimeoutMs:Q=6e5,connectTimeoutMs:y=15e3,requestTimeoutMs:m=Pke,slashCommands:_=!0,wsAgent:T,logger:R=console}){if(!t)throw new Error("FeishuRuntime requires the Feishu SDK");if(!i||!e)throw new Error("FeishuRuntime requires app credentials");let K=Array.isArray(g)?g:[s],L=[...new Set(K.filter(U=>typeof U=="string"&&U))];if(L.length===0)throw new Error("FeishuRuntime requires at least one owner open_id");if(!c)throw new Error("FeishuRuntime requires a Harness client");if(!I)throw new Error("FeishuRuntime requires a state store");if(f!=null&&!Mn(o))throw new TypeError("FeishuRuntime repair capability requires a botId");if(!Number.isFinite(m)||m<=0)throw new TypeError("FeishuRuntime requestTimeoutMs must be a positive number");this.#e=t,this.#A=Mn(o),this.#t=i,this.#r=e,this.#l=a,this.#o=Mn(A),this.#i=Io(r),this.#a=L,this.#n=c,this.#s=I,this.#p=d,this.#c=B,this.#u=f??null,this.#g=Q,this.#I=y,this.#d=m,this.#N=!!_,this.#h=T,this.#C=R,this.#E=Yke({allowedSenderCount:L.length})}get status(){return structuredClone(this.#E)}setGroupResponseMode(t){this.#i=Io(t),this.#f?.setGroupResponseMode(this.#i)}async start(){for(;;){for(;this.#y;)await this.#y;if(this.#S)return this.#S;let o=this.#Q;if(o){let i=Kke(o,this.#E.feishuLongConnectionState);if(Uke.has(i))return this.status;await this.stop({preserveError:i==="failed"});continue}if(this.#B||this.#f||this.#m){await this.stop({preserveError:this.#E.feishuLongConnectionState==="failed"});continue}break}let t;return t=this.#T().finally(()=>{this.#S===t&&(this.#S=null)}),this.#S=t,t}async#T(){let t=new AbortController;this.#m=t;let{signal:o}=t,i=()=>o.reason??new DOMException("Feishu runtime stopped","AbortError"),e=()=>!o.aborted&&this.#m===t,a=()=>{if(!e())throw i()};this.#E.startedAt=new Date().toISOString(),this.#E.feishuLongConnectionState="connecting",this.#E.lastError=null;try{await this.#n.ensureRunning({signal:o}),a(),this.#E.harnessReachable=!0;let A=this.#l==="lark"?this.#e.Domain.Lark:this.#e.Domain.Feishu,r={appId:this.#t,appSecret:this.#r,domain:A},s=xke(this.#e.defaultHttpInstance,this.#d);s&&(r.httpInstance=s);let g=new this.#e.Client(r);this.#B=g;let c=new hS({client:g,initialText:w("\u5DF2\u8FDE\u63A5 DeepSeek Harness\uFF0C\u6B63\u5728\u601D\u8003\u2026")}),I=new pS({client:g,channel:c,harness:this.#n,state:this.#s,contextEnhancement:this.#p,accessPolicy:this.#c,status:this.#E,allowedSenderOpenIds:new Set(this.#a),botId:this.#A,appId:this.#t,botOpenId:this.#o,groupResponseMode:this.#i,repair:this.#u,replyTimeoutMs:this.#g,signal:o,logger:this.#C});this.#f=I;let d=new this.#e.EventDispatcher({}).register({"im.message.receive_v1":_=>{e()&&I.accept(_)},"im.message.reaction.created_v1":()=>{},"im.message.reaction.deleted_v1":()=>{},"card.action.trigger":_=>{e()&&(this.#E.cardActionsReceived+=1,this.#E.lastCardActionAt=new Date().toISOString(),this.#O(_)||I.onCardAction(_))}}),B,f,Q=new Promise((_,T)=>{let R=!1,K=()=>{f(i())},L=(z,q)=>{R||(R=!0,clearTimeout(U),o.removeEventListener("abort",K),z(q))},U=setTimeout(()=>{L(T,new Error(`Feishu WebSocket handshake timed out after ${this.#I}ms`))},this.#I);B=()=>{L(_)},f=z=>{L(T,z)},o.addEventListener("abort",K,{once:!0}),o.aborted&&K()});Q.catch(()=>{});let y=new this.#e.WSClient({...r,...this.#h?{agent:this.#h}:{},loggerLevel:this.#e.LoggerLevel.info,handshakeTimeoutMs:this.#I,onReady:()=>{e()&&(this.#E.feishuLongConnectionState="connected",this.#E.ready=!0,this.#E.lastError=null,B())},onError:_=>{e()&&(this.#E.feishuLongConnectionState="failed",this.#E.ready=!1,this.#E.lastError=_?.message??String(_),this.#C.error("[dsh-feishu] Feishu long connection failed:",this.#E.lastError),f(_))},onReconnecting:()=>{e()&&(this.#E.feishuLongConnectionState="reconnecting",this.#E.ready=!1)},onReconnected:()=>{e()&&(this.#E.feishuLongConnectionState="connected",this.#E.ready=!0,this.#E.lastError=null)}});this.#Q=y;let m=Promise.resolve().then(()=>y.start({eventDispatcher:d})).catch(_=>{throw f(_),_});return await Promise.all([m,Q]),a(),this.#N&&s&&this.#R(s,e,o),this.status}catch(A){throw o.aborted||(this.#E.ready=!1,this.#E.feishuLongConnectionState="failed",this.#E.lastError=A?.message??String(A),await this.#G({preserveError:!0,abortController:t})),A}}async beginCardActionProbe({expectedOperatorOpenId:t,timeoutMs:o=9e4}={}){if(!this.#E.ready||!this.#B)throw Yd("card_action_probe_unavailable","\u98DE\u4E66\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5");let i=Mn(t);if(!i||i==="*")throw new TypeError("A precise Feishu operator open_id is required");if(!Number.isFinite(o)||o<=0||o>10*6e4)throw new TypeError("Card-action probe timeout must be between 1 and 600000ms");let e=vke().replaceAll("-",""),a;try{a=await this.#B.im.v1.message.create({params:{receive_id_type:"open_id"},data:{receive_id:i,msg_type:"interactive",content:C6(e)}})}catch{throw this.#w(i,w(SP),"failure"),Yd("card_action_probe_send_failed","\u65E0\u6CD5\u53D1\u9001\u98DE\u4E66\u5361\u7247\u56DE\u8C03\u6D4B\u8BD5")}if(a?.code&&a.code!==0)throw this.#w(i,w(SP),"failure"),Yd("card_action_probe_send_failed","\u65E0\u6CD5\u53D1\u9001\u98DE\u4E66\u5361\u7247\u56DE\u8C03\u6D4B\u8BD5");let A=Mn(a?.data?.message_id)??Mn(a?.message_id);if(!A)throw this.#w(i,w(SP),"failure"),Yd("card_action_probe_send_failed","\u98DE\u4E66\u672A\u8FD4\u56DE\u6D4B\u8BD5\u5361\u7247\u7684\u6D88\u606F ID");return new Promise((r,s)=>{let g=setTimeout(()=>{let c=this.#D.get(A);!c||c.nonce!==e||(this.#D.delete(A),this.#w(i,w(Fke),"timeout"),s(Yd("card_action_probe_timeout","\u5728\u89C4\u5B9A\u65F6\u95F4\u5185\u672A\u6536\u5230\u98DE\u4E66\u5361\u7247\u6309\u94AE\u56DE\u8C03")))},o);g.unref?.(),this.#D.set(A,{messageId:A,nonce:e,expectedOperatorOpenId:i,timeout:g,resolve:r,reject:s})})}#O(t){let o=Mn(t?.context?.open_message_id);if(!o)return!1;let i=this.#D.get(o);if(!i)return!1;let e=t?.action?.value,a=Hke(t);return e?.action!=="repair_verify"||e?.nonce!==i.nonce||a!==i.expectedOperatorOpenId?!1:(clearTimeout(i.timeout),this.#D.delete(o),this.#E.cardActionProbesVerified+=1,this.#w(a,w(Gke),"success").finally(()=>{i.resolve({verified:!0,messageId:o,operatorOpenId:a})}),!0)}#w(t,o,i){let e=this.#B;return e?Promise.resolve().then(async()=>{let a=await e.im.v1.message.create({params:{receive_id_type:"open_id"},data:{receive_id:t,msg_type:"text",content:JSON.stringify({text:o})}});if(a?.code&&a.code!==0)throw new Error("Feishu callback repair notice failed");return!0}).catch(()=>(this.#C.warn?.(`[dsh-feishu] unable to send the callback repair ${i} notice`),!1)):(this.#C.warn?.(`[dsh-feishu] unable to send the callback repair ${i} notice`),Promise.resolve(!1))}async sendConnectionTest(t){if(!this.#E.ready||!this.#B){let e=new Error("\u98DE\u4E66\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5");throw e.code="test-target-unavailable",e}if(typeof t!="string"||!t.trim())throw new TypeError("Feishu connection test text is required");let o=async(e,a,A)=>{let r=await this.#B.im.v1.message.create({params:{receive_id_type:e},data:{receive_id:a,msg_type:"text",content:JSON.stringify({text:A})}});if(r?.code&&r.code!==0)throw new Error(`Feishu connection test failed: ${r.msg||r.code}`)},i=this.#a.find(e=>e!=="*");return i?(await o("open_id",i,t),{sent:!0}):nc({state:this.#s,text:t,channelLabel:w("\u98DE\u4E66\u673A\u5668\u4EBA"),send:async(e,a)=>{let A=typeof e?.chatId=="string"?e.chatId.trim():"";if(!A)throw Cr(w("\u98DE\u4E66\u673A\u5668\u4EBA"));await o("chat_id",A,a)}})}async sendProactiveText(t,o,{signal:i}={}){if(!this.#E.ready||!this.#B){let r=new Error("\u98DE\u4E66\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5");throw r.code="bot-not-connected",r}let e=t?.kind==="user"?"open_id":t?.kind==="group"?"chat_id":null,a=t?.kind==="user"?Mn(t?.route?.openId):t?.kind==="group"?Mn(t?.route?.chatId):null;if(!e||!a){let r=new TypeError("Invalid Feishu proactive delivery target");throw r.code="invalid-target",r}i?.throwIfAborted();let A=await this.#B.im.v1.message.create({params:{receive_id_type:e},data:{receive_id:a,msg_type:"text",content:JSON.stringify({text:o})}});if(A?.code&&A.code!==0){let r=new Error(`Feishu proactive delivery failed: ${A.msg||A.code}`);throw r.code="target-rejected",r}return{sent:!0}}async#R(t,o,i){this.#E.slashCommandRegistration="registering",this.#E.slashCommandsError=null;try{let e=await H6({appId:this.#t,appSecret:this.#r,domain:this.#l,httpInstance:t,signal:i,manifest:fP});if(!o())return;this.#E.slashCommandRegistration="done",this.#E.slashCommandsRegistered=e.created.length,this.#E.slashCommandsExisting=e.existing.length,this.#E.slashCommandsFailed=e.failed.length,this.#E.slashCommandsError=e.failed.length>0?e.failed.map(a=>`/${a.command}: ${a.error?.message??String(a.error)}`).join("; "):null,e.created.length>0&&this.#C.info?.(`[dsh-feishu] registered ${e.created.length} slash command(s)`),e.failed.length>0&&this.#C.warn?.(`[dsh-feishu] ${e.failed.length} slash command(s) failed to register: ${this.#E.slashCommandsError}`)}catch(e){if(!o())return;this.#E.slashCommandRegistration="failed",this.#E.slashCommandsError=e?.message??String(e),this.#C.warn?.(`[dsh-feishu] slash command registration skipped: ${this.#E.slashCommandsError}`)}}stop(t={}){if(this.#y)return this.#y;let o;return o=this.#_(t).finally(()=>{this.#y===o&&(this.#y=null)}),this.#y=o,o}async#_({preserveError:t=!1}={}){let o=this.#m;this.#m===o&&(this.#m=null),o?.abort(new DOMException("Feishu runtime stopped","AbortError"));let i=this.#S;return i&&await i.catch(()=>{}),this.#G({preserveError:t,abortController:o})}async#G({preserveError:t=!1,abortController:o}={}){let i=t?this.#E.lastError:null;this.#m===o&&(this.#m=null),o?.abort(new DOMException("Feishu runtime stopped","AbortError"));for(let A of this.#D.values())clearTimeout(A.timeout),this.#w(A.expectedOperatorOpenId,w(Lke),"abort"),A.reject(Yd("abort","\u98DE\u4E66\u8FD0\u884C\u65F6\u5DF2\u505C\u6B62"));this.#D.clear(),this.#E.ready=!1;let e=this.#Q;this.#Q=null,e?.close({force:!0});let a=this.#f;return this.#f=null,a&&await a.waitForIdle(),this.#B=null,this.#E.feishuLongConnectionState=t?"failed":"idle",this.#E.slashCommandRegistration="idle",this.#E.lastError=i,this.status}};var uS=class extends ur{constructor(t){super({...t,rpcIdPrefix:"feishu",logPrefix:"dsh-feishu"})}};import{createHash as jke}from"node:crypto";import{mkdir as Jke,readFile as qke,rename as zke,unlink as Vke,writeFile as Wke}from"node:fs/promises";import{dirname as Zke}from"node:path";var QS="DSH_FEISHU_APP_SECRET";function Qs(n){return typeof n=="string"&&n.trim()?n.trim():null}function K6(n){let t=Qs(n);return t&&/^[A-Za-z0-9_-]{1,128}$/.test(t)?t:null}function x6(n){return`bot_${jke("sha256").update(n).digest("hex").slice(0,24)}`}function Xke(n){let t=Array.isArray(n.ownerOpenIds)?n.ownerOpenIds:[n.ownerOpenId];return[...new Set(t.map(Qs).filter(Boolean))]}function BS(n,{legacy:t=!1}={}){if(!n||typeof n!="object")return null;let o=Qs(n.appId),i=Xke(n);if(!o||i.length===0)return null;let e=K6(n.id)??(t?x6(o):null),a=Qs(n.secretRef)??(t?QS:null);if(!e||!a||!/^[A-Za-z_][A-Za-z0-9_]*$/.test(a))return null;let A=n.domain==="lark"?"lark":"feishu";return Object.freeze({id:e,appId:o,secretRef:a,ownerOpenIds:Object.freeze(i),domain:A,botName:Qs(n.botName),botOpenId:Qs(n.botOpenId),activated:n.activated??null,groupResponseMode:Io(n.groupResponseMode),groupMessagePermissionGranted:n.groupMessagePermissionGranted===!0,deletionPending:n.deletionPending===!0,connectedAt:Qs(n.connectedAt),createdAt:Qs(n.createdAt)??Qs(n.connectedAt)})}function $ke(n){if(!n||typeof n!="object")return null;if(n.version===2&&Array.isArray(n.bots)){let o=n.bots.map(A=>BS(A));if(o.some(A=>A===null))throw new Error("dsh-feishu config contains an invalid bot entry");let i=new Set,e=new Set,a=new Set;for(let A of o){if(i.has(A.id)||e.has(A.secretRef)||a.has(A.appId))throw new Error("dsh-feishu config contains duplicate bot identities");i.add(A.id),e.add(A.secretRef),a.add(A.appId)}return{value:Object.freeze({version:2,bots:Object.freeze(o)}),migrated:!1}}let t=BS(n,{legacy:!0});return t?{value:Object.freeze({version:2,bots:Object.freeze([t])}),migrated:!0}:null}var fS=class{#e;#A=Object.freeze({version:2,bots:Object.freeze([])});#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{let t=JSON.parse(await qke(this.#e,"utf8")),o=$ke(t);if(!o)throw new Error("dsh-feishu config is incomplete or invalid");this.#A=o.value,o.migrated&&await this.#o(this.#A)}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=Object.freeze({version:2,bots:Object.freeze([])})}return this}get(){let t=this.#A.bots[0];if(!t)return null;let o=structuredClone(t);return o.ownerOpenId=o.ownerOpenIds[0],o}list(){return structuredClone(this.#A.bots)}getBot(t){let o=this.#A.bots.find(i=>i.id===t);return o?structuredClone(o):null}async save(t){let o={...t};o.id||(o.id=x6(Qs(o.appId)??"invalid")),o.secretRef||(o.secretRef=QS);let i=BS(o);if(!i)throw new Error("Refusing to persist incomplete dsh-feishu configuration");return await this.#r([i]),this.get()}async saveBot(t){let o=BS(t);if(!o)throw new Error("Refusing to persist incomplete dsh-feishu bot configuration");return this.#l(i=>{if(i.find(r=>r.secretRef===o.secretRef&&r.id!==o.id))throw new Error("Refusing to share a credential reference between Feishu bots");if(i.find(r=>r.appId===o.appId&&r.id!==o.id))throw new Error("Refusing to persist the same Feishu app twice");let A=i.findIndex(r=>r.id===o.id);return A===-1?i.push(o):i[A]=o,structuredClone(o)})}async removeBot(t){if(!K6(t))throw new TypeError("Invalid Feishu bot id");return this.#l(o=>{let i=o.findIndex(a=>a.id===t);if(i===-1)return null;let[e]=o.splice(i,1);return structuredClone(e)})}async clear(){let t=this.#t.then(async()=>{try{await Vke(this.#e)}catch(o){if(o?.code!=="ENOENT")throw o}this.#A=Object.freeze({version:2,bots:Object.freeze([])})});this.#t=t.then(()=>{},()=>{}),await t}async#r(t){let o=Object.freeze({version:2,bots:Object.freeze([...t])}),i=this.#t.then(async()=>{await this.#o(o),this.#A=o});this.#t=i.then(()=>{},()=>{}),await i}async#l(t){let o,i=this.#t.then(async()=>{let e=[...this.#A.bots];o=t(e);let a=Object.freeze({version:2,bots:Object.freeze(e)});await this.#o(a),this.#A=a});return this.#t=i.then(()=>{},()=>{}),await i,o}async#o(t){await Jke(Zke(this.#e),{recursive:!0,mode:448});let o=`${this.#e}.tmp`;await Wke(o,`${JSON.stringify(t,null,2)} -`,{encoding:"utf8",mode:384}),await zke(o,this.#e)}};import{randomUUID as V6}from"node:crypto";var wP=new Set(["starting","qr_ready","polling","slow_down","domain_switched","saving"]),eve=new Set(["polling","slow_down","domain_switched"]),Ki=Object.freeze({IDLE:"idle",STARTING:"starting",QR_READY:"qr_ready",POLLING:"polling",SLOW_DOWN:"slow_down",DOMAIN_SWITCHED:"domain_switched",SAVING:"saving",SUCCEEDED:"succeeded",EXPIRED:"expired",CANCELLED:"cancelled",ERROR:"error"});function Y6(n){return["access_denied","expired_token","abort"].includes(n?.code)?n.code:"registration_failed"}function DP(n){let t=Y6(n);return{code:t,message:{access_denied:"Registration was denied.",abort:"Registration was cancelled.",expired_token:"The registration QR code expired."}[t]??"Unable to register the Feishu app."}}function Ave(n){let t=Number(n);if(!Number.isFinite(t)||t<=0)throw new TypeError("registerApp onQRCodeReady returned an invalid expireIn");return t}function tve(n){if(n!==void 0){if(n===null||typeof n!="object"||Array.isArray(n))throw new TypeError("registerApp returned invalid user_info");return{...n}}}var Tg=class{#e;#A;#t;#r;#l;#o=0;#i=null;#a;constructor({registerApp:t,onCredentials:o,now:i=Date.now,setTimeout:e=globalThis.setTimeout,clearTimeout:a=globalThis.clearTimeout}={}){if(typeof t!="function")throw new TypeError("RegistrationManager requires a registerApp function");if(typeof o!="function")throw new TypeError("RegistrationManager requires an onCredentials function");if(typeof i!="function"||typeof e!="function"||typeof a!="function")throw new TypeError("RegistrationManager clock dependencies must be functions");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#a=this.#s(null,Ki.IDLE)}start(t={}){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError("Registration options must be an object");this.#f();let o={id:++this.#o,controller:new AbortController,qrCodeUrl:null,expiresAt:null,pollIntervalSeconds:null,expiryTimer:null};this.#i=o,this.#a=this.#s(o,Ki.STARTING);let i={...t,signal:o.controller.signal,onQRCodeReady:a=>this.#c(o,a),onStatusChange:a=>this.#g(o,a)};return Promise.resolve().then(()=>this.#e(i)).then(a=>this.#I(o,a),a=>this.#d(o,a)),this.status()}status(){this.#h();let t={...this.#a};t.error&&(t.error={...t.error});let o=this.#i;return o&&o.expiresAt!==null&&wP.has(t.state)&&(t.remainingSeconds=Math.max(0,Math.ceil((o.expiresAt-this.#t())/1e3))),t}cancel(){let t=this.#i;return t?(this.#u(t,Ki.CANCELLED,{error:{code:"abort",message:"Registration was cancelled."}}),t.controller.abort(),this.status()):this.status()}#n(t){return this.#i===t}#s(t,o,i={}){let e={state:o,attempt:t?.id??this.#o,updatedAt:this.#t(),...i};return t?.qrCodeUrl&&wP.has(o)&&(e.qrCodeUrl=t.qrCodeUrl,e.expiresAt=t.expiresAt),t?.pollIntervalSeconds!==null&&wP.has(o)&&(e.pollIntervalSeconds=t.pollIntervalSeconds),e}#p(t,o,i={}){this.#n(t)&&(this.#a=this.#s(t,o,i))}#c(t,o){if(!this.#n(t))return;if(typeof o?.url!="string"||!o.url)throw new TypeError("registerApp onQRCodeReady returned an invalid URL");let i=Ave(o.expireIn);t.qrCodeUrl=o.url,t.expiresAt=this.#t()+i*1e3,this.#B(t),t.expiryTimer=this.#r(()=>this.#C(t),i*1e3),t.expiryTimer?.unref?.(),this.#p(t,Ki.QR_READY)}#g(t,o){!this.#n(t)||!eve.has(o?.status)||(o.status===Ki.SLOW_DOWN&&Number.isFinite(Number(o.interval))&&(t.pollIntervalSeconds=Number(o.interval)),this.#p(t,o.status))}async#I(t,o){if(!this.#n(t))return;let i=o?.client_id,e=o?.client_secret;if(typeof i!="string"||!i||typeof e!="string"||!e){this.#u(t,Ki.ERROR,{error:{code:"invalid_credentials",message:"Feishu registration returned invalid credentials."}});return}let a;try{a=tve(o.user_info)}catch{this.#u(t,Ki.ERROR,{error:{code:"invalid_credentials",message:"Feishu registration returned invalid credentials."}});return}this.#B(t),t.qrCodeUrl=null,t.expiresAt=null,t.pollIntervalSeconds=null,this.#p(t,Ki.SAVING);try{await this.#A({client_id:i,client_secret:e,user_info:a})}catch{this.#n(t)&&this.#u(t,Ki.ERROR,{error:{code:"credentials_callback_failed",message:"Unable to store the Feishu credentials."}});return}this.#n(t)&&this.#u(t,Ki.SUCCEEDED)}#d(t,o){if(!this.#n(t))return;let i=Y6(o);if(i==="expired_token"){this.#u(t,Ki.EXPIRED,{error:DP(o)});return}if(i==="abort"){this.#u(t,Ki.CANCELLED,{error:DP(o)});return}this.#u(t,Ki.ERROR,{error:DP(o)})}#h(){let t=this.#i;t&&t.expiresAt!==null&&this.#t()>=t.expiresAt&&this.#C(t)}#C(t){this.#n(t)&&(this.#u(t,Ki.EXPIRED,{error:{code:"expired_token",message:"The registration QR code expired."}}),t.controller.abort())}#u(t,o,i={}){this.#n(t)&&(this.#B(t),this.#a=this.#s(t,o,i),this.#i=null)}#B(t){t.expiryTimer!==null&&(this.#l(t.expiryTimer),t.expiryTimer=null)}#f(){let t=this.#i;t&&(this.#B(t),this.#i=null,t.controller.abort())}};var rve="card.action.trigger",ave="im:message:readonly",ive="im:resource",Nu="callback_repair";function ove(n){return n==="lark"?"accounts.larksuite.com":"accounts.feishu.cn"}function nve(n){return n==="lark"?"open.larksuite.com":"open.feishu.cn"}function OP(n,t,o="feishu",i="Feishu app update"){let e;try{e=new URL(n)}catch{throw new Error(`${i} returned an invalid verification URL`)}let a=o==="feishu"||o==="lark",A=e.searchParams.getAll("clientID"),r=e.searchParams.getAll("tp"),s=e.searchParams.getAll("addons"),g=String(t).includes("{{")||String(t).includes("}}")||[...e.searchParams.values()].some(c=>c.includes("{{")||c.includes("}}"));if(!a||e.protocol!=="https:"||e.hostname!==nve(o)||e.port!==""||e.username!==""||e.password!==""||r.length!==1||r[0]!=="sdk"||A.length!==1||A[0]!==t||e.searchParams.has("createOnly")||s.length!==1||!s[0]?.trim()||g)throw new Error(`${i} returned an unsafe verification URL`);return e.toString()}function sve(n,t,o="feishu"){return OP(n,t,o,"Feishu callback repair")}var yS=class{#e;#A;#t;constructor({registerApp:t,onCredentials:o,appId:i,domain:e="feishu"}={}){if(typeof t!="function")throw new TypeError("registerApp is required");if(typeof o!="function")throw new TypeError("onCredentials is required");if(typeof i!="string"||!i.trim())throw new TypeError("appId is required");if(e!=="feishu"&&e!=="lark")throw new TypeError("domain is invalid");this.#A=i.trim(),this.#t=e,this.#e=new Tg({registerApp:a=>t({...a,onQRCodeReady:A=>{sve(A?.url,this.#A,this.#t),a.onQRCodeReady(A)}}),onCredentials:o})}start(){return this.#e.start({source:"deepseek-harness-card-action-repair",domain:ove(this.#t),appId:this.#A,addons:{preset:!1,scopes:{tenant:[ave,ive,...ES]},callbacks:{items:[rve]}}})}status(){return this.#e.status()}cancel(){return this.#e.cancel()}};var gve="im:message.group_msg",SS="group_message_permission";function cve(n){return n==="lark"?"accounts.larksuite.com":"accounts.feishu.cn"}function Ive(n,t,o="feishu"){return OP(n,t,o,"Feishu group message permission update")}var mS=class{#e;#A;#t;constructor({registerApp:t,onCredentials:o,appId:i,domain:e="feishu"}={}){if(typeof t!="function")throw new TypeError("registerApp is required");if(typeof o!="function")throw new TypeError("onCredentials is required");if(typeof i!="string"||!i.trim())throw new TypeError("appId is required");if(e!=="feishu"&&e!=="lark")throw new TypeError("domain is invalid");this.#A=i.trim(),this.#t=e,this.#e=new Tg({registerApp:a=>t({...a,onQRCodeReady:A=>{Ive(A?.url,this.#A,this.#t),a.onQRCodeReady(A)}}),onCredentials:o})}start(){return this.#e.start({source:"deepseek-harness-group-message-permission",domain:cve(this.#t),appId:this.#A,addons:{preset:!1,scopes:{tenant:[gve]}}})}status(){return this.#e.status()}cancel(){return this.#e.cancel()}};var j6=Object.freeze(["im:message.p2p_msg:readonly","im:message.group_at_msg:readonly","im:message:readonly","im:message:send_as_bot","im:message.reactions:write_only","im:message:recall","im:resource","cardkit:card:write",...ES]);var bP=new Set(["starting","qr_ready","polling","slow_down","domain_switched"]),wS=new Set([...bP,"saving"]),J6=new Set([Nu,SS]),q6="*",lve=12e4,pve=6e5;function W6(){return{ready:!1,feishuLongConnectionState:"idle",harnessReachable:!1}}function Ru(n){return n?n.status:W6()}function ku(n){return n.ready===!0&&n.feishuLongConnectionState==="connected"&&n.harnessReachable===!0}function Z6(n){return n.length>12?`${n.slice(0,8)}\u2022\u2022\u2022\u2022${n.slice(-4)}`:"cli_\u2022\u2022\u2022\u2022"}function dve(n){return{name:n.botName,appIdMasked:Z6(n.appId),activated:n.activated,domain:n.domain}}function hve({connected:n,error:t,connection:o}){return n?"connected":t||o.feishuLongConnectionState==="failed"?"error":"disconnected"}function Eve(){return`bot_${V6().replaceAll("-","")}`}function Cve(){return`reg_${V6().replaceAll("-","")}`}function z6(n){return`DSH_FEISHU_APP_SECRET_${n.slice(4).toUpperCase()}`}function DS(n){return JSON.stringify({id:n.id,appId:n.appId,secretRef:n.secretRef,ownerOpenIds:n.ownerOpenIds,domain:n.domain,botName:n.botName,botOpenId:n.botOpenId,activated:n.activated,groupResponseMode:Io(n.groupResponseMode),groupMessagePermissionGranted:n.groupMessagePermissionGranted===!0,deletionPending:n.deletionPending===!0,connectedAt:n.connectedAt??null,createdAt:n.createdAt??null})}function OS(n){return typeof n=="string"&&n.trim()?n.trim():null}var vu=class{#e;#A;#t;#r;#l;#o;#i;#a;#n=new Map;#s=new Map;#p=new Map;#c=new Map;#g=new Map;#I=null;#d=Promise.resolve();#h=new Map;#C=1;#u;#B=!1;constructor({registerApp:t,verifyApp:o,credentials:i,configStore:e,createRuntime:a,deleteState:A=async()=>{},createBotId:r=Eve,createRegistrationId:s=Cve,callbackProbeTimeoutMs:g=lve}){if(typeof t!="function")throw new Error("registerApp is required");if(typeof o!="function")throw new Error("verifyApp is required");if(!i)throw new Error("credentials service is required");if(!e||typeof e.list!="function")throw new Error("multi-bot config store is required");if(typeof a!="function")throw new Error("createRuntime is required");if(typeof A!="function")throw new Error("deleteState must be a function");if(!Number.isFinite(g)||g<=0||g>pve)throw new TypeError("callbackProbeTimeoutMs must be between 1 and 600000ms");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#u=g}async initialize(){if(this.#B)return this.status();let t=this.#r.list(),o=!1;return await Promise.allSettled(t.map(i=>this.#k(i.id,async()=>{let e=Ru(this.#n.get(i.id));if(ku(e)||e.feishuLongConnectionState==="connecting"||e.feishuLongConnectionState==="reconnecting")return;if(o=!0,i.deletionPending){this.#s.set(i.id,{code:"deletion_pending",message:"\u673A\u5668\u4EBA\u6B63\u5728\u7B49\u5F85\u5B8C\u6210\u672C\u5730\u5220\u9664\uFF0C\u8BF7\u91CD\u8BD5\u79FB\u9664\u3002"});return}let a;try{a=await this.#t.resolve(i.secretRef)}catch{this.#s.set(i.id,{code:"missing_credentials",message:"\u65E0\u6CD5\u8BFB\u53D6\u673A\u5668\u4EBA\u51ED\u636E\uFF0C\u8BF7\u68C0\u67E5\u51ED\u636E\u5B58\u50A8\u3002"});return}if(!a?.value){this.#s.set(i.id,{code:"missing_credentials",message:"\u673A\u5668\u4EBA\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u5220\u9664\u540E\u91CD\u65B0\u626B\u7801\u63A5\u5165\u3002"});return}try{await this.#E(i,a.value),this.#s.delete(i.id)}catch{this.#s.set(i.id,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u6682\u65F6\u65E0\u6CD5\u8FDE\u63A5\u98DE\u4E66\uFF0C\u8BF7\u91CD\u8BD5\u3002"})}}))),o&&this.#P(),this.status()}startRegistration(){this.#_();let t=this.#a();if(typeof t!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(t)||this.#p.has(t))throw new Error("Registration id generator returned an invalid or duplicate id");let o={id:t,manager:null,botId:null,createdNew:!1,cancelled:!1};return o.manager=new Tg({registerApp:this.#e,onCredentials:i=>this.#G(()=>this.#D(o,i))}),this.#p.set(t,o),this.#I=t,this.#F(),o.manager.start({source:"deepseek-harness",createOnly:!0,appPreset:{name:"{user} \u7684\u5317\u6C47\u661F\u6CB3 AI \u52A9\u624B",desc:"\u8FDE\u63A5\u98DE\u4E66\u4E0E DeepSeek Harness\uFF0C\u5728\u804A\u5929\u4E2D\u4F7F\u7528\u4F01\u4E1A AI \u52A9\u624B\u3002"},addons:{preset:!1,scopes:{tenant:[...j6]},events:{items:{tenant:["im.message.receive_v1"]}},callbacks:{items:["card.action.trigger"]}}}),this.#P(),this.registrationStatus(t)}startCallbackRepair(t,{actorOpenId:o,chatId:i}={}){this.#_();let e=this.#R(t);if(e.deletionPending)throw new Error("Cannot repair a Feishu bot pending deletion");let a=this.#c.get(t),A=a?this.#p.get(a):null;if(A&&wS.has(A.manager.status().state)){if(A.operation!==Nu)throw new Error("Another Feishu app update is already active for this bot");return this.registrationStatus(A.id)}this.#c.delete(t);let r=this.#a();if(typeof r!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(r)||this.#p.has(r))throw new Error("Registration id generator returned an invalid or duplicate id");let s={id:r,operation:Nu,manager:null,botId:t,createdNew:!1,cancelled:!1,remoteCommitted:!1,processing:null,publicError:null,stage:"authorizing",target:structuredClone(e),targetFingerprint:DS(e),initiator:{actorOpenId:OS(o),chatId:OS(i)}};return s.manager=new yS({registerApp:this.#e,appId:e.appId,domain:e.domain,onCredentials:g=>{s.remoteCommitted=!0;let I=this.#y(s,g).finally(()=>{s.processing===I&&(s.processing=null)});return s.processing=I,I}}),this.#p.set(r,s),this.#c.set(t,r),this.#I=r,this.#F(),s.manager.start(),this.#P(),this.registrationStatus(r)}startGroupMessagePermission(t){this.#_();let o=this.#R(t);if(o.deletionPending)throw new Error("Cannot update permissions for a Feishu bot pending deletion");let i=this.#c.get(t),e=i?this.#p.get(i):null;if(e&&wS.has(e.manager.status().state)){if(e.operation!==SS)throw new Error("Another Feishu app update is already active for this bot");return this.registrationStatus(e.id)}this.#c.delete(t);let a=this.#a();if(typeof a!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(a)||this.#p.has(a))throw new Error("Registration id generator returned an invalid or duplicate id");let A={id:a,operation:SS,manager:null,botId:t,createdNew:!1,cancelled:!1,remoteCommitted:!1,processing:null,publicError:null,stage:"authorizing",target:structuredClone(o),targetFingerprint:DS(o),initiator:{actorOpenId:null,chatId:null}};return A.manager=new mS({registerApp:this.#e,appId:o.appId,domain:o.domain,onCredentials:r=>{A.remoteCommitted=!0;let g=this.#S(A,r).finally(()=>{A.processing===g&&(A.processing=null)});return A.processing=g,g}}),this.#p.set(a,A),this.#c.set(t,a),this.#I=a,this.#F(),A.manager.start(),this.#P(),this.registrationStatus(a)}hasRegistration(t){return this.#p.has(t)}registrationStatus(t){let o=this.#p.get(t);return o?this.#f({registration:o,selectedBotId:o.botId}):null}async cancelRegistration(t=this.#I){let o=this.#p.get(t);if(!o)return this.status();let i=o.manager.status().state;return J6.has(o.operation)&&i==="saving"?this.registrationStatus(t):wS.has(i)?(o.cancelled=!0,o.manager.cancel(),await this.#G(async()=>{o.createdNew&&o.botId&&this.#g.get(o.botId)===o.id&&this.#r.getBot(o.botId)&&await this.#k(o.botId,()=>this.#O(o.botId))}),this.#P(),this.registrationStatus(t)??this.status()):this.registrationStatus(t)}status(t){return this.#f({registration:this.#p.get(this.#I)??null,selectedBotId:t})}async bindCredentials({appId:t,appSecret:o,domain:i="feishu"}={}){this.#_();let e=typeof t=="string"?t.trim():"",a=typeof o=="string"?o.trim():"",A=i==="lark"?"lark":"feishu";if(!e||!a)throw new TypeError("Feishu App ID and App Secret are required");return this.#G(async()=>{this.#_();let r=await this.#A({appId:e,appSecret:a,domain:A});this.#_();let s=this.#r.list().find(f=>f.appId===e),g=s?.id??this.#i();if(typeof g!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(g)||!s&&this.#r.getBot(g))throw new Error("Bot id generator returned an invalid or duplicate id");let c=s?.secretRef??z6(g),I=await this.#t.resolve(c).catch(()=>{}),d={...s,id:g,appId:e,secretRef:c,ownerOpenIds:s?.ownerOpenIds?.length?s.ownerOpenIds:[q6],domain:A,botName:r.name,botOpenId:r.openId,activated:r.activated,deletionPending:!1,connectedAt:new Date().toISOString(),createdAt:s?.createdAt??new Date().toISOString()};await this.#t.set(c,a);let B;try{B=await this.#r.saveBot(d)}catch(f){throw await this.#w(c,I),f}return await this.#k(g,async()=>{try{await this.#E(B,a),this.#s.delete(g)}catch{this.#s.set(g,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u5DF2\u7ECF\u7ED1\u5B9A\uFF0C\u4F46\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"})}}),this.#P(),this.status(g)})}async reconnectBot(t){return this.#_(),this.#k(t,async()=>{let o=this.#R(t);if(o.deletionPending)return this.#s.set(t,{code:"deletion_pending",message:"\u673A\u5668\u4EBA\u6B63\u5728\u7B49\u5F85\u5B8C\u6210\u672C\u5730\u5220\u9664\uFF0C\u8BF7\u91CD\u8BD5\u79FB\u9664\u3002"}),this.status(t);if(ku(Ru(this.#n.get(t))))return this.status(t);let i;try{i=await this.#t.resolve(o.secretRef)}catch{i=null}if(!i?.value)return this.#s.set(t,{code:"missing_credentials",message:"\u673A\u5668\u4EBA\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u5220\u9664\u540E\u91CD\u65B0\u626B\u7801\u63A5\u5165\u3002"}),this.#P(),this.status(t);try{await this.#E(o,i.value),this.#s.delete(t)}catch{this.#s.set(t,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u6682\u65F6\u65E0\u6CD5\u8FDE\u63A5\u98DE\u4E66\uFF0C\u8BF7\u91CD\u8BD5\u3002"})}return this.#P(),this.status(t)})}async sendConnectionTest(t){return this.#_(),this.#k(t,async()=>{let o=this.#R(t),i=this.#n.get(t);if(!ku(Ru(i))||typeof i.sendConnectionTest!="function"){let e=new Error("\u98DE\u4E66\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5");throw e.code="test-target-unavailable",e}return i.sendConnectionTest(ka(`${o.botName}\uFF08${Z6(o.appId)}\uFF09`,"\u98DE\u4E66\u673A\u5668\u4EBA"))})}async sendProactiveText(t,o,i,e={}){return this.#_(),this.#k(t,async()=>{this.#R(t);let a=this.#n.get(t);if(!ku(Ru(a))||typeof a.sendProactiveText!="function"){let A=new Error("\u98DE\u4E66\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5");throw A.code="bot-not-connected",A}return a.sendProactiveText(o,i,e)})}async disconnectBot(t){return this.#_(),this.#k(t,async()=>(this.#R(t),await this.#T(t),this.#s.delete(t),this.#P(),this.status(t)))}async updateGroupResponseMode(t,o){if(this.#_(),!nS(o))throw new TypeError("Invalid Feishu group response mode");return this.#G(()=>this.#k(t,async()=>{let i=this.#R(t);if(o==="all"&&i.groupMessagePermissionGranted!==!0){let a=new Error("Authorize im:message.group_msg before enabling all group messages");throw a.code="group_message_permission_required",a}let e=await this.#r.saveBot({...i,groupResponseMode:o});return this.#n.get(t)?.setGroupResponseMode?.(e.groupResponseMode),this.#P(),this.status(t)}))}async deleteBot(t){return this.#_(),this.#G(()=>this.#k(t,async()=>(this.#R(t),await this.#O(t),this.#P(),this.status())))}async reconnect(){let t=this.#r.list()[0];return t?this.reconnectBot(t.id):this.status()}async disconnect(){let t=this.#r.list()[0];return t?this.deleteBot(t.id):this.status()}async close(){if(this.#B)return;this.#B=!0;let t=[];for(let o of this.#p.values()){let i=o.manager.status().state;J6.has(o.operation)&&i==="saving"?(o.manager.cancel(),o.processing&&t.push(o.processing)):wS.has(i)&&(o.cancelled=!0,o.manager.cancel())}await this.#d,await Promise.allSettled([...this.#h.values()]),await Promise.allSettled([...this.#n.keys()].map(o=>this.#T(o))),await Promise.allSettled(t),await this.#d,await Promise.allSettled([...this.#h.values()]),await Promise.allSettled([...this.#n.keys()].map(o=>this.#T(o)))}#f({registration:t,selectedBotId:o}={}){let i=this.#r.list().map(I=>{let d=Ru(this.#n.get(I.id)),B=ku(d),f=this.#s.get(I.id)??null;return{botId:I.id,phase:hve({connected:B,error:f,connection:d}),connected:B,configured:!0,groupResponseMode:Io(I.groupResponseMode),groupMessagePermissionGranted:I.groupMessagePermissionGranted===!0,bot:dve(I),connection:d,lastMessageError:Xr(d.lastMessageError),error:f}}),e=t?this.#Q(t):{state:"idle",attempt:0,updatedAt:Date.now()},a=bP.has(e.state),A=e.state==="saving",r=!!t&&(a||A),s=i.find(I=>I.botId===o)??(r?null:i[0]??null),g=i.some(I=>I.connected),c=s?.phase??"unconfigured";return a?c="registering":A?c="connecting":e.state==="error"&&!s&&(c="error"),{schemaVersion:2,revision:this.#C,phase:c,connected:s?.connected??!1,configured:i.length>0,bot:s?.bot??null,connection:s?.connection??W6(),error:s?.error??e.error??null,registration:e,bots:i,totals:{configured:i.length,connected:i.filter(I=>I.connected).length},anyConnected:g}}#Q(t){let o=t.manager.status();return{...o,attempt:t.id,...t.botId?{botId:t.botId}:{},...t.operation?{operation:t.operation}:{},...t.stage?{stage:t.stage}:{},...o.state==="error"&&t.publicError?{error:{...t.publicError}}:{}}}async#S(t,o){let i=o.client_id,e=o.client_secret,a=OS(o.user_info?.open_id),A=o.user_info?.tenant_brand,r=t.target;if(t.cancelled)throw this.#m(t,"abort","Group message permission update was cancelled before local activation.");if(i!==r.appId)throw this.#m(t,"repair_app_mismatch","Feishu returned credentials for a different app.");if(!a)throw this.#m(t,"repair_owner_missing","Feishu returned no permission operator identity.");if(A!==void 0&&A!==r.domain)throw this.#m(t,"repair_domain_mismatch","Feishu returned credentials for a different account domain.");if(!r.ownerOpenIds.includes(q6)&&!r.ownerOpenIds.includes(a))throw this.#m(t,"repair_owner_mismatch","The Feishu permission operator is not an owner of this configured bot.");t.stage="verifying_identity";let s;try{s=await this.#A({appId:i,appSecret:e,domain:r.domain})}catch(g){throw this.#m(t,"repair_credentials_invalid","Feishu could not verify the updated app credentials.",g)}if(r.botOpenId&&s?.openId!==r.botOpenId)throw this.#m(t,"repair_bot_mismatch","The updated Feishu app belongs to a different bot identity.");await this.#G(()=>this.#k(t.botId,async()=>{let g=this.#r.getBot(t.botId);if(!g||g.deletionPending||DS(g)!==t.targetFingerprint)throw this.#m(t,"repair_target_changed","The Feishu bot changed while its permission update was in progress.");let c;try{c=await this.#t.resolve(g.secretRef)}catch(d){throw this.#m(t,"credential_update_failed","Unable to read the current Feishu credential.",d)}if(c?.value!==e){t.stage="persisting_secret";try{await this.#t.set(g.secretRef,e)}catch(B){if((await this.#t.resolve(g.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_update_failed","Unable to store the updated Feishu credential.",B)}if((await this.#t.resolve(g.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_state_unknown","The updated Feishu credential could not be confirmed after writing.")}t.stage="enabling_all_messages";let I;try{I=await this.#r.saveBot({...g,groupMessagePermissionGranted:!0,groupResponseMode:"all"})}catch(d){throw this.#m(t,"group_message_permission_save_failed","The permission was accepted, but all-message mode could not be saved.",d)}t.stage="restarting";try{await this.#E(I,e)}catch(d){throw this.#s.set(t.botId,{code:"connection_failed",message:"\u7FA4\u6D88\u606F\u6743\u9650\u5DF2\u5F00\u901A\uFF0C\u4F46\u673A\u5668\u4EBA\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"}),this.#P(),this.#m(t,"group_message_permission_connection_failed","The permission was accepted, but the Feishu runtime could not restart.",d)}this.#s.delete(t.botId),t.stage="verified",t.publicError=null,this.#P()}))}async#y(t,o){let i=o.client_id,e=o.client_secret,a=OS(o.user_info?.open_id),A=o.user_info?.tenant_brand,r=t.target;if(t.cancelled)throw this.#m(t,"abort","Callback repair was cancelled before local activation.");if(i!==r.appId)throw this.#m(t,"repair_app_mismatch","Feishu returned credentials for a different app.");if(!a)throw this.#m(t,"repair_owner_missing","Feishu returned no repair operator identity.");if(A!==void 0&&A!==r.domain)throw this.#m(t,"repair_domain_mismatch","Feishu returned credentials for a different account domain.");t.stage="verifying_identity";let s;try{s=await this.#A({appId:i,appSecret:e,domain:r.domain})}catch(c){throw this.#m(t,"repair_credentials_invalid","Feishu could not verify the repaired app credentials.",c)}if(r.botOpenId&&s?.openId!==r.botOpenId)throw this.#m(t,"repair_bot_mismatch","The repaired Feishu app belongs to a different bot identity.");let g=await this.#G(()=>this.#k(t.botId,async()=>{let c=this.#r.getBot(t.botId);if(!c||c.deletionPending||DS(c)!==t.targetFingerprint)throw this.#m(t,"repair_target_changed","The Feishu bot changed while its callback repair was in progress.");let I;try{I=await this.#t.resolve(c.secretRef)}catch(f){throw this.#m(t,"credential_update_failed","Unable to read the current Feishu credential.",f)}if(I?.value!==e){t.stage="persisting_secret";try{await this.#t.set(c.secretRef,e)}catch(Q){if((await this.#t.resolve(c.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_update_failed","Unable to store the repaired Feishu credential.",Q)}if((await this.#t.resolve(c.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_state_unknown","The repaired Feishu credential could not be confirmed after writing.")}let B;t.stage="restarting";try{await this.#E(c,e),B=this.#n.get(t.botId)}catch(f){throw this.#s.set(t.botId,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u56DE\u8C03\u4FEE\u590D\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"}),this.#P(),this.#m(t,"repair_connection_failed","The repaired Feishu runtime could not be started.",f)}if(!B)throw this.#m(t,"repair_connection_failed","The repaired Feishu runtime is unavailable.");return this.#s.delete(t.botId),this.#P(),B}));if(typeof g.beginCardActionProbe!="function")throw this.#m(t,"card_action_probe_unavailable","The Feishu runtime cannot verify card callbacks.");t.stage="awaiting_callback";try{if((await g.beginCardActionProbe({expectedOperatorOpenId:t.initiator.actorOpenId??a,timeoutMs:this.#u,...t.initiator.chatId?{chatId:t.initiator.chatId}:{}}))?.verified!==!0){let I=new Error("Feishu runtime returned no callback proof");throw I.code="card_action_probe_failed",I}}catch(c){let I=c?.code==="card_action_probe_timeout"?"card_action_probe_timeout":c?.code==="card_action_probe_unavailable"?"card_action_probe_unavailable":c?.code==="card_action_probe_send_failed"?"card_action_probe_send_failed":"card_action_probe_failed";throw this.#m(t,I,I==="card_action_probe_timeout"?"Timed out waiting for the Feishu callback verification button.":"The Feishu card callback probe failed.",c)}t.stage="verified",t.publicError=null,this.#P()}#m(t,o,i,e){t.publicError={code:o,message:i};let a=new Error(i,e?{cause:e}:void 0);return a.code=o,a}async#D(t,o){if(t.cancelled)throw new Error("Registration was cancelled");let i=o.client_id,e=o.client_secret,a=o.user_info?.open_id,A=o.user_info?.tenant_brand==="lark"?"lark":"feishu";if(!a)throw new Error("Feishu registration returned no owner open_id");let r=await this.#A({appId:i,appSecret:e,domain:A});if(t.cancelled)throw new Error("Registration was cancelled");let s=this.#r.list().find(Q=>Q.appId===i),g=s?.id??this.#i();if(typeof g!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(g)||!s&&this.#r.getBot(g))throw new Error("Bot id generator returned an invalid or duplicate id");let c=s?.secretRef??z6(g),I=this.#g.get(g),d=await this.#t.resolve(c).catch(()=>{});await this.#t.set(c,e);let B;try{B=await this.#r.saveBot({...s,id:g,appId:i,secretRef:c,ownerOpenIds:[...new Set([...s?.ownerOpenIds??[],a])],domain:A,botName:r.name,botOpenId:r.openId,activated:r.activated,deletionPending:!1,connectedAt:new Date().toISOString(),createdAt:s?.createdAt??new Date().toISOString()}),t.botId=g,t.createdNew=!s,this.#g.set(g,t.id)}catch(Q){try{await this.#w(c,d)}catch(y){throw new Error("Unable to restore the Feishu credential after a config failure.",{cause:y})}throw Q}if(t.cancelled)throw t.createdNew?await this.#k(g,()=>this.#O(g)):(await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g)),new Error("Registration was cancelled");let f=!1;try{if(await this.#k(g,()=>this.#E(B,e)),t.cancelled)throw t.createdNew?await this.#k(g,()=>this.#O(g)):(await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g),d?.value&&!s.deletionPending?await this.#k(g,()=>this.#E(s,d.value)):await this.#k(g,()=>this.#T(g))),f=!0,new Error("Registration was cancelled");this.#s.delete(g),this.#P()}catch(Q){if(t.cancelled)throw!f&&t.createdNew&&this.#r.getBot(g)?await this.#k(g,()=>this.#O(g)):!f&&s&&(await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g),!this.#B&&d?.value&&!s.deletionPending?await this.#k(g,()=>this.#E(s,d.value)):await this.#k(g,()=>this.#T(g))),this.#P(),Q;if(s&&d?.value)try{throw await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g),s.deletionPending?(await this.#k(g,()=>this.#T(g)),this.#s.set(g,{code:"deletion_pending",message:"\u673A\u5668\u4EBA\u6B63\u5728\u7B49\u5F85\u5B8C\u6210\u672C\u5730\u5220\u9664\uFF0C\u8BF7\u91CD\u8BD5\u79FB\u9664\u3002"})):(await this.#k(g,()=>this.#E(s,d.value)),this.#s.delete(g)),this.#P(),Q}catch(y){throw y===Q?Q:(this.#s.set(g,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u8FDE\u63A5\u66F4\u65B0\u5931\u8D25\uFF0C\u4E14\u539F\u8FDE\u63A5\u65E0\u6CD5\u6062\u590D\uFF0C\u8BF7\u91CD\u8BD5\u3002"}),this.#P(),new Error("Unable to restore the previous Feishu bot connection.",{cause:y}))}throw this.#s.set(g,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u5DF2\u7ECF\u521B\u5EFA\uFF0C\u4F46\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"}),this.#P(),Q}}async#E(t,o){await this.#T(t.id);let i=await this.#l({botId:t.id,config:t,appSecret:o,repair:this.#N(t.id)});this.#n.set(t.id,i);try{await i.start()}catch(e){throw this.#n.get(t.id)===i&&this.#n.delete(t.id),await i.stop({preserveError:!0}).catch(()=>{}),e}}#N(t){let o=i=>{let e=this.#p.get(i);return e?.operation===Nu&&e.botId===t?e:null};return Object.freeze({start:({actorOpenId:i,chatId:e}={})=>this.startCallbackRepair(t,{actorOpenId:i,chatId:e}),status:({attemptId:i}={})=>o(i)?this.registrationStatus(i):null,cancel:async({attemptId:i}={})=>o(i)?this.cancelRegistration(i):this.status(t)})}async#T(t){let o=this.#n.get(t);this.#n.delete(t),o&&await o.stop()}async#O(t){let o=this.#r.getBot(t);if(o){o.deletionPending||(o=await this.#r.saveBot({...o,deletionPending:!0})),await this.#T(t);try{await this.#t.unset(o.secretRef)}catch(i){throw this.#s.set(t,{code:"credential_removal_failed",message:"\u65E0\u6CD5\u5220\u9664\u673A\u5668\u4EBA\u51ED\u636E\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}),new Error("Unable to remove the Feishu credential.",{cause:i})}try{await this.#o({botId:t,config:o})}catch(i){throw this.#s.set(t,{code:"state_cleanup_failed",message:"\u65E0\u6CD5\u5220\u9664\u673A\u5668\u4EBA\u7684\u672C\u5730\u4F1A\u8BDD\u6570\u636E\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}),new Error("Unable to remove the Feishu bot session state.",{cause:i})}await this.#r.removeBot(t),this.#s.delete(t),this.#g.delete(t)}}async#w(t,o){o?.value?await this.#t.set(t,o.value):await this.#t.unset(t)}#R(t){let o=this.#r.getBot(t);if(!o)throw new Error("Unknown Feishu bot");return o}#_(){if(this.#B)throw new Error("The Feishu controller is closed")}#G(t){let o=this.#d.then(t,t);return this.#d=o.then(()=>{},()=>{}),o}#k(t,o){let e=(this.#h.get(t)??Promise.resolve()).then(o,o),a=e.then(()=>{},()=>{});return this.#h.set(t,a),a.finally(()=>{this.#h.get(t)===a&&this.#h.delete(t)}),e}#F(){if(!(this.#p.size<=32))for(let[t,o]of this.#p){if(t===this.#I)continue;let i=o.manager.status().state;if(!bP.has(i)&&i!=="saving"&&this.#p.delete(t),this.#p.size<=32)break}}#P(){this.#C+=1}};var fve=["open.feishu.cn","open.larksuite.com"];function Qve(n,t){if(t==="*")return!0;let o=t.startsWith(".")?t.slice(1):t;return o?n===o||n.endsWith(`.${o}`):!1}function yve(n){for(let t of["no_proxy","NO_PROXY"]){let o=n?.[t];if(typeof o!="string"||!o.trim())continue;let i=o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean);if(fve.some(e=>i.some(a=>Qve(e,a))))return!0}return!1}function mve(n){if(!yve(n))for(let t of["https_proxy","HTTPS_PROXY","http_proxy","HTTP_PROXY"]){let o=n?.[t];if(typeof o=="string"&&o.trim())return o.trim()}}function Sve(n,t=o=>new X6.default(o)){let o=mve(n);return o?t(o):void 0}function wve(n){let t=kc(n.dshHome??process.env.DSH_HOME??jd(uve(),".dsh")),o=kc(n.dataDir??jd(t,"integrations","dsh-feishu"));return{root:o,config:kc(n.configPath??jd(o,"config.json")),legacyState:kc(n.statePath??jd(o,"state.json")),bots:kc(n.botsDir??jd(o,"bots")),workspaces:kc(n.workspacesPath??jd(o,"workspaces.json"))}}async function MP(n,t={},o={}){if(!n?.credentials)throw new TypeError("dsh-feishu requires ctx.credentials");let i=aa(n,t),e=o.lark??iP,a=o.Controller??vu,A=o.ConfigStore??fS,r=o.StateStore??iS,s=o.HarnessClient??uS,g=o.FeishuRuntime??CS,c=o.verifyFeishuApp??o6,I=Qe=>c({...Qe,httpInstance:e.defaultHttpInstance}),d=o.createConnectionSupervisor??oP,B=typeof n.logger=="function"?n.logger("dsh-feishu"):n.logger??console,f=()=>La(n),Q=wve(t),y=await new A(Q.config).load(),m=kc(t.workspace??process.cwd()),_=o.WorkspaceStore??ra,T=o.workspaces??await new _(Q.workspaces,{defaultWorkspace:m}).load(),R=typeof y.list=="function",K=()=>R?y.list():[],L=K();R&&await T.reconcile(L.map(Qe=>Qe.id)),await Promise.all(L.map(Qe=>T.ensure(Qe.id,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("feishu",Qe)})));let U=typeof y.removeBot=="function"?Ha(y,{workspaces:T,method:"removeBot",botIdFromRemoved:Qe=>Qe.id,saveMethod:"saveBot",botIdFromSave:Qe=>Qe?.id}):y,z=new Map,q=Qe=>!Qe.id||!Qe.secretRef||Qe.secretRef===QS?Q.legacyState:kc(Q.bots,Qe.id,"state.json"),x=async Qe=>{let ke=Qe.id??"__legacy__",Ne=z.get(ke);return Ne||(Ne=await new r(q(Qe)).load(),z.set(ke,Ne)),Ne},G=async Qe=>{let ke=K().find(Ne=>Ne.id===Qe);if(!ke)throw new Error("Unknown Feishu bot");return x(ke)},V=ja(n,o.commandExecutor),{controlExecutor:F,sessionMaintenanceExecutor:N,fileIngressExecutor:k}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),J=new s({...i,workspace:m,autostart:!1,dshBin:t.dshBin??"dsh",...V?{commandExecutor:V}:{},...F?{controlExecutor:F}:{},...N?{sessionMaintenanceExecutor:N}:{},...k?{fileIngressExecutor:k}:{}}),$=o.proxyEnv??process.env,ie=Sve($,o.createProxyAgent),pe=new a({registerApp:Qe=>e.registerApp(Qe),verifyApp:I,credentials:n.credentials,configStore:U,createRuntime:async({botId:Qe,config:ke,appSecret:Ne,repair:We})=>{let ve=await x(ke),aA=Qe??ke.id??ke.appId;await T.ensure(aA,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("feishu",ke)});let fe=Ka(J,{botId:aA,workspaces:T,state:ve,agentPresetCatalog:f});return new g({lark:e,botId:aA,repair:We,appId:ke.appId,appSecret:Ne,domain:ke.domain,botOpenId:ke.botOpenId,groupResponseMode:ke.groupResponseMode,ownerOpenIds:ke.ownerOpenIds??[ke.ownerOpenId],harness:fe.harness,state:fe.state,contextEnhancement:{botId:aA,getSettings:()=>T.contextEnhancementFor(aA)},accessPolicy:qa(T,aA,{channel:"feishu",config:ke}),replyTimeoutMs:t.replyTimeoutMs??6e5,slashCommands:t.slashCommands!==!1,...ie?{wsAgent:ie}:{},logger:{error:(...Ie)=>B.error?.(`[${Qe??ke.id}]`,...Ie),warn:(...Ie)=>B.warn?.(`[${Qe??ke.id}]`,...Ie),info:(...Ie)=>B.info?.(`[${Qe??ke.id}]`,...Ie),debug:(...Ie)=>B.debug?.(`[${Qe??ke.id}]`,...Ie)}})},deleteState:async({botId:Qe,config:ke})=>{z.delete(Qe);try{await Bve(q(ke))}catch(Ne){if(Ne?.code!=="ENOENT")throw Ne}}}),se=xa(pe,{workspaces:T,stateFor:G,agentPresetCatalog:f}),Te=d({controller:se,harness:J,logger:B,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:se,deliveryAdapter:Ya({channel:"feishu",workspaces:T,coreController:pe,stateFor:G}),ready:Te.ready,async close(){await Te.close(),await se.close(),J.stopManagedProcess(),ie?.destroy?.()}}}import Yve from"qrcode";var qd=qe(PP(),1);var Hve=qe(PP(),1);var Kve=Object.freeze({$locale:"en",IM\u673A\u5668\u4EBA:"IM bots",IM\u673A\u5668\u4EBA\u8BBE\u7F6E:"IM bot settings",\u66F4\u591A\u673A\u5668\u4EBA\u8BBE\u7F6E:"More bot settings",\u673A\u5668\u4EBA\u8BBE\u7F6E:"Bot settings",\u673A\u5668\u4EBA\u8BBE\u7F6E\u9875\u7B7E:"Bot settings tabs",\u6295\u9012\u8BBE\u7F6E:"Delivery settings",\u8BBF\u95EE\u8BBE\u7F6E:"Access settings",\u67E5\u770B\u8BBF\u95EE\u6743\u9650\u8BF4\u660E:"View access permission details",\u5141\u8BB8\u6240\u6709\u7528\u6237:"Allow all users",\u4EC5\u767D\u540D\u5355\u7528\u6237:"Allowlisted users only",\u9ED8\u8BA4\u547D\u4EE4\u6743\u9650:"Default command permission",\u547D\u4EE4\u6743\u9650:"Command permission",\u53EF\u4EE5\u6267\u884C\u547D\u4EE4:"Can run commands",\u4E0D\u53EF\u4EE5\u6267\u884C\u547D\u4EE4:"Cannot run commands",\u767D\u540D\u5355\u7528\u6237:"Allowlisted users",\u67E5\u770B\u767D\u540D\u5355\u8BF4\u660E:"View allowlist details",\u547D\u4EE4\u6743\u9650\u4F8B\u5916:"Command permission exceptions","\u5F53\u524D\u6CA1\u6709\u767D\u540D\u5355\u7528\u6237\uFF0C\u4FDD\u5B58\u540E\u666E\u901A\u7528\u6237\u5C06\u65E0\u6CD5\u4F7F\u7528\u673A\u5668\u4EBA\u3002":"There are currently no allowlisted users. After saving, regular users will not be able to use the bot.",\u65B0\u589E\u7528\u6237:"Add user",\u5C1A\u672A\u6DFB\u52A0\u7528\u6237:"No users added",\u5F53\u524D\u6E20\u9053\u4E0D\u652F\u6301\u7FA4\u804A:"Group chat is not supported by this channel","\u539F\u6240\u6709\u8005\u6216\u626B\u7801\u63A5\u5165\u8005\u59CB\u7EC8\u53EF\u4EE5\u8BBF\u95EE\u5E76\u6267\u884C\u547D\u4EE4\uFF1B\u4EE5\u4E0B\u8BBE\u7F6E\u4EC5\u7EA6\u675F\u5176\u4ED6\u7528\u6237\u3002":"The original owner or QR-code operator can always access the bot and run commands; the settings below apply only to other users.","\u6B64\u533A\u57DF\u65E0\u9700\u914D\u7F6E\uFF0C\u4FDD\u5B58\u79C1\u804A\u8BBE\u7F6E\u65F6\u4F1A\u4FDD\u7559\u73B0\u6709\u7FA4\u804A\u7B56\u7565\u3002":"No setup is needed here. Saving direct-message settings keeps the existing group policy.","\u8BBF\u95EE\u8BBE\u7F6E\u5DF2\u4FDD\u5B58\u3002":"Access settings saved.","\u8BBF\u95EE\u8BBE\u7F6E\u6682\u4E0D\u53EF\u7528\u3002":"Access settings are currently unavailable.","\u8BBF\u95EE\u8BBE\u7F6E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002":"Could not save access settings. Try again later.","\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u5DF2\u4FDD\u5B58\u7684\u8BBF\u95EE\u7B56\u7565\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002":"The service did not return the saved access policy. Refresh and try again.","\u8BBF\u95EE\u7B56\u7565\u5C1A\u672A\u5C31\u7EEA\uFF0C\u8BF7\u8FD4\u56DE\u673A\u5668\u4EBA\u5217\u8868\u5237\u65B0\u540E\u91CD\u8BD5\u3002":"The access policy is not ready. Return to the bot list, refresh, and try again.","\u5F53\u524D\u6E20\u9053\u6682\u4E0D\u652F\u6301\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Access settings are not supported by this channel yet.","\u7528\u6237\u6807\u8BC6\u65E0\u6548\u3002":"The user ID is invalid.","\u7528\u6237\u6807\u8BC6\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002":"The user ID must be a string.","\u7528\u6237\u6807\u8BC6\u4E0D\u80FD\u4E3A\u7A7A\u3001\u5305\u542B\u63A7\u5236\u5B57\u7B26\u6216\u8D85\u8FC7 256 \u4E2A\u5B57\u7B26\u3002":"The user ID cannot be empty, contain control characters, or exceed 256 characters.","\u7528\u6237\u6761\u76EE\u5FC5\u987B\u5305\u542B\u7528\u6237\u6807\u8BC6\u548C\u547D\u4EE4\u6743\u9650\u3002":"Each user entry must include a user ID and command permission.","\u547D\u4EE4\u6743\u9650\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002":"Command permission must be a boolean.","\u8BBF\u95EE\u6A21\u5F0F\u53EA\u80FD\u662F open \u6216 allowlist\u3002":"Access mode must be open or allowlist.","\u5F00\u653E\u6A21\u5F0F\u8BBE\u7F6E\u5FC5\u987B\u5B8C\u6574\u3002":"Open-mode settings must be complete.","\u5F00\u653E\u6A21\u5F0F\u9ED8\u8BA4\u547D\u4EE4\u6743\u9650\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002":"The open-mode default command permission must be a boolean.","\u5F00\u653E\u6A21\u5F0F\u547D\u4EE4\u6743\u9650\u8986\u76D6\u7528\u6237\u5FC5\u987B\u662F\u6570\u7EC4\u3002":"Open-mode command permission overrides must be an array.","\u5F00\u653E\u6A21\u5F0F\u547D\u4EE4\u6743\u9650\u8986\u76D6\u7528\u6237\u4E0D\u80FD\u5305\u542B\u91CD\u590D\u7684\u7528\u6237\u6807\u8BC6\u3002":"Open-mode command permission overrides cannot contain duplicate user IDs.","\u767D\u540D\u5355\u6A21\u5F0F\u8BBE\u7F6E\u5FC5\u987B\u5B8C\u6574\u3002":"Allowlist-mode settings must be complete.","\u767D\u540D\u5355\u6A21\u5F0F\u7528\u6237\u5FC5\u987B\u662F\u6570\u7EC4\u3002":"Allowlist-mode users must be an array.","\u767D\u540D\u5355\u6A21\u5F0F\u7528\u6237\u4E0D\u80FD\u5305\u542B\u91CD\u590D\u7684\u7528\u6237\u6807\u8BC6\u3002":"Allowlist-mode users cannot contain duplicate user IDs.","\u8BBF\u95EE\u573A\u666F\u8BBE\u7F6E\u5FC5\u987B\u540C\u65F6\u5305\u542B\u6A21\u5F0F\u3001\u5F00\u653E\u6A21\u5F0F\u8BBE\u7F6E\u548C\u767D\u540D\u5355\u6A21\u5F0F\u8BBE\u7F6E\u3002":"Each access context must include its mode, open-mode settings, and allowlist-mode settings.","\u8BF7\u540C\u65F6\u63D0\u4EA4\u5B8C\u6574\u7684\u79C1\u804A\u548C\u7FA4\u804A\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Submit complete direct-message and group access settings together.","\u586B\u5199\u5FAE\u4FE1\u7528\u6237 ID":"Enter a WeChat user ID","\u98DE\u4E66 Open ID":"Feishu Open ID","\u7FA4\u6210\u5458 Open ID":"Group member Open ID","\u9489\u9489\u7528\u6237 ID":"DingTalk user ID","\u586B\u5199 senderStaffId \u6216 senderId":"Enter senderStaffId or senderId","\u7FA4\u6210\u5458\u7528\u6237 ID":"Group member user ID","\u4F01\u4E1A\u5FAE\u4FE1\u7528\u6237 ID":"WeCom user ID","\u586B\u5199 userid":"Enter userid","\u586B\u5199 member_openid":"Enter member_openid","QQ User Open ID":"QQ User Open ID","\u7FA4\u6210\u5458 User ID":"Group member User ID","\u586B\u5199\u6570\u5B57 User ID":"Enter a numeric user ID","WhatsApp \u7535\u8BDD\u53F7\u7801\u6216 JID":"WhatsApp phone number or JID","\u7FA4\u6210\u5458\u7535\u8BDD\u53F7\u7801\u6216 JID":"Group member phone number or JID","8613800000000 \u6216\u5B8C\u6574 JID":"8613800000000 or a full JID","IM \u6E20\u9053":"IM channels","\u8BA9 DeepSeek Harness \u89E6\u624B\u53EF\u53CA":"Connecting DeepSeek Harness",\u5F53\u524D\u7248\u672C:"Current version","DSH-IM \u66F4\u65B0":"DSH-IM update",\u68C0\u67E5\u66F4\u65B0:"Check for updates",\u91CD\u65B0\u68C0\u67E5:"Check again",\u5237\u65B0\u72B6\u6001:"Refresh status",\u624B\u5DE5\u66F4\u65B0:"Manual update",\u624B\u5DE5\u66F4\u65B0\u547D\u4EE4:"Manual update command",\u590D\u5236\u547D\u4EE4:"Copy command","\u590D\u5236\u4E2D\u2026":"Copying\u2026",\u5DF2\u590D\u5236:"Copied","\u547D\u4EE4\u5DF2\u590D\u5236\u3002":"Command copied.","\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u9009\u4E2D\u547D\u4EE4\u540E\u6309 Ctrl+C \u6216 \u2318C \u590D\u5236\u3002":"Copy failed. Select the command and press Ctrl+C or \u2318C to copy it.","\u81EA\u52A8\u66F4\u65B0\u5931\u8D25\u53EF\u4EE5\u4F7F\u7528\u547D\u4EE4\u66F4\u65B0\uFF1A":"If the automatic update fails, update with this command:","\u5C1A\u672A\u786E\u8BA4\u76EE\u6807\u7248\u672C\uFF0C\u6B64\u547D\u4EE4\u5B89\u88C5\u6267\u884C\u65F6 npm \u7684 latest \u7248\u672C\u3002":"No target version has been confirmed. This command installs the npm latest version available when you run it.","\u8BF7\u5728\u5F53\u524D Desktop \u7684\u5185\u7F6E\u7EC8\u7AEF\u6267\u884C\uFF0C\u5B8C\u6210\u540E\u624B\u52A8\u91CD\u542F\u3002":"Run this in the current Desktop\u2019s built-in terminal, then restart manually.","\u8BF7\u5728\u8FD0\u884C\u5F53\u524D Harness \u7684\u540C\u4E00\u73AF\u5883\u6267\u884C\uFF0C\u4FDD\u6301 DSH_HOME \u4E00\u81F4\uFF0C\u5B8C\u6210\u540E\u624B\u52A8\u91CD\u542F\u3002":"Run this in the same environment as the current Harness, with the same DSH_HOME, then restart manually.","\u8BF7\u7B49\u5F85\u5F53\u524D\u64CD\u4F5C\u7ED3\u675F\uFF0C\u786E\u8BA4\u6CA1\u6709\u5B89\u88C5\u8FDB\u7A0B\u8FD0\u884C\u540E\u518D\u6267\u884C\u547D\u4EE4\u3002":"Wait for the current operation to finish and confirm no installer is running before using this command.","\u6E90\u7801\u6216\u94FE\u63A5\u5B89\u88C5\u8BF7\u6309\u539F\u5B89\u88C5\u65B9\u5F0F\u66F4\u65B0\uFF0C\u4E0D\u63D0\u4F9B\u8986\u76D6\u6E90\u7801\u7684 npm \u547D\u4EE4\u3002":"Update source or linked installations using their original method. No npm command is provided to overwrite the source.","\u65E0\u6CD5\u5B89\u5168\u751F\u6210\u5F53\u524D profile \u7684\u547D\u4EE4\uFF0C\u8BF7\u5728\u7EC8\u7AEF\u4E2D\u624B\u52A8\u786E\u8BA4 profile \u540E\u66F4\u65B0\u3002":"A safe command cannot be generated for this profile. Confirm the profile in your terminal before updating manually.",\u66F4\u65B0\u81F3:"Update to",\u5B89\u88C5\u66F4\u65B0:"Install update","\u6B63\u5728\u66F4\u65B0\u2026":"Updating\u2026",\u5F85\u624B\u52A8\u91CD\u542F:"Restart needed",\u8FD0\u884C\u7248\u672C:"Running version",\u5DF2\u5B89\u88C5\u7248\u672C:"Installed version","\u76EE\u6807 profile":"Target profile",\u76EE\u6807\u7248\u672C:"Target version",\u65E0\u6CD5\u786E\u8BA4:"Unknown",\u53D1\u73B0\u65B0\u7248\u672C:"Update available",\u5DF2\u662F\u6700\u65B0\u7248\u672C:"Up to date",\u5F53\u524D\u7248\u672C\u65E0\u9700\u66F4\u65B0:"No newer version available","\u5DF2\u83B7\u53D6 npm \u6700\u65B0\u7248\u672C":"Latest npm version retrieved","\u68C0\u67E5 npm \u6700\u65B0\u7248\u672C\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u5B89\u88C5\u3002":"Check the latest npm version. Nothing is installed automatically.","\u6B63\u5728\u4ECE npm \u68C0\u67E5\u6700\u65B0\u7248\u672C\u2026":"Checking npm for the latest version\u2026","\u6B63\u5728\u5B89\u88C5\uFF0C\u8BF7\u7A0D\u5019\u2026":"Installing, please wait\u2026","\u6B63\u5728\u6821\u9A8C\u5B89\u88C5\u7ED3\u679C\u2026":"Verifying the installation\u2026","\u5DF2\u5B89\u88C5\uFF0C\u5F85\u624B\u52A8\u91CD\u542F":"Installed \u2014 manual restart needed",\u66F4\u65B0\u5DF2\u751F\u6548:"Updated version is active",\u66F4\u65B0\u5931\u8D25:"Update failed",\u66F4\u65B0\u8BF7\u6C42\u5931\u8D25:"Update request failed","\u4EC5\u66F4\u65B0 DSH-IM\u3002\u5B89\u88C5\u5B8C\u6210\u540E\u9700\u624B\u52A8\u91CD\u542F\u540E\u53F0\uFF1B\u672C\u529F\u80FD\u4E0D\u4F1A\u81EA\u52A8\u91CD\u542F\u6216\u4E3B\u52A8\u5237\u65B0\u9875\u9762\u3002":"Only DSH-IM will be updated. Restart the backend manually after installation. This feature does not automatically restart it or initiate a page refresh.","\u5F53\u524D\u662F\u6E90\u7801\u6216\u94FE\u63A5\u5B89\u88C5\uFF0C\u53EA\u80FD\u68C0\u67E5\u7248\u672C\uFF1B\u8BF7\u624B\u52A8\u66F4\u65B0\u6E90\u7801\uFF0C\u6216\u8FC1\u79FB\u5230 npm \u5B89\u88C5\u3002":"This is a source or linked installation. You can check versions, but must update the source manually or migrate to an npm installation.","\u65E0\u6CD5\u786E\u8BA4\u5F53\u524D profile\uFF0C\u8BF7\u5728\u5BF9\u5E94\u7684 Harness \u73AF\u5883\u4E2D\u624B\u52A8\u66F4\u65B0\u3002":"The current profile could not be identified. Update manually in the corresponding Harness environment.","\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u4E0D\u652F\u6301\u6309\u94AE\u5B89\u88C5\uFF0C\u8BF7\u624B\u52A8\u66F4\u65B0\u63D2\u4EF6\u3002":"This runtime cannot install through this button. Update the plugin manually.","\u5F53\u524D npm \u6E90\u914D\u7F6E\u4E0E\u5B98\u65B9\u6E90\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u5148\u68C0\u67E5 registry \u914D\u7F6E\u3002":"The npm registry configuration differs from the official registry. Check your registry settings first.","\u5F53\u524D Host \u7684 Node.js \u7248\u672C\u4E0D\u6EE1\u8DB3\u65B0\u7248\u8981\u6C42\uFF0C\u8BF7\u5148\u66F4\u65B0\u8FD0\u884C\u73AF\u5883\u3002":"The Host Node.js version does not meet the new version\u2019s requirements. Update the runtime first.","\u65B0\u7248\u672C\u5DF2\u5B89\u88C5\uFF0C\u8BF7\u5728\u65B9\u4FBF\u65F6\u624B\u52A8\u91CD\u542F\u5F53\u524D Harness \u6216 Desktop\u3002":"The new version is installed. Manually restart this Harness or Desktop when convenient.","\u4E0A\u6B21\u5B89\u88C5\u7ED3\u679C\u65E0\u6CD5\u786E\u8BA4\uFF0C\u8BF7\u5148\u68C0\u67E5\u6B64 profile \u7684\u63D2\u4EF6\u5B89\u88C5\u72B6\u6001\u3002":"The previous installation result is uncertain. Check this profile\u2019s plugin installation first.","\u65E0\u6CD5\u8BBF\u95EE npm \u6216\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u7A0D\u540E\u91CD\u65B0\u68C0\u67E5\u3002":"npm is unreachable or the request timed out. Check again later.","npm \u8FD4\u56DE\u7684\u7248\u672C\u4FE1\u606F\u65E0\u6548\uFF0C\u6682\u65F6\u65E0\u6CD5\u66F4\u65B0\u3002":"npm returned invalid release information. Updating is unavailable.","\u7248\u672C\u786E\u8BA4\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u540E\u518D\u5B89\u88C5\u3002":"The version confirmation expired. Check again before installing.","\u63D2\u4EF6\u5B89\u88C5\u72B6\u6001\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u3002":"The plugin installation changed. Check again.","\u6B64 profile \u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u540E\u67E5\u770B\u72B6\u6001\u3002":"This profile is already updating. Check its status shortly.","\u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5F53\u524D\u5B89\u88C5\u72B6\u6001\u540E\u91CD\u8BD5\u3002":"Installation failed. Check the current installation before retrying.","\u5B89\u88C5\u7ED3\u679C\u6821\u9A8C\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u68C0\u67E5\u63D2\u4EF6\u7248\u672C\u3002":"Installation verification failed. Check the plugin version manually.","\u65E0\u6CD5\u5B89\u5168\u4FDD\u5B58\u66F4\u65B0\u72B6\u6001\uFF0C\u8BF7\u5148\u68C0\u67E5\u5F53\u524D\u5B89\u88C5\u7ED3\u679C\u3002":"Update state could not be saved safely. Check the current installation result before retrying.","\u4E0A\u6B21\u66F4\u65B0\u5DF2\u4E2D\u65AD\uFF0C\u8BF7\u68C0\u67E5\u5B89\u88C5\u72B6\u6001\u540E\u91CD\u8BD5\u3002":"The previous update was interrupted. Check the installation before retrying.","\u66F4\u65B0\u670D\u52A1\u5DF2\u5173\u95ED\uFF0C\u8BF7\u624B\u52A8\u91CD\u65B0\u6253\u5F00\u8BBE\u7F6E\u9875\u3002":"The update service has closed. Reopen settings manually.","\u66F4\u65B0\u8BF7\u6C42\u65E0\u6548\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u7248\u672C\u3002":"The update request is invalid. Check the version again.","\u5F53\u524D\u63D2\u4EF6\u5B89\u88C5\u4E0D\u5B8C\u6574\u6216\u4E0E profile \u4E0D\u7B26\uFF0C\u8BF7\u624B\u52A8\u68C0\u67E5\u5B89\u88C5\u914D\u7F6E\u3002":"The plugin installation is incomplete or does not match this profile. Check the installation configuration manually.","\u65E0\u6CD5\u786E\u8BA4\u5F53\u524D npm \u6E90\u914D\u7F6E\uFF0C\u6682\u65F6\u4E0D\u80FD\u5B89\u88C5\u66F4\u65B0\u3002":"The npm registry configuration could not be verified. Installation is unavailable.","\u5B89\u88C5\u8D85\u65F6\uFF0C\u8BF7\u5148\u786E\u8BA4\u5F53\u524D\u5B89\u88C5\u72B6\u6001\uFF0C\u518D\u51B3\u5B9A\u662F\u5426\u91CD\u8BD5\u3002":"Installation timed out. Check the current installation before retrying.","\u66F4\u65B0\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"The update request failed. Try again.","\u66F4\u65B0\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u54CD\u5E94\u3002":"The update service returned an unrecognized response.","\u5F53\u524D Host \u4E0D\u652F\u6301\u66F4\u65B0\u63A5\u53E3\uFF0C\u8BF7\u5148\u624B\u52A8\u66F4\u65B0\u63D2\u4EF6\u5E76\u91CD\u542F\u3002":"This Host does not support the update API. Update the plugin manually and restart first.","\u5173\u95ED\u7A97\u53E3\u4E0D\u4F1A\u53D6\u6D88\u5B89\u88C5\u3002\u8BF7\u52FF\u540C\u65F6\u5728\u5176\u4ED6\u7A97\u53E3\u7BA1\u7406\u6B64 profile \u7684\u63D2\u4EF6\u3002":"Closing this window does not cancel installation. Do not manage this profile\u2019s plugins in another window at the same time.","\u9875\u9762\u7248\u672C\u4E0E\u8FD0\u884C\u7248\u672C\u4E0D\u540C\uFF0C\u8BF7\u624B\u52A8\u5237\u65B0\u9875\u9762\uFF1B\u82E5\u4ECD\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u624B\u52A8\u91CD\u542F Harness \u6216 Desktop\u3002":"The page and running versions differ. Refresh the page manually; if they still differ, manually restart Harness or Desktop.","\u8BF7\u5728\u673A\u5668\u4EBA\u7A7A\u95F2\u65F6\u5B89\u88C5\uFF1B\u5B89\u88C5\u4F1A\u4FEE\u6539\u5F53\u524D profile \u7684\u4F9D\u8D56\uFF0C\u5B8C\u6210\u540E\u9700\u624B\u52A8\u91CD\u542F\u3002":"Install while bots are idle. This changes the current profile\u2019s dependencies and requires a manual restart afterward.","AI Office":"AI Office","\uFF08\u5B9E\u9A8C\u529F\u80FD\uFF09":"(Experimental)","AI Office \u8BBE\u7F6E":"AI Office settings","AI Office \u8BBE\u7F6E\u9875\u7F3A\u5C11 RPC \u8FDE\u63A5":"AI Office settings are missing an RPC connection","\u6B63\u5728\u8BFB\u53D6 AI Office Connector\u2026":"Loading AI Office Connector\u2026","\u672C\u673A\u4E3B\u52A8\u8FDE\u63A5\u516C\u7F51 Office\uFF1BHarness \u4E0D\u5F00\u653E\u7AEF\u53E3\u3002\u534F\u8BAE Hook \u56FA\u5B9A\u4E3A ":"This machine connects outward to the public Office; Harness exposes no port. Protocol hooks: ",\u5C1A\u672A\u914D\u7F6E:"Not configured","\u5DF2\u8FDE\u63A5 Office":"Connected to Office",\u5DF2\u914D\u7F6E:"Configured",\u7B49\u5F85\u91CD\u8FDE:"Waiting to reconnect",\u51ED\u636E\u7F3A\u5931:"Credential missing",\u6700\u8FD1\u5FC3\u8DF3:"Last heartbeat",\u6700\u8FD1\u4E8B\u4EF6:"Last event",\u91CD\u8FDE\u6B21\u6570:"Reconnects","\u8FD0\u884C Job":"Running Jobs","\u5B8C\u6210 Job":"Completed Jobs",\u5C1A\u65E0:"None yet",\u8BBE\u5907\u8FDE\u63A5:"Device connection","Token \u53EA\u5199\u5165\u672C\u673A\u51ED\u636E\u5B58\u50A8":"Token is written only to the local credential store","\u7C98\u8D34 Office \u4E00\u6B21\u6027\u51ED\u636E":"Paste the one-time Office credential","\u5DF2\u5B89\u5168\u4FDD\u5B58\uFF1B\u7559\u7A7A\u4FDD\u6301\u4E0D\u53D8":"Stored securely; leave blank to keep it",\u6700\u5927\u5E76\u53D1:"Max concurrency","Heartbeat \u79D2\u6570":"Heartbeat seconds","Workspace \u6620\u5C04":"Workspace mappings","\u6BCF\u884C alias=/\u672C\u673A/\u7EDD\u5BF9\u8DEF\u5F84\uFF1BOffice \u53EA\u80FD\u770B\u5230 alias\u3002":"One alias=/local/absolute/path per line; Office sees only aliases.","Instruction Preset \u6620\u5C04":"Instruction preset mappings","\u6BCF\u884C alias=\u6307\u4EE4\uFF1B\u65B0\u589E preset \u4E0D\u9700\u8981\u6539 Office \u4EE3\u7801\u3002":"One alias=instruction per line; new presets require no Office code change.",\u4FDD\u5B58\u5E76\u8FDE\u63A5:"Save and connect",\u6D4B\u8BD5\u8FDE\u63A5:"Test connection","\u6D4B\u8BD5\u4E2D\u2026":"Testing\u2026",\u91CD\u65B0\u8FDE\u63A5:"Reconnect",\u79FB\u9664\u8FDE\u63A5:"Remove connection","\u8FDE\u63A5\u6D4B\u8BD5\u901A\u8FC7\u3002":"Connection test passed.","\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002":"Configuration saved.","\u534F\u8BAE Hook \u9884\u89C8":"Protocol hook preview","\u7531 Base URL \u81EA\u52A8\u6D3E\u751F\uFF0C\u4E0D\u5355\u72EC\u586B\u5199":"Derived from Base URL; no separate input","Base URL \u65E0\u6548":"Invalid Base URL","Office Hook \u5C1A\u672A\u90E8\u7F72\u65F6\uFF0C\u914D\u7F6E\u4F1A\u5B89\u5168\u4FDD\u5B58\u5E76\u81EA\u52A8\u91CD\u8BD5\uFF1B\u51FA\u73B0 HTTP 404 \u4EE3\u8868\u534F\u8BAE\u7AEF\u70B9\u5F85\u4E0A\u7EBF\uFF0C\u4E0D\u4EE3\u8868 Harness \u6545\u969C\u3002":"Configuration is saved and retried while Office hooks are unavailable; HTTP 404 means the protocol endpoint is pending, not a Harness failure.","Workspace \u6620\u5C04\u6BCF\u884C\u5FC5\u987B\u4F7F\u7528 alias=value":"Each workspace mapping must use alias=value","Instruction Preset \u6620\u5C04\u6BCF\u884C\u5FC5\u987B\u4F7F\u7528 alias=value":"Each instruction preset mapping must use alias=value","action-items=\u8F6C\u6362\u4E3A\u8D1F\u8D23\u4EBA\u3001\u622A\u6B62\u548C\u9A8C\u6536\u660E\u786E\u7684\u5DE5\u5355":"action-items=Turn this into accountable tasks with deadlines and acceptance criteria","AI Office \u62D2\u7EDD\u4E86 Device Token\u3002":"AI Office rejected the Device Token.","AI Office Connector Hook \u5C1A\u672A\u5C31\u7EEA\u3002":"AI Office Connector hooks are not available yet.","AI Office Connector \u534F\u8BAE\u7248\u672C\u4E0D\u517C\u5BB9\u3002":"The AI Office Connector protocol is incompatible.","\u672C\u673A\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE AI Office\u3002":"AI Office cannot currently be reached from this machine.","AI Office \u8FDE\u63A5\u5DF2\u4E2D\u65AD\u3002":"The AI Office connection was interrupted.","\u5E2E\u52A9\u4E0E\u53CD\u9988 \xB7 \u524D\u5F80 GitHub":"Help & feedback \xB7 Open GitHub","\u8BF7\u6539\u7528 localhost \u91CD\u65B0\u6253\u5F00":"Reopen with localhost","\u9875\u9762\u4F1A\u5728\u5F53\u524D\u7AEF\u53E3\u91CD\u65B0\u6253\u5F00\uFF0C\u673A\u5668\u4EBA\u914D\u7F6E\u4E0D\u4F1A\u6539\u53D8\u3002":"The page will reopen on the current port. Your bot configuration will not change.","\u4F7F\u7528 localhost \u91CD\u65B0\u6253\u5F00":"Reopen with localhost","\u5F53\u524D\u5730\u5740\u4E0E\u6D4F\u89C8\u5668\u7684\u672C\u673A\u8BF7\u6C42\u6821\u9A8C\u4E0D\u517C\u5BB9\u3002\u8BF7\u4F7F\u7528\u4E0A\u65B9\u6309\u94AE\u6539\u7528 localhost \u91CD\u65B0\u6253\u5F00\u3002":"This address is incompatible with the browser\u2019s local-request checks. Use the button above to reopen with localhost.",\u5FAE\u4FE1:"WeChat",\u98DE\u4E66:"Feishu",\u9489\u9489:"DingTalk",\u4F01\u4E1A\u5FAE\u4FE1:"WeCom",\u5FAE\u4FE1\u673A\u5668\u4EBA:"WeChat bot",\u98DE\u4E66\u673A\u5668\u4EBA:"Feishu bot",\u9489\u9489\u673A\u5668\u4EBA:"DingTalk bot",\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA:"WeCom bot",QQ\u673A\u5668\u4EBA:"QQ bot",WhatsApp\u673A\u5668\u4EBA:"WhatsApp bot",WhatsApp\u8D26\u53F7:"WhatsApp account",\u5FAE\u4FE1\u8BBE\u7F6E:"WeChat settings",\u98DE\u4E66\u673A\u5668\u4EBA\u8BBE\u7F6E:"Feishu bot settings",\u7FA4\u804A\u54CD\u5E94\u65B9\u5F0F:"Group response mode","\u4EC5\u5728 @\u673A\u5668\u4EBA\u65F6\u54CD\u5E94\uFF08\u63A8\u8350\uFF09":"Only respond when @mentioned (recommended)",\u54CD\u5E94\u6240\u6709\u7FA4\u6D88\u606F:"Respond to all group messages","\u54CD\u5E94\u6240\u6709\u7FA4\u6D88\u606F\uFF08\u9700\u98DE\u4E66\u654F\u611F\u6743\u9650\uFF09":"Respond to all group messages (requires a sensitive Feishu scope)",\u91CD\u65B0\u6388\u6743:"Reauthorize",\u53BB\u6388\u6743:"Authorize",\u91CD\u65B0\u6388\u6743\u7FA4\u6D88\u606F\u6743\u9650:"Reauthorize group-message permission",\u6388\u6743\u7FA4\u6D88\u606F\u6743\u9650:"Authorize group-message permission","\u6B63\u5728\u51C6\u5907\u6388\u6743\u2026":"Preparing authorization\u2026","\u6B63\u5728\u51C6\u5907\u2026":"Preparing\u2026","\u79C1\u804A\u59CB\u7EC8\u54CD\u5E94\uFF1B\u7FA4\u804A\u4EC5\u5904\u7406\u660E\u786E @\u5F53\u524D\u673A\u5668\u4EBA\u7684\u6D88\u606F\u3002\u7FA4\u6D88\u606F\u6743\u9650\u5DF2\u5F00\u901A\uFF0C\u518D\u6B21\u5207\u6362\u65E0\u9700\u6388\u6743\u3002":"Direct messages always work; group chats require an explicit @mention of this bot. The group-message permission is already granted, so switching again needs no authorization.","\u79C1\u804A\u59CB\u7EC8\u54CD\u5E94\uFF1B\u7FA4\u804A\u4EC5\u5904\u7406\u660E\u786E @\u5F53\u524D\u673A\u5668\u4EBA\u7684\u6D88\u606F\u3002\u9009\u62E9\u5168\u90E8\u6D88\u606F\u540E\u4F1A\u6253\u5F00\u98DE\u4E66\u5B98\u65B9\u6388\u6743\u6D41\u7A0B\u3002":"Direct messages always work; group chats require an explicit @mention of this bot. Selecting all messages opens the official Feishu authorization flow.","\u5DF2\u5F00\u901A\u201C\u83B7\u53D6\u7FA4\u7EC4\u4E2D\u6240\u6709\u6D88\u606F\u201D\u6743\u9650\uFF08im:message.group_msg\uFF09\uFF1B\u673A\u5668\u4EBA\u4F1A\u5904\u7406\u7FA4\u804A\u4E2D\u7684\u6240\u6709\u53EF\u89C1\u6D88\u606F\u3002":"The \u201CRead all messages in associated group chat\u201D scope (im:message.group_msg) is granted; the bot processes every visible group message.","\u5C1A\u672A\u786E\u8BA4\u201C\u83B7\u53D6\u7FA4\u7EC4\u4E2D\u6240\u6709\u6D88\u606F\u201D\u6743\u9650\uFF0C\u8BF7\u5B8C\u6210\u98DE\u4E66\u6388\u6743\u3002":"The \u201CRead all messages in associated group chat\u201D scope has not been confirmed. Complete Feishu authorization.","\u79C1\u804A\u59CB\u7EC8\u54CD\u5E94\uFF1B\u7FA4\u804A\u4EC5\u5904\u7406\u660E\u786E @\u5F53\u524D\u673A\u5668\u4EBA\u7684\u6D88\u606F\u3002":"Direct messages always work; group chats require an explicit @mention of this bot.","\u9700\u5728\u98DE\u4E66\u4E3A\u8BE5\u673A\u5668\u4EBA\u5F00\u901A\u201C\u83B7\u53D6\u7FA4\u7EC4\u4E2D\u6240\u6709\u6D88\u606F\u201D\u6743\u9650\uFF08im:message.group_msg\uFF09\uFF1B\u5F00\u901A\u540E\uFF0C\u673A\u5668\u4EBA\u4F1A\u5904\u7406\u7FA4\u804A\u4E2D\u7684\u6240\u6709\u53EF\u89C1\u6D88\u606F\u3002":"Grant this bot the \u201CRead all messages in associated group chat\u201D Feishu scope (im:message.group_msg); once granted, it will process every visible group message.","\u7FA4\u804A\u54CD\u5E94\u65B9\u5F0F\u4FEE\u6539\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not update the group response mode. Try again.","\u7FA4\u6D88\u606F\u6743\u9650\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not authorize group-message permission. Try again.",\u9489\u9489\u8BBE\u7F6E:"DingTalk settings",\u4F01\u4E1A\u5FAE\u4FE1\u8BBE\u7F6E:"WeCom settings",\u626B\u7801\u63A5\u5165\u673A\u5668\u4EBA:"Scan QR code",\u6B63\u5728\u63A5\u5165:"Connecting",\u624B\u52A8\u63A5\u5165:"Manual setup",\u6536\u8D77\u51ED\u636E:"Hide credentials",\u6536\u8D77\u63A5\u5165:"Hide setup",\u63A5\u5165\u673A\u5668\u4EBA:"Connect bot",\u5F00\u59CB\u63A5\u5165:"Start setup",\u5728\u7EBF:"online",\u8FD0\u884C\u6B63\u5E38:"Connected",\u6B63\u5728\u8FDE\u63A5:"Connecting","\u6B63\u5728\u8FDE\u63A5\u2026":"Connecting\u2026",\u8FDE\u63A5\u672A\u5C31\u7EEA:"Not connected",\u8FDE\u63A5\u4E2D:"Connecting",\u8FDE\u63A5\u4E2D\u65AD:"Disconnected",\u9700\u8981\u5904\u7406:"Needs attention",\u72B6\u6001\u672A\u77E5:"Unknown status",\u79BB\u7EBF:"Offline",\u5DF2\u65AD\u5F00:"Disconnected",\u6D88\u606F\u901A\u9053:"Message channel",\u67E5\u770B\u6D88\u606F\u901A\u9053\u8BF4\u660E:"View message channel details",\u6700\u8FD1\u68C0\u67E5:"Last checked",\u6700\u8FD1\u4E00\u6761\u6D88\u606F\u5904\u7406\u5931\u8D25:"Latest message failed",\u9519\u8BEF\u7801:"Code",\u53C2\u8003\u53F7:"Reference",\u5F53\u524D\u5DE5\u4F5C\u533A:"Current workspace",\u9009\u62E9\u76EE\u5F55:"Choose folder",\u9009\u62E9\u673A\u5668\u4EBA\u5DE5\u4F5C\u533A\u76EE\u5F55:"Select bot workspace folder",\u5F53\u524D\u76EE\u5F55:"Current folder",\u4E3B\u76EE\u5F55:"Home",\u76F4\u63A5\u8F93\u5165\u8DEF\u5F84:"Enter a path directly","\u652F\u6301 Windows \u76D8\u7B26\u3001UNC \u4E0E POSIX \u7EDD\u5BF9\u8DEF\u5F84\u3002":"Supports Windows drives, UNC paths, and POSIX absolute paths.","\u8F93\u5165 Host \u4E0A\u7684\u5B8C\u6574\u7EDD\u5BF9\u8DEF\u5F84":"Enter a full absolute path on the Host",\u524D\u5F80:"Go","\u8BFB\u53D6\u4E2D\u2026":"Loading\u2026","\u6B63\u5728\u51C6\u5907\u76EE\u5F55\u9009\u62E9\u5668\u2026":"Preparing folder picker\u2026","\u6B63\u5728\u8BFB\u53D6\u76EE\u5F55\u2026":"Loading folders\u2026","\u8FD9\u4E2A\u76EE\u5F55\u4E2D\u6CA1\u6709\u5B50\u6587\u4EF6\u5939\u3002":"This folder has no subfolders.","\u6B64\u76EE\u5F55\u7684\u5B50\u6587\u4EF6\u5939\u8FC7\u591A\uFF0C\u4EC5\u663E\u793A\u524D\u4E00\u90E8\u5206\u3002":"This folder has too many subfolders; only the first group is shown.","\u65E0\u6CD5\u8BFB\u53D6\u76EE\u5F55\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not load the folder. Try again.",\u91CD\u8BD5:"Retry",\u663E\u793A\u9690\u85CF\u6587\u4EF6\u5939:"Show hidden folders","\u5207\u6362\u540E\u4F1A\u6E05\u9664\u8FD9\u4E2A\u673A\u5668\u4EBA\u7684\u65E7\u4F1A\u8BDD\u6620\u5C04\u3002":"Switching clears this bot\u2019s previous session mappings.","\u5207\u6362\u4E2D\u2026":"Switching\u2026",\u9009\u62E9\u6B64\u76EE\u5F55:"Select this folder",\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84:"Absolute workspace path","/\u7EDD\u5BF9\u8DEF\u5F84/\u5230/\u5DE5\u4F5C\u533A":"/absolute/path/to/workspace",\u4FEE\u6539:"Change",\u4FDD\u5B58:"Save",\u4E0A\u4E0B\u6587\u589E\u5F3A:"Context enhancement",\u672A\u5F00\u542F:"Not enabled",\u4EC5\u7FA4\u804A:"Groups only",\u4EC5\u79C1\u804A:"Direct only",\u7FA4\u804A\u548C\u79C1\u804A:"Groups and direct",\u5173\u95ED\u5F39\u7A97:"Close dialog",\u67E5\u770B\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BF4\u660E:"View context enhancement details",\u4E0A\u4E0B\u6587\u589E\u5F3A\u8303\u56F4:"Context enhancement scope",\u542F\u7528\u8303\u56F4:"Enable in",\u542F\u7528:"Enabled","\uFF08\u5F53\u524D\u6E20\u9053\u4E0D\u652F\u6301\u7FA4\u804A\uFF09":"(This channel does not support group chats)",\u6765\u6E90\u5B57\u6BB5:"Source fields",\u67E5\u770B\u6765\u6E90\u5B57\u6BB5\u8BF4\u660E:"View source field details",\u67E5\u770B\u7FA4\u804A\u6765\u6E90\u5B57\u6BB5\u8BF4\u660E:"View group source field details",\u67E5\u770B\u79C1\u804A\u6765\u6E90\u5B57\u6BB5\u8BF4\u660E:"View direct source field details",\u6E20\u9053:"Channel",\u4F1A\u8BDD\u7C7B\u578B:"Conversation type",\u53D1\u9001\u8005\u6807\u8BC6:"Sender ID",\u53D1\u9001\u8005\u6635\u79F0:"Sender name",\u67E5\u770B\u53D1\u9001\u8005\u6635\u79F0\u5B57\u6BB5\u8BF4\u660E:"View sender name field details",\u67E5\u770B\u7FA4\u804A\u53D1\u9001\u8005\u6635\u79F0\u5B57\u6BB5\u8BF4\u660E:"View group sender name field details",\u67E5\u770B\u79C1\u804A\u53D1\u9001\u8005\u6635\u79F0\u5B57\u6BB5\u8BF4\u660E:"View direct sender name field details","\u8BE5\u5B57\u6BB5\u4E0D\u662F\u6BCF\u4E2A\u6E20\u9053\u90FD\u80FD\u63D0\u4F9B\u3002\u5F53\u524D\u6D88\u606F\u6CA1\u6709\u53D1\u9001\u8005\u6635\u79F0\u65F6\uFF0C\u5373\u4F7F\u5DF2\u9009\u62E9\u8BE5\u5B57\u6BB5\uFF0C \u4E2D\u4E5F\u4F1A\u7701\u7565 senderName\u3002":"This field is not available on every channel. If the current message has no sender name, omits senderName even when the field is selected.",\u4F1A\u8BDD\u6807\u9898:"Conversation title",\u67E5\u770B\u7FA4\u804A\u4F1A\u8BDD\u6807\u9898\u5B57\u6BB5\u8BF4\u660E:"View group conversation title field details",\u67E5\u770B\u79C1\u804A\u4F1A\u8BDD\u6807\u9898\u5B57\u6BB5\u8BF4\u660E:"View direct conversation title field details","\u8BE5\u5B57\u6BB5\u4E0D\u662F\u6BCF\u4E2A\u6E20\u9053\u90FD\u80FD\u63D0\u4F9B\u3002\u9489\u9489\u7FA4\u804A\u4F1A\u5E26\u4E0A\u7FA4\u540D\u3002\u5F53\u524D\u6D88\u606F\u6CA1\u6709\u4F1A\u8BDD\u6807\u9898\u65F6\uFF0C\u5373\u4F7F\u5DF2\u9009\u62E9\u8BE5\u5B57\u6BB5\uFF0C \u4E2D\u4E5F\u4F1A\u7701\u7565 conversationTitle\u3002":"This field is not available on every channel. DingTalk group chats include the group name. If the current message has no conversation title, omits conversationTitle even when the field is selected.",\u673A\u5668\u4EBA\u6807\u8BC6:"Bot ID",\u589E\u5F3A\u63D0\u793A\u8BCD:"Guidance",\u67E5\u770B\u589E\u5F3A\u63D0\u793A\u8BCD\u4F7F\u7528\u8BF4\u660E:"View guidance instructions",\u67E5\u770B\u7FA4\u804A\u589E\u5F3A\u63D0\u793A\u8BCD\u4F7F\u7528\u8BF4\u660E:"View group guidance instructions",\u67E5\u770B\u79C1\u804A\u589E\u5F3A\u63D0\u793A\u8BCD\u4F7F\u7528\u8BF4\u660E:"View direct guidance instructions",\u4F7F\u7528\u8BF4\u660E:"How to use","\u7528\u4E8E\u544A\u8BC9\u6A21\u578B\u5982\u4F55\u4F7F\u7528 \u4E2D\u5DF2\u9009\u62E9\u7684\u6765\u6E90\u5B57\u6BB5\u3002\u53EA\u586B\u5199\u6B63\u6587\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u6DFB\u52A0 \u6210\u5BF9\u6807\u7B7E\u3002":"Tell the model how to use the selected fields in . Enter only the body; the plugin adds paired tags.",\u751F\u6548\u89C4\u5219:"Behavior",\u9690\u79C1\u63D0\u793A:"Privacy",\u4F7F\u7528\u793A\u4F8B:"Example","\u4EC5\u4F9D\u636E\u5F53\u524D\u6D88\u606F\u7684 \u4E2D\u5B9E\u9645\u63D0\u4F9B\u7684\u5B57\u6BB5\u7406\u89E3\u6765\u6E90\uFF1B\u6CA1\u6709\u63D0\u4F9B\u7684\u5B57\u6BB5\u4E0D\u8981\u731C\u6D4B\u6216\u8865\u5168\u3002\nconversationType\u662F\u7FA4\u804A\u65F6\u56DE\u590D\u4E25\u8083\u4E00\u70B9\uFF0CconversationType\u662F\u79C1\u804A\u65F6\u56DE\u590D\u4E00\u5B9A\u8981\u5E7D\u9ED8\u641E\u7B11\uFF0C\u50CF\u5468\u661F\u9A70\u7684\u7535\u5F71\u4E00\u6837\u641E\u7B11":`Understand the source only from fields actually present in for the current message; do not guess or fill in missing fields. +`,{encoding:"utf8",mode:384}),await zke(o,this.#e)}};import{randomUUID as V6}from"node:crypto";var wP=new Set(["starting","qr_ready","polling","slow_down","domain_switched","saving"]),eve=new Set(["polling","slow_down","domain_switched"]),Ki=Object.freeze({IDLE:"idle",STARTING:"starting",QR_READY:"qr_ready",POLLING:"polling",SLOW_DOWN:"slow_down",DOMAIN_SWITCHED:"domain_switched",SAVING:"saving",SUCCEEDED:"succeeded",EXPIRED:"expired",CANCELLED:"cancelled",ERROR:"error"});function Y6(n){return["access_denied","expired_token","abort"].includes(n?.code)?n.code:"registration_failed"}function DP(n){let t=Y6(n);return{code:t,message:{access_denied:"Registration was denied.",abort:"Registration was cancelled.",expired_token:"The registration QR code expired."}[t]??"Unable to register the Feishu app."}}function Ave(n){let t=Number(n);if(!Number.isFinite(t)||t<=0)throw new TypeError("registerApp onQRCodeReady returned an invalid expireIn");return t}function tve(n){if(n!==void 0){if(n===null||typeof n!="object"||Array.isArray(n))throw new TypeError("registerApp returned invalid user_info");return{...n}}}var Tg=class{#e;#A;#t;#r;#l;#o=0;#i=null;#a;constructor({registerApp:t,onCredentials:o,now:i=Date.now,setTimeout:e=globalThis.setTimeout,clearTimeout:a=globalThis.clearTimeout}={}){if(typeof t!="function")throw new TypeError("RegistrationManager requires a registerApp function");if(typeof o!="function")throw new TypeError("RegistrationManager requires an onCredentials function");if(typeof i!="function"||typeof e!="function"||typeof a!="function")throw new TypeError("RegistrationManager clock dependencies must be functions");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#a=this.#s(null,Ki.IDLE)}start(t={}){if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError("Registration options must be an object");this.#f();let o={id:++this.#o,controller:new AbortController,qrCodeUrl:null,expiresAt:null,pollIntervalSeconds:null,expiryTimer:null};this.#i=o,this.#a=this.#s(o,Ki.STARTING);let i={...t,signal:o.controller.signal,onQRCodeReady:a=>this.#c(o,a),onStatusChange:a=>this.#g(o,a)};return Promise.resolve().then(()=>this.#e(i)).then(a=>this.#I(o,a),a=>this.#d(o,a)),this.status()}status(){this.#h();let t={...this.#a};t.error&&(t.error={...t.error});let o=this.#i;return o&&o.expiresAt!==null&&wP.has(t.state)&&(t.remainingSeconds=Math.max(0,Math.ceil((o.expiresAt-this.#t())/1e3))),t}cancel(){let t=this.#i;return t?(this.#u(t,Ki.CANCELLED,{error:{code:"abort",message:"Registration was cancelled."}}),t.controller.abort(),this.status()):this.status()}#n(t){return this.#i===t}#s(t,o,i={}){let e={state:o,attempt:t?.id??this.#o,updatedAt:this.#t(),...i};return t?.qrCodeUrl&&wP.has(o)&&(e.qrCodeUrl=t.qrCodeUrl,e.expiresAt=t.expiresAt),t?.pollIntervalSeconds!==null&&wP.has(o)&&(e.pollIntervalSeconds=t.pollIntervalSeconds),e}#p(t,o,i={}){this.#n(t)&&(this.#a=this.#s(t,o,i))}#c(t,o){if(!this.#n(t))return;if(typeof o?.url!="string"||!o.url)throw new TypeError("registerApp onQRCodeReady returned an invalid URL");let i=Ave(o.expireIn);t.qrCodeUrl=o.url,t.expiresAt=this.#t()+i*1e3,this.#B(t),t.expiryTimer=this.#r(()=>this.#C(t),i*1e3),t.expiryTimer?.unref?.(),this.#p(t,Ki.QR_READY)}#g(t,o){!this.#n(t)||!eve.has(o?.status)||(o.status===Ki.SLOW_DOWN&&Number.isFinite(Number(o.interval))&&(t.pollIntervalSeconds=Number(o.interval)),this.#p(t,o.status))}async#I(t,o){if(!this.#n(t))return;let i=o?.client_id,e=o?.client_secret;if(typeof i!="string"||!i||typeof e!="string"||!e){this.#u(t,Ki.ERROR,{error:{code:"invalid_credentials",message:"Feishu registration returned invalid credentials."}});return}let a;try{a=tve(o.user_info)}catch{this.#u(t,Ki.ERROR,{error:{code:"invalid_credentials",message:"Feishu registration returned invalid credentials."}});return}this.#B(t),t.qrCodeUrl=null,t.expiresAt=null,t.pollIntervalSeconds=null,this.#p(t,Ki.SAVING);try{await this.#A({client_id:i,client_secret:e,user_info:a})}catch{this.#n(t)&&this.#u(t,Ki.ERROR,{error:{code:"credentials_callback_failed",message:"Unable to store the Feishu credentials."}});return}this.#n(t)&&this.#u(t,Ki.SUCCEEDED)}#d(t,o){if(!this.#n(t))return;let i=Y6(o);if(i==="expired_token"){this.#u(t,Ki.EXPIRED,{error:DP(o)});return}if(i==="abort"){this.#u(t,Ki.CANCELLED,{error:DP(o)});return}this.#u(t,Ki.ERROR,{error:DP(o)})}#h(){let t=this.#i;t&&t.expiresAt!==null&&this.#t()>=t.expiresAt&&this.#C(t)}#C(t){this.#n(t)&&(this.#u(t,Ki.EXPIRED,{error:{code:"expired_token",message:"The registration QR code expired."}}),t.controller.abort())}#u(t,o,i={}){this.#n(t)&&(this.#B(t),this.#a=this.#s(t,o,i),this.#i=null)}#B(t){t.expiryTimer!==null&&(this.#l(t.expiryTimer),t.expiryTimer=null)}#f(){let t=this.#i;t&&(this.#B(t),this.#i=null,t.controller.abort())}};var rve="card.action.trigger",ave="im:message:readonly",ive="im:resource",Nu="callback_repair";function ove(n){return n==="lark"?"accounts.larksuite.com":"accounts.feishu.cn"}function nve(n){return n==="lark"?"open.larksuite.com":"open.feishu.cn"}function OP(n,t,o="feishu",i="Feishu app update"){let e;try{e=new URL(n)}catch{throw new Error(`${i} returned an invalid verification URL`)}let a=o==="feishu"||o==="lark",A=e.searchParams.getAll("clientID"),r=e.searchParams.getAll("tp"),s=e.searchParams.getAll("addons"),g=String(t).includes("{{")||String(t).includes("}}")||[...e.searchParams.values()].some(c=>c.includes("{{")||c.includes("}}"));if(!a||e.protocol!=="https:"||e.hostname!==nve(o)||e.port!==""||e.username!==""||e.password!==""||r.length!==1||r[0]!=="sdk"||A.length!==1||A[0]!==t||e.searchParams.has("createOnly")||s.length!==1||!s[0]?.trim()||g)throw new Error(`${i} returned an unsafe verification URL`);return e.toString()}function sve(n,t,o="feishu"){return OP(n,t,o,"Feishu callback repair")}var yS=class{#e;#A;#t;constructor({registerApp:t,onCredentials:o,appId:i,domain:e="feishu"}={}){if(typeof t!="function")throw new TypeError("registerApp is required");if(typeof o!="function")throw new TypeError("onCredentials is required");if(typeof i!="string"||!i.trim())throw new TypeError("appId is required");if(e!=="feishu"&&e!=="lark")throw new TypeError("domain is invalid");this.#A=i.trim(),this.#t=e,this.#e=new Tg({registerApp:a=>t({...a,onQRCodeReady:A=>{sve(A?.url,this.#A,this.#t),a.onQRCodeReady(A)}}),onCredentials:o})}start(){return this.#e.start({source:"deepseek-harness-card-action-repair",domain:ove(this.#t),appId:this.#A,addons:{preset:!1,scopes:{tenant:[ave,ive,...ES]},callbacks:{items:[rve]}}})}status(){return this.#e.status()}cancel(){return this.#e.cancel()}};var gve="im:message.group_msg",SS="group_message_permission";function cve(n){return n==="lark"?"accounts.larksuite.com":"accounts.feishu.cn"}function Ive(n,t,o="feishu"){return OP(n,t,o,"Feishu group message permission update")}var mS=class{#e;#A;#t;constructor({registerApp:t,onCredentials:o,appId:i,domain:e="feishu"}={}){if(typeof t!="function")throw new TypeError("registerApp is required");if(typeof o!="function")throw new TypeError("onCredentials is required");if(typeof i!="string"||!i.trim())throw new TypeError("appId is required");if(e!=="feishu"&&e!=="lark")throw new TypeError("domain is invalid");this.#A=i.trim(),this.#t=e,this.#e=new Tg({registerApp:a=>t({...a,onQRCodeReady:A=>{Ive(A?.url,this.#A,this.#t),a.onQRCodeReady(A)}}),onCredentials:o})}start(){return this.#e.start({source:"deepseek-harness-group-message-permission",domain:cve(this.#t),appId:this.#A,addons:{preset:!1,scopes:{tenant:[gve]}}})}status(){return this.#e.status()}cancel(){return this.#e.cancel()}};var j6=Object.freeze(["im:message.p2p_msg:readonly","im:message.group_at_msg:readonly","im:message:readonly","im:message:send_as_bot","im:message.reactions:write_only","im:message:recall","im:resource","cardkit:card:write",...ES]);var bP=new Set(["starting","qr_ready","polling","slow_down","domain_switched"]),wS=new Set([...bP,"saving"]),J6=new Set([Nu,SS]),q6="*",lve=12e4,pve=6e5;function W6(){return{ready:!1,feishuLongConnectionState:"idle",harnessReachable:!1}}function Ru(n){return n?n.status:W6()}function ku(n){return n.ready===!0&&n.feishuLongConnectionState==="connected"&&n.harnessReachable===!0}function Z6(n){return n.length>12?`${n.slice(0,8)}\u2022\u2022\u2022\u2022${n.slice(-4)}`:"cli_\u2022\u2022\u2022\u2022"}function dve(n){return{name:n.botName,appIdMasked:Z6(n.appId),activated:n.activated,domain:n.domain}}function hve({connected:n,error:t,connection:o}){return n?"connected":t||o.feishuLongConnectionState==="failed"?"error":"disconnected"}function Eve(){return`bot_${V6().replaceAll("-","")}`}function Cve(){return`reg_${V6().replaceAll("-","")}`}function z6(n){return`DSH_FEISHU_APP_SECRET_${n.slice(4).toUpperCase()}`}function DS(n){return JSON.stringify({id:n.id,appId:n.appId,secretRef:n.secretRef,ownerOpenIds:n.ownerOpenIds,domain:n.domain,botName:n.botName,botOpenId:n.botOpenId,activated:n.activated,groupResponseMode:Io(n.groupResponseMode),groupMessagePermissionGranted:n.groupMessagePermissionGranted===!0,deletionPending:n.deletionPending===!0,connectedAt:n.connectedAt??null,createdAt:n.createdAt??null})}function OS(n){return typeof n=="string"&&n.trim()?n.trim():null}var vu=class{#e;#A;#t;#r;#l;#o;#i;#a;#n=new Map;#s=new Map;#p=new Map;#c=new Map;#g=new Map;#I=null;#d=Promise.resolve();#h=new Map;#C=1;#u;#B=!1;constructor({registerApp:t,verifyApp:o,credentials:i,configStore:e,createRuntime:a,deleteState:A=async()=>{},createBotId:r=Eve,createRegistrationId:s=Cve,callbackProbeTimeoutMs:g=lve}){if(typeof t!="function")throw new Error("registerApp is required");if(typeof o!="function")throw new Error("verifyApp is required");if(!i)throw new Error("credentials service is required");if(!e||typeof e.list!="function")throw new Error("multi-bot config store is required");if(typeof a!="function")throw new Error("createRuntime is required");if(typeof A!="function")throw new Error("deleteState must be a function");if(!Number.isFinite(g)||g<=0||g>pve)throw new TypeError("callbackProbeTimeoutMs must be between 1 and 600000ms");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#u=g}async initialize(){if(this.#B)return this.status();let t=this.#r.list(),o=!1;return await Promise.allSettled(t.map(i=>this.#k(i.id,async()=>{let e=Ru(this.#n.get(i.id));if(ku(e)||e.feishuLongConnectionState==="connecting"||e.feishuLongConnectionState==="reconnecting")return;if(o=!0,i.deletionPending){this.#s.set(i.id,{code:"deletion_pending",message:"\u673A\u5668\u4EBA\u6B63\u5728\u7B49\u5F85\u5B8C\u6210\u672C\u5730\u5220\u9664\uFF0C\u8BF7\u91CD\u8BD5\u79FB\u9664\u3002"});return}let a;try{a=await this.#t.resolve(i.secretRef)}catch{this.#s.set(i.id,{code:"missing_credentials",message:"\u65E0\u6CD5\u8BFB\u53D6\u673A\u5668\u4EBA\u51ED\u636E\uFF0C\u8BF7\u68C0\u67E5\u51ED\u636E\u5B58\u50A8\u3002"});return}if(!a?.value){this.#s.set(i.id,{code:"missing_credentials",message:"\u673A\u5668\u4EBA\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u5220\u9664\u540E\u91CD\u65B0\u626B\u7801\u63A5\u5165\u3002"});return}try{await this.#E(i,a.value),this.#s.delete(i.id)}catch{this.#s.set(i.id,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u6682\u65F6\u65E0\u6CD5\u8FDE\u63A5\u98DE\u4E66\uFF0C\u8BF7\u91CD\u8BD5\u3002"})}}))),o&&this.#P(),this.status()}startRegistration(){this.#_();let t=this.#a();if(typeof t!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(t)||this.#p.has(t))throw new Error("Registration id generator returned an invalid or duplicate id");let o={id:t,manager:null,botId:null,createdNew:!1,cancelled:!1};return o.manager=new Tg({registerApp:this.#e,onCredentials:i=>this.#G(()=>this.#D(o,i))}),this.#p.set(t,o),this.#I=t,this.#F(),o.manager.start({source:"deepseek-harness",createOnly:!0,appPreset:{name:"{user} \u7684\u5317\u6C47\u661F\u6CB3 AI \u52A9\u624B",desc:"\u8FDE\u63A5\u98DE\u4E66\u4E0E DeepSeek Harness\uFF0C\u5728\u804A\u5929\u4E2D\u4F7F\u7528\u4F01\u4E1A AI \u52A9\u624B\u3002"},addons:{preset:!1,scopes:{tenant:[...j6]},events:{items:{tenant:["im.message.receive_v1"]}},callbacks:{items:["card.action.trigger"]}}}),this.#P(),this.registrationStatus(t)}startCallbackRepair(t,{actorOpenId:o,chatId:i}={}){this.#_();let e=this.#R(t);if(e.deletionPending)throw new Error("Cannot repair a Feishu bot pending deletion");let a=this.#c.get(t),A=a?this.#p.get(a):null;if(A&&wS.has(A.manager.status().state)){if(A.operation!==Nu)throw new Error("Another Feishu app update is already active for this bot");return this.registrationStatus(A.id)}this.#c.delete(t);let r=this.#a();if(typeof r!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(r)||this.#p.has(r))throw new Error("Registration id generator returned an invalid or duplicate id");let s={id:r,operation:Nu,manager:null,botId:t,createdNew:!1,cancelled:!1,remoteCommitted:!1,processing:null,publicError:null,stage:"authorizing",target:structuredClone(e),targetFingerprint:DS(e),initiator:{actorOpenId:OS(o),chatId:OS(i)}};return s.manager=new yS({registerApp:this.#e,appId:e.appId,domain:e.domain,onCredentials:g=>{s.remoteCommitted=!0;let I=this.#y(s,g).finally(()=>{s.processing===I&&(s.processing=null)});return s.processing=I,I}}),this.#p.set(r,s),this.#c.set(t,r),this.#I=r,this.#F(),s.manager.start(),this.#P(),this.registrationStatus(r)}startGroupMessagePermission(t){this.#_();let o=this.#R(t);if(o.deletionPending)throw new Error("Cannot update permissions for a Feishu bot pending deletion");let i=this.#c.get(t),e=i?this.#p.get(i):null;if(e&&wS.has(e.manager.status().state)){if(e.operation!==SS)throw new Error("Another Feishu app update is already active for this bot");return this.registrationStatus(e.id)}this.#c.delete(t);let a=this.#a();if(typeof a!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(a)||this.#p.has(a))throw new Error("Registration id generator returned an invalid or duplicate id");let A={id:a,operation:SS,manager:null,botId:t,createdNew:!1,cancelled:!1,remoteCommitted:!1,processing:null,publicError:null,stage:"authorizing",target:structuredClone(o),targetFingerprint:DS(o),initiator:{actorOpenId:null,chatId:null}};return A.manager=new mS({registerApp:this.#e,appId:o.appId,domain:o.domain,onCredentials:r=>{A.remoteCommitted=!0;let g=this.#S(A,r).finally(()=>{A.processing===g&&(A.processing=null)});return A.processing=g,g}}),this.#p.set(a,A),this.#c.set(t,a),this.#I=a,this.#F(),A.manager.start(),this.#P(),this.registrationStatus(a)}hasRegistration(t){return this.#p.has(t)}registrationStatus(t){let o=this.#p.get(t);return o?this.#f({registration:o,selectedBotId:o.botId}):null}async cancelRegistration(t=this.#I){let o=this.#p.get(t);if(!o)return this.status();let i=o.manager.status().state;return J6.has(o.operation)&&i==="saving"?this.registrationStatus(t):wS.has(i)?(o.cancelled=!0,o.manager.cancel(),await this.#G(async()=>{o.createdNew&&o.botId&&this.#g.get(o.botId)===o.id&&this.#r.getBot(o.botId)&&await this.#k(o.botId,()=>this.#O(o.botId))}),this.#P(),this.registrationStatus(t)??this.status()):this.registrationStatus(t)}status(t){return this.#f({registration:this.#p.get(this.#I)??null,selectedBotId:t})}async bindCredentials({appId:t,appSecret:o,domain:i="feishu"}={}){this.#_();let e=typeof t=="string"?t.trim():"",a=typeof o=="string"?o.trim():"",A=i==="lark"?"lark":"feishu";if(!e||!a)throw new TypeError("Feishu App ID and App Secret are required");return this.#G(async()=>{this.#_();let r=await this.#A({appId:e,appSecret:a,domain:A});this.#_();let s=this.#r.list().find(f=>f.appId===e),g=s?.id??this.#i();if(typeof g!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(g)||!s&&this.#r.getBot(g))throw new Error("Bot id generator returned an invalid or duplicate id");let c=s?.secretRef??z6(g),I=await this.#t.resolve(c).catch(()=>{}),d={...s,id:g,appId:e,secretRef:c,ownerOpenIds:s?.ownerOpenIds?.length?s.ownerOpenIds:[q6],domain:A,botName:r.name,botOpenId:r.openId,activated:r.activated,deletionPending:!1,connectedAt:new Date().toISOString(),createdAt:s?.createdAt??new Date().toISOString()};await this.#t.set(c,a);let B;try{B=await this.#r.saveBot(d)}catch(f){throw await this.#w(c,I),f}return await this.#k(g,async()=>{try{await this.#E(B,a),this.#s.delete(g)}catch{this.#s.set(g,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u5DF2\u7ECF\u7ED1\u5B9A\uFF0C\u4F46\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"})}}),this.#P(),this.status(g)})}async reconnectBot(t){return this.#_(),this.#k(t,async()=>{let o=this.#R(t);if(o.deletionPending)return this.#s.set(t,{code:"deletion_pending",message:"\u673A\u5668\u4EBA\u6B63\u5728\u7B49\u5F85\u5B8C\u6210\u672C\u5730\u5220\u9664\uFF0C\u8BF7\u91CD\u8BD5\u79FB\u9664\u3002"}),this.status(t);if(ku(Ru(this.#n.get(t))))return this.status(t);let i;try{i=await this.#t.resolve(o.secretRef)}catch{i=null}if(!i?.value)return this.#s.set(t,{code:"missing_credentials",message:"\u673A\u5668\u4EBA\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u5220\u9664\u540E\u91CD\u65B0\u626B\u7801\u63A5\u5165\u3002"}),this.#P(),this.status(t);try{await this.#E(o,i.value),this.#s.delete(t)}catch{this.#s.set(t,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u6682\u65F6\u65E0\u6CD5\u8FDE\u63A5\u98DE\u4E66\uFF0C\u8BF7\u91CD\u8BD5\u3002"})}return this.#P(),this.status(t)})}async sendConnectionTest(t){return this.#_(),this.#k(t,async()=>{let o=this.#R(t),i=this.#n.get(t);if(!ku(Ru(i))||typeof i.sendConnectionTest!="function"){let e=new Error("\u98DE\u4E66\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5");throw e.code="test-target-unavailable",e}return i.sendConnectionTest(ka(`${o.botName}\uFF08${Z6(o.appId)}\uFF09`,"\u98DE\u4E66\u673A\u5668\u4EBA"))})}async sendProactiveText(t,o,i,e={}){return this.#_(),this.#k(t,async()=>{this.#R(t);let a=this.#n.get(t);if(!ku(Ru(a))||typeof a.sendProactiveText!="function"){let A=new Error("\u98DE\u4E66\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5");throw A.code="bot-not-connected",A}return a.sendProactiveText(o,i,e)})}async disconnectBot(t){return this.#_(),this.#k(t,async()=>(this.#R(t),await this.#T(t),this.#s.delete(t),this.#P(),this.status(t)))}async updateGroupResponseMode(t,o){if(this.#_(),!nS(o))throw new TypeError("Invalid Feishu group response mode");return this.#G(()=>this.#k(t,async()=>{let i=this.#R(t);if(o==="all"&&i.groupMessagePermissionGranted!==!0){let a=new Error("Authorize im:message.group_msg before enabling all group messages");throw a.code="group_message_permission_required",a}let e=await this.#r.saveBot({...i,groupResponseMode:o});return this.#n.get(t)?.setGroupResponseMode?.(e.groupResponseMode),this.#P(),this.status(t)}))}async deleteBot(t){return this.#_(),this.#G(()=>this.#k(t,async()=>(this.#R(t),await this.#O(t),this.#P(),this.status())))}async reconnect(){let t=this.#r.list()[0];return t?this.reconnectBot(t.id):this.status()}async disconnect(){let t=this.#r.list()[0];return t?this.deleteBot(t.id):this.status()}async close(){if(this.#B)return;this.#B=!0;let t=[];for(let o of this.#p.values()){let i=o.manager.status().state;J6.has(o.operation)&&i==="saving"?(o.manager.cancel(),o.processing&&t.push(o.processing)):wS.has(i)&&(o.cancelled=!0,o.manager.cancel())}await this.#d,await Promise.allSettled([...this.#h.values()]),await Promise.allSettled([...this.#n.keys()].map(o=>this.#T(o))),await Promise.allSettled(t),await this.#d,await Promise.allSettled([...this.#h.values()]),await Promise.allSettled([...this.#n.keys()].map(o=>this.#T(o)))}#f({registration:t,selectedBotId:o}={}){let i=this.#r.list().map(I=>{let d=Ru(this.#n.get(I.id)),B=ku(d),f=this.#s.get(I.id)??null;return{botId:I.id,phase:hve({connected:B,error:f,connection:d}),connected:B,configured:!0,groupResponseMode:Io(I.groupResponseMode),groupMessagePermissionGranted:I.groupMessagePermissionGranted===!0,bot:dve(I),connection:d,lastMessageError:Xr(d.lastMessageError),error:f}}),e=t?this.#Q(t):{state:"idle",attempt:0,updatedAt:Date.now()},a=bP.has(e.state),A=e.state==="saving",r=!!t&&(a||A),s=i.find(I=>I.botId===o)??(r?null:i[0]??null),g=i.some(I=>I.connected),c=s?.phase??"unconfigured";return a?c="registering":A?c="connecting":e.state==="error"&&!s&&(c="error"),{schemaVersion:2,revision:this.#C,phase:c,connected:s?.connected??!1,configured:i.length>0,bot:s?.bot??null,connection:s?.connection??W6(),error:s?.error??e.error??null,registration:e,bots:i,totals:{configured:i.length,connected:i.filter(I=>I.connected).length},anyConnected:g}}#Q(t){let o=t.manager.status();return{...o,attempt:t.id,...t.botId?{botId:t.botId}:{},...t.operation?{operation:t.operation}:{},...t.stage?{stage:t.stage}:{},...o.state==="error"&&t.publicError?{error:{...t.publicError}}:{}}}async#S(t,o){let i=o.client_id,e=o.client_secret,a=OS(o.user_info?.open_id),A=o.user_info?.tenant_brand,r=t.target;if(t.cancelled)throw this.#m(t,"abort","Group message permission update was cancelled before local activation.");if(i!==r.appId)throw this.#m(t,"repair_app_mismatch","Feishu returned credentials for a different app.");if(!a)throw this.#m(t,"repair_owner_missing","Feishu returned no permission operator identity.");if(A!==void 0&&A!==r.domain)throw this.#m(t,"repair_domain_mismatch","Feishu returned credentials for a different account domain.");if(!r.ownerOpenIds.includes(q6)&&!r.ownerOpenIds.includes(a))throw this.#m(t,"repair_owner_mismatch","The Feishu permission operator is not an owner of this configured bot.");t.stage="verifying_identity";let s;try{s=await this.#A({appId:i,appSecret:e,domain:r.domain})}catch(g){throw this.#m(t,"repair_credentials_invalid","Feishu could not verify the updated app credentials.",g)}if(r.botOpenId&&s?.openId!==r.botOpenId)throw this.#m(t,"repair_bot_mismatch","The updated Feishu app belongs to a different bot identity.");await this.#G(()=>this.#k(t.botId,async()=>{let g=this.#r.getBot(t.botId);if(!g||g.deletionPending||DS(g)!==t.targetFingerprint)throw this.#m(t,"repair_target_changed","The Feishu bot changed while its permission update was in progress.");let c;try{c=await this.#t.resolve(g.secretRef)}catch(d){throw this.#m(t,"credential_update_failed","Unable to read the current Feishu credential.",d)}if(c?.value!==e){t.stage="persisting_secret";try{await this.#t.set(g.secretRef,e)}catch(B){if((await this.#t.resolve(g.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_update_failed","Unable to store the updated Feishu credential.",B)}if((await this.#t.resolve(g.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_state_unknown","The updated Feishu credential could not be confirmed after writing.")}t.stage="enabling_all_messages";let I;try{I=await this.#r.saveBot({...g,groupMessagePermissionGranted:!0,groupResponseMode:"all"})}catch(d){throw this.#m(t,"group_message_permission_save_failed","The permission was accepted, but all-message mode could not be saved.",d)}t.stage="restarting";try{await this.#E(I,e)}catch(d){throw this.#s.set(t.botId,{code:"connection_failed",message:"\u7FA4\u6D88\u606F\u6743\u9650\u5DF2\u5F00\u901A\uFF0C\u4F46\u673A\u5668\u4EBA\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"}),this.#P(),this.#m(t,"group_message_permission_connection_failed","The permission was accepted, but the Feishu runtime could not restart.",d)}this.#s.delete(t.botId),t.stage="verified",t.publicError=null,this.#P()}))}async#y(t,o){let i=o.client_id,e=o.client_secret,a=OS(o.user_info?.open_id),A=o.user_info?.tenant_brand,r=t.target;if(t.cancelled)throw this.#m(t,"abort","Callback repair was cancelled before local activation.");if(i!==r.appId)throw this.#m(t,"repair_app_mismatch","Feishu returned credentials for a different app.");if(!a)throw this.#m(t,"repair_owner_missing","Feishu returned no repair operator identity.");if(A!==void 0&&A!==r.domain)throw this.#m(t,"repair_domain_mismatch","Feishu returned credentials for a different account domain.");t.stage="verifying_identity";let s;try{s=await this.#A({appId:i,appSecret:e,domain:r.domain})}catch(c){throw this.#m(t,"repair_credentials_invalid","Feishu could not verify the repaired app credentials.",c)}if(r.botOpenId&&s?.openId!==r.botOpenId)throw this.#m(t,"repair_bot_mismatch","The repaired Feishu app belongs to a different bot identity.");let g=await this.#G(()=>this.#k(t.botId,async()=>{let c=this.#r.getBot(t.botId);if(!c||c.deletionPending||DS(c)!==t.targetFingerprint)throw this.#m(t,"repair_target_changed","The Feishu bot changed while its callback repair was in progress.");let I;try{I=await this.#t.resolve(c.secretRef)}catch(f){throw this.#m(t,"credential_update_failed","Unable to read the current Feishu credential.",f)}if(I?.value!==e){t.stage="persisting_secret";try{await this.#t.set(c.secretRef,e)}catch(Q){if((await this.#t.resolve(c.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_update_failed","Unable to store the repaired Feishu credential.",Q)}if((await this.#t.resolve(c.secretRef).catch(()=>null))?.value!==e)throw this.#m(t,"credential_state_unknown","The repaired Feishu credential could not be confirmed after writing.")}let B;t.stage="restarting";try{await this.#E(c,e),B=this.#n.get(t.botId)}catch(f){throw this.#s.set(t.botId,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u56DE\u8C03\u4FEE\u590D\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"}),this.#P(),this.#m(t,"repair_connection_failed","The repaired Feishu runtime could not be started.",f)}if(!B)throw this.#m(t,"repair_connection_failed","The repaired Feishu runtime is unavailable.");return this.#s.delete(t.botId),this.#P(),B}));if(typeof g.beginCardActionProbe!="function")throw this.#m(t,"card_action_probe_unavailable","The Feishu runtime cannot verify card callbacks.");t.stage="awaiting_callback";try{if((await g.beginCardActionProbe({expectedOperatorOpenId:t.initiator.actorOpenId??a,timeoutMs:this.#u,...t.initiator.chatId?{chatId:t.initiator.chatId}:{}}))?.verified!==!0){let I=new Error("Feishu runtime returned no callback proof");throw I.code="card_action_probe_failed",I}}catch(c){let I=c?.code==="card_action_probe_timeout"?"card_action_probe_timeout":c?.code==="card_action_probe_unavailable"?"card_action_probe_unavailable":c?.code==="card_action_probe_send_failed"?"card_action_probe_send_failed":"card_action_probe_failed";throw this.#m(t,I,I==="card_action_probe_timeout"?"Timed out waiting for the Feishu callback verification button.":"The Feishu card callback probe failed.",c)}t.stage="verified",t.publicError=null,this.#P()}#m(t,o,i,e){t.publicError={code:o,message:i};let a=new Error(i,e?{cause:e}:void 0);return a.code=o,a}async#D(t,o){if(t.cancelled)throw new Error("Registration was cancelled");let i=o.client_id,e=o.client_secret,a=o.user_info?.open_id,A=o.user_info?.tenant_brand==="lark"?"lark":"feishu";if(!a)throw new Error("Feishu registration returned no owner open_id");let r=await this.#A({appId:i,appSecret:e,domain:A});if(t.cancelled)throw new Error("Registration was cancelled");let s=this.#r.list().find(Q=>Q.appId===i),g=s?.id??this.#i();if(typeof g!="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(g)||!s&&this.#r.getBot(g))throw new Error("Bot id generator returned an invalid or duplicate id");let c=s?.secretRef??z6(g),I=this.#g.get(g),d=await this.#t.resolve(c).catch(()=>{});await this.#t.set(c,e);let B;try{B=await this.#r.saveBot({...s,id:g,appId:i,secretRef:c,ownerOpenIds:[...new Set([...s?.ownerOpenIds??[],a])],domain:A,botName:r.name,botOpenId:r.openId,activated:r.activated,deletionPending:!1,connectedAt:new Date().toISOString(),createdAt:s?.createdAt??new Date().toISOString()}),t.botId=g,t.createdNew=!s,this.#g.set(g,t.id)}catch(Q){try{await this.#w(c,d)}catch(y){throw new Error("Unable to restore the Feishu credential after a config failure.",{cause:y})}throw Q}if(t.cancelled)throw t.createdNew?await this.#k(g,()=>this.#O(g)):(await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g)),new Error("Registration was cancelled");let f=!1;try{if(await this.#k(g,()=>this.#E(B,e)),t.cancelled)throw t.createdNew?await this.#k(g,()=>this.#O(g)):(await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g),d?.value&&!s.deletionPending?await this.#k(g,()=>this.#E(s,d.value)):await this.#k(g,()=>this.#T(g))),f=!0,new Error("Registration was cancelled");this.#s.delete(g),this.#P()}catch(Q){if(t.cancelled)throw!f&&t.createdNew&&this.#r.getBot(g)?await this.#k(g,()=>this.#O(g)):!f&&s&&(await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g),!this.#B&&d?.value&&!s.deletionPending?await this.#k(g,()=>this.#E(s,d.value)):await this.#k(g,()=>this.#T(g))),this.#P(),Q;if(s&&d?.value)try{throw await this.#r.saveBot(s),await this.#w(c,d),I?this.#g.set(g,I):this.#g.delete(g),s.deletionPending?(await this.#k(g,()=>this.#T(g)),this.#s.set(g,{code:"deletion_pending",message:"\u673A\u5668\u4EBA\u6B63\u5728\u7B49\u5F85\u5B8C\u6210\u672C\u5730\u5220\u9664\uFF0C\u8BF7\u91CD\u8BD5\u79FB\u9664\u3002"})):(await this.#k(g,()=>this.#E(s,d.value)),this.#s.delete(g)),this.#P(),Q}catch(y){throw y===Q?Q:(this.#s.set(g,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u8FDE\u63A5\u66F4\u65B0\u5931\u8D25\uFF0C\u4E14\u539F\u8FDE\u63A5\u65E0\u6CD5\u6062\u590D\uFF0C\u8BF7\u91CD\u8BD5\u3002"}),this.#P(),new Error("Unable to restore the previous Feishu bot connection.",{cause:y}))}throw this.#s.set(g,{code:"connection_failed",message:"\u673A\u5668\u4EBA\u5DF2\u7ECF\u521B\u5EFA\uFF0C\u4F46\u957F\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u8BF7\u70B9\u51FB\u91CD\u8BD5\u3002"}),this.#P(),Q}}async#E(t,o){await this.#T(t.id);let i=await this.#l({botId:t.id,config:t,appSecret:o,repair:this.#N(t.id)});this.#n.set(t.id,i);try{await i.start()}catch(e){throw this.#n.get(t.id)===i&&this.#n.delete(t.id),await i.stop({preserveError:!0}).catch(()=>{}),e}}#N(t){let o=i=>{let e=this.#p.get(i);return e?.operation===Nu&&e.botId===t?e:null};return Object.freeze({start:({actorOpenId:i,chatId:e}={})=>this.startCallbackRepair(t,{actorOpenId:i,chatId:e}),status:({attemptId:i}={})=>o(i)?this.registrationStatus(i):null,cancel:async({attemptId:i}={})=>o(i)?this.cancelRegistration(i):this.status(t)})}async#T(t){let o=this.#n.get(t);this.#n.delete(t),o&&await o.stop()}async#O(t){let o=this.#r.getBot(t);if(o){o.deletionPending||(o=await this.#r.saveBot({...o,deletionPending:!0})),await this.#T(t);try{await this.#t.unset(o.secretRef)}catch(i){throw this.#s.set(t,{code:"credential_removal_failed",message:"\u65E0\u6CD5\u5220\u9664\u673A\u5668\u4EBA\u51ED\u636E\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}),new Error("Unable to remove the Feishu credential.",{cause:i})}try{await this.#o({botId:t,config:o})}catch(i){throw this.#s.set(t,{code:"state_cleanup_failed",message:"\u65E0\u6CD5\u5220\u9664\u673A\u5668\u4EBA\u7684\u672C\u5730\u4F1A\u8BDD\u6570\u636E\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}),new Error("Unable to remove the Feishu bot session state.",{cause:i})}await this.#r.removeBot(t),this.#s.delete(t),this.#g.delete(t)}}async#w(t,o){o?.value?await this.#t.set(t,o.value):await this.#t.unset(t)}#R(t){let o=this.#r.getBot(t);if(!o)throw new Error("Unknown Feishu bot");return o}#_(){if(this.#B)throw new Error("The Feishu controller is closed")}#G(t){let o=this.#d.then(t,t);return this.#d=o.then(()=>{},()=>{}),o}#k(t,o){let e=(this.#h.get(t)??Promise.resolve()).then(o,o),a=e.then(()=>{},()=>{});return this.#h.set(t,a),a.finally(()=>{this.#h.get(t)===a&&this.#h.delete(t)}),e}#F(){if(!(this.#p.size<=32))for(let[t,o]of this.#p){if(t===this.#I)continue;let i=o.manager.status().state;if(!bP.has(i)&&i!=="saving"&&this.#p.delete(t),this.#p.size<=32)break}}#P(){this.#C+=1}};var fve=["open.feishu.cn","open.larksuite.com"];function Qve(n,t){if(t==="*")return!0;let o=t.startsWith(".")?t.slice(1):t;return o?n===o||n.endsWith(`.${o}`):!1}function yve(n){for(let t of["no_proxy","NO_PROXY"]){let o=n?.[t];if(typeof o!="string"||!o.trim())continue;let i=o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean);if(fve.some(e=>i.some(a=>Qve(e,a))))return!0}return!1}function mve(n){if(!yve(n))for(let t of["https_proxy","HTTPS_PROXY","http_proxy","HTTP_PROXY"]){let o=n?.[t];if(typeof o=="string"&&o.trim())return o.trim()}}function Sve(n,t=o=>new X6.default(o)){let o=mve(n);return o?t(o):void 0}function wve(n){let t=kc(n.dshHome??process.env.DSH_HOME??jd(uve(),".dsh")),o=kc(n.dataDir??jd(t,"integrations","dsh-feishu"));return{root:o,config:kc(n.configPath??jd(o,"config.json")),legacyState:kc(n.statePath??jd(o,"state.json")),bots:kc(n.botsDir??jd(o,"bots")),workspaces:kc(n.workspacesPath??jd(o,"workspaces.json"))}}async function MP(n,t={},o={}){if(!n?.credentials)throw new TypeError("dsh-feishu requires ctx.credentials");let i=aa(n,t),e=o.lark??iP,a=o.Controller??vu,A=o.ConfigStore??fS,r=o.StateStore??iS,s=o.HarnessClient??uS,g=o.FeishuRuntime??CS,c=o.verifyFeishuApp??o6,I=fe=>c({...fe,httpInstance:e.defaultHttpInstance}),d=o.createConnectionSupervisor??oP,B=typeof n.logger=="function"?n.logger("dsh-feishu"):n.logger??console,f=()=>La(n),Q=wve(t),y=await new A(Q.config).load(),m=kc(t.workspace??process.cwd()),_=o.WorkspaceStore??ra,T=o.workspaces??await new _(Q.workspaces,{defaultWorkspace:m}).load(),R=typeof y.list=="function",K=()=>R?y.list():[],L=K();R&&await T.reconcile(L.map(fe=>fe.id)),await Promise.all(L.map(fe=>T.ensure(fe.id,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("feishu",fe)})));let U=typeof y.removeBot=="function"?Ha(y,{workspaces:T,method:"removeBot",botIdFromRemoved:fe=>fe.id,saveMethod:"saveBot",botIdFromSave:fe=>fe?.id}):y,z=new Map,q=fe=>!fe.id||!fe.secretRef||fe.secretRef===QS?Q.legacyState:kc(Q.bots,fe.id,"state.json"),x=async fe=>{let ke=fe.id??"__legacy__",Ne=z.get(ke);return Ne||(Ne=await new r(q(fe)).load(),z.set(ke,Ne)),Ne},G=async fe=>{let ke=K().find(Ne=>Ne.id===fe);if(!ke)throw new Error("Unknown Feishu bot");return x(ke)},V=ja(n,o.commandExecutor),{controlExecutor:F,sessionMaintenanceExecutor:N,fileIngressExecutor:k}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),J=new s({...i,workspace:m,autostart:!1,dshBin:t.dshBin??"dsh",...V?{commandExecutor:V}:{},...F?{controlExecutor:F}:{},...N?{sessionMaintenanceExecutor:N}:{},...k?{fileIngressExecutor:k}:{}}),$=o.proxyEnv??process.env,ie=Sve($,o.createProxyAgent),pe=new a({registerApp:fe=>e.registerApp(fe),verifyApp:I,credentials:n.credentials,configStore:U,createRuntime:async({botId:fe,config:ke,appSecret:Ne,repair:We})=>{let ve=await x(ke),aA=fe??ke.id??ke.appId;await T.ensure(aA,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("feishu",ke)});let Qe=Ka(J,{botId:aA,workspaces:T,state:ve,agentPresetCatalog:f});return new g({lark:e,botId:aA,repair:We,appId:ke.appId,appSecret:Ne,domain:ke.domain,botOpenId:ke.botOpenId,groupResponseMode:ke.groupResponseMode,ownerOpenIds:ke.ownerOpenIds??[ke.ownerOpenId],harness:Qe.harness,state:Qe.state,contextEnhancement:{botId:aA,getSettings:()=>T.contextEnhancementFor(aA)},accessPolicy:qa(T,aA,{channel:"feishu",config:ke}),replyTimeoutMs:t.replyTimeoutMs??6e5,slashCommands:t.slashCommands!==!1,...ie?{wsAgent:ie}:{},logger:{error:(...Ie)=>B.error?.(`[${fe??ke.id}]`,...Ie),warn:(...Ie)=>B.warn?.(`[${fe??ke.id}]`,...Ie),info:(...Ie)=>B.info?.(`[${fe??ke.id}]`,...Ie),debug:(...Ie)=>B.debug?.(`[${fe??ke.id}]`,...Ie)}})},deleteState:async({botId:fe,config:ke})=>{z.delete(fe);try{await Bve(q(ke))}catch(Ne){if(Ne?.code!=="ENOENT")throw Ne}}}),se=xa(pe,{workspaces:T,stateFor:G,agentPresetCatalog:f}),Me=d({controller:se,harness:J,logger:B,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:se,deliveryAdapter:Ya({channel:"feishu",workspaces:T,coreController:pe,stateFor:G}),ready:Me.ready,async close(){await Me.close(),await se.close(),J.stopManagedProcess(),ie?.destroy?.()}}}import Yve from"qrcode";var qd=qe(PP(),1);var Hve=qe(PP(),1);var Kve=Object.freeze({$locale:"en",IM\u673A\u5668\u4EBA:"IM bots",IM\u673A\u5668\u4EBA\u8BBE\u7F6E:"IM bot settings",\u66F4\u591A\u673A\u5668\u4EBA\u8BBE\u7F6E:"More bot settings",\u673A\u5668\u4EBA\u8BBE\u7F6E:"Bot settings",\u673A\u5668\u4EBA\u8BBE\u7F6E\u9875\u7B7E:"Bot settings tabs",\u6295\u9012\u8BBE\u7F6E:"Delivery settings",\u8BBF\u95EE\u8BBE\u7F6E:"Access settings",\u67E5\u770B\u8BBF\u95EE\u6743\u9650\u8BF4\u660E:"View access permission details",\u5141\u8BB8\u6240\u6709\u7528\u6237:"Allow all users",\u4EC5\u767D\u540D\u5355\u7528\u6237:"Allowlisted users only",\u9ED8\u8BA4\u547D\u4EE4\u6743\u9650:"Default command permission",\u547D\u4EE4\u6743\u9650:"Command permission",\u53EF\u4EE5\u6267\u884C\u547D\u4EE4:"Can run commands",\u4E0D\u53EF\u4EE5\u6267\u884C\u547D\u4EE4:"Cannot run commands",\u767D\u540D\u5355\u7528\u6237:"Allowlisted users",\u67E5\u770B\u767D\u540D\u5355\u8BF4\u660E:"View allowlist details",\u547D\u4EE4\u6743\u9650\u4F8B\u5916:"Command permission exceptions","\u5F53\u524D\u6CA1\u6709\u767D\u540D\u5355\u7528\u6237\uFF0C\u4FDD\u5B58\u540E\u666E\u901A\u7528\u6237\u5C06\u65E0\u6CD5\u4F7F\u7528\u673A\u5668\u4EBA\u3002":"There are currently no allowlisted users. After saving, regular users will not be able to use the bot.",\u65B0\u589E\u7528\u6237:"Add user",\u5C1A\u672A\u6DFB\u52A0\u7528\u6237:"No users added",\u5F53\u524D\u6E20\u9053\u4E0D\u652F\u6301\u7FA4\u804A:"Group chat is not supported by this channel","\u539F\u6240\u6709\u8005\u6216\u626B\u7801\u63A5\u5165\u8005\u59CB\u7EC8\u53EF\u4EE5\u8BBF\u95EE\u5E76\u6267\u884C\u547D\u4EE4\uFF1B\u4EE5\u4E0B\u8BBE\u7F6E\u4EC5\u7EA6\u675F\u5176\u4ED6\u7528\u6237\u3002":"The original owner or QR-code operator can always access the bot and run commands; the settings below apply only to other users.","\u6B64\u533A\u57DF\u65E0\u9700\u914D\u7F6E\uFF0C\u4FDD\u5B58\u79C1\u804A\u8BBE\u7F6E\u65F6\u4F1A\u4FDD\u7559\u73B0\u6709\u7FA4\u804A\u7B56\u7565\u3002":"No setup is needed here. Saving direct-message settings keeps the existing group policy.","\u8BBF\u95EE\u8BBE\u7F6E\u5DF2\u4FDD\u5B58\u3002":"Access settings saved.","\u8BBF\u95EE\u8BBE\u7F6E\u6682\u4E0D\u53EF\u7528\u3002":"Access settings are currently unavailable.","\u8BBF\u95EE\u8BBE\u7F6E\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002":"Could not save access settings. Try again later.","\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u5DF2\u4FDD\u5B58\u7684\u8BBF\u95EE\u7B56\u7565\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002":"The service did not return the saved access policy. Refresh and try again.","\u8BBF\u95EE\u7B56\u7565\u5C1A\u672A\u5C31\u7EEA\uFF0C\u8BF7\u8FD4\u56DE\u673A\u5668\u4EBA\u5217\u8868\u5237\u65B0\u540E\u91CD\u8BD5\u3002":"The access policy is not ready. Return to the bot list, refresh, and try again.","\u5F53\u524D\u6E20\u9053\u6682\u4E0D\u652F\u6301\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Access settings are not supported by this channel yet.","\u7528\u6237\u6807\u8BC6\u65E0\u6548\u3002":"The user ID is invalid.","\u7528\u6237\u6807\u8BC6\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u3002":"The user ID must be a string.","\u7528\u6237\u6807\u8BC6\u4E0D\u80FD\u4E3A\u7A7A\u3001\u5305\u542B\u63A7\u5236\u5B57\u7B26\u6216\u8D85\u8FC7 256 \u4E2A\u5B57\u7B26\u3002":"The user ID cannot be empty, contain control characters, or exceed 256 characters.","\u7528\u6237\u6761\u76EE\u5FC5\u987B\u5305\u542B\u7528\u6237\u6807\u8BC6\u548C\u547D\u4EE4\u6743\u9650\u3002":"Each user entry must include a user ID and command permission.","\u547D\u4EE4\u6743\u9650\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002":"Command permission must be a boolean.","\u8BBF\u95EE\u6A21\u5F0F\u53EA\u80FD\u662F open \u6216 allowlist\u3002":"Access mode must be open or allowlist.","\u5F00\u653E\u6A21\u5F0F\u8BBE\u7F6E\u5FC5\u987B\u5B8C\u6574\u3002":"Open-mode settings must be complete.","\u5F00\u653E\u6A21\u5F0F\u9ED8\u8BA4\u547D\u4EE4\u6743\u9650\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002":"The open-mode default command permission must be a boolean.","\u5F00\u653E\u6A21\u5F0F\u547D\u4EE4\u6743\u9650\u8986\u76D6\u7528\u6237\u5FC5\u987B\u662F\u6570\u7EC4\u3002":"Open-mode command permission overrides must be an array.","\u5F00\u653E\u6A21\u5F0F\u547D\u4EE4\u6743\u9650\u8986\u76D6\u7528\u6237\u4E0D\u80FD\u5305\u542B\u91CD\u590D\u7684\u7528\u6237\u6807\u8BC6\u3002":"Open-mode command permission overrides cannot contain duplicate user IDs.","\u767D\u540D\u5355\u6A21\u5F0F\u8BBE\u7F6E\u5FC5\u987B\u5B8C\u6574\u3002":"Allowlist-mode settings must be complete.","\u767D\u540D\u5355\u6A21\u5F0F\u7528\u6237\u5FC5\u987B\u662F\u6570\u7EC4\u3002":"Allowlist-mode users must be an array.","\u767D\u540D\u5355\u6A21\u5F0F\u7528\u6237\u4E0D\u80FD\u5305\u542B\u91CD\u590D\u7684\u7528\u6237\u6807\u8BC6\u3002":"Allowlist-mode users cannot contain duplicate user IDs.","\u8BBF\u95EE\u573A\u666F\u8BBE\u7F6E\u5FC5\u987B\u540C\u65F6\u5305\u542B\u6A21\u5F0F\u3001\u5F00\u653E\u6A21\u5F0F\u8BBE\u7F6E\u548C\u767D\u540D\u5355\u6A21\u5F0F\u8BBE\u7F6E\u3002":"Each access context must include its mode, open-mode settings, and allowlist-mode settings.","\u8BF7\u540C\u65F6\u63D0\u4EA4\u5B8C\u6574\u7684\u79C1\u804A\u548C\u7FA4\u804A\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Submit complete direct-message and group access settings together.","\u586B\u5199\u5FAE\u4FE1\u7528\u6237 ID":"Enter a WeChat user ID","\u98DE\u4E66 Open ID":"Feishu Open ID","\u7FA4\u6210\u5458 Open ID":"Group member Open ID","\u9489\u9489\u7528\u6237 ID":"DingTalk user ID","\u586B\u5199 senderStaffId \u6216 senderId":"Enter senderStaffId or senderId","\u7FA4\u6210\u5458\u7528\u6237 ID":"Group member user ID","\u4F01\u4E1A\u5FAE\u4FE1\u7528\u6237 ID":"WeCom user ID","\u586B\u5199 userid":"Enter userid","\u586B\u5199 member_openid":"Enter member_openid","QQ User Open ID":"QQ User Open ID","\u7FA4\u6210\u5458 User ID":"Group member User ID","\u586B\u5199\u6570\u5B57 User ID":"Enter a numeric user ID","WhatsApp \u7535\u8BDD\u53F7\u7801\u6216 JID":"WhatsApp phone number or JID","\u7FA4\u6210\u5458\u7535\u8BDD\u53F7\u7801\u6216 JID":"Group member phone number or JID","8613800000000 \u6216\u5B8C\u6574 JID":"8613800000000 or a full JID","IM \u6E20\u9053":"IM channels","\u8BA9 DeepSeek Harness \u89E6\u624B\u53EF\u53CA":"Connecting DeepSeek Harness",\u5F53\u524D\u7248\u672C:"Current version","DSH-IM \u66F4\u65B0":"DSH-IM update",\u68C0\u67E5\u66F4\u65B0:"Check for updates",\u91CD\u65B0\u68C0\u67E5:"Check again",\u5237\u65B0\u72B6\u6001:"Refresh status",\u624B\u5DE5\u66F4\u65B0:"Manual update",\u624B\u5DE5\u66F4\u65B0\u547D\u4EE4:"Manual update command",\u590D\u5236\u547D\u4EE4:"Copy command","\u590D\u5236\u4E2D\u2026":"Copying\u2026",\u5DF2\u590D\u5236:"Copied","\u547D\u4EE4\u5DF2\u590D\u5236\u3002":"Command copied.","\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u9009\u4E2D\u547D\u4EE4\u540E\u6309 Ctrl+C \u6216 \u2318C \u590D\u5236\u3002":"Copy failed. Select the command and press Ctrl+C or \u2318C to copy it.","\u81EA\u52A8\u66F4\u65B0\u5931\u8D25\u53EF\u4EE5\u4F7F\u7528\u547D\u4EE4\u66F4\u65B0\uFF1A":"If the automatic update fails, update with this command:","\u5C1A\u672A\u786E\u8BA4\u76EE\u6807\u7248\u672C\uFF0C\u6B64\u547D\u4EE4\u5B89\u88C5\u6267\u884C\u65F6 npm \u7684 latest \u7248\u672C\u3002":"No target version has been confirmed. This command installs the npm latest version available when you run it.","\u8BF7\u5728\u5F53\u524D Desktop \u7684\u5185\u7F6E\u7EC8\u7AEF\u6267\u884C\uFF0C\u5B8C\u6210\u540E\u624B\u52A8\u91CD\u542F\u3002":"Run this in the current Desktop\u2019s built-in terminal, then restart manually.","\u8BF7\u5728\u8FD0\u884C\u5F53\u524D Harness \u7684\u540C\u4E00\u73AF\u5883\u6267\u884C\uFF0C\u4FDD\u6301 DSH_HOME \u4E00\u81F4\uFF0C\u5B8C\u6210\u540E\u624B\u52A8\u91CD\u542F\u3002":"Run this in the same environment as the current Harness, with the same DSH_HOME, then restart manually.","\u8BF7\u7B49\u5F85\u5F53\u524D\u64CD\u4F5C\u7ED3\u675F\uFF0C\u786E\u8BA4\u6CA1\u6709\u5B89\u88C5\u8FDB\u7A0B\u8FD0\u884C\u540E\u518D\u6267\u884C\u547D\u4EE4\u3002":"Wait for the current operation to finish and confirm no installer is running before using this command.","\u6E90\u7801\u6216\u94FE\u63A5\u5B89\u88C5\u8BF7\u6309\u539F\u5B89\u88C5\u65B9\u5F0F\u66F4\u65B0\uFF0C\u4E0D\u63D0\u4F9B\u8986\u76D6\u6E90\u7801\u7684 npm \u547D\u4EE4\u3002":"Update source or linked installations using their original method. No npm command is provided to overwrite the source.","\u65E0\u6CD5\u5B89\u5168\u751F\u6210\u5F53\u524D profile \u7684\u547D\u4EE4\uFF0C\u8BF7\u5728\u7EC8\u7AEF\u4E2D\u624B\u52A8\u786E\u8BA4 profile \u540E\u66F4\u65B0\u3002":"A safe command cannot be generated for this profile. Confirm the profile in your terminal before updating manually.",\u66F4\u65B0\u81F3:"Update to",\u5B89\u88C5\u66F4\u65B0:"Install update","\u6B63\u5728\u66F4\u65B0\u2026":"Updating\u2026",\u5F85\u624B\u52A8\u91CD\u542F:"Restart needed",\u8FD0\u884C\u7248\u672C:"Running version",\u5DF2\u5B89\u88C5\u7248\u672C:"Installed version","\u76EE\u6807 profile":"Target profile",\u76EE\u6807\u7248\u672C:"Target version",\u65E0\u6CD5\u786E\u8BA4:"Unknown",\u53D1\u73B0\u65B0\u7248\u672C:"Update available",\u5DF2\u662F\u6700\u65B0\u7248\u672C:"Up to date",\u5F53\u524D\u7248\u672C\u65E0\u9700\u66F4\u65B0:"No newer version available","\u5DF2\u83B7\u53D6 npm \u6700\u65B0\u7248\u672C":"Latest npm version retrieved","\u68C0\u67E5 npm \u6700\u65B0\u7248\u672C\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u5B89\u88C5\u3002":"Check the latest npm version. Nothing is installed automatically.","\u6B63\u5728\u4ECE npm \u68C0\u67E5\u6700\u65B0\u7248\u672C\u2026":"Checking npm for the latest version\u2026","\u6B63\u5728\u5B89\u88C5\uFF0C\u8BF7\u7A0D\u5019\u2026":"Installing, please wait\u2026","\u6B63\u5728\u6821\u9A8C\u5B89\u88C5\u7ED3\u679C\u2026":"Verifying the installation\u2026","\u5DF2\u5B89\u88C5\uFF0C\u5F85\u624B\u52A8\u91CD\u542F":"Installed \u2014 manual restart needed",\u66F4\u65B0\u5DF2\u751F\u6548:"Updated version is active",\u66F4\u65B0\u5931\u8D25:"Update failed",\u66F4\u65B0\u8BF7\u6C42\u5931\u8D25:"Update request failed","\u4EC5\u66F4\u65B0 DSH-IM\u3002\u5B89\u88C5\u5B8C\u6210\u540E\u9700\u624B\u52A8\u91CD\u542F\u540E\u53F0\uFF1B\u672C\u529F\u80FD\u4E0D\u4F1A\u81EA\u52A8\u91CD\u542F\u6216\u4E3B\u52A8\u5237\u65B0\u9875\u9762\u3002":"Only DSH-IM will be updated. Restart the backend manually after installation. This feature does not automatically restart it or initiate a page refresh.","\u5F53\u524D\u662F\u6E90\u7801\u6216\u94FE\u63A5\u5B89\u88C5\uFF0C\u53EA\u80FD\u68C0\u67E5\u7248\u672C\uFF1B\u8BF7\u624B\u52A8\u66F4\u65B0\u6E90\u7801\uFF0C\u6216\u8FC1\u79FB\u5230 npm \u5B89\u88C5\u3002":"This is a source or linked installation. You can check versions, but must update the source manually or migrate to an npm installation.","\u65E0\u6CD5\u786E\u8BA4\u5F53\u524D profile\uFF0C\u8BF7\u5728\u5BF9\u5E94\u7684 Harness \u73AF\u5883\u4E2D\u624B\u52A8\u66F4\u65B0\u3002":"The current profile could not be identified. Update manually in the corresponding Harness environment.","\u5F53\u524D\u8FD0\u884C\u73AF\u5883\u4E0D\u652F\u6301\u6309\u94AE\u5B89\u88C5\uFF0C\u8BF7\u624B\u52A8\u66F4\u65B0\u63D2\u4EF6\u3002":"This runtime cannot install through this button. Update the plugin manually.","\u5F53\u524D npm \u6E90\u914D\u7F6E\u4E0E\u5B98\u65B9\u6E90\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u5148\u68C0\u67E5 registry \u914D\u7F6E\u3002":"The npm registry configuration differs from the official registry. Check your registry settings first.","\u5F53\u524D Host \u7684 Node.js \u7248\u672C\u4E0D\u6EE1\u8DB3\u65B0\u7248\u8981\u6C42\uFF0C\u8BF7\u5148\u66F4\u65B0\u8FD0\u884C\u73AF\u5883\u3002":"The Host Node.js version does not meet the new version\u2019s requirements. Update the runtime first.","\u65B0\u7248\u672C\u5DF2\u5B89\u88C5\uFF0C\u8BF7\u5728\u65B9\u4FBF\u65F6\u624B\u52A8\u91CD\u542F\u5F53\u524D Harness \u6216 Desktop\u3002":"The new version is installed. Manually restart this Harness or Desktop when convenient.","\u4E0A\u6B21\u5B89\u88C5\u7ED3\u679C\u65E0\u6CD5\u786E\u8BA4\uFF0C\u8BF7\u5148\u68C0\u67E5\u6B64 profile \u7684\u63D2\u4EF6\u5B89\u88C5\u72B6\u6001\u3002":"The previous installation result is uncertain. Check this profile\u2019s plugin installation first.","\u65E0\u6CD5\u8BBF\u95EE npm \u6216\u8BF7\u6C42\u8D85\u65F6\uFF0C\u8BF7\u7A0D\u540E\u91CD\u65B0\u68C0\u67E5\u3002":"npm is unreachable or the request timed out. Check again later.","npm \u8FD4\u56DE\u7684\u7248\u672C\u4FE1\u606F\u65E0\u6548\uFF0C\u6682\u65F6\u65E0\u6CD5\u66F4\u65B0\u3002":"npm returned invalid release information. Updating is unavailable.","\u7248\u672C\u786E\u8BA4\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u540E\u518D\u5B89\u88C5\u3002":"The version confirmation expired. Check again before installing.","\u63D2\u4EF6\u5B89\u88C5\u72B6\u6001\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u3002":"The plugin installation changed. Check again.","\u6B64 profile \u6B63\u5728\u66F4\u65B0\uFF0C\u8BF7\u7A0D\u540E\u67E5\u770B\u72B6\u6001\u3002":"This profile is already updating. Check its status shortly.","\u5B89\u88C5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5F53\u524D\u5B89\u88C5\u72B6\u6001\u540E\u91CD\u8BD5\u3002":"Installation failed. Check the current installation before retrying.","\u5B89\u88C5\u7ED3\u679C\u6821\u9A8C\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u68C0\u67E5\u63D2\u4EF6\u7248\u672C\u3002":"Installation verification failed. Check the plugin version manually.","\u65E0\u6CD5\u5B89\u5168\u4FDD\u5B58\u66F4\u65B0\u72B6\u6001\uFF0C\u8BF7\u5148\u68C0\u67E5\u5F53\u524D\u5B89\u88C5\u7ED3\u679C\u3002":"Update state could not be saved safely. Check the current installation result before retrying.","\u4E0A\u6B21\u66F4\u65B0\u5DF2\u4E2D\u65AD\uFF0C\u8BF7\u68C0\u67E5\u5B89\u88C5\u72B6\u6001\u540E\u91CD\u8BD5\u3002":"The previous update was interrupted. Check the installation before retrying.","\u66F4\u65B0\u670D\u52A1\u5DF2\u5173\u95ED\uFF0C\u8BF7\u624B\u52A8\u91CD\u65B0\u6253\u5F00\u8BBE\u7F6E\u9875\u3002":"The update service has closed. Reopen settings manually.","\u66F4\u65B0\u8BF7\u6C42\u65E0\u6548\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u7248\u672C\u3002":"The update request is invalid. Check the version again.","\u5F53\u524D\u63D2\u4EF6\u5B89\u88C5\u4E0D\u5B8C\u6574\u6216\u4E0E profile \u4E0D\u7B26\uFF0C\u8BF7\u624B\u52A8\u68C0\u67E5\u5B89\u88C5\u914D\u7F6E\u3002":"The plugin installation is incomplete or does not match this profile. Check the installation configuration manually.","\u65E0\u6CD5\u786E\u8BA4\u5F53\u524D npm \u6E90\u914D\u7F6E\uFF0C\u6682\u65F6\u4E0D\u80FD\u5B89\u88C5\u66F4\u65B0\u3002":"The npm registry configuration could not be verified. Installation is unavailable.","\u5B89\u88C5\u8D85\u65F6\uFF0C\u8BF7\u5148\u786E\u8BA4\u5F53\u524D\u5B89\u88C5\u72B6\u6001\uFF0C\u518D\u51B3\u5B9A\u662F\u5426\u91CD\u8BD5\u3002":"Installation timed out. Check the current installation before retrying.","\u66F4\u65B0\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"The update request failed. Try again.","\u66F4\u65B0\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u54CD\u5E94\u3002":"The update service returned an unrecognized response.","\u5F53\u524D Host \u4E0D\u652F\u6301\u66F4\u65B0\u63A5\u53E3\uFF0C\u8BF7\u5148\u624B\u52A8\u66F4\u65B0\u63D2\u4EF6\u5E76\u91CD\u542F\u3002":"This Host does not support the update API. Update the plugin manually and restart first.","\u5173\u95ED\u7A97\u53E3\u4E0D\u4F1A\u53D6\u6D88\u5B89\u88C5\u3002\u8BF7\u52FF\u540C\u65F6\u5728\u5176\u4ED6\u7A97\u53E3\u7BA1\u7406\u6B64 profile \u7684\u63D2\u4EF6\u3002":"Closing this window does not cancel installation. Do not manage this profile\u2019s plugins in another window at the same time.","\u9875\u9762\u7248\u672C\u4E0E\u8FD0\u884C\u7248\u672C\u4E0D\u540C\uFF0C\u8BF7\u624B\u52A8\u5237\u65B0\u9875\u9762\uFF1B\u82E5\u4ECD\u4E0D\u4E00\u81F4\uFF0C\u8BF7\u624B\u52A8\u91CD\u542F Harness \u6216 Desktop\u3002":"The page and running versions differ. Refresh the page manually; if they still differ, manually restart Harness or Desktop.","\u8BF7\u5728\u673A\u5668\u4EBA\u7A7A\u95F2\u65F6\u5B89\u88C5\uFF1B\u5B89\u88C5\u4F1A\u4FEE\u6539\u5F53\u524D profile \u7684\u4F9D\u8D56\uFF0C\u5B8C\u6210\u540E\u9700\u624B\u52A8\u91CD\u542F\u3002":"Install while bots are idle. This changes the current profile\u2019s dependencies and requires a manual restart afterward.","AI Office":"AI Office","\uFF08\u5B9E\u9A8C\u529F\u80FD\uFF09":"(Experimental)","AI Office \u8BBE\u7F6E":"AI Office settings","AI Office \u8BBE\u7F6E\u9875\u7F3A\u5C11 RPC \u8FDE\u63A5":"AI Office settings are missing an RPC connection","\u6B63\u5728\u8BFB\u53D6 AI Office Connector\u2026":"Loading AI Office Connector\u2026","\u672C\u673A\u4E3B\u52A8\u8FDE\u63A5\u516C\u7F51 Office\uFF1BHarness \u4E0D\u5F00\u653E\u7AEF\u53E3\u3002\u534F\u8BAE Hook \u56FA\u5B9A\u4E3A ":"This machine connects outward to the public Office; Harness exposes no port. Protocol hooks: ",\u5C1A\u672A\u914D\u7F6E:"Not configured","\u5DF2\u8FDE\u63A5 Office":"Connected to Office",\u5DF2\u914D\u7F6E:"Configured",\u7B49\u5F85\u91CD\u8FDE:"Waiting to reconnect",\u51ED\u636E\u7F3A\u5931:"Credential missing",\u6700\u8FD1\u5FC3\u8DF3:"Last heartbeat",\u6700\u8FD1\u4E8B\u4EF6:"Last event",\u91CD\u8FDE\u6B21\u6570:"Reconnects","\u8FD0\u884C Job":"Running Jobs","\u5B8C\u6210 Job":"Completed Jobs",\u5C1A\u65E0:"None yet",\u8BBE\u5907\u8FDE\u63A5:"Device connection","Token \u53EA\u5199\u5165\u672C\u673A\u51ED\u636E\u5B58\u50A8":"Token is written only to the local credential store","\u7C98\u8D34 Office \u4E00\u6B21\u6027\u51ED\u636E":"Paste the one-time Office credential","\u5DF2\u5B89\u5168\u4FDD\u5B58\uFF1B\u7559\u7A7A\u4FDD\u6301\u4E0D\u53D8":"Stored securely; leave blank to keep it",\u6700\u5927\u5E76\u53D1:"Max concurrency","Heartbeat \u79D2\u6570":"Heartbeat seconds","Workspace \u6620\u5C04":"Workspace mappings","\u6BCF\u884C alias=/\u672C\u673A/\u7EDD\u5BF9\u8DEF\u5F84\uFF1BOffice \u53EA\u80FD\u770B\u5230 alias\u3002":"One alias=/local/absolute/path per line; Office sees only aliases.","Instruction Preset \u6620\u5C04":"Instruction preset mappings","\u6BCF\u884C alias=\u6307\u4EE4\uFF1B\u65B0\u589E preset \u4E0D\u9700\u8981\u6539 Office \u4EE3\u7801\u3002":"One alias=instruction per line; new presets require no Office code change.",\u4FDD\u5B58\u5E76\u8FDE\u63A5:"Save and connect",\u6D4B\u8BD5\u8FDE\u63A5:"Test connection","\u6D4B\u8BD5\u4E2D\u2026":"Testing\u2026",\u91CD\u65B0\u8FDE\u63A5:"Reconnect",\u79FB\u9664\u8FDE\u63A5:"Remove connection","\u8FDE\u63A5\u6D4B\u8BD5\u901A\u8FC7\u3002":"Connection test passed.","\u914D\u7F6E\u5DF2\u4FDD\u5B58\u3002":"Configuration saved.","\u534F\u8BAE Hook \u9884\u89C8":"Protocol hook preview","\u7531 Base URL \u81EA\u52A8\u6D3E\u751F\uFF0C\u4E0D\u5355\u72EC\u586B\u5199":"Derived from Base URL; no separate input","Base URL \u65E0\u6548":"Invalid Base URL","Office Hook \u5C1A\u672A\u90E8\u7F72\u65F6\uFF0C\u914D\u7F6E\u4F1A\u5B89\u5168\u4FDD\u5B58\u5E76\u81EA\u52A8\u91CD\u8BD5\uFF1B\u51FA\u73B0 HTTP 404 \u4EE3\u8868\u534F\u8BAE\u7AEF\u70B9\u5F85\u4E0A\u7EBF\uFF0C\u4E0D\u4EE3\u8868 Harness \u6545\u969C\u3002":"Configuration is saved and retried while Office hooks are unavailable; HTTP 404 means the protocol endpoint is pending, not a Harness failure.","Workspace \u6620\u5C04\u6BCF\u884C\u5FC5\u987B\u4F7F\u7528 alias=value":"Each workspace mapping must use alias=value","Instruction Preset \u6620\u5C04\u6BCF\u884C\u5FC5\u987B\u4F7F\u7528 alias=value":"Each instruction preset mapping must use alias=value","action-items=\u8F6C\u6362\u4E3A\u8D1F\u8D23\u4EBA\u3001\u622A\u6B62\u548C\u9A8C\u6536\u660E\u786E\u7684\u5DE5\u5355":"action-items=Turn this into accountable tasks with deadlines and acceptance criteria","AI Office \u62D2\u7EDD\u4E86 Device Token\u3002":"AI Office rejected the Device Token.","AI Office Connector Hook \u5C1A\u672A\u5C31\u7EEA\u3002":"AI Office Connector hooks are not available yet.","AI Office Connector \u534F\u8BAE\u7248\u672C\u4E0D\u517C\u5BB9\u3002":"The AI Office Connector protocol is incompatible.","\u672C\u673A\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE AI Office\u3002":"AI Office cannot currently be reached from this machine.","AI Office \u8FDE\u63A5\u5DF2\u4E2D\u65AD\u3002":"The AI Office connection was interrupted.","\u5E2E\u52A9\u4E0E\u53CD\u9988 \xB7 \u524D\u5F80 GitHub":"Help & feedback \xB7 Open GitHub","\u8BF7\u6539\u7528 localhost \u91CD\u65B0\u6253\u5F00":"Reopen with localhost","\u9875\u9762\u4F1A\u5728\u5F53\u524D\u7AEF\u53E3\u91CD\u65B0\u6253\u5F00\uFF0C\u673A\u5668\u4EBA\u914D\u7F6E\u4E0D\u4F1A\u6539\u53D8\u3002":"The page will reopen on the current port. Your bot configuration will not change.","\u4F7F\u7528 localhost \u91CD\u65B0\u6253\u5F00":"Reopen with localhost","\u5F53\u524D\u5730\u5740\u4E0E\u6D4F\u89C8\u5668\u7684\u672C\u673A\u8BF7\u6C42\u6821\u9A8C\u4E0D\u517C\u5BB9\u3002\u8BF7\u4F7F\u7528\u4E0A\u65B9\u6309\u94AE\u6539\u7528 localhost \u91CD\u65B0\u6253\u5F00\u3002":"This address is incompatible with the browser\u2019s local-request checks. Use the button above to reopen with localhost.",\u5FAE\u4FE1:"WeChat",\u98DE\u4E66:"Feishu",\u9489\u9489:"DingTalk",\u4F01\u4E1A\u5FAE\u4FE1:"WeCom",\u5FAE\u4FE1\u673A\u5668\u4EBA:"WeChat bot",\u98DE\u4E66\u673A\u5668\u4EBA:"Feishu bot",\u9489\u9489\u673A\u5668\u4EBA:"DingTalk bot",\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA:"WeCom bot",QQ\u673A\u5668\u4EBA:"QQ bot",WhatsApp\u673A\u5668\u4EBA:"WhatsApp bot",WhatsApp\u8D26\u53F7:"WhatsApp account",\u5FAE\u4FE1\u8BBE\u7F6E:"WeChat settings",\u98DE\u4E66\u673A\u5668\u4EBA\u8BBE\u7F6E:"Feishu bot settings",\u7FA4\u804A\u54CD\u5E94\u65B9\u5F0F:"Group response mode","\u4EC5\u5728 @\u673A\u5668\u4EBA\u65F6\u54CD\u5E94\uFF08\u63A8\u8350\uFF09":"Only respond when @mentioned (recommended)",\u54CD\u5E94\u6240\u6709\u7FA4\u6D88\u606F:"Respond to all group messages","\u54CD\u5E94\u6240\u6709\u7FA4\u6D88\u606F\uFF08\u9700\u98DE\u4E66\u654F\u611F\u6743\u9650\uFF09":"Respond to all group messages (requires a sensitive Feishu scope)",\u91CD\u65B0\u6388\u6743:"Reauthorize",\u53BB\u6388\u6743:"Authorize",\u91CD\u65B0\u6388\u6743\u7FA4\u6D88\u606F\u6743\u9650:"Reauthorize group-message permission",\u6388\u6743\u7FA4\u6D88\u606F\u6743\u9650:"Authorize group-message permission","\u6B63\u5728\u51C6\u5907\u6388\u6743\u2026":"Preparing authorization\u2026","\u6B63\u5728\u51C6\u5907\u2026":"Preparing\u2026","\u79C1\u804A\u59CB\u7EC8\u54CD\u5E94\uFF1B\u7FA4\u804A\u4EC5\u5904\u7406\u660E\u786E @\u5F53\u524D\u673A\u5668\u4EBA\u7684\u6D88\u606F\u3002\u7FA4\u6D88\u606F\u6743\u9650\u5DF2\u5F00\u901A\uFF0C\u518D\u6B21\u5207\u6362\u65E0\u9700\u6388\u6743\u3002":"Direct messages always work; group chats require an explicit @mention of this bot. The group-message permission is already granted, so switching again needs no authorization.","\u79C1\u804A\u59CB\u7EC8\u54CD\u5E94\uFF1B\u7FA4\u804A\u4EC5\u5904\u7406\u660E\u786E @\u5F53\u524D\u673A\u5668\u4EBA\u7684\u6D88\u606F\u3002\u9009\u62E9\u5168\u90E8\u6D88\u606F\u540E\u4F1A\u6253\u5F00\u98DE\u4E66\u5B98\u65B9\u6388\u6743\u6D41\u7A0B\u3002":"Direct messages always work; group chats require an explicit @mention of this bot. Selecting all messages opens the official Feishu authorization flow.","\u5DF2\u5F00\u901A\u201C\u83B7\u53D6\u7FA4\u7EC4\u4E2D\u6240\u6709\u6D88\u606F\u201D\u6743\u9650\uFF08im:message.group_msg\uFF09\uFF1B\u673A\u5668\u4EBA\u4F1A\u5904\u7406\u7FA4\u804A\u4E2D\u7684\u6240\u6709\u53EF\u89C1\u6D88\u606F\u3002":"The \u201CRead all messages in associated group chat\u201D scope (im:message.group_msg) is granted; the bot processes every visible group message.","\u5C1A\u672A\u786E\u8BA4\u201C\u83B7\u53D6\u7FA4\u7EC4\u4E2D\u6240\u6709\u6D88\u606F\u201D\u6743\u9650\uFF0C\u8BF7\u5B8C\u6210\u98DE\u4E66\u6388\u6743\u3002":"The \u201CRead all messages in associated group chat\u201D scope has not been confirmed. Complete Feishu authorization.","\u79C1\u804A\u59CB\u7EC8\u54CD\u5E94\uFF1B\u7FA4\u804A\u4EC5\u5904\u7406\u660E\u786E @\u5F53\u524D\u673A\u5668\u4EBA\u7684\u6D88\u606F\u3002":"Direct messages always work; group chats require an explicit @mention of this bot.","\u9700\u5728\u98DE\u4E66\u4E3A\u8BE5\u673A\u5668\u4EBA\u5F00\u901A\u201C\u83B7\u53D6\u7FA4\u7EC4\u4E2D\u6240\u6709\u6D88\u606F\u201D\u6743\u9650\uFF08im:message.group_msg\uFF09\uFF1B\u5F00\u901A\u540E\uFF0C\u673A\u5668\u4EBA\u4F1A\u5904\u7406\u7FA4\u804A\u4E2D\u7684\u6240\u6709\u53EF\u89C1\u6D88\u606F\u3002":"Grant this bot the \u201CRead all messages in associated group chat\u201D Feishu scope (im:message.group_msg); once granted, it will process every visible group message.","\u7FA4\u804A\u54CD\u5E94\u65B9\u5F0F\u4FEE\u6539\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not update the group response mode. Try again.","\u7FA4\u6D88\u606F\u6743\u9650\u6388\u6743\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not authorize group-message permission. Try again.",\u9489\u9489\u8BBE\u7F6E:"DingTalk settings",\u4F01\u4E1A\u5FAE\u4FE1\u8BBE\u7F6E:"WeCom settings",\u626B\u7801\u63A5\u5165\u673A\u5668\u4EBA:"Scan QR code",\u6B63\u5728\u63A5\u5165:"Connecting",\u624B\u52A8\u63A5\u5165:"Manual setup",\u6536\u8D77\u51ED\u636E:"Hide credentials",\u6536\u8D77\u63A5\u5165:"Hide setup",\u63A5\u5165\u673A\u5668\u4EBA:"Connect bot",\u5F00\u59CB\u63A5\u5165:"Start setup",\u5728\u7EBF:"online",\u8FD0\u884C\u6B63\u5E38:"Connected",\u6B63\u5728\u8FDE\u63A5:"Connecting","\u6B63\u5728\u8FDE\u63A5\u2026":"Connecting\u2026",\u8FDE\u63A5\u672A\u5C31\u7EEA:"Not connected",\u8FDE\u63A5\u4E2D:"Connecting",\u8FDE\u63A5\u4E2D\u65AD:"Disconnected",\u9700\u8981\u5904\u7406:"Needs attention",\u72B6\u6001\u672A\u77E5:"Unknown status",\u79BB\u7EBF:"Offline",\u5DF2\u65AD\u5F00:"Disconnected",\u6D88\u606F\u901A\u9053:"Message channel",\u67E5\u770B\u6D88\u606F\u901A\u9053\u8BF4\u660E:"View message channel details",\u6700\u8FD1\u68C0\u67E5:"Last checked",\u6700\u8FD1\u4E00\u6761\u6D88\u606F\u5904\u7406\u5931\u8D25:"Latest message failed",\u9519\u8BEF\u7801:"Code",\u53C2\u8003\u53F7:"Reference",\u5F53\u524D\u5DE5\u4F5C\u533A:"Current workspace",\u9009\u62E9\u76EE\u5F55:"Choose folder",\u9009\u62E9\u673A\u5668\u4EBA\u5DE5\u4F5C\u533A\u76EE\u5F55:"Select bot workspace folder",\u5F53\u524D\u76EE\u5F55:"Current folder",\u4E3B\u76EE\u5F55:"Home",\u76F4\u63A5\u8F93\u5165\u8DEF\u5F84:"Enter a path directly","\u652F\u6301 Windows \u76D8\u7B26\u3001UNC \u4E0E POSIX \u7EDD\u5BF9\u8DEF\u5F84\u3002":"Supports Windows drives, UNC paths, and POSIX absolute paths.","\u8F93\u5165 Host \u4E0A\u7684\u5B8C\u6574\u7EDD\u5BF9\u8DEF\u5F84":"Enter a full absolute path on the Host",\u524D\u5F80:"Go","\u8BFB\u53D6\u4E2D\u2026":"Loading\u2026","\u6B63\u5728\u51C6\u5907\u76EE\u5F55\u9009\u62E9\u5668\u2026":"Preparing folder picker\u2026","\u6B63\u5728\u8BFB\u53D6\u76EE\u5F55\u2026":"Loading folders\u2026","\u8FD9\u4E2A\u76EE\u5F55\u4E2D\u6CA1\u6709\u5B50\u6587\u4EF6\u5939\u3002":"This folder has no subfolders.","\u6B64\u76EE\u5F55\u7684\u5B50\u6587\u4EF6\u5939\u8FC7\u591A\uFF0C\u4EC5\u663E\u793A\u524D\u4E00\u90E8\u5206\u3002":"This folder has too many subfolders; only the first group is shown.","\u65E0\u6CD5\u8BFB\u53D6\u76EE\u5F55\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not load the folder. Try again.",\u91CD\u8BD5:"Retry",\u663E\u793A\u9690\u85CF\u6587\u4EF6\u5939:"Show hidden folders","\u5207\u6362\u540E\u4F1A\u6E05\u9664\u8FD9\u4E2A\u673A\u5668\u4EBA\u7684\u65E7\u4F1A\u8BDD\u6620\u5C04\u3002":"Switching clears this bot\u2019s previous session mappings.","\u5207\u6362\u4E2D\u2026":"Switching\u2026",\u9009\u62E9\u6B64\u76EE\u5F55:"Select this folder",\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84:"Absolute workspace path","/\u7EDD\u5BF9\u8DEF\u5F84/\u5230/\u5DE5\u4F5C\u533A":"/absolute/path/to/workspace",\u4FEE\u6539:"Change",\u4FDD\u5B58:"Save",\u4E0A\u4E0B\u6587\u589E\u5F3A:"Context enhancement",\u672A\u5F00\u542F:"Not enabled",\u4EC5\u7FA4\u804A:"Groups only",\u4EC5\u79C1\u804A:"Direct only",\u7FA4\u804A\u548C\u79C1\u804A:"Groups and direct",\u5173\u95ED\u5F39\u7A97:"Close dialog",\u67E5\u770B\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BF4\u660E:"View context enhancement details",\u4E0A\u4E0B\u6587\u589E\u5F3A\u8303\u56F4:"Context enhancement scope",\u542F\u7528\u8303\u56F4:"Enable in",\u542F\u7528:"Enabled","\uFF08\u5F53\u524D\u6E20\u9053\u4E0D\u652F\u6301\u7FA4\u804A\uFF09":"(This channel does not support group chats)",\u6765\u6E90\u5B57\u6BB5:"Source fields",\u67E5\u770B\u6765\u6E90\u5B57\u6BB5\u8BF4\u660E:"View source field details",\u67E5\u770B\u7FA4\u804A\u6765\u6E90\u5B57\u6BB5\u8BF4\u660E:"View group source field details",\u67E5\u770B\u79C1\u804A\u6765\u6E90\u5B57\u6BB5\u8BF4\u660E:"View direct source field details",\u6E20\u9053:"Channel",\u4F1A\u8BDD\u7C7B\u578B:"Conversation type",\u53D1\u9001\u8005\u6807\u8BC6:"Sender ID",\u53D1\u9001\u8005\u6635\u79F0:"Sender name",\u67E5\u770B\u53D1\u9001\u8005\u6635\u79F0\u5B57\u6BB5\u8BF4\u660E:"View sender name field details",\u67E5\u770B\u7FA4\u804A\u53D1\u9001\u8005\u6635\u79F0\u5B57\u6BB5\u8BF4\u660E:"View group sender name field details",\u67E5\u770B\u79C1\u804A\u53D1\u9001\u8005\u6635\u79F0\u5B57\u6BB5\u8BF4\u660E:"View direct sender name field details","\u8BE5\u5B57\u6BB5\u4E0D\u662F\u6BCF\u4E2A\u6E20\u9053\u90FD\u80FD\u63D0\u4F9B\u3002\u5F53\u524D\u6D88\u606F\u6CA1\u6709\u53D1\u9001\u8005\u6635\u79F0\u65F6\uFF0C\u5373\u4F7F\u5DF2\u9009\u62E9\u8BE5\u5B57\u6BB5\uFF0C \u4E2D\u4E5F\u4F1A\u7701\u7565 senderName\u3002":"This field is not available on every channel. If the current message has no sender name, omits senderName even when the field is selected.",\u4F1A\u8BDD\u6807\u9898:"Conversation title",\u67E5\u770B\u7FA4\u804A\u4F1A\u8BDD\u6807\u9898\u5B57\u6BB5\u8BF4\u660E:"View group conversation title field details",\u67E5\u770B\u79C1\u804A\u4F1A\u8BDD\u6807\u9898\u5B57\u6BB5\u8BF4\u660E:"View direct conversation title field details","\u8BE5\u5B57\u6BB5\u4E0D\u662F\u6BCF\u4E2A\u6E20\u9053\u90FD\u80FD\u63D0\u4F9B\u3002\u9489\u9489\u7FA4\u804A\u4F1A\u5E26\u4E0A\u7FA4\u540D\u3002\u5F53\u524D\u6D88\u606F\u6CA1\u6709\u4F1A\u8BDD\u6807\u9898\u65F6\uFF0C\u5373\u4F7F\u5DF2\u9009\u62E9\u8BE5\u5B57\u6BB5\uFF0C \u4E2D\u4E5F\u4F1A\u7701\u7565 conversationTitle\u3002":"This field is not available on every channel. DingTalk group chats include the group name. If the current message has no conversation title, omits conversationTitle even when the field is selected.",\u673A\u5668\u4EBA\u6807\u8BC6:"Bot ID",\u589E\u5F3A\u63D0\u793A\u8BCD:"Guidance",\u67E5\u770B\u589E\u5F3A\u63D0\u793A\u8BCD\u4F7F\u7528\u8BF4\u660E:"View guidance instructions",\u67E5\u770B\u7FA4\u804A\u589E\u5F3A\u63D0\u793A\u8BCD\u4F7F\u7528\u8BF4\u660E:"View group guidance instructions",\u67E5\u770B\u79C1\u804A\u589E\u5F3A\u63D0\u793A\u8BCD\u4F7F\u7528\u8BF4\u660E:"View direct guidance instructions",\u4F7F\u7528\u8BF4\u660E:"How to use","\u7528\u4E8E\u544A\u8BC9\u6A21\u578B\u5982\u4F55\u4F7F\u7528 \u4E2D\u5DF2\u9009\u62E9\u7684\u6765\u6E90\u5B57\u6BB5\u3002\u53EA\u586B\u5199\u6B63\u6587\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u6DFB\u52A0 \u6210\u5BF9\u6807\u7B7E\u3002":"Tell the model how to use the selected fields in . Enter only the body; the plugin adds paired tags.",\u751F\u6548\u89C4\u5219:"Behavior",\u9690\u79C1\u63D0\u793A:"Privacy",\u4F7F\u7528\u793A\u4F8B:"Example","\u4EC5\u4F9D\u636E\u5F53\u524D\u6D88\u606F\u7684 \u4E2D\u5B9E\u9645\u63D0\u4F9B\u7684\u5B57\u6BB5\u7406\u89E3\u6765\u6E90\uFF1B\u6CA1\u6709\u63D0\u4F9B\u7684\u5B57\u6BB5\u4E0D\u8981\u731C\u6D4B\u6216\u8865\u5168\u3002\nconversationType\u662F\u7FA4\u804A\u65F6\u56DE\u590D\u4E25\u8083\u4E00\u70B9\uFF0CconversationType\u662F\u79C1\u804A\u65F6\u56DE\u590D\u4E00\u5B9A\u8981\u5E7D\u9ED8\u641E\u7B11\uFF0C\u50CF\u5468\u661F\u9A70\u7684\u7535\u5F71\u4E00\u6837\u641E\u7B11":`Understand the source only from fields actually present in for the current message; do not guess or fill in missing fields. When conversationType is group, reply more seriously. When conversationType is direct, make the reply humorous and funny.`,"\u4EC5\u4F9D\u636E\u5F53\u524D\u6D88\u606F\u7684 \u4E2D\u5B9E\u9645\u63D0\u4F9B\u7684\u5B57\u6BB5\u7406\u89E3\u6765\u6E90\uFF1B\u6CA1\u6709\u63D0\u4F9B\u7684\u5B57\u6BB5\u4E0D\u8981\u731C\u6D4B\u6216\u8865\u5168\u3002\n\u5F53\u524D\u6D88\u606F\u6765\u81EA\u7FA4\u804A\uFF0C\u8BF7\u4F7F\u7528\u4E25\u8083\u3001\u514B\u5236\u3001\u7B80\u6D01\u7684\u8868\u8FBE\u65B9\u5F0F\u3002":`Understand the source only from fields actually present in for the current message; do not guess or fill in missing fields. This message is from a group chat. Use a serious, restrained, and concise style.`,"\u4EC5\u4F9D\u636E\u5F53\u524D\u6D88\u606F\u7684 \u4E2D\u5B9E\u9645\u63D0\u4F9B\u7684\u5B57\u6BB5\u7406\u89E3\u6765\u6E90\uFF1B\u6CA1\u6709\u63D0\u4F9B\u7684\u5B57\u6BB5\u4E0D\u8981\u731C\u6D4B\u6216\u8865\u5168\u3002\n\u5F53\u524D\u6D88\u606F\u6765\u81EA\u79C1\u804A\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u8F7B\u677E\u3001\u5E7D\u9ED8\u3001\u8BE6\u7EC6\u7684\u8868\u8FBE\u65B9\u5F0F\u3002":`Understand the source only from fields actually present in for the current message; do not guess or fill in missing fields. This message is from a direct chat. You may use a lighter, more humorous, and detailed style.`,\u586B\u5165\u793A\u4F8B:"Use example",\u6E05\u7A7A:"Clear","\u9009\u62E9\u5728\u54EA\u4E9B\u4F1A\u8BDD\u4E2D\u542F\u7528\u3001\u63D0\u4F9B\u54EA\u4E9B\u6765\u6E90\u5B57\u6BB5\uFF0C\u4EE5\u53CA\u5982\u4F55\u4F7F\u7528\u8FD9\u4E9B\u4FE1\u606F\u3002\u4EC5\u4F7F\u7528\u5DF2\u6709\u6D88\u606F\u5143\u6570\u636E\uFF0C\u4E0D\u67E5\u8BE2\u5E73\u53F0 API\u3002":"Choose which conversations to enhance, which source fields to include, and how to use them. Only existing message metadata is used; no platform APIs are queried.","\u589E\u5F3A\u63D0\u793A\u8BCD\u4E2D\u8BF7\u4F7F\u7528\u5B57\u6BB5\u540D\uFF08\u5982 senderId\u3001conversationType\uFF09\u5F15\u7528\u8FD9\u4E9B\u4FE1\u606F\u3002\u53EA\u53D1\u9001\u52FE\u9009\u4E14\u5F53\u524D\u6D88\u606F\u4E2D\u53EF\u7528\u7684\u5B57\u6BB5\uFF0C\u4E0D\u4F1A\u989D\u5916\u67E5\u8BE2\u6216\u8865\u5168\u3002":"Reference these values by field name (such as senderId or conversationType) in the guidance. Only selected fields available in the current message are sent; no extra lookups are made.","\u589E\u5F3A\u63D0\u793A\u8BCD\u4E2D\u8BF7\u4F7F\u7528\u5B57\u6BB5\u540D\uFF08\u5982 senderId\u3001conversationType\uFF09\u5F15\u7528\u8FD9\u4E9B\u4FE1\u606F\u3002\u53EA\u53D1\u9001\u5F53\u524D\u4F1A\u8BDD\u4E2D\u52FE\u9009\u4E14\u53EF\u7528\u7684\u5B57\u6BB5\uFF0C\u4E0D\u4F1A\u989D\u5916\u67E5\u8BE2\u6216\u8865\u5168\u3002":"Reference these values by field name (such as senderId or conversationType) in the guidance. Only fields selected and available in the current conversation are sent; no extra lookups are made.","\u7528\u4E8E\u544A\u8BC9\u6A21\u578B\u5982\u4F55\u4F7F\u7528\u5F53\u524D\u7FA4\u804A\u6D88\u606F\u7684 \u6765\u6E90\u5B57\u6BB5\u3002\u53EA\u586B\u5199\u6B63\u6587\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u6DFB\u52A0 \u6210\u5BF9\u6807\u7B7E\u3002":"Tell the model how to use fields for the current group message. Enter only the body; the plugin adds paired tags.","\u7528\u4E8E\u544A\u8BC9\u6A21\u578B\u5982\u4F55\u4F7F\u7528\u5F53\u524D\u79C1\u804A\u6D88\u606F\u7684 \u6765\u6E90\u5B57\u6BB5\u3002\u53EA\u586B\u5199\u6B63\u6587\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u6DFB\u52A0 \u6210\u5BF9\u6807\u7B7E\u3002":"Tell the model how to use fields for the current direct message. Enter only the body; the plugin adds paired tags.","\u4EC5\u5728\u7FA4\u804A\u5F00\u5173\u5F00\u542F\u65F6\u4F7F\u7528\u3002\u6E05\u7A7A\u5E76\u4FDD\u5B58\u540E\u4E0D\u518D\u9644\u52A0\u7FA4\u804A\u589E\u5F3A\u63D0\u793A\u8BCD\uFF1B\u6240\u9009\u6765\u6E90\u5B57\u6BB5\u4ECD\u6309\u5F53\u524D\u573A\u666F\u8BBE\u7F6E\u53D1\u9001\u3002":"Used only when group enhancement is enabled. Clear and save to omit group guidance; selected source fields still follow the group settings.","\u4EC5\u5728\u79C1\u804A\u5F00\u5173\u5F00\u542F\u65F6\u4F7F\u7528\u3002\u6E05\u7A7A\u5E76\u4FDD\u5B58\u540E\u4E0D\u518D\u9644\u52A0\u79C1\u804A\u589E\u5F3A\u63D0\u793A\u8BCD\uFF1B\u6240\u9009\u6765\u6E90\u5B57\u6BB5\u4ECD\u6309\u5F53\u524D\u573A\u666F\u8BBE\u7F6E\u53D1\u9001\u3002":"Used only when direct enhancement is enabled. Clear and save to omit direct guidance; selected source fields still follow the direct settings.","\u53EA\u9700\u586B\u5199\u6B63\u6587\uFF0C\u63D2\u4EF6\u81EA\u52A8\u6DFB\u52A0 \u6210\u5BF9\u6807\u7B7E\u3002\u6E05\u7A7A\u5E76\u4FDD\u5B58\u540E\uFF0C\u4E0D\u518D\u9644\u52A0\u589E\u5F3A\u63D0\u793A\u8BCD\uFF0C\u5DF2\u9009\u6765\u6E90\u5B57\u6BB5\u4ECD\u6309\u5F00\u5173\u8BBE\u7F6E\u53D1\u9001\u3002":"Enter only the body; the plugin adds paired tags. Clear and save to omit guidance. Selected source fields still follow the conversation switches.","\u53D1\u9001\u8005\u6807\u8BC6\u53EF\u80FD\u5305\u542B\u5E73\u53F0\u7528\u6237 ID \u6216\u7535\u8BDD\u53F7\u7801\u5F62\u5F0F\u7684\u6807\u8BC6\u3002\u5173\u95ED\u5F00\u5173\u4E0D\u4F1A\u5220\u9664\u5DF2\u7ECF\u5199\u5165\u4F1A\u8BDD\u5386\u53F2\u7684\u4FE1\u606F\u3002":"Sender IDs may contain platform user IDs or phone-number-like identifiers. Turning this off does not remove information already saved in conversation history.","\u4E0A\u4E0B\u6587\u589E\u5F3A\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not save context enhancement. Try again.","\u8BF7\u63D0\u4EA4\u5B8C\u6574\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":"Submit the complete context enhancement settings.","\u7FA4\u804A\u548C\u79C1\u804A\u5F00\u5173\u5FC5\u987B\u662F\u5E03\u5C14\u503C\u3002":"Group and direct switches must be booleans.","\u6765\u6E90\u5B57\u6BB5\u53EA\u80FD\u9009\u62E9\u5DF2\u5B9A\u4E49\u7684\u516D\u4E2A\u5B57\u6BB5\u3002":"Source fields must be chosen from the six defined fields.","\u4FDD\u5B58\u4E2D\u2026":"Saving\u2026",\u672A\u8BBE\u7F6E:"Not set","\u5DE5\u4F5C\u533A\u4FEE\u6539\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not update the workspace. Try again.","\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":"Enter an absolute workspace path.","\u5DE5\u4F5C\u533A\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84\u3002":"The workspace must be an absolute path.","\u5DE5\u4F5C\u533A\u8DEF\u5F84\u4E0D\u5B58\u5728\u3002":"The workspace path does not exist.","\u5DE5\u4F5C\u533A\u8DEF\u5F84\u5FC5\u987B\u6307\u5411\u4E00\u4E2A\u76EE\u5F55\u3002":"The workspace path must point to a directory.","\u627E\u4E0D\u5230\u8981\u4FEE\u6539\u7684\u673A\u5668\u4EBA\u3002":"The bot could not be found.","Agent Preset":"Agent Preset","\u67E5\u770B Agent Preset \u8BF4\u660E":"View Agent Preset help","\u8DDF\u968F Host \u9ED8\u8BA4":"Follow the Host default","\uFF08\u5DF2\u4E0D\u53EF\u7528\uFF09":" (unavailable)","\u53EA\u5F71\u54CD\u65B0\u5EFA\u4F1A\u8BDD\uFF1B\u82E5\u5F53\u524D\u804A\u5929\u5DF2\u6709\u4F1A\u8BDD\uFF0C\u5148\u53D1\u9001 /new\uFF0C\u518D\u53D1\u9001\u666E\u901A\u6D88\u606F\u751F\u6548\u3002":"This affects only new sessions. If the current chat already has a session, send /new, then send a regular message to apply it.","\u5F53\u524D Agent Preset \u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u9009\u62E9\u5176\u4ED6 Preset \u6216\u8DDF\u968F Host \u9ED8\u8BA4\u3002":"The current Agent Preset is unavailable. Choose another preset or follow the Host default.","Agent Preset \u4FEE\u6539\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002":"Could not update the Agent Preset. Try again.","\u8BF7\u9009\u62E9 Agent Preset\u3002":"Choose an Agent Preset.","Agent Preset \u65E0\u6548\u3002":"The Agent Preset is invalid.","Agent Preset \u4E0D\u5B58\u5728\u6216\u4E0D\u53EF\u7528\u3002":"The Agent Preset does not exist or is unavailable.",\u5C1A\u672A\u68C0\u67E5:"Not checked yet",\u521A\u521A:"Just now",\u68C0\u67E5\u8FDE\u63A5:"Check connection","\u68C0\u67E5\u4E2D\u2026":"Checking\u2026","\u8FDE\u63A5\u68C0\u67E5\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002":"Connection check failed. Try again later.","\u6D4B\u8BD5\u6D88\u606F\u5DF2\u53D1\u9001\uFF0C\u8BF7\u5230\u5BF9\u5E94\u673A\u5668\u4EBA\u4F1A\u8BDD\u4E2D\u786E\u8BA4\u3002":"Test message sent. Check the matching bot conversation.","\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\u3002\u673A\u5668\u4EBA\u5C1A\u672A\u6536\u5230\u53EF\u7528\u4E8E\u6D4B\u8BD5\u7684\u79C1\u804A\u6D88\u606F\u3002":"Connection check completed. The bot has not received a direct message it can use for testing.","\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u4F46\u6D4B\u8BD5\u6D88\u606F\u53D1\u9001\u5931\u8D25\u3002":"Connection check completed, but the test message could not be sent.","\u6D4B\u8BD5\u6D88\u606F\u5DF2\u53D1\u9001\uFF0C\u8BF7\u5230\u98DE\u4E66\u4F1A\u8BDD\u4E2D\u786E\u8BA4\u3002":"Test message sent. Check the Feishu conversation.","\u6D4B\u8BD5\u6D88\u606F\u5DF2\u53D1\u9001\uFF0C\u8BF7\u5230 WhatsApp \u81EA\u804A\u4F1A\u8BDD\u4E2D\u786E\u8BA4\u3002":"Test message sent. Check the WhatsApp self-chat.","\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u4F46\u5F53\u524D\u6CA1\u6709\u53EF\u7528\u7684 WhatsApp \u81EA\u804A\u76EE\u6807\u3002":"Connection check completed, but no WhatsApp self-chat target is available.","\u9489\u9489\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u6D4B\u8BD5\u6D88\u606F\u5DF2\u53D1\u9001\u3002":"DingTalk connection check completed and the test message was sent.","\u9489\u9489\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u4F46\u6D4B\u8BD5\u6D88\u606F\u53D1\u9001\u5931\u8D25\u3002":"DingTalk connection check completed, but the test message could not be sent.","\u5FAE\u4FE1\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u6D4B\u8BD5\u6D88\u606F\u5DF2\u53D1\u9001\u3002":"WeChat connection check completed and the test message was sent.","\u5FAE\u4FE1\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u4F46\u6D4B\u8BD5\u6D88\u606F\u53D1\u9001\u5931\u8D25\u3002":"WeChat connection check completed, but the test message could not be sent.","\u4F01\u4E1A\u5FAE\u4FE1\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u6D4B\u8BD5\u6D88\u606F\u5DF2\u53D1\u9001\u3002":"WeCom connection check completed and the test message was sent.","\u4F01\u4E1A\u5FAE\u4FE1\u8FDE\u63A5\u68C0\u67E5\u5B8C\u6210\uFF0C\u4F46\u6D4B\u8BD5\u6D88\u606F\u53D1\u9001\u5931\u8D25\u3002":"WeCom connection check completed, but the test message could not be sent.",\u91CD\u8BD5\u8FDE\u63A5:"Reconnect","\u91CD\u8BD5\u4E2D\u2026":"Retrying\u2026",\u79FB\u9664\u63A5\u5165:"Remove connection",\u786E\u8BA4\u79FB\u9664\u63A5\u5165:"Remove connection",\u786E\u8BA4\u79FB\u9664:"Remove","\u6B63\u5728\u79FB\u9664\u2026":"Removing\u2026",\u4FDD\u7559\u673A\u5668\u4EBA:"Keep bot",\u4FDD\u7559\u8D26\u53F7:"Keep account",\u53D6\u6D88:"Cancel",\u5173\u95ED:"Close",\u7ACB\u5373\u91CD\u8BD5:"Retry now",\u91CD\u65B0\u8BFB\u53D6:"Reload",\u91CD\u65B0\u751F\u6210\u4E8C\u7EF4\u7801:"Generate a new QR code",\u91CD\u65B0\u751F\u6210\u4E8C\u7EF4\u7801\u540E\u7EE7\u7EED:"Generate a new QR code",\u5237\u65B0\u4E8C\u7EF4\u7801:"Refresh QR code","\u5237\u65B0\u4E2D\u2026":"Refreshing\u2026",\u6362\u4E00\u4E2A\u4E8C\u7EF4\u7801:"Get another QR code",\u7EE7\u7EED\u8FDE\u63A5:"Continue connecting",\u7ED1\u5B9A\u5E76\u8FDE\u63A5:"Connect","\u6B63\u5728\u7ED1\u5B9A\u2026":"Connecting\u2026",\u9A8C\u8BC1\u5E76\u8FDE\u63A5:"Verify and connect","\u6B63\u5728\u9A8C\u8BC1\u5E76\u8FDE\u63A5\u2026":"Verifying and connecting\u2026","\u6B63\u5728\u9A8C\u8BC1\u2026":"Verifying\u2026","\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5":"The operation failed. Try again later.",\u8BF7\u7A0D\u540E\u91CD\u8BD5:"Try again later.",\u5F53\u524D\u4E8C\u7EF4\u7801\u6709\u6548\u65F6\u95F4:"QR code expires in",\u4E8C\u7EF4\u7801\u6709\u6548\u65F6\u95F4:"QR code expires in",\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F:"QR code expired",\u4E8C\u7EF4\u7801\u5DF2\u5931\u6548:"QR code expired","\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F\n\u8BF7\u91CD\u65B0\u751F\u6210":`QR code expired @@ -397,7 +397,7 @@ ${U.join(` `)}`:x,V=null,F=null;try{let J=!1;if(Q)try{await Q.update(G),J=!0,V=Zt({deliveryId:A,presentation:"qq-text",providerMessageIds:Ua(Q)});try{await Q.complete()}catch($){this.#a.warn?.("[dsh-im:qq] QQ stream completion failed after visible final content:",$)}}catch($){Q.cancel?.(),this.#a.warn?.("[dsh-im:qq] QQ stream update failed; using markdown fallback:",$)}if(!J){let $=await R5(this.#e,c,G,{logger:this.#a});V=Zt({deliveryId:A,presentation:"qq-text",providerMessageIds:$.flatMap(ie=>Ua(ie))})}}catch(J){F=va(J),this.#a.warn?.("[dsh-im:qq] final text delivery failed; continuing with result files:",J)}let N=await this.#D(c,A,q,V),k=N.receipt?.artifacts?.some(({outcome:J})=>J==="sent"||J==="unknown");if(F&&!k&&!N.failureNoticeVisible)throw F;return F&&N.artifactSendErrors===0&&At(this.#i,F),this.#i.messagesReplied+=1,this.#i.lastReplyAt=new Date().toISOString(),this.#i.lastError=null,!F&&N.artifactSendErrors===0&&wo(this.#i),N.receipt}catch(m){let _=null;if(!y&&a&&(m?.code==="turn-stopped"?this.#f.complete(o,a.token):_=this.#f.fail(o,a.token).message??null,y=!0),m?.code==="turn-stopped"){try{Q?.cancel?.()}catch(K){this.#a.warn?.("[dsh-im:qq] unable to cancel a stopped QQ stream:",K)}try{await this.#e.sendText(c,w("\u5DF2\u505C\u6B62\u3002"))}catch(K){this.#a.warn?.("[dsh-im:qq] unable to announce a stopped QQ turn:",K)}await g();return}try{Q?.cancel?.()}catch(K){this.#a.warn?.("[dsh-im:qq] unable to cancel a failed QQ stream:",K)}if(this.#s?.aborted)return;this.#i.lastError=m?.message??String(m);let T=ko(m)??bo(m),R=At(this.#i,m,{userMessage:T,reason:eo(m)?.reason});this.#a.error?.(`[dsh-im:qq] failed to process an inbound message [${R.referenceId}]:`,m);try{let K=dt(R);await this.#e.sendText(c,_?`${K} ${_}`:K),await g()}catch(K){this.#a.error?.("[dsh-im:qq] failed to send the safe error reply:",K)}}}async#N(t,o,i,e){this.#s?.throwIfAborted();let a=this.#I.get(i),A=e.claimedReplyMessageId===o;if(!a||a!==e||a.submitting)return A&&(!a||a!==e)?this.#R(t,o):this.#Q(t,o,i,{releaseMessageId:!1});if(this.#r.hasSeen(o)||(await this.#r.markSeen(o),this.#i.messagesReceived+=1,this.#i.lastMessageAt=new Date().toISOString(),t.kind==="group"&&t.rawEventType!=="GROUP_AT_MESSAGE_CREATE"))return;let r=lo(Lu(t));if(!r||zd(t)||Ql(t)){await this.#e.sendText(t.replyTarget,w("\u8BF7\u7528\u6587\u5B57\u56DE\u7B54\u5F53\u524D\u95EE\u9898\u3002"));return}let s=this.#I.get(i);if(!s||s!==e||s.submitting){if(A&&(!s||s!==e)){await this.#e.sendText(t.replyTarget,HS());return}return this.#Q(t,o,i,{releaseMessageId:!1,alreadyRecorded:!0})}if(s.target=t.replyTarget,s.needsPresentation){try{await this.#w(s)}catch{this.#i.lastError=w("QQ \u4EA4\u4E92\u95EE\u9898\u53D1\u9001\u5931\u8D25\u3002"),this.#a.error?.("[dsh-im:qq] failed to retry an interaction question"),s.interaction.reconnect?.();return}let c=this.#I.get(i);if(!c||c!==e||c.submitting){if(A&&(!c||c!==e)){await this.#e.sendText(t.replyTarget,HS()).catch(()=>{});return}return this.#Q(t,o,i,{releaseMessageId:!1,alreadyRecorded:!0})}}let g=s.questions[s.index];if(g){if(s.answers.push(wi(g,r)),s.index+=1,s.index{});return}if(this.#I.get(i)!==s)return;s.submitting=!1,s.answers.pop(),s.index-=1,this.#i.lastError=w("\u56DE\u7B54\u63D0\u4EA4\u5931\u8D25\u3002"),this.#a.error?.("[dsh-im:qq] failed to answer a Harness interaction"),await this.#e.sendText(s.target,w("\u56DE\u7B54\u63D0\u4EA4\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001\u5F53\u524D\u95EE\u9898\u7684\u7B54\u6848\u3002")).catch(()=>{})}}}async#T(t,{key:o,actor:i,target:e,requiresMention:a}){if(t?.kind==="approval")return this.#B.handleRequested(t,{key:o,actor:i,requiresMention:a,send:c=>this.#e.sendText(e,c)});if(t?.kind!=="question")return;let A=t?.payload?.questions,r=typeof t?.interactionId=="string"?t.interactionId:t?.rpcId;if(typeof t?.rpcId!="string"||typeof r!="string"||typeof t.sessionId!="string"||!Array.isArray(A)||A.length===0||A.some(c=>!mi(c))){this.#a.warn?.("[dsh-im:qq] ignored an invalid Harness question interaction");return}if(t.recovered===!0){await t.respond({ok:!1,error:{code:"cancelled",message:"QQ safely cancelled an interaction left by an earlier client.",details:{}}}),await this.#e.sendText(e,w("\u68C0\u6D4B\u5230\u8FD9\u4E2A Session \u4E2D\u9057\u7559\u7684\u5F85\u56DE\u7B54\u95EE\u9898\uFF0C\u5DF2\u5B89\u5168\u53D6\u6D88\u5E76\u7EE7\u7EED\u5904\u7406\u4F60\u521A\u624D\u7684\u6D88\u606F\u3002")).catch(()=>{});return}let s=this.#I.get(o);if(s?.interactionId===r){s.interaction=t,s.needsPresentation&&await this.#w(s);return}if(this.#d.has(r))return;if(s){await t.respond({ok:!1,error:{code:"cancelled",message:"QQ is already handling another user interaction.",details:{}}});return}let g={kind:"question",interactionId:r,sessionId:t.sessionId,interaction:t,actor:i,requiresMention:a,questions:A,answers:[],index:0,target:e,queue:null,claimedReplyMessageId:null,presentationPromise:null,submitting:!1,needsPresentation:!0};this.#I.set(o,g),this.#d.set(r,o),await this.#w(g)}async#O(t){if(t?.kind==="approval"){await this.#B.handleResolved(t);return}let o=t?.interactionId;if(t?.kind!=="question"||typeof o!="string")return;let i=this.#d.get(o);i&&this.#G(i,o)}#w(t){if(!t.needsPresentation)return Promise.resolve();if(t.presentationPromise)return t.presentationPromise;let o=t.questions[t.index];if(!o)return Promise.resolve();let i=this.#e.sendText(t.target,Si(o,t.index,t.questions.length,{requiresMention:t.requiresMention})).then(()=>{t.needsPresentation=!1}).finally(()=>{t.presentationPromise===i&&(t.presentationPromise=null)});return t.presentationPromise=i,i}async#R(t,o){this.#r.hasSeen(o)||(await this.#r.markSeen(o),this.#i.messagesReceived+=1,this.#i.lastMessageAt=new Date().toISOString(),await this.#e.sendText(t.replyTarget,HS()).catch(()=>{}))}#_(t,o){let i=this.#I.get(t);return!i||o!==void 0&&i.interactionId!==o?null:(this.#I.delete(t),this.#d.delete(i.interactionId),i)}#G(t,o){return this.#_(t,o)!==null}async#k(t){let o=this.#_(t);if(!(!o||o.kind!=="question"))try{await o.interaction.respond({ok:!1,error:{code:"cancelled",message:"The QQ interaction ended before the user answered.",details:{}}},{signal:AbortSignal.timeout(5e3)})}catch(i){i?.code!=="interaction-not-pending"&&this.#a.warn?.("[dsh-im:qq] failed to cancel a pending Harness interaction")}}async#F(t,o,i){if(this.#s?.aborted)return;this.#i.lastError=i?.message??String(i);let e=At(this.#i,i);this.#a.error?.(`[dsh-im:qq] failed to process an interaction reply [${e.referenceId}]:`,i),this.#r.hasSeen(o)||await this.#r.markSeen(o).catch(()=>{}),await this.#e.sendText(t.replyTarget,dt(e)).catch(()=>{})}};function JPe(){let n=new Error("QQ WebSocket did not become ready in time");return n.code="connect-timeout",n}function qPe(){return{startedAt:null,ready:!1,qqConnectionState:"idle",harnessReachable:!1,lastCheckedAt:null,lastConnectedAt:null,lastError:null,...WP()}}var Uu=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c=qPe();#g=null;#I=null;#d=null;#h=null;#C=null;constructor({config:t,appSecret:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,logger:r=console,replyTimeoutMs:s=6e5,connectTimeoutMs:g=2e4,createBot:c=d=>new xPe(d),typingMiddleware:I=jPe}){if(!t||!o||!i||!e)throw new TypeError("QqRuntime requires config, app secret, Harness, and state");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#s=c,this.#p=I}get status(){return structuredClone(this.#c)}async sendConnectionTest(t){if(!this.#c.ready||!this.#g)throw Cr(w("QQ\u673A\u5668\u4EBA"));let o=typeof this.#e.ownerUserOpenid=="string"?this.#e.ownerUserOpenid.trim():"",i=vE(this.#r),e=i?.scope==="c2c"&&typeof i.targetId=="string"?i.targetId.trim():"",a=e?{scope:"c2c",targetId:e}:o&&o!=="*"?{scope:"c2c",targetId:o}:null;if(!a)throw Cr(w("QQ\u673A\u5668\u4EBA"));return await this.#g.sendText(a,t),{sent:!0}}async sendProactiveText(t,o,{signal:i}={}){let e=t?.kind==="user"?typeof t?.route?.userOpenId=="string"?t.route.userOpenId.trim():"":t?.kind==="group"&&typeof t?.route?.groupOpenId=="string"?t.route.groupOpenId.trim():"";if(!e){let a=new TypeError("Invalid QQ proactive delivery target");throw a.code="invalid-target",a}if(!this.#c.ready||!this.#g){let a=new Error("QQ bot is not connected");throw a.code="bot-not-connected",a}return i?.throwIfAborted(),this.#g.sendText({scope:t.kind==="user"?"c2c":"group",targetId:e},o)}async start(){return this.#c.ready&&this.#g?this.status:this.#C?this.#C:(this.#C=this.#u().finally(()=>{this.#C=null}),this.#C)}async#u(){await this.stop(),this.#c.startedAt=new Date().toISOString(),this.#c.qqConnectionState="connecting",this.#c.lastError=null,await this.#t.ensureRunning(),this.#c.harnessReachable=!0;let t={error:(...d)=>this.#i.error?.(...d),warn:(...d)=>this.#i.warn?.(...d),info:(...d)=>this.#i.info?.(...d),debug:()=>{}},o=this.#s({appId:this.#e.appId,appSecret:this.#A,accountId:this.#e.botId,logger:t,transport:"websocket",tokenPrefetch:"sync",markdownSupport:!1});if(!o||typeof o.start!="function"||typeof o.stop!="function")throw new TypeError("QQ bot factory returned an invalid client");let i=new AbortController;this.#d=i,this.#g=o,this.#I=new xS({bot:o,ownerUserOpenid:this.#e.ownerUserOpenid,harness:this.#t,state:this.#r,contextEnhancement:this.#l,accessPolicy:this.#o,status:this.#c,logger:this.#i,replyTimeoutMs:this.#a,signal:i.signal}),o.use(YPe({parseFaceTags:!0})),o.use?.(this.#p({keepAlive:!0,predicate:d=>{let B=d?.message;return!B||B.kind==="group"&&B.rawEventType!=="GROUP_AT_MESSAGE_CREATE"?!1:this.#o?fa(this.#o,{conversationType:B.kind==="c2c"?"direct":"group",senderIds:B.senderId,text:typeof B.content=="string"?B.content.trim():""}).allowed:B.kind==="group"||this.#e.ownerUserOpenid==="*"||B.senderId===this.#e.ownerUserOpenid}}));let e,a,A=new Promise((d,B)=>{e=d,a=B}),r=()=>{let d=Date.now();this.#c.ready=!0,this.#c.qqConnectionState="connected",this.#c.lastCheckedAt=d,this.#c.lastConnectedAt=d,this.#c.lastError=null,e()},s=d=>{this.#c.ready?(this.#c.lastError=d?.message??String(d),this.#i.warn?.(`[dsh-im:qq] bot ${this.#e.botId} connection error:`,d)):a(d)},g=(d,B)=>{let f=this.#I?.accept(B);f&&f.catch(Q=>{i.signal.aborted||this.#i.error?.(`[dsh-im:qq] bot ${this.#e.botId} message handling failed:`,Q)})};o.on("ready",r),o.on("resumed",r),o.on("error",s),o.on("message",g);let c=Promise.resolve().then(()=>o.start(i.signal));this.#h=c,c.catch(d=>{i.signal.aborted||(a(d),this.#c.ready=!1,this.#c.qqConnectionState="failed",this.#c.lastError=d?.message??String(d),this.#i.error?.(`[dsh-im:qq] bot ${this.#e.botId} connection stopped:`,d))});let I;try{return await Promise.race([A,new Promise((d,B)=>{I=setTimeout(()=>B(JPe()),this.#n)})]),this.#c.ready=!0,this.#c.qqConnectionState="connected",this.#c.lastCheckedAt=Date.now(),this.#c.lastConnectedAt=Date.now(),this.status}catch(d){throw this.#c.ready=!1,this.#c.qqConnectionState="failed",this.#c.lastError=d?.message??String(d),await this.stop(),d}finally{clearTimeout(I)}}async stop(){let t=this.#g,o=this.#I,i=this.#h;this.#d?.abort(),this.#d=null,this.#g=null,this.#I=null,this.#h=null;try{t?.stop()}catch(e){this.#i.warn?.(`[dsh-im:qq] bot ${this.#e.botId} failed to stop cleanly:`,e)}return await Promise.race([i?.catch(()=>{})??Promise.resolve(),new Promise(e=>setTimeout(e,2e3))]),await o?.waitForIdle(),this.#c.ready=!1,this.#c.qqConnectionState="idle",this.status}};import{startQrConnect as zPe}from"@tencent-connect/qqbot-connector";var YS=class{#e;#A;constructor({start:t=zPe,source:o="deepseek-harness"}={}){if(typeof t!="function")throw new TypeError("QQ QR connector is required");this.#e=t,this.#A=o}start(t,{signal:o}={}){if(!t||typeof t.onSuccess!="function"||typeof t.onFailure!="function")throw new TypeError("QQ QR callbacks are required");return this.#e(t,{displayQrCodeToConsole:!1,source:this.#A,signal:o})}};import{mkdir as VPe,readFile as WPe,rename as ZPe,unlink as XPe,writeFile as $Pe}from"node:fs/promises";import{dirname as eGe}from"node:path";var jS=Object.freeze({version:1,sessions:{},seenMessageIds:[]});function AGe(n){if(!n||typeof n!="object")return structuredClone(jS);let t={};if(n.sessions&&typeof n.sessions=="object"&&!Array.isArray(n.sessions))for(let[o,i]of Object.entries(n.sessions))typeof o=="string"&&typeof i=="string"&&i&&(t[o]=i);return{version:1,sessions:t,seenMessageIds:Array.isArray(n.seenMessageIds)?n.seenMessageIds.filter(o=>typeof o=="string").slice(-1e3):[]}}var JS=class{#e;#A=structuredClone(jS);#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{this.#A=AGe(JSON.parse(await WPe(this.#e,"utf8")))}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=structuredClone(jS),await this.#r()}return this}sessionFor(t){return this.#A.sessions[t]??null}async setSession(t,o){this.#A.sessions[t]=o,await this.#r()}async clearSession(t){delete this.#A.sessions[t],await this.#r()}async clearSessions(){this.#A.sessions={},await this.#r()}hasSeen(t){return this.#A.seenMessageIds.includes(t)}async markSeen(t){this.hasSeen(t)||(this.#A.seenMessageIds.push(t),this.#A.seenMessageIds.length>1e3&&this.#A.seenMessageIds.splice(0,this.#A.seenMessageIds.length-1e3),await this.#r())}snapshot(){return structuredClone(this.#A)}async remove(){try{await XPe(this.#e)}catch(t){if(t?.code!=="ENOENT")throw t}this.#A=structuredClone(jS)}async#r(){let t=`${JSON.stringify(this.#A,null,2)} -`,o=this.#t.then(async()=>{await VPe(eGe(this.#e),{recursive:!0,mode:448});let i=`${this.#e}.tmp`;await $Pe(i,t,{encoding:"utf8",mode:384}),await ZPe(i,this.#e)});this.#t=o.then(()=>{},()=>{}),await o}};var F5=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function tGe(n){if(!Array.isArray(n)||n.length===0)return[...F5];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...F5]}var qS=class{#e;#A;#t;#r;#l;#o;#i;#a=null;#n=null;#s=0;#p=!1;#c=!1;#g;#I;constructor({controller:t,harness:o,logger:i=console,retryDelaysMs:e,healthyIntervalMs:a=15e3,setTimeoutImpl:A=setTimeout,clearTimeoutImpl:r=clearTimeout}){if(!t||typeof t.initialize!="function"||typeof t.status!="function")throw new TypeError("ConnectionSupervisor requires a controller");if(!o||typeof o.ensureRunning!="function")throw new TypeError("ConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=tGe(e),this.#l=Number.isFinite(a)&&a>=0?a:15e3,this.#o=A,this.#i=r,this.#g=new Promise(s=>{this.#I=s})}get ready(){return this.#g}start(){return this.#c||this.#p?this:(this.#c=!0,this.#d(0),this)}async close(){this.#p||(this.#p=!0,this.#a!==null&&this.#i(this.#a),this.#a=null,await this.#n?.catch(()=>{}),this.#I?.(null),this.#I=null)}#d(t){this.#p||(this.#a=this.#o(()=>{this.#a=null,this.#h()},t),this.#a?.unref?.())}async#h(){if(this.#p||this.#n)return;let t=this.#C();this.#n=t;try{await t}finally{this.#n===t&&(this.#n=null)}}async#C(){try{if(await this.#A.ensureRunning(),this.#p)return;let t=await this.#e.initialize();if(this.#p)return;this.#I?.(t),this.#I=null;let{configured:o,connected:i}=t.totals;if(iLa(n),B=iGe(t),f=await new e(B.config).load(),Q=yl(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=f.list();await m.reconcile(_.map(J=>J.botId)),await Promise.all(_.map(J=>m.ensure(J.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("qq",J)})));let T=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,R=o.qrAuth??new g({source:t.qrSource??"deepseek-harness"}),K=new Map,L=J=>yl(B.bots,J,"state.json"),U=async J=>{let $=K.get(J);return $||($=await new a(L(J)).load(),K.set(J,$)),$},z=ja(n,o.commandExecutor),{controlExecutor:q,sessionMaintenanceExecutor:x,fileIngressExecutor:G}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),V=new A({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...z?{commandExecutor:z}:{},...q?{controlExecutor:q}:{},...x?{sessionMaintenanceExecutor:x}:{},...G?{fileIngressExecutor:G}:{}}),F=new r({qrAuth:R,credentials:n.credentials,configStore:T,logger:I,createRuntime:async({botId:J,config:$,appSecret:ie})=>{let pe=await U(J);await m.ensure(J,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("qq",$)});let se=Ka(V,{botId:J,workspaces:m,state:pe,agentPresetCatalog:d});return new s({config:$,appSecret:ie,harness:se.harness,state:se.state,contextEnhancement:{botId:J,getSettings:()=>m.contextEnhancementFor(J)},accessPolicy:qa(m,J,{channel:"qq",config:$}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??2e4,logger:{error:(...Te)=>I.error?.(`[${J}]`,...Te),warn:(...Te)=>I.warn?.(`[${J}]`,...Te),info:(...Te)=>I.info?.(`[${J}]`,...Te),debug:(...Te)=>I.debug?.(`[${J}]`,...Te)}})},deleteState:async({botId:J})=>{let $=K.get(J);if(K.delete(J),$&&typeof $.remove=="function")await $.remove();else try{await rGe(L(J))}catch(ie){if(ie?.code!=="ENOENT")throw ie}}}),N=xa(F,{workspaces:m,stateFor:U,agentPresetCatalog:d}),k=c({controller:N,harness:V,logger:I,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:N,deliveryAdapter:Ya({channel:"qq",workspaces:m,coreController:F,stateFor:U}),ready:k.ready,async close(){await k.close(),await N.close(),V.stopManagedProcess()}}}import oGe from"qrcode";var U5="/qq",cr=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va}),H5=Object.freeze(Object.values(cr)),nGe=new Set(["appSecret","app_secret","secretRef","ownerUserOpenid","userOpenid","verificationUrl"]);function AG(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function Vd(n,t){return AG(n)&&Object.keys(n).every(o=>t.includes(o))}function $P(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function L5(n,t){return typeof n=="string"&&n.trim().length>0&&n.length<=t}function sGe(n,t){return AG(t)?n===cr.status?Vd(t,[])?null:"connection.status does not accept fields.":n===cr.beginProvisioning?Vd(t,["locale"])&&(t.locale===void 0||t.locale==="zh-CN")?null:"provision.begin received unsupported fields.":[cr.pollProvisioning,cr.cancelProvisioning].includes(n)?Vd(t,["attemptId"])&&$P(t.attemptId)?null:`${n} requires an attemptId.`:n===cr.bindCredentials?Vd(t,["appId","appSecret"])&&L5(t.appId,256)&&L5(t.appSecret,1024)?null:"bot.bind-credentials requires AppID and AppSecret.":n===cr.reconnectBot?Vd(t,["botId","sendTest"])&&$P(t.botId)&&(t.sendTest===void 0||t.sendTest===!0)?null:"bot.reconnect requires a botId and accepts only sendTest=true.":n===cr.deleteBot?Vd(t,["botId","confirm"])&&$P(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===cr.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===cr.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===cr.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===cr.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Unknown QQ endpoint.":"Payload must be an object."}function Wd(n){if(Array.isArray(n))return n.map(Wd);if(!AG(n))return n;let t={};for(let[o,i]of Object.entries(n))nGe.has(o)||(t[o]=Wd(i));return t}async function gGe(n){return oGe.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function eG(n,t){return!n||typeof n.verificationUrl!="string"?Wd(n):Wd({...n,qrCodeDataUrl:await t(n.verificationUrl)})}async function Pc(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await eG(o.provisioning,t)),Wd(o)}function K5(n,{encodeQr:t=gGe}={}){for(let e of["status","startProvisioning","registrationStatus","cancelProvisioning","bindCredentials","reconnectBot","deleteBot"])if(typeof n?.[e]!="function")throw new TypeError(`A complete QQ controller is required (${e})`);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!H5.includes(e))return{ok:!1,error:{code:"bad-request",message:"Unknown QQ endpoint."}};let r=sGe(e,a);if(r)return{ok:!1,error:{code:"bad-request",message:r}};try{let s;if(e===cr.status)s=await Pc(await n.status(),i);else if(e===cr.beginProvisioning)s=await eG(await n.startProvisioning(),i);else if(e===cr.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return{ok:!1,error:{code:"bad-request",message:"The provisioning attempt no longer exists."}};s=await eG(g,i)}else if(e===cr.cancelProvisioning)s=Wd(await n.cancelProvisioning(a.attemptId));else if(e===cr.bindCredentials)s=await Pc(await n.bindCredentials(a),i);else if(e===cr.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};let c;if(a.sendTest===!0)if(!(g?.bots?.some(d=>d?.botId===a.botId&&d?.connected===!0)===!0)||typeof n.sendConnectionTest!="function")c=or(Cr("QQ\u673A\u5668\u4EBA"));else{let d=null;try{await n.sendConnectionTest(a.botId)}catch(B){d=B}c=or(d)}s=await Pc({...g,...c?{testMessage:c}:{}},i)}else if(e===cr.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await Pc(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===cr.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>Pc(g,i))}else if(e===cr.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>Pc(g,i))}else if(e===cr.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await Pc(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else s=await Pc(await n.deleteBot(a.botId),i);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:g??{code:"qq-operation-failed",message:"QQ \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}}}function zS(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(U5,K5(t,o),{authority:fr(i)})}async function x5(n,t={}){if(t?.controller)return zS(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await XP(n,t,t.internals),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=zS(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close QQ bot connections"),e}import{unlink as YGe}from"node:fs/promises";import{resolve as AZ}from"node:path";import{createHash as cGe}from"node:crypto";import{mkdir as IGe,readFile as lGe,rename as pGe,unlink as dGe,writeFile as hGe}from"node:fs/promises";import{dirname as EGe}from"node:path";var tG=Object.freeze({version:1,bots:Object.freeze([])}),Y5=/^slack_[a-f0-9]{24}$/,CGe=/^DSH_SLACK_BOT_TOKEN_[A-F0-9]{24}$/,uGe=/^DSH_SLACK_APP_TOKEN_[A-F0-9]{24}$/;function qo(n){return typeof n=="string"&&n.trim()?n.trim():null}function rG(n){let t=qo(n);if(!t)throw new TypeError("platformId is required");let o=cGe("sha256").update(t).digest("hex").slice(0,24),i=o.toUpperCase();return{botId:`slack_${o}`,botTokenRef:`DSH_SLACK_BOT_TOKEN_${i}`,appTokenRef:`DSH_SLACK_APP_TOKEN_${i}`}}function aG(n){let t=qo(n)??"",[o,i]=t.split(":");return o&&i?`${o.slice(0,5)}\u2022\u2022\u2022 \xB7 ${i.slice(0,5)}\u2022\u2022\u2022`:t?`${t.slice(0,6)}\u2022\u2022\u2022\u2022`:w("Slack\u673A\u5668\u4EBA")}var VS=class{#e;#A=tG;#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{let t=this.#l(JSON.parse(await lGe(this.#e,"utf8")));if(!t)throw new Error("dsh-im Slack config contains invalid bot data");this.#A=t}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=tG}return this}list(){return structuredClone(this.#A.bots)}get(t){let o=this.#A.bots.find(i=>i.botId===t);return o?structuredClone(o):null}getByPlatformId(t){let o=this.#A.bots.find(i=>i.platformId===t);return o?structuredClone(o):null}async save(t){let o=this.#r(t);if(!o)throw new Error("Refusing to persist incomplete Slack bot data");return this.#o(i=>{if(i.find(A=>A.botId!==o.botId&&(A.platformId===o.platformId||A.botTokenRef===o.botTokenRef||A.appTokenRef===o.appTokenRef)))throw new Error("Duplicate Slack bot identity");let a=i.findIndex(A=>A.botId===o.botId);return a===-1?i.push(o):i[a]=o,structuredClone(o)})}async remove(t){if(!Y5.test(t))throw new TypeError("Invalid Slack bot id");return this.#o(o=>{let i=o.findIndex(e=>e.botId===t);return i===-1?null:structuredClone(o.splice(i,1)[0])})}async clear(){let t=this.#t.then(async()=>{try{await dGe(this.#e)}catch(o){if(o?.code!=="ENOENT")throw o}this.#A=tG});this.#t=t.then(()=>{},()=>{}),await t}#r(t){if(!t||typeof t!="object")return null;let o=qo(t.botId),i=qo(t.platformId),e=qo(t.botTokenRef),a=qo(t.appTokenRef),A=qo(t.name);if(!o||!i||!e||!a||!A||!Y5.test(o)||!CGe.test(e)||!uGe.test(a))return null;let r=rG(i);return r.botId!==o||r.botTokenRef!==e||r.appTokenRef!==a?null:Object.freeze({botId:o,platformId:i,botTokenRef:e,appTokenRef:a,name:A,username:qo(t.username),teamId:qo(t.teamId),teamName:qo(t.teamName),createdAt:qo(t.createdAt)??new Date().toISOString(),connectedAt:qo(t.connectedAt)})}#l(t){if(!t||t.version!==1||!Array.isArray(t.bots))return null;let o=t.bots.map(A=>this.#r(A));if(o.some(A=>A===null))return null;let i=new Set,e=new Set,a=new Set;for(let A of o){if(i.has(A.botId)||e.has(A.platformId)||a.has(A.botTokenRef)||a.has(A.appTokenRef))return null;i.add(A.botId),e.add(A.platformId),a.add(A.botTokenRef),a.add(A.appTokenRef)}return Object.freeze({version:1,bots:Object.freeze(o)})}async#o(t){let o,i=this.#t.then(async()=>{let e=[...this.#A.bots];o=t(e);let a=Object.freeze({version:1,bots:Object.freeze(e)});await IGe(EGe(this.#e),{recursive:!0,mode:448});let A=`${this.#e}.tmp`;await hGe(A,`${JSON.stringify(a,null,2)} +`,o=this.#t.then(async()=>{await VPe(eGe(this.#e),{recursive:!0,mode:448});let i=`${this.#e}.tmp`;await $Pe(i,t,{encoding:"utf8",mode:384}),await ZPe(i,this.#e)});this.#t=o.then(()=>{},()=>{}),await o}};var F5=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function tGe(n){if(!Array.isArray(n)||n.length===0)return[...F5];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...F5]}var qS=class{#e;#A;#t;#r;#l;#o;#i;#a=null;#n=null;#s=0;#p=!1;#c=!1;#g;#I;constructor({controller:t,harness:o,logger:i=console,retryDelaysMs:e,healthyIntervalMs:a=15e3,setTimeoutImpl:A=setTimeout,clearTimeoutImpl:r=clearTimeout}){if(!t||typeof t.initialize!="function"||typeof t.status!="function")throw new TypeError("ConnectionSupervisor requires a controller");if(!o||typeof o.ensureRunning!="function")throw new TypeError("ConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=tGe(e),this.#l=Number.isFinite(a)&&a>=0?a:15e3,this.#o=A,this.#i=r,this.#g=new Promise(s=>{this.#I=s})}get ready(){return this.#g}start(){return this.#c||this.#p?this:(this.#c=!0,this.#d(0),this)}async close(){this.#p||(this.#p=!0,this.#a!==null&&this.#i(this.#a),this.#a=null,await this.#n?.catch(()=>{}),this.#I?.(null),this.#I=null)}#d(t){this.#p||(this.#a=this.#o(()=>{this.#a=null,this.#h()},t),this.#a?.unref?.())}async#h(){if(this.#p||this.#n)return;let t=this.#C();this.#n=t;try{await t}finally{this.#n===t&&(this.#n=null)}}async#C(){try{if(await this.#A.ensureRunning(),this.#p)return;let t=await this.#e.initialize();if(this.#p)return;this.#I?.(t),this.#I=null;let{configured:o,connected:i}=t.totals;if(iLa(n),B=iGe(t),f=await new e(B.config).load(),Q=yl(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=f.list();await m.reconcile(_.map(J=>J.botId)),await Promise.all(_.map(J=>m.ensure(J.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("qq",J)})));let T=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,R=o.qrAuth??new g({source:t.qrSource??"deepseek-harness"}),K=new Map,L=J=>yl(B.bots,J,"state.json"),U=async J=>{let $=K.get(J);return $||($=await new a(L(J)).load(),K.set(J,$)),$},z=ja(n,o.commandExecutor),{controlExecutor:q,sessionMaintenanceExecutor:x,fileIngressExecutor:G}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),V=new A({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...z?{commandExecutor:z}:{},...q?{controlExecutor:q}:{},...x?{sessionMaintenanceExecutor:x}:{},...G?{fileIngressExecutor:G}:{}}),F=new r({qrAuth:R,credentials:n.credentials,configStore:T,logger:I,createRuntime:async({botId:J,config:$,appSecret:ie})=>{let pe=await U(J);await m.ensure(J,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("qq",$)});let se=Ka(V,{botId:J,workspaces:m,state:pe,agentPresetCatalog:d});return new s({config:$,appSecret:ie,harness:se.harness,state:se.state,contextEnhancement:{botId:J,getSettings:()=>m.contextEnhancementFor(J)},accessPolicy:qa(m,J,{channel:"qq",config:$}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??2e4,logger:{error:(...Me)=>I.error?.(`[${J}]`,...Me),warn:(...Me)=>I.warn?.(`[${J}]`,...Me),info:(...Me)=>I.info?.(`[${J}]`,...Me),debug:(...Me)=>I.debug?.(`[${J}]`,...Me)}})},deleteState:async({botId:J})=>{let $=K.get(J);if(K.delete(J),$&&typeof $.remove=="function")await $.remove();else try{await rGe(L(J))}catch(ie){if(ie?.code!=="ENOENT")throw ie}}}),N=xa(F,{workspaces:m,stateFor:U,agentPresetCatalog:d}),k=c({controller:N,harness:V,logger:I,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:N,deliveryAdapter:Ya({channel:"qq",workspaces:m,coreController:F,stateFor:U}),ready:k.ready,async close(){await k.close(),await N.close(),V.stopManagedProcess()}}}import oGe from"qrcode";var U5="/qq",cr=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va}),H5=Object.freeze(Object.values(cr)),nGe=new Set(["appSecret","app_secret","secretRef","ownerUserOpenid","userOpenid","verificationUrl"]);function AG(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function Vd(n,t){return AG(n)&&Object.keys(n).every(o=>t.includes(o))}function $P(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function L5(n,t){return typeof n=="string"&&n.trim().length>0&&n.length<=t}function sGe(n,t){return AG(t)?n===cr.status?Vd(t,[])?null:"connection.status does not accept fields.":n===cr.beginProvisioning?Vd(t,["locale"])&&(t.locale===void 0||t.locale==="zh-CN")?null:"provision.begin received unsupported fields.":[cr.pollProvisioning,cr.cancelProvisioning].includes(n)?Vd(t,["attemptId"])&&$P(t.attemptId)?null:`${n} requires an attemptId.`:n===cr.bindCredentials?Vd(t,["appId","appSecret"])&&L5(t.appId,256)&&L5(t.appSecret,1024)?null:"bot.bind-credentials requires AppID and AppSecret.":n===cr.reconnectBot?Vd(t,["botId","sendTest"])&&$P(t.botId)&&(t.sendTest===void 0||t.sendTest===!0)?null:"bot.reconnect requires a botId and accepts only sendTest=true.":n===cr.deleteBot?Vd(t,["botId","confirm"])&&$P(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===cr.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===cr.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===cr.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===cr.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Unknown QQ endpoint.":"Payload must be an object."}function Wd(n){if(Array.isArray(n))return n.map(Wd);if(!AG(n))return n;let t={};for(let[o,i]of Object.entries(n))nGe.has(o)||(t[o]=Wd(i));return t}async function gGe(n){return oGe.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function eG(n,t){return!n||typeof n.verificationUrl!="string"?Wd(n):Wd({...n,qrCodeDataUrl:await t(n.verificationUrl)})}async function Pc(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await eG(o.provisioning,t)),Wd(o)}function K5(n,{encodeQr:t=gGe}={}){for(let e of["status","startProvisioning","registrationStatus","cancelProvisioning","bindCredentials","reconnectBot","deleteBot"])if(typeof n?.[e]!="function")throw new TypeError(`A complete QQ controller is required (${e})`);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!H5.includes(e))return{ok:!1,error:{code:"bad-request",message:"Unknown QQ endpoint."}};let r=sGe(e,a);if(r)return{ok:!1,error:{code:"bad-request",message:r}};try{let s;if(e===cr.status)s=await Pc(await n.status(),i);else if(e===cr.beginProvisioning)s=await eG(await n.startProvisioning(),i);else if(e===cr.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return{ok:!1,error:{code:"bad-request",message:"The provisioning attempt no longer exists."}};s=await eG(g,i)}else if(e===cr.cancelProvisioning)s=Wd(await n.cancelProvisioning(a.attemptId));else if(e===cr.bindCredentials)s=await Pc(await n.bindCredentials(a),i);else if(e===cr.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};let c;if(a.sendTest===!0)if(!(g?.bots?.some(d=>d?.botId===a.botId&&d?.connected===!0)===!0)||typeof n.sendConnectionTest!="function")c=or(Cr("QQ\u673A\u5668\u4EBA"));else{let d=null;try{await n.sendConnectionTest(a.botId)}catch(B){d=B}c=or(d)}s=await Pc({...g,...c?{testMessage:c}:{}},i)}else if(e===cr.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await Pc(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===cr.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>Pc(g,i))}else if(e===cr.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>Pc(g,i))}else if(e===cr.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await Pc(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else s=await Pc(await n.deleteBot(a.botId),i);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:g??{code:"qq-operation-failed",message:"QQ \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}}}function zS(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(U5,K5(t,o),{authority:fr(i)})}async function x5(n,t={}){if(t?.controller)return zS(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await XP(n,t,t.internals),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=zS(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close QQ bot connections"),e}import{unlink as YGe}from"node:fs/promises";import{resolve as AZ}from"node:path";import{createHash as cGe}from"node:crypto";import{mkdir as IGe,readFile as lGe,rename as pGe,unlink as dGe,writeFile as hGe}from"node:fs/promises";import{dirname as EGe}from"node:path";var tG=Object.freeze({version:1,bots:Object.freeze([])}),Y5=/^slack_[a-f0-9]{24}$/,CGe=/^DSH_SLACK_BOT_TOKEN_[A-F0-9]{24}$/,uGe=/^DSH_SLACK_APP_TOKEN_[A-F0-9]{24}$/;function qo(n){return typeof n=="string"&&n.trim()?n.trim():null}function rG(n){let t=qo(n);if(!t)throw new TypeError("platformId is required");let o=cGe("sha256").update(t).digest("hex").slice(0,24),i=o.toUpperCase();return{botId:`slack_${o}`,botTokenRef:`DSH_SLACK_BOT_TOKEN_${i}`,appTokenRef:`DSH_SLACK_APP_TOKEN_${i}`}}function aG(n){let t=qo(n)??"",[o,i]=t.split(":");return o&&i?`${o.slice(0,5)}\u2022\u2022\u2022 \xB7 ${i.slice(0,5)}\u2022\u2022\u2022`:t?`${t.slice(0,6)}\u2022\u2022\u2022\u2022`:w("Slack\u673A\u5668\u4EBA")}var VS=class{#e;#A=tG;#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{let t=this.#l(JSON.parse(await lGe(this.#e,"utf8")));if(!t)throw new Error("dsh-im Slack config contains invalid bot data");this.#A=t}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=tG}return this}list(){return structuredClone(this.#A.bots)}get(t){let o=this.#A.bots.find(i=>i.botId===t);return o?structuredClone(o):null}getByPlatformId(t){let o=this.#A.bots.find(i=>i.platformId===t);return o?structuredClone(o):null}async save(t){let o=this.#r(t);if(!o)throw new Error("Refusing to persist incomplete Slack bot data");return this.#o(i=>{if(i.find(A=>A.botId!==o.botId&&(A.platformId===o.platformId||A.botTokenRef===o.botTokenRef||A.appTokenRef===o.appTokenRef)))throw new Error("Duplicate Slack bot identity");let a=i.findIndex(A=>A.botId===o.botId);return a===-1?i.push(o):i[a]=o,structuredClone(o)})}async remove(t){if(!Y5.test(t))throw new TypeError("Invalid Slack bot id");return this.#o(o=>{let i=o.findIndex(e=>e.botId===t);return i===-1?null:structuredClone(o.splice(i,1)[0])})}async clear(){let t=this.#t.then(async()=>{try{await dGe(this.#e)}catch(o){if(o?.code!=="ENOENT")throw o}this.#A=tG});this.#t=t.then(()=>{},()=>{}),await t}#r(t){if(!t||typeof t!="object")return null;let o=qo(t.botId),i=qo(t.platformId),e=qo(t.botTokenRef),a=qo(t.appTokenRef),A=qo(t.name);if(!o||!i||!e||!a||!A||!Y5.test(o)||!CGe.test(e)||!uGe.test(a))return null;let r=rG(i);return r.botId!==o||r.botTokenRef!==e||r.appTokenRef!==a?null:Object.freeze({botId:o,platformId:i,botTokenRef:e,appTokenRef:a,name:A,username:qo(t.username),teamId:qo(t.teamId),teamName:qo(t.teamName),createdAt:qo(t.createdAt)??new Date().toISOString(),connectedAt:qo(t.connectedAt)})}#l(t){if(!t||t.version!==1||!Array.isArray(t.bots))return null;let o=t.bots.map(A=>this.#r(A));if(o.some(A=>A===null))return null;let i=new Set,e=new Set,a=new Set;for(let A of o){if(i.has(A.botId)||e.has(A.platformId)||a.has(A.botTokenRef)||a.has(A.appTokenRef))return null;i.add(A.botId),e.add(A.platformId),a.add(A.botTokenRef),a.add(A.appTokenRef)}return Object.freeze({version:1,bots:Object.freeze(o)})}async#o(t){let o,i=this.#t.then(async()=>{let e=[...this.#A.bots];o=t(e);let a=Object.freeze({version:1,bots:Object.freeze(e)});await IGe(EGe(this.#e),{recursive:!0,mode:448});let A=`${this.#e}.tmp`;await hGe(A,`${JSON.stringify(a,null,2)} `,{encoding:"utf8",mode:384}),await pGe(A,this.#e),this.#A=a});return this.#t=i.then(()=>{},()=>{}),await i,o}};var BGe="https://slack.com/api/",Yu="files.slack.com",fGe="slack.com",j5="/files-pri/",QGe=Object.freeze([Yu]),yGe="/upload/",mGe=12e4;function Ss(n){return typeof n=="string"&&n.trim()?n.trim():null}function J5(n,t){let o=AbortSignal.timeout(t);return n?AbortSignal.any([n,o]):o}function Ku(n){return n?.reason instanceof Error?n.reason:new DOMException("The operation was aborted","AbortError")}function SGe(n,t){if(!Number.isInteger(n)||n<1)throw new TypeError(`${t} must be a positive integer`);return n}function q5(n,t){return t?.providerCode!==void 0&&(n.providerCode=t.providerCode),Number.isInteger(t?.status)&&(n.status=t.status),n}function ml(n){let t="artifact-provider-failed",o="Slack file upload preparation failed";n?.code==="slack-file_upload_size_restricted"?(t="artifact-too-large",o="Slack rejected the result file because it is too large"):n?.code==="slack-missing-scope"?(t="artifact-permission-required",o="Slack file delivery requires the files:write scope"):n?.code?.startsWith?.("slack-")&&(t="artifact-provider-rejected",o="Slack rejected file upload preparation");let i=new Error(o,{cause:n});return i.code=t,q5(i,n)}function wGe(n){let t=new Error("Slack file completion result is uncertain",{cause:n});return t.code="artifact-delivery-uncertain",q5(t,n)}function DGe(n){return Number.isInteger(n)&&n>=300&&n<400}async function iG(n){try{await n?.body?.cancel?.()}catch{}}function OGe(n){let t=new URL(n);if(t.protocol!=="https:")throw new Error("Image download URL must use HTTPS");if(t.username||t.password||t.port&&t.port!=="443")throw new Error("Image download URL is not hosted by the messaging platform");if(t.hostname===fGe&&t.pathname.startsWith(j5)&&(t.hostname=Yu),t.hostname!==Yu||!t.pathname.startsWith(j5))throw new Error("Image download URL is not hosted by the messaging platform");return t.hash="",t}function bGe(n){let t=new URL(n);if(t.protocol!=="https:"||t.username||t.password||t.port&&t.port!=="443"||t.hostname!==Yu||!t.pathname.startsWith(yGe))throw new Error("Slack returned an unsafe file upload URL");return t.hash="",t}function MGe(n,t){let o=n?.headers?.get?.("location");if(!o)return null;try{return new URL(o,t)}catch{return null}}function _Ge(n){let t=n?.headers?.get?.("x-oauth-scopes");return t==null?null:new Set(t.split(",").map(o=>o.trim()).filter(Boolean))}function TGe(n){return n?.protocol==="https:"&&!n.username&&!n.password&&(!n.port||n.port==="443")&&n.hostname.endsWith(".slack.com")&&n.hostname!==Yu&&n.pathname==="/"&&n.searchParams.has("redir")}function NGe(n,t){return new Promise((o,i)=>{if(t?.aborted){i(t.reason??new DOMException("Aborted","AbortError"));return}let e=setTimeout(o,n);e?.unref?.(),t?.addEventListener("abort",()=>{clearTimeout(e),i(t.reason??new DOMException("Aborted","AbortError"))},{once:!0})})}function Nn(n,t){let o=Ss(n);if(!o||!/^[A-Z][A-Z0-9]{4,30}$/i.test(o))throw new TypeError(`Invalid Slack ${t}`);return o}function ms(n,t){let o=Ss(n);if(!o)throw new TypeError(`Slack ${t} is required`);return o}function xu(n,{trim:t=!0}={}){let o=typeof n=="string"?n:"",i=t?o.trim():o;if(!i)throw new TypeError("Slack message text is required");return i.replace(/<@([A-Z0-9]+)>/gi,"@$1").replace(/]*)?>/gi,"@$1")}function RGe(n,t,o){let i=Ss(t?.error)??"unknown_error",e=new Error(`Slack ${n} failed: ${i.replaceAll("_"," ")}`);return e.providerCode=i,["invalid_auth","not_authed","token_revoked","account_inactive"].includes(i)?e.code=o==="app"?"slack-invalid-app-token":"slack-invalid-bot-token":i==="missing_scope"?e.code="slack-missing-scope":i==="method_not_supported_for_channel_type"||i==="channel_type_not_supported"||i==="deprecated_endpoint"?e.code="slack-stream-unavailable":e.code=`slack-${i}`,e}function z5(n){return typeof n=="string"&&/^xoxb-[A-Za-z0-9-]{16,}$/.test(n.trim())}function V5(n){return typeof n=="string"&&/^xapp-[A-Za-z0-9-]{16,}$/.test(n.trim())}var ju=class{#e;#A;#t;#r;#l=null;#o;constructor({botToken:t,appToken:o,fetchImpl:i=fetch,baseUrl:e=BGe,fileUploadTimeoutMs:a=mGe}){if(t!==void 0&&!z5(t))throw new TypeError("Slack Bot Token is invalid");if(o!==void 0&&!V5(o))throw new TypeError("Slack App Token is invalid");if(!t&&!o)throw new TypeError("SlackApi requires a token");if(typeof i!="function")throw new TypeError("SlackApi requires fetch");this.#e=t?.trim(),this.#A=o?.trim(),this.#t=i,this.#r=new URL(e),this.#o=SGe(a,"fileUploadTimeoutMs")}authTest(t={}){return this.#a("auth.test",{...t,tokenKind:"bot"})}openConnection(t={}){return this.#a("apps.connections.open",{...t,tokenKind:"app",body:void 0})}async fileInfo({fileId:t,signal:o}={}){let i=await this.#a("files.info",{tokenKind:"bot",signal:o,body:{file:Nn(t,"file id")}});if(!i?.file||typeof i.file!="object"||Array.isArray(i.file))throw new Error("Slack files.info returned no file object");return i.file}postMessage({channelId:t,text:o,threadTs:i,signal:e}){return this.#a("chat.postMessage",{tokenKind:"bot",signal:e,body:{channel:Nn(t,"channel id"),text:xu(o),...i?{thread_ts:Ss(i)}:{},mrkdwn:!0,link_names:!1,unfurl_links:!1,unfurl_media:!1}})}updateMessage({channelId:t,ts:o,text:i,signal:e}){return this.#a("chat.update",{tokenKind:"bot",signal:e,body:{channel:Nn(t,"channel id"),ts:ms(o,"message timestamp"),text:xu(i),parse:"none",link_names:!1}})}addReaction({channelId:t,messageTs:o,emojiName:i,signal:e,timeoutMs:a}){return this.#a("reactions.add",{tokenKind:"bot",signal:e,timeoutMs:a,retry:!1,body:{channel:Nn(t,"channel id"),timestamp:ms(o,"message timestamp"),name:ms(i,"reaction name")}})}removeReaction({channelId:t,messageTs:o,emojiName:i,signal:e,timeoutMs:a}){return this.#a("reactions.remove",{tokenKind:"bot",signal:e,timeoutMs:a,retry:!1,body:{channel:Nn(t,"channel id"),timestamp:ms(o,"message timestamp"),name:ms(i,"reaction name")}})}startStream({channelId:t,threadTs:o,recipientTeamId:i,recipientUserId:e,markdownText:a,signal:A}){return this.#a("chat.startStream",{tokenKind:"bot",signal:A,body:{channel:Nn(t,"channel id"),thread_ts:ms(o,"thread timestamp"),...i?{recipient_team_id:Nn(i,"team id")}:{},...e?{recipient_user_id:Nn(e,"user id")}:{},...Ss(a)?{markdown_text:xu(a)}:{}}})}appendStream({channelId:t,ts:o,markdownText:i,signal:e}){return this.#a("chat.appendStream",{tokenKind:"bot",signal:e,body:{channel:Nn(t,"channel id"),ts:ms(o,"stream timestamp"),markdown_text:xu(i,{trim:!1})}})}stopStream({channelId:t,ts:o,markdownText:i,signal:e}){return this.#a("chat.stopStream",{tokenKind:"bot",signal:e,body:{channel:Nn(t,"channel id"),ts:ms(o,"stream timestamp"),...Ss(i)?{markdown_text:xu(i,{trim:!1})}:{}}})}async uploadFile({channelId:t,threadTs:o,file:i,signal:e}){if(!i||typeof i!="object"||typeof i.fileName!="string"||!i.fileName||!Buffer.isBuffer(i.bytes))throw new TypeError("A Slack file is required");if(e?.aborted)throw Ku(e);let a=J5(e,this.#o),A;try{A=await this.#a("files.getUploadURLExternal",{tokenKind:"bot",signal:a,timeoutMs:this.#o,body:{filename:i.fileName,length:i.bytes.byteLength}})}catch(I){throw e?.aborted?Ku(e):ml(I)}let r,s;try{r=ms(A?.file_id,"file id"),s=bGe(A?.upload_url)}catch(I){throw ml(I)}let g;try{g=await this.#t(s,{method:"POST",headers:{"content-type":i.mediaType??"application/octet-stream"},body:i.bytes,signal:a,redirect:"error"})}catch(I){throw e?.aborted?Ku(e):ml(I)}if(!Number.isInteger(g?.status))throw ml(new Error("Slack file upload returned an invalid response"));if(g.status!==200){await iG(g);let I=new Error(`Slack file upload failed with HTTP ${g.status}`);throw I.status=g.status,g.status===413?I.code="artifact-too-large":g.status===429?I.code="artifact-rate-limited":I.code="artifact-provider-rejected",I}await iG(g);let c;try{c={files:[{id:r,title:i.fileName}],channel_id:Nn(t,"channel id"),...o?{thread_ts:ms(o,"thread timestamp")}:{}}}catch(I){throw ml(I)}if(a.aborted)throw e?.aborted?Ku(e):ml(a.reason);try{let I=await this.#a("files.completeUploadExternal",{tokenKind:"bot",signal:a,timeoutMs:this.#o,retry:!1,body:c});if(!Array.isArray(I?.files)||!I.files.some(d=>Ss(d?.id)===r))throw new Error("Slack file completion did not confirm the uploaded file");return I}catch(I){throw e?.aborted?Ku(e):I?.code==="slack-missing-scope"?ml(I):wGe(I)}}async downloadFile({url:t,signal:o,maxBytes:i}){return this.#i({url:t,signal:o,maxBytes:i,stream:!1})}async downloadFileStream({url:t,signal:o}){return this.#i({url:t,signal:o,stream:!0})}async#i({url:t,signal:o,maxBytes:i,stream:e}){if(!this.#e)throw new TypeError("Slack bot token is required for file download");let a=OGe(t),r={fetchImpl:async(s,g)=>{let c=await this.#t(s,g);if(!DGe(c?.status))return c;let I=MGe(c,s);if(this.#l&&!this.#l.has("files:read")||TGe(I))throw await iG(c),new ut("slack-file-access-required","Slack redirected a private file request to the workspace because file access was not granted",w("Slack \u672A\u6388\u6743\u673A\u5668\u4EBA\u8BFB\u53D6\u8BE5\u6587\u4EF6\u3002\u8BF7\u4E3A\u5E94\u7528\u6DFB\u52A0 files:read \u540E\u91CD\u65B0\u5B89\u88C5\uFF0C\u518D\u91CD\u65B0\u53D1\u9001\u56FE\u7247\u3002"));return c},headers:{authorization:`Bearer ${this.#e}`},signal:o,allowedHosts:QGe};return e?Yp(a,r):Do(a,{...r,maxBytes:i})}async#a(t,{tokenKind:o,body:i,signal:e,timeoutMs:a=15e3,retry:A=!0}){let r=o==="app"?this.#A:this.#e;if(!r)throw new TypeError(`Slack ${o} token is required for ${t}`);let s=t==="files.getUploadURLExternal"||t==="files.info",g;try{g=await this.#t(new URL(t,this.#r),{method:"POST",headers:{authorization:`Bearer ${r}`,"content-type":i===void 0||s?"application/x-www-form-urlencoded;charset=utf-8":"application/json;charset=utf-8","user-agent":"DeepSeek-Harness-dsh-im (https://github.com/xmanrui/dsh-im, 0.2.2)"},...i===void 0?{}:{body:s?new URLSearchParams(i).toString():JSON.stringify(i)},signal:J5(e,a),redirect:"error"})}catch(I){throw I?.name==="AbortError"||I?.name==="TimeoutError"?I:new Error(`Slack ${t} transport failed`)}if(o==="bot"){let I=_Ge(g);I&&(this.#l=I)}let c;try{c=await g.json()}catch{throw new Error(`Slack ${t} returned invalid JSON`)}if(g.status===429&&A){let I=Number(g.headers.get("retry-after"))||1;return await NGe(Math.min(1e4,Math.max(100,I*1e3)),e),this.#a(t,{tokenKind:o,body:i,signal:e,timeoutMs:a,retry:!1})}if(!g.ok||c?.ok!==!0){let I=RGe(t,c,o);throw I.status=g.status,I}return c}};async function W5({botToken:n,appToken:t},o={}){if(!z5(n)){let r=new TypeError(w("Slack Bot Token \u5FC5\u987B\u4EE5 xoxb- \u5F00\u5934\u3002"));throw r.code="slack-invalid-bot-token",r}if(!V5(t)){let r=new TypeError(w("Slack App Token \u5FC5\u987B\u4EE5 xapp- \u5F00\u5934\u3002"));throw r.code="slack-invalid-app-token",r}let i=new ju({botToken:n,appToken:t,...o}),[e,a]=await Promise.all([i.authTest(),i.openConnection()]);if(!e?.team_id||!e?.user_id||!e?.bot_id)throw new Error(w("Slack Bot Token \u6CA1\u6709\u8FD4\u56DE\u5B8C\u6574\u7684\u673A\u5668\u4EBA\u8EAB\u4EFD\u3002"));let A;try{A=new URL(a?.url)}catch{A=null}if(!A||A.protocol!=="wss:"){let r=new Error(w("Slack App Token \u65E0\u6CD5\u521B\u5EFA Socket Mode \u8FDE\u63A5\uFF0C\u8BF7\u786E\u8BA4\u5DF2\u542F\u7528 Socket Mode \u548C connections:write\u3002"));throw r.code="slack-socket-mode",r}return{platformId:`${e.team_id}:${e.user_id}`,name:Ss(e.user)??"DeepSeek Harness",username:Ss(e.user),teamId:String(e.team_id),teamName:Ss(e.team)}}var oG=Object.freeze({key:"slack",label:"Slack",connectionLabel:" Socket Mode \u957F\u8FDE\u63A5",reactions:Object.freeze({processing:"eyes",success:"white_check_mark",error:"x"})}),WS=class extends ns{constructor(t){super({descriptor:oG,...t})}};function Ng(n){return typeof n=="string"&&n.trim()?n.trim():null}function ZS(n,t){return Object.freeze({code:n,message:t})}var Ju=class{#e;#A;#t;#r;#l;#o;#i=new Map;#a=new Map;#n=new Map;#s=0;#p=!1;constructor({credentials:t,configStore:o,inspectCredentials:i=W5,createRuntime:e,deleteState:a=async()=>{},logger:A=console}){if(!t||typeof t.resolve!="function"||typeof t.set!="function"||typeof t.unset!="function")throw new TypeError("Slack requires the DSH credential provider");if(!o||typeof o.list!="function"||typeof o.save!="function"||typeof o.remove!="function")throw new TypeError("Slack requires a config store");if(typeof i!="function"||typeof e!="function")throw new TypeError("Slack controller dependencies are incomplete");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A}async initialize(){if(this.#p)return this.status();for(let t of this.#A.list())await this.#h(t.botId,async()=>{if(this.#p||this.#i.get(t.botId)?.status?.ready)return;let o=await this.#I(t);if(!o){this.#a.set(t.botId,ZS("missing-token",w("Slack\u673A\u5668\u4EBA\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u79FB\u9664\u540E\u91CD\u65B0\u63A5\u5165\u3002")));return}try{await this.#c(t,o),this.#a.delete(t.botId)}catch(i){this.#a.set(t.botId,ZS("connection-failed",w("Slack Socket Mode \u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5\u3002"))),this.#o.warn?.(`[dsh-im:slack] bot ${t.botId} failed to initialize:`,i)}finally{this.#C()}});return this.status()}async bindCredentials({botToken:t,appToken:o}={}){if(this.#p)throw new Error("Slack controller is closed");let i=Ng(t),e=Ng(o);if(!i||!e)throw new TypeError("Slack Bot Token and App Token are required");let a=await this.#t({botToken:i,appToken:e}),A=Ng(a?.platformId),r=Ng(a?.name);if(!A||!r)throw new Error("Slack returned an invalid bot identity");let s=rG(A);return await this.#h(s.botId,async()=>{if(this.#p)throw new Error("Slack controller is closed");let g=this.#A.getByPlatformId(A),c=await this.#e.resolve(s.botTokenRef).catch(()=>{}),I=await this.#e.resolve(s.appTokenRef).catch(()=>{}),d={...s,platformId:A,name:r,username:Ng(a.username),teamId:Ng(a.teamId),teamName:Ng(a.teamName),createdAt:g?.createdAt??new Date().toISOString(),connectedAt:new Date().toISOString()};try{await this.#e.set(s.botTokenRef,i),await this.#e.set(s.appTokenRef,e),await this.#A.save(d)}catch(B){throw await Promise.all([this.#d(s.botTokenRef,c),this.#d(s.appTokenRef,I)]),B}try{await this.#c(d,{botToken:i,appToken:e}),this.#a.delete(s.botId)}catch(B){this.#a.set(s.botId,ZS("connection-failed",w("Slack\u673A\u5668\u4EBA\u5DF2\u63A5\u5165\uFF0CSocket Mode \u8FDE\u63A5\u6682\u672A\u5C31\u7EEA\u3002"))),this.#o.warn?.(`[dsh-im:slack] bot ${s.botId} credential connection failed:`,B)}this.#C()}),this.status()}async reconnectBot(t){let o=this.#A.get(t);if(!o)throw new Error("Unknown Slack bot");return await this.#h(t,async()=>{let i=await this.#I(o);if(!i)throw new Error("Slack bot credentials are missing");try{await this.#c(o,i),this.#a.delete(t)}catch(e){throw this.#a.set(t,ZS("connection-failed",w("Slack Socket Mode \u8FDE\u63A5\u4ECD\u672A\u5C31\u7EEA\uFF0C\u8BF7\u68C0\u67E5\u4E24\u4E2A Token\u3002"))),e}finally{this.#C()}}),this.status()}async sendConnectionTest(t){let o=this.#A.get(t);if(!o)throw new Error("Unknown Slack bot");return this.#h(t,async()=>{let i=this.#i.get(t);if(!i?.status?.ready||typeof i.sendConnectionTest!="function"){let e=new Error(w("Slack\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5"));throw e.code="test-target-unavailable",e}return await i.sendConnectionTest(ka(`${o.name}\uFF08${aG(o.platformId)}\uFF09`,w("Slack\u673A\u5668\u4EBA"))),{sent:!0}})}async sendProactiveText(t,o,i,e={}){if(!this.#A.get(t))throw new Error("Unknown Slack bot");return this.#h(t,async()=>{let A=this.#i.get(t);if(!A?.status?.ready||typeof A.sendProactiveText!="function"){let r=new Error(w("Slack\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5"));throw r.code="bot-not-connected",r}return A.sendProactiveText(o,i,e)})}async deleteBot(t){let o=this.#A.get(t);if(!o)throw new Error("Unknown Slack bot");return await this.#h(t,async()=>{let i=await this.#e.resolve(o.botTokenRef).catch(()=>{}),e=await this.#e.resolve(o.appTokenRef).catch(()=>{});await this.#g(t);try{await this.#e.unset(o.botTokenRef),await this.#e.unset(o.appTokenRef),await this.#A.remove(t)}catch(a){throw await Promise.all([this.#d(o.botTokenRef,i),this.#d(o.appTokenRef,e)]),i?.value&&e?.value&&await this.#c(o,{botToken:i.value,appToken:e.value}).catch(()=>{}),new Error("Unable to remove the Slack bot safely.",{cause:a})}await this.#l({botId:t,config:o}).catch(a=>{this.#o.warn?.(`[dsh-im:slack] bot ${t} state cleanup failed:`,a)}),this.#a.delete(t),this.#C()}),this.status()}status(){let t=this.#A.list().map(i=>{let e=this.#i.get(i.botId)?.status??null,a=e?.ready===!0&&e.connectionState==="connected"&&e.harnessReachable===!0,A=a?"connected":e?.connectionState==="connecting"?"connecting":this.#a.has(i.botId)||e?.connectionState==="failed"?"error":"offline";return{botId:i.botId,state:A,connected:a,configured:!0,bot:{name:i.name,username:i.username,teamName:i.teamName,idMasked:aG(i.platformId)},health:{status:a?"healthy":A==="error"?"error":"offline",summary:a?w(`Slack${oG.connectionLabel}\u8FD0\u884C\u6B63\u5E38`):A==="error"?w("Slack\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5"):w("Slack\u8FDE\u63A5\u5F53\u524D\u79BB\u7EBF"),lastCheckedAt:e?.lastCheckedAt??null,lastConnectedAt:e?.lastConnectedAt??null},stats:{messagesReceived:e?.messagesReceived??0,messagesReplied:e?.messagesReplied??0},lastMessageError:Xr(e?.lastMessageError),error:structuredClone(this.#a.get(i.botId)??null)}}),o=t.filter(i=>i.connected).length;return{schemaVersion:1,revision:this.#s,state:t.length===0?"disconnected":o===t.length?"connected":o>0?"degraded":"offline",bots:t,totals:{configured:t.length,connected:o}}}async close(){this.#p||(this.#p=!0,await Promise.allSettled([...this.#n.values()]),await Promise.allSettled([...this.#i.keys()].map(t=>this.#g(t))))}async#c(t,{botToken:o,appToken:i}){if(this.#p)throw new Error("Slack controller is closed");if(await this.#g(t.botId),this.#p)throw new Error("Slack controller is closed");let e=await this.#r({botId:t.botId,config:t,botToken:o,appToken:i});if(!e||typeof e.start!="function"||typeof e.stop!="function")throw new TypeError("createRuntime returned an invalid Slack runtime");this.#i.set(t.botId,e);try{await e.start()}catch(a){throw await e.stop().catch(()=>{}),this.#i.delete(t.botId),a}}async#g(t){let o=this.#i.get(t);this.#i.delete(t),await o?.stop().catch(i=>{this.#o.warn?.(`[dsh-im:slack] bot ${t} failed to stop cleanly:`,i)})}async#I(t){let[o,i]=await Promise.all([this.#e.resolve(t.botTokenRef).catch(()=>{}),this.#e.resolve(t.appTokenRef).catch(()=>{})]),e=Ng(o?.value),a=Ng(i?.value);return e&&a?{botToken:e,appToken:a}:null}async#d(t,o){o?.value?await this.#e.set(t,o.value).catch(()=>{}):await this.#e.unset(t).catch(()=>{})}#h(t,o){let a=(this.#n.get(t)??Promise.resolve()).catch(()=>{}).then(o).finally(()=>{this.#n.get(t)===a&&this.#n.delete(t)});return this.#n.set(t,a),a}#C(){this.#s+=1}};var XS=class extends ur{constructor(t){super({...t,rpcIdPrefix:"slack",logPrefix:"dsh-slack"})}};var Z5=Object.freeze([1e3,3e3,5e3,1e4,3e4]),sG=38e3,X5=11e3,eZ=new Set(["image/jpeg","image/png","image/webp","image/gif"]);function nG(n,t,o){if(typeof n.addEventListener=="function")n.addEventListener(t,o);else if(typeof n.on=="function")n.on(t,o);else throw new TypeError("Slack WebSocket does not support events")}function kGe(n){let t=n?.data??n;return typeof t=="string"?t:Buffer.isBuffer(t)?t.toString("utf8"):t instanceof ArrayBuffer?Buffer.from(t).toString("utf8"):ArrayBuffer.isView(t)?Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("utf8"):null}function vGe(n){let t=new URL(n);if(t.protocol!=="wss:")throw new Error("Slack returned an insecure Socket Mode URL");return t.href}function PGe(n){return typeof n=="string"?n.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">"):""}function GGe(n,t){return PGe(n).replace(new RegExp(`<@${t}>`,"gi"),"").trim()}function gG(n){return typeof n?.url_private_download=="string"&&n.url_private_download?n.url_private_download:n?.url_private}function FGe(n,t){let o=typeof n?.mimetype=="string"?n.mimetype.toLowerCase():"",i=gG(n);return!eZ.has(o)||typeof i!="string"||!i?null:{name:typeof n.name=="string"?n.name:void 0,mediaType:o,size:Number.isSafeInteger(n.size)&&n.size>=0?n.size:void 0,load:e=>t(i,e)}}function LGe(n,t,o){let i=typeof n?.mimetype=="string"&&n.mimetype?n.mimetype.toLowerCase():void 0,e=gG(n);if(eZ.has(i))return null;let a=n?.file_access==="check_file_info"&&typeof n?.id=="string"&&n.id;return(typeof e!="string"||!e)&&!a?null:{name:typeof n?.name=="string"&&n.name?n.name:typeof n?.title=="string"&&n.title?n.title:a?n.id:"slack-file",...i?{mediaType:i}:{},size:Number.isSafeInteger(n?.size)&&n.size>=0?n.size:void 0,load:async({signal:A}={})=>{if(!a)return t(e,{signal:A});let r=await o(n.id,{signal:A}),s=gG(r);if(typeof s!="string"||!s)throw new Error("Slack files.info returned no downloadable URL");let g=await t(s,{signal:A}),c=typeof r?.name=="string"&&r.name?r.name:typeof r?.title=="string"&&r.title?r.title:n.id,I=typeof r?.mimetype=="string"&&r.mimetype?r.mimetype.toLowerCase():void 0;return Buffer.isBuffer(g)||g instanceof Uint8Array?{data:g,name:c,...I?{mediaType:I}:{}}:{...g,name:c,...I?{mediaType:I}:{}}}}}function UGe(n,t,{loadFile:o=async()=>{throw new Error("Slack file downloader is unavailable")},loadFileStream:i=o,loadFileInfo:e=async()=>{throw new Error("Slack file metadata loader is unavailable")}}={}){let a=n?.event;if(!a||!n?.event_id||!a.channel||!a.user||!a.ts)return null;let A=a.type==="message"&&a.channel_type==="im",r=a.type==="app_mention";if(!A&&!r||a.subtype&&a.subtype!=="file_share"||a.bot_id||a.app_id)return null;let s=String(a.thread_ts??a.ts);return{messageId:String(n.event_id),senderId:String(a.user),senderIsBot:String(a.user)===String(t),kind:A?"direct":"group",conversationId:A?String(a.channel):`${a.channel}:${s}`,content:GGe(a.text??"",t),plainText:!Array.isArray(a.files)||a.files.length===0,images:Array.isArray(a.files)?a.files.map(g=>FGe(g,o)).filter(Boolean):[],files:Array.isArray(a.files)?a.files.map(g=>LGe(g,i,e)).filter(Boolean):[],addressed:A||r,reactionTarget:{channelId:String(a.channel),messageTs:String(a.ts)},replyTarget:{channelId:String(a.channel),threadTs:s,recipientUserId:String(a.user),recipientTeamId:String(a.user_team??n.team_id??"")},connectionTestTarget:{channelId:String(a.channel)}}}function HGe(n){if(typeof n!="string")return!1;let t="__DSH_IM_TOOL_NAME__",o=w("\u6B63\u5728\u4F7F\u7528{name}\u2026",{name:t}),i=o.indexOf(t);if(i<0)return!1;let e=o.slice(0,i),a=o.slice(i+t.length),A=n.trim();return A.startsWith(e)&&A.endsWith(a)&&A.length>e.length+a.length}async function $5(n,t,o,i,e){if(i)for(let a=0;a{let y=ss(Q,sG)[0]??"";if(!y||!y.startsWith(A))return;let m=y.slice(A.length);m&&(await $5(n,t,a,m,o),A=y)},f=()=>{I||c||s!==null||g||!r||(s=setTimeout(()=>{s=null;let Q=r;r="",g=B(Q).catch(y=>{c=!0,i.warn?.("[dsh-im:slack] streaming append failed:",y)}).finally(()=>{g=null,f()})},350),s?.unref?.())};return{messageId:a,get providerMessageIds(){return[...d]},update(Q){I||c||typeof Q!="string"||!Q.trim()||HGe(Q)||(r=Q,f())},async finish(Q){if(I)throw new Error("Slack message stream is already closed");I=!0,s!==null&&clearTimeout(s),s=null,r="",await g?.catch(()=>{});let y=ss(Q,sG),m=y[0]??w("\u5904\u7406\u5B8C\u6210\u3002");!c&&m.startsWith(A)?(await $5(n,t,a,m.slice(A.length),o),await n.stopStream({channelId:t.channelId,ts:a,signal:o})):(await n.stopStream({channelId:t.channelId,ts:a,signal:o}).catch(()=>{}),await n.updateMessage({channelId:t.channelId,ts:a,text:m,signal:o}));for(let _ of y.slice(1)){let T=await n.postMessage({channelId:t.channelId,threadTs:t.threadTs,text:_,signal:o});typeof T?.ts=="string"&&T.ts&&d.push(T.ts)}},cancel(){I=!0,r="",s!==null&&clearTimeout(s),s=null,n.stopStream({channelId:t.channelId,ts:a,signal:o}).catch(()=>{})}}}var cG=class{#e;#A;#t;constructor({api:t,signal:o,logger:i}){this.#e=t,this.#A=o,this.#t=i}async sendText(t,o){let i=ss(o,sG),e=[];for(let a of i){let A=await this.#e.postMessage({channelId:t.channelId,threadTs:t.threadTs,text:a,signal:this.#A});typeof A?.ts=="string"&&A.ts&&e.push(A.ts)}return{providerMessageIds:e}}async addReaction(t,o,{signal:i}={}){let e=String(o??"").trim();return await this.#e.addReaction({channelId:t.channelId,messageTs:t.messageTs,emojiName:e,signal:i??this.#A}),e}removeReaction(t,o,{signal:i}={}){return this.#e.removeReaction({channelId:t.channelId,messageTs:t.messageTs,emojiName:o,signal:i??this.#A})}openStream(t){return KGe({api:this.#e,target:t,signal:this.#A,logger:this.#t})}sendFile(t,o){return this.#e.uploadFile({channelId:t.channelId,threadTs:t.threadTs,file:o,signal:this.#A})}};function xGe(){return{startedAt:null,ready:!1,connectionState:"idle",harnessReachable:!1,lastCheckedAt:null,lastConnectedAt:null,lastError:null,...io()}}var qu=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c;#g=xGe();#I=null;#d=null;#h=null;#C=null;#u=null;#B=null;#f=0;#Q=0;#S=!0;#y=null;constructor({config:t,botToken:o,appToken:i,harness:e,state:a,contextEnhancement:A,accessPolicy:r,logger:s=console,replyTimeoutMs:g=6e5,connectTimeoutMs:c=2e4,createApi:I=B=>new ju(B),createWebSocket:d=B=>new WebSocket(B)}){if(!t||!o||!i||!e||!a)throw new TypeError("SlackRuntime requires config, both tokens, Harness, and state");if(typeof d!="function")throw new TypeError("SlackRuntime requires WebSocket");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#s=c,this.#p=I,this.#c=d}get status(){return structuredClone(this.#g)}async sendConnectionTest(t){if(!this.#g.ready||!this.#d){let o=new Error("Slack bot is not connected");throw o.code="test-target-unavailable",o}return this.#d.sendConnectionTest(t)}async sendProactiveText(t,o,i={}){if(!this.#g.ready||!this.#d){let A=new Error("Slack bot is not connected");throw A.code="bot-not-connected",A}let e=typeof t?.route?.channelId=="string"?t.route.channelId.trim():"",a=typeof t?.route?.threadTs=="string"?t.route.threadTs.trim():"";if(!e||t?.kind!=="conversation"&&t?.kind!=="thread"||t.kind==="thread"&&!a||t.kind==="conversation"&&a){let A=new TypeError("Invalid Slack proactive delivery target");throw A.code="invalid-target",A}return this.#d.sendProactiveText({channelId:e,...a?{threadTs:a}:{}},o,i)}async start(){return this.#g.ready&&this.#C?this.status:this.#y?this.#y:(this.#y=this.#m().finally(()=>{this.#y=null}),this.#y)}async#m(){await this.stop(),this.#S=!1,this.#f=0,this.#g.startedAt=new Date().toISOString(),this.#g.connectionState="connecting",this.#g.lastError=null,await this.#r.ensureRunning(),this.#g.harnessReachable=!0;let t=new AbortController;this.#h=t;let o=this.#p({botToken:this.#A,appToken:this.#t});this.#I=o;try{let i=await o.authTest({signal:t.signal});if(`${i?.team_id}:${i?.user_id}`!==this.#e.platformId)throw new Error("Slack Bot Token identity does not match the saved bot");let e=new cG({api:o,signal:t.signal,logger:this.#a});this.#d=new WS({bot:e,harness:this.#r,state:this.#l,contextEnhancement:this.#o,accessPolicy:this.#i,status:this.#g,logger:this.#a,replyTimeoutMs:this.#n,signal:t.signal});let a;try{await Promise.race([this.#D(),new Promise((A,r)=>{a=setTimeout(()=>r(new Error("Slack Socket Mode did not become ready in time")),this.#s),a?.unref?.()})])}finally{clearTimeout(a)}return this.status}catch(i){throw this.#g.ready=!1,this.#g.connectionState="failed",this.#g.lastError=i?.message??String(i),await this.stop(),i}}async#D(){if(this.#S)throw new Error("Slack runtime is stopped");let t=await this.#I.openConnection({signal:this.#h?.signal});return this.#E(t?.url)}#E(t){if(this.#S)return Promise.reject(new Error("Slack runtime is stopped"));let o=++this.#Q,i=this.#c(vGe(t));this.#C=i;let e=!1;return new Promise((a,A)=>{let r=s=>{if(e||o!==this.#Q)return;e=!0,this.#u=s?.connection_info?.app_id??null,this.#f=0;let g=Date.now();this.#g.ready=!0,this.#g.connectionState="connected",this.#g.lastCheckedAt=g,this.#g.lastConnectedAt=g,this.#g.lastError=null,a()};nG(i,"message",s=>{if(o!==this.#Q||this.#S)return;let g=kGe(s);if(!g)return;let c;try{c=JSON.parse(g)}catch{this.#a.warn?.("[dsh-im:slack] ignored malformed Socket Mode JSON");return}if(c.type==="hello"){r(c);return}if(c.envelope_id&&i.readyState===1&&(i.send(JSON.stringify({envelope_id:c.envelope_id})),this.#g.lastCheckedAt=Date.now()),c.type==="disconnect"){i.close(4e3,"Slack requested reconnect");return}if(c.type!=="events_api"||c.payload?.type!=="event_callback"||this.#u&&c.payload.api_app_id&&c.payload.api_app_id!==this.#u)return;let I=UGe(c.payload,this.#e.platformId.split(":")[1],{loadFile:(B,f)=>this.#I.downloadFile({url:B,...f}),loadFileStream:(B,f)=>this.#I.downloadFileStream({url:B,...f}),loadFileInfo:(B,f)=>this.#I.fileInfo({fileId:B,...f})}),d=this.#d;I&&d&&d.accept(I).catch(B=>{o!==this.#Q||this.#S||this.#a.error?.(`[dsh-im:slack] bot ${this.#e.botId} message handling failed:`,B)})}),nG(i,"close",(s={})=>{if(o!==this.#Q)return;if(this.#C===i&&(this.#C=null),this.#S){e||A(new DOMException("Stopped","AbortError"));return}let g=Number(s.code)||0,c=new Error(`Slack Socket Mode closed (${g||"unknown"})`);this.#g.ready=!1,this.#g.connectionState="connecting",this.#g.lastError=c.message,e||(e=!0,A(c)),this.#N()}),nG(i,"error",()=>{o!==this.#Q||this.#S||(this.#g.lastError="Slack Socket Mode WebSocket error")})})}#N(){if(this.#S||this.#B!==null)return;let t=Z5[Math.min(this.#f,Z5.length-1)];this.#f+=1,this.#B=setTimeout(()=>{this.#B=null,this.#D().catch(o=>{this.#S||(this.#a.warn?.("[dsh-im:slack] Socket Mode reconnect failed:",o),this.#N())})},t),this.#B?.unref?.()}async stop(){this.#S=!0,this.#Q+=1,this.#h?.abort(),this.#h=null,this.#B!==null&&clearTimeout(this.#B),this.#B=null;let t=this.#C,o=this.#d;this.#C=null,this.#d=null,this.#I=null,this.#u=null;try{t&&t.readyState<2&&t.close(1e3,"Plugin stopped")}catch(i){this.#a.warn?.(`[dsh-im:slack] bot ${this.#e.botId} failed to close Socket Mode:`,i)}return await Promise.race([o?.waitForIdle()??Promise.resolve(),new Promise(i=>setTimeout(i,2e3))]),this.#g.ready=!1,this.#g.connectionState="idle",this.status}};var $S=class extends gs{};async function IG(n,t={},o={}){if(!n?.credentials)throw new TypeError("dsh-im slack requires ctx.credentials");let i=aa(n,t),e=o.ConfigStore??VS,a=o.StateStore??$S,A=o.HarnessClient??XS,r=o.Controller??Ju,s=o.Runtime??qu,g=o.createConnectionSupervisor??jp,c=typeof n.logger=="function"?n.logger("dsh-im:slack"):n.logger??console,I=()=>La(n),d=X_(t,"slack"),B=await new e(d.config).load(),f=AZ(t.workspace??process.cwd()),Q=o.WorkspaceStore??ra,y=o.workspaces??await new Q(d.workspaces,{defaultWorkspace:f}).load(),m=B.list();await y.reconcile(m.map(N=>N.botId)),await Promise.all(m.map(N=>y.ensure(N.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("slack",N)})));let _=typeof B.remove=="function"?Ha(B,{workspaces:y}):B,T=new Map,R=N=>AZ(d.bots,N,"state.json"),K=async N=>{let k=T.get(N);return k||(k=await new a(R(N)).load(),T.set(N,k)),k},L=ja(n,o.commandExecutor),{controlExecutor:U,sessionMaintenanceExecutor:z,fileIngressExecutor:q}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),x=new A({...i,workspace:f,autostart:!1,dshBin:t.dshBin??"dsh",...L?{commandExecutor:L}:{},...U?{controlExecutor:U}:{},...z?{sessionMaintenanceExecutor:z}:{},...q?{fileIngressExecutor:q}:{}}),G=new r({credentials:n.credentials,configStore:_,logger:c,...o.inspectCredentials?{inspectCredentials:o.inspectCredentials}:{},createRuntime:async({botId:N,config:k,botToken:J,appToken:$})=>{let ie=await K(N);await y.ensure(N,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("slack",k)});let pe=Ka(x,{botId:N,workspaces:y,state:ie,agentPresetCatalog:I});return new s({config:k,botToken:J,appToken:$,harness:pe.harness,state:pe.state,contextEnhancement:{botId:N,getSettings:()=>y.contextEnhancementFor(N)},accessPolicy:qa(y,N,{channel:"slack",config:k}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??2e4,logger:{error:(...se)=>c.error?.(`[${N}]`,...se),warn:(...se)=>c.warn?.(`[${N}]`,...se),info:(...se)=>c.info?.(`[${N}]`,...se),debug:(...se)=>c.debug?.(`[${N}]`,...se)}})},deleteState:async({botId:N})=>{let k=T.get(N);if(T.delete(N),k&&typeof k.remove=="function")await k.remove();else try{await YGe(R(N))}catch(J){if(J?.code!=="ENOENT")throw J}}}),V=xa(G,{workspaces:y,stateFor:K,agentPresetCatalog:I}),F=g({channel:"slack",controller:V,harness:x,logger:c,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:V,deliveryAdapter:Ya({channel:"slack",workspaces:y,coreController:G,stateFor:K}),ready:F.ready,async close(){await F.close(),await V.close(),x.stopManagedProcess()}}}var rZ="/slack",ma=Object.freeze({status:"connection.status",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va}),aZ=Object.freeze(Object.values(ma)),jGe=new Set(["token","botToken","appToken","botTokenRef","appTokenRef","tokenRef","platformId","secret","secretRef"]);function pG(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function ew(n,t){return pG(n)&&Object.keys(n).every(o=>t.includes(o))}function tZ(n){return typeof n=="string"&&/^slack_[a-f0-9]{24}$/.test(n)}function JGe(n){return typeof n=="string"&&/^xoxb-[A-Za-z0-9-]{16,}$/.test(n.trim())&&n.length<=4096}function qGe(n){return typeof n=="string"&&/^xapp-[A-Za-z0-9-]{16,}$/.test(n.trim())&&n.length<=4096}function zGe(n,t){return pG(t)?n===ma.status?ew(t,[])?null:"connection.status does not accept fields.":n===ma.bindCredentials?ew(t,["botToken","appToken"])&&JGe(t.botToken)&&qGe(t.appToken)?null:"bot.bind-credentials requires xoxb Bot Token and xapp App Token.":n===ma.reconnectBot?ew(t,["botId","sendTest"])&&tZ(t.botId)&&(t.sendTest===void 0||typeof t.sendTest=="boolean")?null:"bot.reconnect requires a botId.":n===ma.deleteBot?ew(t,["botId","confirm"])&&tZ(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===ma.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===ma.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===ma.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===ma.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Unknown Slack endpoint.":"Payload must be an object."}function lG(n){if(Array.isArray(n))return n.map(lG);if(!pG(n))return n;let t={};for(let[o,i]of Object.entries(n))jGe.has(o)||(t[o]=lG(i));return t}function VGe(n){let t=Xa(n);return t||(n?.code==="slack-invalid-bot-token"?{code:"invalid-bot-token",message:"Slack Bot Token \u65E0\u6548\uFF0C\u8BF7\u786E\u8BA4\u4F7F\u7528\u4EE5 xoxb- \u5F00\u5934\u7684\u4EE4\u724C\u3002"}:n?.code==="slack-invalid-app-token"?{code:"invalid-app-token",message:"Slack App Token \u65E0\u6548\uFF0C\u8BF7\u786E\u8BA4\u4F7F\u7528\u4EE5 xapp- \u5F00\u5934\u7684\u4EE4\u724C\u3002"}:n?.code==="slack-missing-scope"?{code:"missing-scope",message:"Slack \u5E94\u7528\u6743\u9650\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u91CD\u65B0\u5BFC\u5165 Manifest \u5E76\u5B89\u88C5\u5230\u5DE5\u4F5C\u533A\u3002"}:n?.code==="slack-socket-mode"?{code:"socket-mode-unavailable",message:n.message}:{code:"slack-operation-failed",message:"Slack \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"})}function iZ(n){for(let t of["status","bindCredentials","reconnectBot","deleteBot"])if(typeof n?.[t]!="function")throw new TypeError(`A complete Slack controller is required (${t})`);return async(t,o,i)=>{if(i?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!aZ.includes(t))return{ok:!1,error:{code:"bad-request",message:"Unknown Slack endpoint."}};let e=zGe(t,o);if(e)return{ok:!1,error:{code:"bad-request",message:e}};try{let a;if(t===ma.status)a=await n.status();else if(t===ma.bindCredentials)a=await n.bindCredentials(o);else if(t===ma.reconnectBot){if(a=await n.reconnectBot(o.botId),i?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(o.sendTest===!0){let A=null;try{if(a?.bots?.find(r=>r?.botId===o.botId)?.connected!==!0){let r=new Error("Bot is not connected");throw r.code="test-target-unavailable",r}if(typeof n.sendConnectionTest!="function"){let r=new Error("Connection test is unavailable");throw r.code="test-target-unavailable",r}await n.sendConnectionTest(o.botId)}catch(r){A=r}a={...a,testMessage:or(A)}}}else if(t===ma.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");a=await n.updateWorkspace(o.botId,o.workspace)}else if(t===ma.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");a=await n.updateContextEnhancement(o.botId,o.config)}else if(t===ma.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");a=await n.updateAccessPolicy(o.botId,o.policy)}else if(t===ma.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");a=await n.updateAgentPreset(o.botId,o.agentPreset)}else a=await n.deleteBot(o.botId);return i?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:lG(a)}}catch(a){return i?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:VGe(a)}}}}function Aw(n,t,o){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(rZ,iZ(t),{authority:fr(o)})}async function oZ(n,t={}){if(t?.controller)return Aw(n,t.controller,t.rpcAuthority);let o=await IG(n,t,t.internals??{}),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=Aw(n,o.controller,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close Slack bot connections"),e}var nZ=Object.freeze({botPrefix:"telegram",tokenRefPrefix:"DSH_TELEGRAM_BOT_TOKEN"}),dG=Object.freeze({compatible:"compatible",privateAllowlist:"private-allowlist"}),WGe=/^[1-9]\d{0,15}$/;function sZ(n){if(n===void 0)return Object.freeze([]);if(!Array.isArray(n))throw new TypeError("allowedUsers must be an array of numeric Telegram User IDs");let t=n.map(o=>{let i=typeof o=="number"&&Number.isSafeInteger(o)?String(o):typeof o=="string"?o.trim():"";if(!WGe.test(i))throw new TypeError("allowedUsers contains an invalid Telegram User ID");return i});return Object.freeze([...new Set(t)])}function rw(n={}){if(!n||typeof n!="object"||Array.isArray(n))throw new TypeError("Telegram access policy must be an object");let t=n.accessMode??dG.compatible;if(!Object.values(dG).includes(t))throw new TypeError("Telegram accessMode must be compatible or private-allowlist");return Object.freeze({accessMode:t,allowedUsers:sZ(n.allowedUsers)})}function ZGe(n){let t=Object.hasOwn(n,"accessMode"),o=Object.hasOwn(n,"allowedUsers");if(!t&&!o)return{};try{let i=rw(n);return{...t?{accessMode:i.accessMode}:{},...o||t?{allowedUsers:i.allowedUsers}:{}}}catch{return null}}function gZ(n){return eC(n,nZ)}function cZ(n){return YQ(n,w("Telegram\u673A\u5668\u4EBA"))}var tw=class extends Kp{constructor(t){super(t,{channel:"Telegram",...nZ,normalizeBotExtension:ZGe})}async save(t){let o=t?.platformId?this.getByPlatformId(String(t.platformId)):null;return super.save({...o,...t})}};var aw=class extends ur{constructor(t){super({...t,rpcIdPrefix:"telegram",logPrefix:"dsh-telegram"})}};var XGe="https://api.telegram.org/",IZ=Object.freeze(["api.telegram.org"]),$Ge=12e4;function Rg(n){return typeof n=="string"&&n.trim()?n.trim():null}function lZ(n,t){let o=AbortSignal.timeout(t);return n?AbortSignal.any([n,o]):o}function hG(n){return n?.reason instanceof Error?n.reason:new DOMException("The operation was aborted","AbortError")}function eFe(n,t){if(!Number.isInteger(n)||n<1)throw new TypeError(`${t} must be a positive integer`);return n}function dZ(n,t){return t?.providerCode!==void 0&&(n.providerCode=t.providerCode),t?.retry_after!==void 0&&(n.retry_after=t.retry_after,n.retryAfter=t.retry_after),Number.isInteger(t?.status)&&(n.status=t.status),n}function EG(n){if(!n||typeof n!="object"||Array.isArray(n))throw new TypeError("A Telegram rich message is required");let t=["markdown","html","blocks"].filter(i=>n[i]!==void 0);if(t.length!==1)throw new TypeError("A Telegram rich message requires exactly one format");let o=t[0];if((o==="markdown"||o==="html")&&(typeof n[o]!="string"||!n[o].trim()))throw new TypeError("Telegram rich message text is invalid");if(o==="blocks"&&!Array.isArray(n.blocks))throw new TypeError("Telegram rich message blocks are invalid");return n}function AFe(n,t="document"){let o=Number(n?.providerCode),i=Number(n?.status),e=Rg(n?.message)??"",a="artifact-provider-rejected",A=`Telegram rejected the ${t}.`;o===401||o===403||i===401||i===403?(a="artifact-permission-required",A=`Telegram denied permission to send the ${t}.`):o===413||i===413||/(?:file|request|entity).{0,20}(?:too (?:big|large)|size limit)|too (?:big|large)/i.test(e)?(a="artifact-too-large",A=`The ${t} exceeds Telegram's size limit.`):o===429||i===429?(a="artifact-rate-limited",A=`Telegram rate-limited ${t} delivery.`):(o>=500||i>=500)&&(a="artifact-delivery-uncertain",A=`Telegram ${t} delivery result is uncertain.`);let r=new Error(A,{cause:n});return r.code=a,dZ(r,n)}function pZ(n,t="document"){let o=new Error(`Telegram ${t} delivery result is uncertain`,{cause:n});return o.code="artifact-delivery-uncertain",dZ(o,n)}function tFe(n){return typeof n=="string"&&/^\d{5,20}:[A-Za-z0-9_-]{20,}$/.test(n.trim())}var rFe=/^[a-z0-9_]{1,32}$/;function aFe(n){return!!n&&typeof n=="object"&&!Array.isArray(n)&&typeof n.command=="string"&&rFe.test(n.command)&&typeof n.description=="string"&&n.description.length>=1&&n.description.length<=256}var CG=Object.freeze({type:"commands"}),zu=class{#e;#A;#t;#r;#l;constructor({token:t,fetchImpl:o=fetch,FormDataImpl:i=globalThis.FormData,baseUrl:e=XGe,fileUploadTimeoutMs:a=$Ge}){if(!tFe(t))throw new TypeError("Telegram Bot Token is invalid");if(typeof o!="function")throw new TypeError("TelegramApi requires fetch");if(typeof i!="function")throw new TypeError("TelegramApi requires FormData");this.#e=t.trim(),this.#A=o,this.#t=i,this.#r=new URL(e),this.#l=eFe(a,"fileUploadTimeoutMs")}async getMe(t={}){return this.#a("getMe",{},t)}async getWebhookInfo(t={}){return this.#a("getWebhookInfo",{},t)}async getUpdates({offset:t,timeout:o=25,signal:i}={}){let e={timeout:o,limit:100,allowed_updates:["message"],...Number.isSafeInteger(t)?{offset:t}:{}};return this.#a("getUpdates",e,{signal:i,timeoutMs:Math.max(1e4,(o+10)*1e3)})}async getFile({fileId:t,signal:o}={}){let i=Rg(t);if(!i||!/^[A-Za-z0-9_-]{1,512}$/.test(i))throw new TypeError("Telegram file id is invalid");return this.#a("getFile",{file_id:i},{signal:o})}async downloadFile({fileId:t,signal:o,maxBytes:i}={}){let e=await this.#o(t,o);return Do(e,{fetchImpl:this.#A,signal:o,maxBytes:i,allowedHosts:IZ})}async downloadFileStream({fileId:t,signal:o}={}){let i=await this.#o(t,o);return Yp(i,{fetchImpl:this.#A,signal:o,allowedHosts:IZ})}async#o(t,o){let i=await this.getFile({fileId:t,signal:o}),e=Rg(i?.file_path);if(!e||e.startsWith("/")||e.includes("\\")||e.includes("?")||e.includes("#"))throw new Error("Telegram returned an invalid file path");let a;try{a=e.split("/").map(r=>decodeURIComponent(r))}catch{throw new Error("Telegram returned an invalid file path")}if(a.some(r=>!r||r==="."||r===".."))throw new Error("Telegram returned an invalid file path");let A=new URL(this.#r);return A.pathname=`/file/bot${this.#e}/${e}`,A}async sendMessage({chatId:t,text:o,replyToMessageId:i,messageThreadId:e,signal:a}){return this.#a("sendMessage",{chat_id:t,text:o,link_preview_options:{is_disabled:!0},...i?{reply_parameters:{message_id:i,allow_sending_without_reply:!0}}:{},...e?{message_thread_id:e}:{}},{signal:a})}async setMessageReaction({chatId:t,messageId:o,emoji:i,signal:e,timeoutMs:a}){let A=Rg(i);return this.#a("setMessageReaction",{chat_id:t,message_id:o,reaction:A?[{type:"emoji",emoji:A}]:[]},{signal:e,timeoutMs:a})}async sendRichMessage({chatId:t,richMessage:o,replyToMessageId:i,messageThreadId:e,signal:a}){return this.#a("sendRichMessage",{chat_id:t,rich_message:EG(o),...i?{reply_parameters:{message_id:i,allow_sending_without_reply:!0}}:{},...e?{message_thread_id:e}:{}},{signal:a})}async sendRichMessageDraft({chatId:t,draftId:o,richMessage:i,messageThreadId:e,signal:a}){if(!Number.isSafeInteger(o)||o===0)throw new TypeError("Telegram rich message draft id must be a non-zero integer");return this.#a("sendRichMessageDraft",{chat_id:t,draft_id:o,rich_message:EG(i),...e?{message_thread_id:e}:{}},{signal:a})}async sendDocument({chatId:t,file:o,replyToMessageId:i,messageThreadId:e,signal:a}){return this.#i("sendDocument","document","document",{chatId:t,file:o,replyToMessageId:i,messageThreadId:e,signal:a})}async sendPhoto({chatId:t,file:o,replyToMessageId:i,messageThreadId:e,signal:a}){return this.#i("sendPhoto","photo","photo",{chatId:t,file:o,replyToMessageId:i,messageThreadId:e,signal:a})}async#i(t,o,i,{chatId:e,file:a,replyToMessageId:A,messageThreadId:r,signal:s}){if(!a||typeof a!="object"||typeof a.fileName!="string"||!a.fileName||!Buffer.isBuffer(a.bytes))throw new TypeError(`A Telegram ${i} is required`);let g=new this.#t;if(g.append("chat_id",String(e)),g.append(o,new Blob([a.bytes],{type:a.mediaType??"application/octet-stream"}),a.fileName),A&&g.append("reply_parameters",JSON.stringify({message_id:A,allow_sending_without_reply:!0})),r&&g.append("message_thread_id",String(r)),s?.aborted)throw hG(s);let c=lZ(s,this.#l);try{return await this.#a(t,g,{signal:c,timeoutMs:this.#l,multipart:!0})}catch(I){throw s?.aborted?hG(s):I?.deliveryOutcome==="unknown"?pZ(I?.cause??I,i):I?.code?.startsWith?.("telegram-")?AFe(I,i):pZ(I,i)}}async editMessageText({chatId:t,messageId:o,text:i,richMessage:e,signal:a}){if(i===void 0==(e===void 0))throw new TypeError("Telegram message edit requires exactly one of text or richMessage");return this.#a("editMessageText",{chat_id:t,message_id:o,...i===void 0?{rich_message:EG(e)}:{text:i,link_preview_options:{is_disabled:!0}}},{signal:a})}async sendChatAction({chatId:t,messageThreadId:o,signal:i}){return this.#a("sendChatAction",{chat_id:t,action:"typing",...o?{message_thread_id:o}:{}},{signal:i})}async setMyCommands({commands:t,scope:o,languageCode:i,signal:e}={}){if(!Array.isArray(t)||t.length===0||t.some(a=>!aFe(a)))throw new TypeError("Telegram bot commands are invalid");return this.#a("setMyCommands",{commands:t,...o?{scope:o}:{},...Rg(i)?{language_code:Rg(i)}:{}},{signal:e})}async setChatMenuButton({menuButton:t=CG,signal:o}={}){if(!t||typeof t!="object"||Array.isArray(t))throw new TypeError("Telegram menu button is invalid");return this.#a("setChatMenuButton",{menu_button:t},{signal:o})}async#a(t,o,{signal:i,timeoutMs:e=15e3,multipart:a=!1}={}){if(i?.aborted)throw hG(i);let A=new URL(this.#r);A.pathname=`${A.pathname.replace(/\/$/,"")}/bot${this.#e}/${t}`;let r;try{r=await this.#A(A,{method:"POST",...a?{}:{headers:{"content-type":"application/json"}},body:a?o:JSON.stringify(o),signal:lZ(i,e),redirect:"error"})}catch(g){let c=new Error(`Telegram ${t} transport failed`,{cause:g});throw c.code=g?.name==="TimeoutError"?"telegram-timeout":g?.name==="AbortError"?"telegram-aborted-after-dispatch":"telegram-transport-error",c.deliveryOutcome="unknown",c}let s;try{s=await r.json()}catch{let g=new Error(`Telegram ${t} returned invalid JSON`);throw g.status=r?.status,g.code="telegram-response-invalid",g.deliveryOutcome="unknown",g}if(!r.ok||s?.ok!==!0){let g=Rg(s?.description),c=new Error(g??`Telegram ${t} failed`);c.code=Number.isInteger(s?.error_code)?`telegram-${s.error_code}`:"telegram-api-error",c.status=r.status,Number.isInteger(s?.error_code)&&(c.providerCode=s.error_code);let I=Number(s?.parameters?.retry_after);throw Number.isFinite(I)&&I>=0&&(c.retry_after=I,c.retryAfter=I),c}return s.result}};async function hZ(n,t={}){let i=await new zu({token:n,...t}).getMe();if(!i?.id||i?.is_bot!==!0)throw new Error("Telegram token does not belong to a bot");return{platformId:String(i.id),name:Rg([i.first_name,i.last_name].filter(Boolean).join(" "))??w("Telegram\u673A\u5668\u4EBA"),username:Rg(i.username)}}var uG=Object.freeze({key:"telegram",label:"Telegram",connectionLabel:" Bot API \u957F\u8F6E\u8BE2",reactions:Object.freeze({processing:"\u{1F440}",success:"\u{1F44D}",error:"\u{1F44E}"})}),iw=class extends ns{constructor(t){super({descriptor:uG,...t})}};var Vu=class extends xp{#e;constructor(t){super({...t,descriptor:uG,inspectToken:t.inspectToken??hZ,deriveIdentity:gZ,maskPlatformId:cZ}),this.#e=t.configStore}status(){let t=super.status();return{...t,bots:t.bots.map(o=>{let i=this.#e.get(o.botId),e=rw(i??{});return{...o,accessPolicy:e}})}}async setAccessPolicy(t,o){let i=rw(o);return this.updateBotConfig(t,e=>({...e,...i}))}};import{randomInt as lFe}from"node:crypto";import{EnvHttpProxyAgent as iFe,FormData as oFe,fetch as nFe}from"undici";var sFe=4;function EZ(){let n=new iFe({connections:sFe}),t=!1;return{fetchImpl:(o,i={})=>nFe(o,{...i,dispatcher:n}),FormDataImpl:oFe,async destroy(){t||(t=!0,await n.destroy())}}}function fG(n){if(typeof n!="string"||!n.trim())throw new TypeError("Telegram message text must be a non-empty string");return n}function QG(n){return n==="&"?5:n==="<"||n===">"?4:1}function BG(n){return Array.from(n).reduce((t,o)=>t+QG(o),0)}function gFe(n,t,o,i){let e=t+Math.floor(i*.5);for(let a=o-1;a>=e;a-=1)if(n[a]===` `||n[a]===" ")return a+1;return o}function yG(n,t,o=()=>1){if(typeof n!="string")throw new TypeError("Telegram message text must be a string");if(!n)return[];let i=Array.from(n),e=[],a=0;for(;at)break;r+=s,A+=1}if(A===a)throw new Error("Telegram message character exceeds the chunk limit");A",">")}function CZ(n,t){return yG(n,t,QG).map(o=>({source:o,markdown:Wu(o)}))}function IFe(n,t,o,i){let e=n.slice(t.length,n.length-o.length),a=BG(t)+Math.max(BG(o),BG("```"))+1,A=i-a;if(A<1)throw new Error("Telegram Rich Markdown code fence exceeds the limit");let r=yG(e,A,QG);return r.map((s,g)=>{let c=g===r.length-1,I=s.endsWith(` `)?"":` @@ -406,9 +406,9 @@ ${_}`:K),await g()}catch(K){this.#a.error?.("[dsh-im:qq] failed to send the safe `,o=this.#t.then(async()=>{await FFe(xFe(this.#e),{recursive:!0,mode:448});let i=`${this.#e}.tmp`;await KFe(i,t,{encoding:"utf8",mode:384}),await UFe(i,this.#e)});this.#t=o.then(()=>{},()=>{}),await o}};import{randomUUID as jFe}from"node:crypto";var MZ=new Set(["pending","connecting"]),$u=new Set(["connected","failed","cancelled","expired"]);function wl(n){return typeof n=="string"&&n.trim()?n.trim():null}function Yi(n,t){return Object.freeze({code:n,message:t})}function Dl(n){return n?{attemptId:n.id,status:n.state,pollIntervalMs:n.pollIntervalMs,qrRevision:n.qrRevision,...n.verificationUrl?{verificationUrl:n.verificationUrl}:{},...n.expiresAt?{expiresAt:n.expiresAt}:{},...n.botId?{botId:n.botId}:{},...n.error?{error:structuredClone(n.error)}:{}}:null}var eB=class{#e;#A;#t;#r;#l;#o;#i=new Map;#a=new Map;#n=new Map;#s=null;#p=new Map;#c=0;#g=!1;constructor({qrAuth:t,credentials:o,configStore:i,createRuntime:e,deleteState:a=async()=>{},logger:A=console}){if(!t||typeof t.start!="function"||typeof t.poll!="function")throw new TypeError("Enterprise WeChat QR auth is required");if(!o||typeof o.resolve!="function"||typeof o.set!="function"||typeof o.unset!="function")throw new TypeError("WecomController requires the DSH credential provider");if(!i||typeof i.list!="function"||typeof i.save!="function"||typeof i.remove!="function")throw new TypeError("WecomController requires a config store");if(typeof e!="function")throw new TypeError("createRuntime is required");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A}async initialize(){if(this.#g)return this.status();for(let t of this.#t.list())await this.#Q(t.botId,async()=>{let o=this.#i.get(t.botId)?.status;if(this.#g||o?.ready||o?.wecomConnectionState==="connecting")return;let i=await this.#B(t.secretRef);if(!i){this.#a.set(t.botId,Yi("missing-secret",w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u79FB\u9664\u540E\u91CD\u65B0\u626B\u7801\u3002")));return}try{await this.#C(t,i),this.#a.delete(t.botId)}catch{this.#a.set(t.botId,Yi("connection-failed",w("\u4F01\u4E1A\u5FAE\u4FE1\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5\u3002"))),this.#o.warn?.(`[dsh-im:wecom] bot ${t.botId} failed to initialize`)}finally{this.#y()}});return this.status()}async startProvisioning(){if(this.#g)throw new Error("Enterprise WeChat controller is closed");this.#s&&await this.cancelProvisioning(this.#s);let t={id:jFe(),state:"pending",createdAt:Date.now(),expiresAt:null,pollIntervalMs:3e3,qrRevision:1,verificationUrl:null,scode:null,botId:null,error:null,controller:new AbortController,polling:null,transition:null};this.#n.set(t.id,t),this.#s=t.id,this.#y();try{let o=await this.#e.start({signal:t.controller.signal});if(t.scode=wl(o.scode),t.verificationUrl=wl(o.verificationUrl),t.expiresAt=Number(o.expiresAt),t.pollIntervalMs=Math.min(1e4,Math.max(500,Number(o.pollIntervalMs)||3e3)),!t.scode||!t.verificationUrl||!Number.isFinite(t.expiresAt))throw new Error("Enterprise WeChat QR auth returned incomplete data");return this.#y(),Dl(t)}catch(o){throw t.state=t.controller.signal.aborted?"cancelled":"failed",t.error=t.controller.signal.aborted?Yi("cancelled",w("\u626B\u7801\u7ED1\u5B9A\u5DF2\u53D6\u6D88\u3002")):Yi("qr-start-failed",w("\u65E0\u6CD5\u751F\u6210\u4F01\u4E1A\u5FAE\u4FE1\u4E8C\u7EF4\u7801\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002")),this.#S(t),o}}async registrationStatus(t){let o=this.#n.get(t);if(!o||$u.has(o.state))return Dl(o);if(o.state==="connecting")return await o.transition?.catch(()=>{}),Dl(o);if(Date.now()>=o.expiresAt)return o.state="expired",o.error=Yi("expired",w("\u4F01\u4E1A\u5FAE\u4FE1\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210\u3002")),o.controller.abort(),this.#S(o),Dl(o);if(!o.polling){let i=this.#I(o).finally(()=>{o.polling===i&&(o.polling=null)});o.polling=i}return await o.polling.catch(()=>{}),Dl(o)}async bindCredentials({botId:t,secret:o}={}){if(this.#g)throw new Error("Enterprise WeChat controller is closed");let i=wl(t),e=wl(o);if(!i||!e)throw new TypeError("Enterprise WeChat Bot ID and Secret are required");if(this.#s&&await this.cancelProvisioning(this.#s),this.#g)throw new Error("Enterprise WeChat controller is closed");let a=cw(i);return await this.#Q(a.botId,async()=>{if(this.#g)throw new Error("Enterprise WeChat controller is closed");let A=this.#t.getByRemoteBotId(i),r=await this.#A.resolve(a.secretRef).catch(()=>{});if(this.#g)throw new Error("Enterprise WeChat controller is closed");let s={botId:a.botId,remoteBotId:i,secretRef:a.secretRef,createdAt:A?.createdAt??new Date().toISOString(),connectedAt:new Date().toISOString()};await this.#A.set(a.secretRef,e);try{await this.#t.save(s)}catch(g){throw await this.#f(a.secretRef,r),g}try{await this.#C(s,e),this.#a.delete(a.botId)}catch{this.#a.set(a.botId,Yi("connection-failed",w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u5DF2\u7ED1\u5B9A\uFF0C\u6D88\u606F\u8FDE\u63A5\u6682\u672A\u5C31\u7EEA\u3002"))),this.#o.warn?.(`[dsh-im:wecom] bot ${a.botId} credential connection failed`)}this.#y()}),this.status()}async cancelProvisioning(t){let o=this.#n.get(t);return o?($u.has(o.state)||(o.controller.abort(),await Promise.allSettled([o.polling,o.transition].filter(Boolean)),$u.has(o.state)||(o.state="cancelled"),o.error??=Yi("cancelled",w("\u626B\u7801\u7ED1\u5B9A\u5DF2\u53D6\u6D88\u3002")),this.#S(o)),Dl(o)):null}async reconnectBot(t){let o=this.#t.get(t);if(!o)throw new Error("Unknown Enterprise WeChat bot");return await this.#Q(t,async()=>{let i=await this.#B(o.secretRef);if(!i)throw new Error("Enterprise WeChat bot secret is missing");try{await this.#C(o,i),this.#a.delete(t)}catch(e){throw this.#a.set(t,Yi("connection-failed",w("\u4F01\u4E1A\u5FAE\u4FE1\u8FDE\u63A5\u4ECD\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"))),e}finally{this.#y()}}),this.status()}async sendConnectionTest(t){let o=this.#t.get(t);if(!o)throw new Error("Unknown Enterprise WeChat bot");return this.#Q(t,async()=>{let i=this.#i.get(t);if(!i?.status?.ready||typeof i.sendConnectionTest!="function")throw Cr(w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA"));return i.sendConnectionTest(ka(w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\uFF08{botId}\uFF09",{botId:TG(o.remoteBotId)})))})}async sendProactiveText(t,o,i,e={}){if(!this.#t.get(t))throw new Error("Unknown Enterprise WeChat bot");return this.#Q(t,async()=>{let A=this.#i.get(t);if(!A?.status?.ready||typeof A.sendProactiveText!="function"){let r=new Error(w("\u4F01\u4E1A\u5FAE\u4FE1\u8FDE\u63A5\u5F53\u524D\u79BB\u7EBF"));throw r.code="bot-not-connected",r}return A.sendProactiveText(o,i,e)})}async deleteBot(t){let o=this.#t.get(t);if(!o)throw new Error("Unknown Enterprise WeChat bot");return await this.#Q(t,async()=>{let i=await this.#A.resolve(o.secretRef).catch(()=>{});await this.#u(t);try{await this.#A.unset(o.secretRef),await this.#t.remove(t)}catch(e){throw i?.value&&(await this.#A.set(o.secretRef,i.value).catch(()=>{}),await this.#C(o,i.value).catch(()=>{})),new Error("Unable to remove the Enterprise WeChat bot safely.",{cause:e})}await this.#l({botId:t,config:o}).catch(e=>{this.#o.warn?.(`[dsh-im:wecom] bot ${t} state cleanup failed:`,e)}),this.#a.delete(t),this.#y()}),this.status()}status(){let t=this.#t.list().map(e=>{let a=this.#i.get(e.botId)?.status??null,A=a?.ready===!0&&a.wecomConnectionState==="connected"&&a.harnessReachable===!0,r=A?"connected":a?.wecomConnectionState==="connecting"?"connecting":this.#a.has(e.botId)||a?.wecomConnectionState==="failed"?"error":"offline";return{botId:e.botId,state:r,connected:A,configured:!0,bot:{name:w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA"),appIdMasked:TG(e.remoteBotId)},health:{status:A?"healthy":r==="error"?"error":"offline",summary:A?w("\u4F01\u4E1A\u5FAE\u4FE1 WebSocket \u957F\u8FDE\u63A5\u8FD0\u884C\u6B63\u5E38"):r==="error"?w("\u4F01\u4E1A\u5FAE\u4FE1\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5"):w("\u4F01\u4E1A\u5FAE\u4FE1\u8FDE\u63A5\u5F53\u524D\u79BB\u7EBF"),lastCheckedAt:a?.lastCheckedAt??null,lastConnectedAt:a?.lastConnectedAt??null},stats:{messagesReceived:a?.messagesReceived??0,messagesReplied:a?.messagesReplied??0},lastMessageError:Xr(a?.lastMessageError),error:structuredClone(this.#a.get(e.botId)??null)}}),o=t.filter(e=>e.connected).length,i=this.#s?this.#n.get(this.#s):null;return{schemaVersion:1,revision:this.#c,state:i&&MZ.has(i.state)?"provisioning":t.length===0?"disconnected":o===t.length?"connected":o>0?"degraded":"offline",bots:t,totals:{configured:t.length,connected:o},...i&&MZ.has(i.state)?{provisioning:Dl(i)}:{}}}async close(){this.#g||(this.#g=!0,this.#s&&await this.cancelProvisioning(this.#s),await Promise.allSettled([...this.#p.values()]),await Promise.allSettled([...this.#i.keys()].map(t=>this.#u(t))))}async#I(t){try{let o=await this.#e.poll({scode:t.scode,signal:t.controller.signal});if(t.controller.signal.aborted||$u.has(t.state)||o.status==="waiting")return;if(o.status==="expired"){t.state="expired",t.error=Yi("expired",w("\u4F01\u4E1A\u5FAE\u4FE1\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210\u3002")),this.#S(t);return}if(o.status!=="success"){t.state="failed",t.error=Yi("qr-connect-failed",w("\u4F01\u4E1A\u5FAE\u4FE1\u626B\u7801\u6CA1\u6709\u5B8C\u6210\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210\u4E8C\u7EF4\u7801\u3002")),this.#S(t);return}t.state="connecting",t.verificationUrl=null,t.expiresAt=null,t.scode=null,this.#y();let i=this.#d(t,o);t.transition=i,await i}catch{if(t.controller.signal.aborted)return;t.state="failed",t.error=Yi("qr-connect-failed",w("\u4F01\u4E1A\u5FAE\u4FE1\u626B\u7801\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210\u4E8C\u7EF4\u7801\u3002")),this.#o.warn?.("[dsh-im:wecom] QR polling failed"),this.#S(t)}}async#d(t,o){try{let i=wl(o.remoteBotId),e=wl(o.secret);if(!i||!e)throw new Error("Enterprise WeChat authorization returned incomplete credentials");t.botId=await this.#h(t,{remoteBotId:i,secret:e}),t.state="connected",t.error=null}catch{t.controller.signal.aborted?(t.state="cancelled",t.error=Yi("cancelled",w("\u626B\u7801\u7ED1\u5B9A\u5DF2\u53D6\u6D88\u3002"))):(t.state="failed",t.error=Yi("activation-failed",w("\u4F01\u4E1A\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u65E0\u6CD5\u5B89\u5168\u4FDD\u5B58\u63A5\u5165\u914D\u7F6E\u3002")),this.#o.error?.("[dsh-im:wecom] provisioning failed"))}finally{this.#S(t)}}async#h(t,{remoteBotId:o,secret:i}){let e=cw(o),a=this.#t.getByRemoteBotId(o),A=await this.#A.resolve(e.secretRef).catch(()=>{}),r={botId:e.botId,remoteBotId:o,secretRef:e.secretRef,createdAt:a?.createdAt??new Date().toISOString(),connectedAt:new Date().toISOString()};return this.#Q(e.botId,async()=>{await this.#A.set(e.secretRef,i);try{if(t.controller.signal.aborted)throw new DOMException("Cancelled","AbortError");await this.#t.save(r)}catch(s){throw await this.#f(e.secretRef,A),s}try{if(t.controller.signal.aborted)throw new DOMException("Cancelled","AbortError");await this.#C(r,i),this.#a.delete(e.botId)}catch(s){if(t.controller.signal.aborted)throw await this.#u(e.botId),a?await this.#t.save(a).catch(()=>{}):await this.#t.remove(e.botId).catch(()=>null)&&await this.#l({botId:e.botId,config:r}).catch(c=>{this.#o.warn?.("[dsh-im:wecom] cancelled bot state cleanup failed:",c)}),await this.#f(e.secretRef,A),s;this.#a.set(e.botId,Yi("connection-failed",w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u5DF2\u7ED1\u5B9A\uFF0C\u6D88\u606F\u8FDE\u63A5\u6682\u672A\u5C31\u7EEA\u3002"))),this.#o.warn?.(`[dsh-im:wecom] bot ${e.botId} activation connection failed`)}return this.#y(),e.botId})}async#C(t,o){if(this.#g)throw new Error("Enterprise WeChat controller is closed");if(await this.#u(t.botId),this.#g)throw new Error("Enterprise WeChat controller is closed");let i=await this.#r({botId:t.botId,config:t,secret:o});if(!i||typeof i.start!="function"||typeof i.stop!="function")throw new TypeError("createRuntime returned an invalid Enterprise WeChat runtime");this.#i.set(t.botId,i);try{await i.start()}catch(e){throw await i.stop().catch(()=>{}),this.#i.delete(t.botId),e}}async#u(t){let o=this.#i.get(t);this.#i.delete(t),await o?.stop().catch(i=>{this.#o.warn?.(`[dsh-im:wecom] bot ${t} failed to stop cleanly:`,i)})}async#B(t){let o=await this.#A.resolve(t).catch(()=>{});return wl(o?.value)}async#f(t,o){o?.value?await this.#A.set(t,o.value).catch(()=>{}):await this.#A.unset(t).catch(()=>{})}#Q(t,o){let a=(this.#p.get(t)??Promise.resolve()).catch(()=>{}).then(o).finally(()=>{this.#p.get(t)===a&&this.#p.delete(t)});return this.#p.set(t,a),a}#S(t){t.scode=null,t.verificationUrl=null,t.expiresAt=null,this.#s===t.id&&(this.#s=null),this.#y();let o=[...this.#n.values()].filter(i=>$u.has(i.state));for(;o.length>16;)this.#n.delete(o.shift().id)}#y(){this.#c+=1}};import{WSAuthFailureError as gLe,WSClient as cLe,WSReconnectExhaustedError as ILe}from"@wecom/aibot-node-sdk";import{generateReqId as JFe}from"@wecom/aibot-node-sdk";var vG=12e4;function qFe(){return[w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u5DF2\u8FDE\u63A5 DeepSeek Harness\u3002"),"",w("\u76F4\u63A5\u53D1\u9001\u6587\u5B57\u3001\u56FE\u7247\u6216\u6587\u4EF6\u5373\u53EF\u7EE7\u7EED\u5F53\u524D\u4F1A\u8BDD\u3002"),w("/new \u5F00\u542F\u4E00\u4E2A\u5168\u65B0\u4F1A\u8BDD"),w("/compact \u538B\u7F29\u5F53\u524D\u4F1A\u8BDD\u7684\u8F83\u65E9\u4E0A\u4E0B\u6587"),w("/history [\u6570\u91CF] \u67E5\u770B\u6700\u8FD1\u5386\u53F2\u6D88\u606F\uFF08\u9ED8\u8BA4 3 \u6761\uFF0C\u6700\u591A 5 \u6761\uFF09"),w("/workspace \u5DE5\u4F5C\u533A\u5E8F\u53F7\u6216\u7EDD\u5BF9\u8DEF\u5F84 \u5207\u6362\u5DE5\u4F5C\u533A"),w("/workspacelist \u5217\u51FA\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84"),w("/sessionlist \u6216 /sessions [\u5DE5\u4F5C\u533A\u5E8F\u53F7\u6216\u7EDD\u5BF9\u8DEF\u5F84] \u5217\u51FA\u4F1A\u8BDD ID \u548C\u6807\u9898"),w("/session Session ID \u6216\u5F53\u524D\u5DE5\u4F5C\u533A\u5E8F\u53F7 \u5C06\u5F53\u524D\u804A\u5929\u7ED1\u5B9A\u5230\u6307\u5B9A\u4F1A\u8BDD"),w("/models \u6309\u5E8F\u53F7\u5217\u51FA\u6240\u6709\u53EF\u7528\u6A21\u578B"),w("/reasoninglist \u6216 /reasonings \u6309\u5E8F\u53F7\u5217\u51FA\u5F53\u524D\u6A21\u578B\u53EF\u7528\u63A8\u7406\u7B49\u7EA7"),w("/reasoning [\u5E8F\u53F7\u3001\u7B49\u7EA7ID\u6216 --default] \u67E5\u770B\u6216\u5207\u6362\u5F53\u524D\u63A8\u7406\u7B49\u7EA7"),w("/model [\u5E8F\u53F7\u6216\u5B8C\u6574\u6A21\u578BID] [\u63A8\u7406\u7B49\u7EA7ID] \u67E5\u770B\u6216\u5207\u6362\u5F53\u524D\u4F1A\u8BDD\u6A21\u578B"),w("\u793A\u4F8B\uFF1A\u5148\u53D1 /models\uFF0C\u518D\u53D1 /model 2 [\u63A8\u7406\u7B49\u7EA7ID]"),w("/presetlist \u6216 /presets \u6309\u5E8F\u53F7\u5217\u51FA\u53EF\u7528 Agent Preset"),w("/preset [\u5E8F\u53F7\u6216\u5B8C\u6574ID] \u67E5\u770B\u6216\u8BBE\u7F6E\u5F53\u524D\u673A\u5668\u4EBA Agent Preset"),w("\u7EAF\u6570\u5B57 ID\uFF1A/preset id:"),w("/preset --default \u8DDF\u968F Host \u9ED8\u8BA4"),w("/stop \u505C\u6B62\u5F53\u524D\u4EFB\u52A1"),w("/steer \u8865\u5145\u6307\u4EE4 \u7EA0\u504F\u5F53\u524D\u4EFB\u52A1"),w("/batch \u5F00\u59CB\u6279\u91CF\u8F93\u5165\uFF08\u4EC5\u79C1\u804A\uFF0C\u6700\u591A 10 \u6761\u6587\u5B57\uFF09"),w("/send \u63D0\u4EA4\u5F53\u524D\u6279\u6B21"),w("/cancel \u53D6\u6D88\u5F53\u524D\u6279\u6B21"),w("/status \u68C0\u67E5\u8FDE\u63A5\u72B6\u6001"),w("/version \u67E5\u770B\u63D2\u4EF6\u7248\u672C"),w("/help \u663E\u793A\u672C\u5E2E\u52A9")].join(` `)}var zFe=18e3,_Z=5*1024*1024,RZ=4;function Sa(n){return typeof n=="string"&&n.trim()?n.trim():null}function ws(n){return n?.body&&typeof n.body=="object"?n.body:{}}function TZ(n){let t=ws(n);return t.chattype==="group"?`group:${t.chatid}`:`direct:${t.from?.userid}`}function FG(n){let t=ws(n),o="";return t.msgtype==="text"?o=typeof t.text?.content=="string"?t.text.content.trim():"":t.msgtype==="voice"?o=typeof t.voice?.content=="string"?t.voice.content.trim():"":t.msgtype==="mixed"&&Array.isArray(t.mixed?.msg_item)&&(o=t.mixed.msg_item.filter(i=>i?.msgtype==="text"&&typeof i.text?.content=="string").map(i=>i.text.content).join(` `).trim()),t.chattype==="group"?o.replace(/^\s*@\S+(?:\s+|$)/u,"").trim():o}function VFe(n){let t=ws(n);return t.msgtype==="image"?[t.image]:t.msgtype!=="mixed"||!Array.isArray(t.mixed?.msg_item)?[]:t.mixed.msg_item.filter(o=>o?.msgtype==="image").map(o=>o.image)}function WFe(n){let t=ws(n);return t.msgtype==="file"&&t.file&&typeof t.file=="object"?[t.file]:[]}function ZFe(n,t){let o=Sa(t?.url);if(!o)return null;let i=Sa(t?.aeskey)??void 0;return{async load({signal:e,maxBytes:a}){if(e?.throwIfAborted(),typeof n?.downloadFile!="function")throw new Error("Enterprise WeChat image download is unavailable");let A=await n.downloadFile(o,i);e?.throwIfAborted();let r=A?.buffer;if(!Buffer.isBuffer(r)&&!(r instanceof Uint8Array))throw new Error("Enterprise WeChat image download returned no data");let s=Buffer.from(r);if(Number.isFinite(a)&&s.length>a)throw new ut("image-too-large",`Enterprise WeChat image exceeds ${a} bytes`,w("\u56FE\u7247\u8D85\u8FC7 5 MB\uFF0C\u8BF7\u538B\u7F29\u540E\u91CD\u8BD5\u3002"));return{data:s,name:A?.filename}}}}function XFe(n,t){let o=Sa(t?.url);if(!o)return null;let i=Sa(t?.aeskey)??void 0;return{name:Sa(t?.filename??t?.file_name??t?.name)??"file",async load({signal:e}={}){if(e?.throwIfAborted(),typeof n?.downloadFile!="function")throw new Error("Enterprise WeChat file download is unavailable");let a=await n.downloadFile(o,i);e?.throwIfAborted();let A=a?.buffer??a?.data;if(!Buffer.isBuffer(A)&&!(A instanceof Uint8Array))throw new Error("Enterprise WeChat file download returned no data");return{data:Buffer.from(A),...Sa(a?.filename)?{name:a.filename.trim()}:{}}}}}function NG(n,t){return{content:FG(n),images:VFe(n).map(o=>ZFe(t,o)).filter(Boolean),files:WFe(n).map(o=>XFe(t,o)).filter(Boolean)}}function $Fe(n,t){return!Array.isArray(n?.files)||n.files.length===0?n:{...n,files:n.files.map(o=>{let i=o.load({signal:t});return i.catch(()=>{}),{...o,async load({signal:e}={}){e?.throwIfAborted();let a=await i;return e?.throwIfAborted(),a}}})}}function eLe(n,t){return Tt(n)?{...n,images:n.images.map(o=>{let i=o.load({signal:t,maxBytes:_Z});return i.catch(()=>{}),{...o,async load({signal:e,maxBytes:a=_Z}={}){e?.throwIfAborted();let A=await i;e?.throwIfAborted();let r=A?.data??A?.buffer??A;if((Buffer.isBuffer(r)||r instanceof Uint8Array?r.length:0)>a)throw new ut("image-too-large",`Enterprise WeChat image exceeds ${a} bytes`,w("\u56FE\u7247\u8D85\u8FC7 5 MB\uFF0C\u8BF7\u538B\u7F29\u540E\u91CD\u8BD5\u3002"));return A}}})}:n}function ALe(n){return{...n,images:n.images.map(t=>({...t,async load(){throw new ut("image-queue-full",`Enterprise WeChat already has ${RZ} prefetched images`,w("\u5F53\u524D\u5F85\u5904\u7406\u56FE\u7247\u8F83\u591A\uFF0C\u8BF7\u7A0D\u540E\u91CD\u65B0\u53D1\u9001\u3002"))}}))}}function PG(n){return ws(n).msgtype==="text"?FG(n):""}function tLe(n){return ws(n).msgtype==="text"&&!!Sa(FG(n))}function hw(n,t=zFe){let o=String(n??"").trim();if(!o)return[];let i=[],e="",a=0;for(let A of o){let r=Buffer.byteLength(A);e&&a+r>t?(i.push(e),e=A,a=r):(e+=A,a+=r)}return e&&i.push(e),i}function rLe(n){return n?.type==="tool"?w("\u6B63\u5728\u4F7F\u7528{name}\u2026",{name:n.name}):n?.text}function AB(n,t="",{finish:o=!1}={}){let i=String(n??"").replace(/<\/?think>/gi,"").trim(),e=String(t??"").trim();if(!i)return e;let a=o||e?`${i}`:`${i}`;return e?`${a} -${e}`:a}function aLe(n,t){let o=String(n??w("\u7ED3\u679C\u6587\u4EF6")).replace(/[\r\n]+/g," ").trim()||w("\u7ED3\u679C\u6587\u4EF6");switch(t?.code){case"artifact-delivery-uncertain":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u7684\u53D1\u9001\u7ED3\u679C\u672A\u80FD\u786E\u8BA4\uFF0C\u8BF7\u5148\u68C0\u67E5\u804A\u5929\u5185\u662F\u5426\u5DF2\u6536\u5230\uFF0C\u4E0D\u8981\u7ACB\u5373\u91CD\u8BD5\u3002",{name:o});case"artifact-permission-required":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u4F01\u4E1A\u5FAE\u4FE1\u667A\u80FD\u673A\u5668\u4EBA\u7F3A\u5C11\u7D20\u6750\u4E0A\u4F20\u6216\u6587\u4EF6\u6D88\u606F\u80FD\u529B\uFF0C\u8BF7\u68C0\u67E5\u673A\u5668\u4EBA\u6743\u9650\u3002",{name:o});case"artifact-too-large":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u8D85\u8FC7\u5F53\u524D\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u53EF\u53D1\u9001\u7684\u6587\u4EF6\u5927\u5C0F\uFF0C\u672A\u53D1\u9001\u3002",{name:o});case"artifact-empty":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u4E3A\u7A7A\uFF0C\u4F01\u4E1A\u5FAE\u4FE1\u4E0D\u5141\u8BB8\u53D1\u9001\u7A7A\u6587\u4EF6\u3002",{name:o});case"artifact-changed":case"artifact-invalid":case"artifact-unavailable":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6\u6216\u51C6\u5907\u53D1\u9001\uFF0C\u8BF7\u786E\u8BA4\u6587\u4EF6\u4ECD\u53EF\u8BBF\u95EE\u540E\u91CD\u8BD5\u3002",{name:o});case"artifact-rate-limited":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u88AB\u4F01\u4E1A\u5FAE\u4FE1\u9650\u6D41\uFF0C\u672A\u80FD\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:o});case"artifact-provider-rejected":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u4F01\u4E1A\u5FAE\u4FE1\u62D2\u7EDD\u4E86\u8BE5\u6587\u4EF6\u6216\u6587\u4EF6\u6D88\u606F\u3002",{name:o});default:return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u6682\u65F6\u672A\u80FD\u901A\u8FC7\u4F01\u4E1A\u5FAE\u4FE1\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:o})}}function GG(n){return n?.reason instanceof Error?n.reason:new DOMException("The operation was aborted","AbortError")}function NZ(n,t){return t?(t.throwIfAborted(),new Promise((o,i)=>{let e=!1,a=(r,s)=>{e||(e=!0,t.removeEventListener("abort",A),r(s))},A=()=>a(i,GG(t));t.addEventListener("abort",A,{once:!0}),Promise.resolve(n).then(r=>a(o,r),r=>a(i,r)),t.aborted&&A()})):n}function RG(n,{dispatched:t=!1}={}){if(n?.code?.startsWith?.("artifact-"))return n;let o=Number(n?.httpStatus??n?.status??n?.response?.status),i=Number(n?.providerCode??n?.errcode??n?.body?.errcode),e=new Error("Enterprise WeChat file delivery failed",{cause:n});return o===401||o===403||i===48002?e.code="artifact-permission-required":o===413?e.code="artifact-too-large":o===429||i===45009?e.code="artifact-rate-limited":Number.isFinite(i)&&i!==0?e.code="artifact-provider-rejected":e.code=t?"artifact-delivery-uncertain":"artifact-provider-failed",Number.isFinite(o)&&(e.status=o),Number.isFinite(i)&&(e.providerCode=i),e}async function kZ(n,t,o,i,{signal:e,timeoutMs:a=vG}={}){if(e?.throwIfAborted(),typeof n?.uploadMedia!="function"||typeof n?.sendMediaMessage!="function"){let d=new Error(`Enterprise WeChat ${i} delivery is unavailable`);throw d.code="artifact-provider-unavailable",d}let A=AbortSignal.timeout(a),r=e?AbortSignal.any([e,A]):A,s;try{let d=n.uploadMedia(o.bytes,{type:i,filename:o.fileName});Bn(o,d),s=await NZ(d,r)}catch(d){throw e?.aborted?GG(e):RG(d)}e?.throwIfAborted();let g=Sa(s?.media_id);if(!g){let d=new Error(`Enterprise WeChat ${i} upload returned no media id`);throw d.code="artifact-provider-rejected",d}let c;try{let d=n.sendMediaMessage(t,i,g);Bn(o,d),c=await NZ(d,r)}catch(d){throw e?.aborted?GG(e):RG(d,{dispatched:!0})}e?.throwIfAborted();let I=Number(c?.body?.errcode??c?.errcode);if(Number.isFinite(I)&&I!==0)throw RG({providerCode:I});return c}function iLe(n,t,o,i){return kZ(n,t,o,"image",i)}function oLe(n,t,o,i){return kZ(n,t,o,"file",i)}function nLe(n,t){return typeof n=="string"&&n.trim()?n:t.length>0?w("\u7ED3\u679C\u6587\u4EF6\u5DF2\u751F\u6210\u3002"):w("\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF0C\u4F46\u6CA1\u6709\u751F\u6210\u53EF\u663E\u793A\u7684\u6587\u672C\u3002")}function kG(n){return Sa(n?.body?.msgid)??Sa(n?.body?.message_id)}function sLe(n,t){return t.questions[t.index]&&Sa(ws(n).from?.userid)===t.actor&&Sa(PG(n))}function LG(){return{messagesReceived:0,messagesReplied:0,messagesRejected:0,artifactsSent:0,artifactSendErrors:0,lastMessageAt:null,lastReplyAt:null,lastRejectedAt:null,lastError:null,lastMessageError:null}}var Ew=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c=new Map;#g=new Map;#I=new Map;#d=new Map;#h=new Set;#C=new Set;#u;#B=new Ti;#f=0;constructor({client:t,harness:o,state:i,contextEnhancement:e,accessPolicy:a,status:A=LG(),logger:r=console,replyTimeoutMs:s=6e5,generateStreamId:g=JFe,fileUploadTimeoutMs:c=vG,signal:I}){if(!t||typeof t.replyStream!="function"||typeof t.sendMessage!="function")throw new TypeError("Enterprise WeChat client is required");if(!o||!i)throw new TypeError("Harness client and state store are required");if(!Number.isInteger(c)||c<1)throw new TypeError("fileUploadTimeoutMs must be a positive integer");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#p=Math.min(c,vG),this.#s=I,this.#u=new Di({label:"wecom",logger:r})}get status(){return structuredClone(this.#o)}accept(t){if(this.#s?.aborted)return Promise.resolve();let o=ws(t),i=Sa(o.msgid),e=Sa(o.from?.userid),a=o.chattype==="group"?Sa(o.chatid):e;if(!i||!e||!a||!["single","group"].includes(o.chattype)||this.#t.hasSeen(i)||this.#d.has(i))return Promise.resolve();let A=TZ(t),r=this.#g.get(A),s=NG(t,this.#e),g=Sa(s.content)??"",c=o.chattype==="single"?"direct":"group",I=fa(this.#l,{conversationType:c,senderIds:e,text:g,hasImages:Tt(s),hasFiles:wt(s)});if(!I.allowed)return this.#d.set(i,null),this.#y(t,i,a,I);this.#d.set(i,Aa(this.#r,c)),o.chattype==="single"&&So(this.#t,{chatId:a});let d=Ni(g),B=this.#B.status(A);if(d&&o.chattype==="group")return this.#S(t,i,a,{message:es()});if(o.chattype==="single"&&(d||B.phase==="collecting")){let m=/^\/batch$/iu.test(g)&&B.phase==="idle"&&(this.#c.has(A)||r||this.#u.hasPending(A))?{handled:!0,kind:"busy",message:No()}:this.#B.handle(A,g,{plainText:tLe(t)});if(m.handled)return m.kind==="submit"?this.#Q({...t,body:{...o,msgtype:"text",text:{content:m.prompt}}},i,A,{batchSubmission:m}):this.#S(t,i,a,m)}let f=Fa(g)?Ao:wt(s)?null:ni(g)?Mi:si(g)?to:gi(g)?_i:null;if(f){let y;return y=this.#m(t,i,a,A,s,f).catch(m=>{if(m?.code==="turn-stopped"||this.#s?.aborted)return;this.#o.lastError=m?.message??String(m);let _=At(this.#o,m);return this.#i.error?.(`[dsh-im:wecom] failed to process a command [${_.referenceId}]`),this.#E(t,a,dt(_)).catch(()=>{})}).finally(()=>{this.#d.delete(i),this.#C.delete(y)}),this.#C.add(y),y}let Q=this.#u.claimReply({key:A,actor:e,messageId:i,text:PG(t),addressed:!0,hasPendingQuestion:!!r,questionCompletion:r?.submitting||r?.claimedReplyMessageId?r.queue:null,isQuestionPending:()=>this.#g.has(A),send:y=>this.#E(t,a,y)});if(Q){let y;return y=Q.process(async()=>this.#t.hasSeen(i)?!1:(await this.#t.markSeen(i),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),!0)).finally(()=>{this.#d.delete(i),this.#h.delete(y)}),this.#h.add(y),y}if(r&&r.actor!==e)return this.#Q(t,i,A);if(r?.submitting||r?.claimedReplyMessageId)return this.#Q(t,i,A);if(r){sLe(t,r)&&(r.claimedReplyMessageId=i);let m=(r.queue??Promise.resolve()).catch(()=>{}).then(()=>this.#O(t,i,e,a,A,r)).finally(()=>{this.#d.delete(i),r.claimedReplyMessageId===i&&(r.claimedReplyMessageId=null),r.queue===m&&(r.queue=null)});return r.queue=m,m}return this.#Q(t,i,A)}#Q(t,o,i,{releaseMessageId:e=!0,alreadyRecorded:a=!1,batchSubmission:A=null}={}){let r=NG(t,this.#e),s=r.images.length,g=0,c=r;s>0&&(this.#f+s<=RZ?(g=s,this.#f+=g,c=eLe(r,this.#s)):c=ALe(r)),c=$Fe(c,this.#s);let d=(this.#c.get(i)??Promise.resolve()).catch(()=>{}).then(()=>this.#T(t,{alreadyRecorded:a,preparedMessage:c,batchSubmission:A})).finally(()=>{this.#f-=g,e&&this.#d.delete(o),this.#c.get(i)===d&&this.#c.delete(i)});return this.#c.set(i,d),d}#S(t,o,i,e){let a;return a=Promise.resolve().then(async()=>{this.#t.hasSeen(o)||(await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),e.message&&await this.#E(t,i,e.message),this.#o.lastError=null)}).catch(async A=>{if(this.#s?.aborted)return;this.#o.lastError=A?.message??String(A);let r=At(this.#o,A);this.#i.error?.(`[dsh-im:wecom] failed to process a batch input message [${r.referenceId}]`),await this.#E(t,i,dt(r)).catch(()=>{})}).finally(()=>{this.#d.delete(o),this.#C.delete(a)}),this.#C.add(a),a}#y(t,o,i,e){let a;return a=Promise.resolve().then(async()=>{this.#t.hasSeen(o)||(await this.#t.markSeen(o),e.reason==="command-not-allowed"?(this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),await this.#E(t,i,w(ao)),this.#o.messagesReplied+=1,this.#o.lastReplyAt=new Date().toISOString()):(this.#o.messagesRejected+=1,this.#o.lastRejectedAt=new Date().toISOString()),this.#o.lastError=null)}).catch(A=>{this.#s?.aborted||(this.#o.lastError=A?.message??String(A),this.#i.error?.("[dsh-im:wecom] failed to apply inbound access policy",A))}).finally(()=>{this.#d.delete(o),this.#C.delete(a)}),this.#C.add(a),a}async waitForIdle(){await Promise.allSettled([...this.#c.values(),...[...this.#g.values()].flatMap(t=>t.queue?[t.queue]:[]),...this.#h,...this.#C])}async#m(t,o,i,e,a,A){if(this.#s?.throwIfAborted(),this.#t.hasSeen(o))return;await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString();let r=await A(a.content,this.#A,this.#t,e,{signal:this.#s,isDirect:ws(t).chattype==="single",hasImages:Tt(a),hasFiles:wt(a),pendingInteraction:this.#g.has(e)||this.#u.hasPending(e),control:{owner:this,key:e}});r?.stopped&&await Promise.allSettled([this.#P(e),this.#u.closeRoute(e)]);for(let s of r?.messages??[r?.message])s&&await this.#E(t,i,s);this.#o.lastError=null}async#D(t,o){let i=[];for(let e of hw(o)){this.#s?.throwIfAborted();let a=await this.#e.sendMessage(t,{msgtype:"markdown",markdown:{content:e}}),A=kG(a);A&&i.push(A)}return i}async#E(t,o,i){this.#s?.throwIfAborted();let e=hw(i);if(e.length!==0)try{await this.#e.replyStream(t,this.#n("stream"),e[0],!0);for(let a of e.slice(1))await this.#e.sendMessage(o,{msgtype:"markdown",markdown:{content:a}})}catch{await this.#D(o,i)}}async#N(t,o,i=[],e=null){if(i.length===0)return{receipt:e,failureNoticeVisible:!1,artifactSendErrors:0};let a=await vo({artifacts:i,baseReceipt:e,deliveryId:o,aggregatePresentation:e?"wecom-text-and-files":"wecom-files",alwaysMerge:!0,channelKey:"wecom",signal:this.#s,sendImage:A=>iLe(this.#e,t,A,{signal:this.#s,timeoutMs:this.#p}),sendFile:A=>oLe(this.#e,t,A,{signal:this.#s,timeoutMs:this.#p}),onFailure:(A,r)=>At(this.#o,r,{userMessage:aLe(A?.fileName,r),reason:r?.code}),sendFailureNotice:(A,r,s)=>this.#D(t,dt(s)),logger:this.#i});return this.#o.artifactsSent=(this.#o.artifactsSent??0)+a.artifactsSent,this.#o.artifactSendErrors=(this.#o.artifactSendErrors??0)+a.artifactSendErrors,{receipt:a.receipt,failureNoticeVisible:a.failureNoticeVisible,artifactSendErrors:a.artifactSendErrors}}async#T(t,{alreadyRecorded:o=!1,preparedMessage:i,batchSubmission:e=null}={}){if(this.#s?.aborted)return;let a=ws(t),A=typeof a.msgid=="string"?a.msgid:"",r=typeof a.from?.userid=="string"?a.from.userid:"",s=a.chattype==="group"?a.chatid:r;if(!A||!r||!s||!["single","group"].includes(a.chattype))return;if(!o){if(this.#t.hasSeen(A))return;this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString()}let g=i??NG(t,this.#e),c=g.content,I=Tt(g),d=wt(g),B=TZ(t),f=null,Q=!1,y=w("\u6B63\u5728\u601D\u8003\u4E2D\u2026"),m="",_=e===null,T=!1;try{if(!c&&!I&&!d){await this.#E(t,s,w("\u76EE\u524D\u652F\u6301\u6587\u5B57\u3001\u56FE\u7247\u3001\u6587\u4EF6\u548C\u8BED\u97F3\u8F6C\u5199\u6D88\u606F\u3002")),await this.#t.markSeen(A);return}let R=c.toLowerCase();if(!I&&!d&&R==="/help"){await this.#E(t,s,qFe()),await this.#t.markSeen(A);return}if(!I&&!d&&R==="/status"){await this.#A.ensureRunning({signal:this.#s}),await this.#E(t,s,w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u4E0E DeepSeek Harness \u8FDE\u63A5\u6B63\u5E38\u3002")),await this.#t.markSeen(A);return}if(!I&&!d&&R==="/new"){await this.#t.clearSession(B),await this.#E(t,s,w("\u5DF2\u5F00\u542F\u65B0\u4F1A\u8BDD\u3002\u8BF7\u53D1\u9001\u4F60\u7684\u95EE\u9898\u3002")),await this.#t.markSeen(A);return}let K=I||d?null:await Mo(c,this.#A,B);if(K){for(let pe of K.messages??[K.message])await this.#E(t,s,pe);await this.#t.markSeen(A);return}let L=I||d?null:await bi(c,this.#A,this.#t,B,{signal:this.#s});if(L){await this.#E(t,s,L.message),await this.#t.markSeen(A);return}f=this.#n("stream");try{await this.#e.replyStream(t,f,AB(y),!1),Q=!0}catch(pe){this.#i.warn?.("[dsh-im:wecom] unable to start a stream; using an active reply:",pe)}let U=I?await Oo(g,{signal:this.#s}):void 0,z=this.#d.get(A),q=!1;if(z){let pe=U??c;U=To(pe,z,()=>({channel:"wecom",senderId:r})),q=U!==pe}await this.#t.markSeen(A),T=!0;let{answer:x,artifacts:G=[]}=await Oi({harness:this.#A,state:this.#t,key:B,text:c,content:U,contextEnhanced:q,createOptions:{signal:this.#s},existsOptions:{signal:this.#s},askOptions:{timeoutMs:this.#a,signal:this.#s,control:{owner:this,key:B},onUpdate:Q&&typeof this.#e.replyStreamNonBlocking=="function"?async pe=>{pe?.type==="text"?m=pe.text:y=rLe(pe)||y;let se=hw(AB(y,m))[0];se&&await this.#e.replyStreamNonBlocking(t,f,se,!1)}:void 0,onInteraction:pe=>this.#w(pe,{key:B,actor:r,chatId:s,requiresMention:a.chattype==="group"}),onInteractionResolved:pe=>this.#R(pe),files:g.files}});e&&(this.#B.complete(B,e.token),_=!0),this.#s?.throwIfAborted();let V=nLe(x,G),F=hw(AB(y,V,{finish:!0})),N=!1,k=null,J=null;try{if(Q&&F.length>0)try{let pe=[],se=await this.#e.replyStream(t,f,F[0],!0),Te=kG(se);Te&&pe.push(Te);for(let Qe of F.slice(1)){let ke=await this.#e.sendMessage(s,{msgtype:"markdown",markdown:{content:Qe}}),Ne=kG(ke);Ne&&pe.push(Ne)}N=!0,k=Zt({deliveryId:A,presentation:"wecom-text",providerMessageIds:pe})}catch(pe){this.#i.warn?.("[dsh-im:wecom] stream finalization failed; using an active reply:",pe)}if(!N){let pe=await this.#D(s,V);k=Zt({deliveryId:A,presentation:"wecom-text",providerMessageIds:pe})}}catch(pe){J=va(pe),this.#i.warn?.("[dsh-im:wecom] final text delivery failed; continuing with result files:",pe)}let $=await this.#N(s,A,G,k),ie=$.receipt?.artifacts?.some(({outcome:pe})=>pe==="sent"||pe==="unknown");if(J&&!ie&&!$.failureNoticeVisible)throw J;return J&&$.artifactSendErrors===0&&At(this.#o,J),T||await this.#t.markSeen(A),this.#o.messagesReplied+=1,this.#o.lastReplyAt=new Date().toISOString(),this.#o.lastError=null,!J&&$.artifactSendErrors===0&&wo(this.#o),$.receipt}catch(R){let K=null;if(!_&&e&&(R?.code==="turn-stopped"?this.#B.complete(B,e.token):K=this.#B.fail(B,e.token).message??null,_=!0),R?.code==="turn-stopped"){Q&&f&&await this.#e.replyStream(t,f,AB(y,w("\u5DF2\u505C\u6B62\u3002"),{finish:!0}),!0).catch(()=>{}),T||await this.#t.markSeen(A);return}if(this.#s?.aborted)return;this.#o.lastError=R?.message??String(R);let L=ko(R)??bo(R),U=At(this.#o,R,{userMessage:L,reason:eo(R)?.reason});this.#i.error?.(`[dsh-im:wecom] failed to process an inbound message [${U.referenceId}]`);let z=dt(U),q=K?`${z} +${e}`:a}function aLe(n,t){let o=String(n??w("\u7ED3\u679C\u6587\u4EF6")).replace(/[\r\n]+/g," ").trim()||w("\u7ED3\u679C\u6587\u4EF6");switch(t?.code){case"artifact-delivery-uncertain":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u7684\u53D1\u9001\u7ED3\u679C\u672A\u80FD\u786E\u8BA4\uFF0C\u8BF7\u5148\u68C0\u67E5\u804A\u5929\u5185\u662F\u5426\u5DF2\u6536\u5230\uFF0C\u4E0D\u8981\u7ACB\u5373\u91CD\u8BD5\u3002",{name:o});case"artifact-permission-required":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u4F01\u4E1A\u5FAE\u4FE1\u667A\u80FD\u673A\u5668\u4EBA\u7F3A\u5C11\u7D20\u6750\u4E0A\u4F20\u6216\u6587\u4EF6\u6D88\u606F\u80FD\u529B\uFF0C\u8BF7\u68C0\u67E5\u673A\u5668\u4EBA\u6743\u9650\u3002",{name:o});case"artifact-too-large":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u8D85\u8FC7\u5F53\u524D\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u53EF\u53D1\u9001\u7684\u6587\u4EF6\u5927\u5C0F\uFF0C\u672A\u53D1\u9001\u3002",{name:o});case"artifact-empty":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u4E3A\u7A7A\uFF0C\u4F01\u4E1A\u5FAE\u4FE1\u4E0D\u5141\u8BB8\u53D1\u9001\u7A7A\u6587\u4EF6\u3002",{name:o});case"artifact-changed":case"artifact-invalid":case"artifact-unavailable":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6\u6216\u51C6\u5907\u53D1\u9001\uFF0C\u8BF7\u786E\u8BA4\u6587\u4EF6\u4ECD\u53EF\u8BBF\u95EE\u540E\u91CD\u8BD5\u3002",{name:o});case"artifact-rate-limited":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u6682\u65F6\u88AB\u4F01\u4E1A\u5FAE\u4FE1\u9650\u6D41\uFF0C\u672A\u80FD\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:o});case"artifact-provider-rejected":return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u4F01\u4E1A\u5FAE\u4FE1\u62D2\u7EDD\u4E86\u8BE5\u6587\u4EF6\u6216\u6587\u4EF6\u6D88\u606F\u3002",{name:o});default:return w("\u7ED3\u679C\u6587\u4EF6\u300C{name}\u300D\u5DF2\u751F\u6210\uFF0C\u4F46\u6682\u65F6\u672A\u80FD\u901A\u8FC7\u4F01\u4E1A\u5FAE\u4FE1\u53D1\u9001\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",{name:o})}}function GG(n){return n?.reason instanceof Error?n.reason:new DOMException("The operation was aborted","AbortError")}function NZ(n,t){return t?(t.throwIfAborted(),new Promise((o,i)=>{let e=!1,a=(r,s)=>{e||(e=!0,t.removeEventListener("abort",A),r(s))},A=()=>a(i,GG(t));t.addEventListener("abort",A,{once:!0}),Promise.resolve(n).then(r=>a(o,r),r=>a(i,r)),t.aborted&&A()})):n}function RG(n,{dispatched:t=!1}={}){if(n?.code?.startsWith?.("artifact-"))return n;let o=Number(n?.httpStatus??n?.status??n?.response?.status),i=Number(n?.providerCode??n?.errcode??n?.body?.errcode),e=new Error("Enterprise WeChat file delivery failed",{cause:n});return o===401||o===403||i===48002?e.code="artifact-permission-required":o===413?e.code="artifact-too-large":o===429||i===45009?e.code="artifact-rate-limited":Number.isFinite(i)&&i!==0?e.code="artifact-provider-rejected":e.code=t?"artifact-delivery-uncertain":"artifact-provider-failed",Number.isFinite(o)&&(e.status=o),Number.isFinite(i)&&(e.providerCode=i),e}async function kZ(n,t,o,i,{signal:e,timeoutMs:a=vG}={}){if(e?.throwIfAborted(),typeof n?.uploadMedia!="function"||typeof n?.sendMediaMessage!="function"){let d=new Error(`Enterprise WeChat ${i} delivery is unavailable`);throw d.code="artifact-provider-unavailable",d}let A=AbortSignal.timeout(a),r=e?AbortSignal.any([e,A]):A,s;try{let d=n.uploadMedia(o.bytes,{type:i,filename:o.fileName});Bn(o,d),s=await NZ(d,r)}catch(d){throw e?.aborted?GG(e):RG(d)}e?.throwIfAborted();let g=Sa(s?.media_id);if(!g){let d=new Error(`Enterprise WeChat ${i} upload returned no media id`);throw d.code="artifact-provider-rejected",d}let c;try{let d=n.sendMediaMessage(t,i,g);Bn(o,d),c=await NZ(d,r)}catch(d){throw e?.aborted?GG(e):RG(d,{dispatched:!0})}e?.throwIfAborted();let I=Number(c?.body?.errcode??c?.errcode);if(Number.isFinite(I)&&I!==0)throw RG({providerCode:I});return c}function iLe(n,t,o,i){return kZ(n,t,o,"image",i)}function oLe(n,t,o,i){return kZ(n,t,o,"file",i)}function nLe(n,t){return typeof n=="string"&&n.trim()?n:t.length>0?w("\u7ED3\u679C\u6587\u4EF6\u5DF2\u751F\u6210\u3002"):w("\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF0C\u4F46\u6CA1\u6709\u751F\u6210\u53EF\u663E\u793A\u7684\u6587\u672C\u3002")}function kG(n){return Sa(n?.body?.msgid)??Sa(n?.body?.message_id)}function sLe(n,t){return t.questions[t.index]&&Sa(ws(n).from?.userid)===t.actor&&Sa(PG(n))}function LG(){return{messagesReceived:0,messagesReplied:0,messagesRejected:0,artifactsSent:0,artifactSendErrors:0,lastMessageAt:null,lastReplyAt:null,lastRejectedAt:null,lastError:null,lastMessageError:null}}var Ew=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c=new Map;#g=new Map;#I=new Map;#d=new Map;#h=new Set;#C=new Set;#u;#B=new Ti;#f=0;constructor({client:t,harness:o,state:i,contextEnhancement:e,accessPolicy:a,status:A=LG(),logger:r=console,replyTimeoutMs:s=6e5,generateStreamId:g=JFe,fileUploadTimeoutMs:c=vG,signal:I}){if(!t||typeof t.replyStream!="function"||typeof t.sendMessage!="function")throw new TypeError("Enterprise WeChat client is required");if(!o||!i)throw new TypeError("Harness client and state store are required");if(!Number.isInteger(c)||c<1)throw new TypeError("fileUploadTimeoutMs must be a positive integer");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#p=Math.min(c,vG),this.#s=I,this.#u=new Di({label:"wecom",logger:r})}get status(){return structuredClone(this.#o)}accept(t){if(this.#s?.aborted)return Promise.resolve();let o=ws(t),i=Sa(o.msgid),e=Sa(o.from?.userid),a=o.chattype==="group"?Sa(o.chatid):e;if(!i||!e||!a||!["single","group"].includes(o.chattype)||this.#t.hasSeen(i)||this.#d.has(i))return Promise.resolve();let A=TZ(t),r=this.#g.get(A),s=NG(t,this.#e),g=Sa(s.content)??"",c=o.chattype==="single"?"direct":"group",I=fa(this.#l,{conversationType:c,senderIds:e,text:g,hasImages:Tt(s),hasFiles:wt(s)});if(!I.allowed)return this.#d.set(i,null),this.#y(t,i,a,I);this.#d.set(i,Aa(this.#r,c)),o.chattype==="single"&&So(this.#t,{chatId:a});let d=Ni(g),B=this.#B.status(A);if(d&&o.chattype==="group")return this.#S(t,i,a,{message:es()});if(o.chattype==="single"&&(d||B.phase==="collecting")){let m=/^\/batch$/iu.test(g)&&B.phase==="idle"&&(this.#c.has(A)||r||this.#u.hasPending(A))?{handled:!0,kind:"busy",message:No()}:this.#B.handle(A,g,{plainText:tLe(t)});if(m.handled)return m.kind==="submit"?this.#Q({...t,body:{...o,msgtype:"text",text:{content:m.prompt}}},i,A,{batchSubmission:m}):this.#S(t,i,a,m)}let f=Fa(g)?Ao:wt(s)?null:ni(g)?Mi:si(g)?to:gi(g)?_i:null;if(f){let y;return y=this.#m(t,i,a,A,s,f).catch(m=>{if(m?.code==="turn-stopped"||this.#s?.aborted)return;this.#o.lastError=m?.message??String(m);let _=At(this.#o,m);return this.#i.error?.(`[dsh-im:wecom] failed to process a command [${_.referenceId}]`),this.#E(t,a,dt(_)).catch(()=>{})}).finally(()=>{this.#d.delete(i),this.#C.delete(y)}),this.#C.add(y),y}let Q=this.#u.claimReply({key:A,actor:e,messageId:i,text:PG(t),addressed:!0,hasPendingQuestion:!!r,questionCompletion:r?.submitting||r?.claimedReplyMessageId?r.queue:null,isQuestionPending:()=>this.#g.has(A),send:y=>this.#E(t,a,y)});if(Q){let y;return y=Q.process(async()=>this.#t.hasSeen(i)?!1:(await this.#t.markSeen(i),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),!0)).finally(()=>{this.#d.delete(i),this.#h.delete(y)}),this.#h.add(y),y}if(r&&r.actor!==e)return this.#Q(t,i,A);if(r?.submitting||r?.claimedReplyMessageId)return this.#Q(t,i,A);if(r){sLe(t,r)&&(r.claimedReplyMessageId=i);let m=(r.queue??Promise.resolve()).catch(()=>{}).then(()=>this.#O(t,i,e,a,A,r)).finally(()=>{this.#d.delete(i),r.claimedReplyMessageId===i&&(r.claimedReplyMessageId=null),r.queue===m&&(r.queue=null)});return r.queue=m,m}return this.#Q(t,i,A)}#Q(t,o,i,{releaseMessageId:e=!0,alreadyRecorded:a=!1,batchSubmission:A=null}={}){let r=NG(t,this.#e),s=r.images.length,g=0,c=r;s>0&&(this.#f+s<=RZ?(g=s,this.#f+=g,c=eLe(r,this.#s)):c=ALe(r)),c=$Fe(c,this.#s);let d=(this.#c.get(i)??Promise.resolve()).catch(()=>{}).then(()=>this.#T(t,{alreadyRecorded:a,preparedMessage:c,batchSubmission:A})).finally(()=>{this.#f-=g,e&&this.#d.delete(o),this.#c.get(i)===d&&this.#c.delete(i)});return this.#c.set(i,d),d}#S(t,o,i,e){let a;return a=Promise.resolve().then(async()=>{this.#t.hasSeen(o)||(await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),e.message&&await this.#E(t,i,e.message),this.#o.lastError=null)}).catch(async A=>{if(this.#s?.aborted)return;this.#o.lastError=A?.message??String(A);let r=At(this.#o,A);this.#i.error?.(`[dsh-im:wecom] failed to process a batch input message [${r.referenceId}]`),await this.#E(t,i,dt(r)).catch(()=>{})}).finally(()=>{this.#d.delete(o),this.#C.delete(a)}),this.#C.add(a),a}#y(t,o,i,e){let a;return a=Promise.resolve().then(async()=>{this.#t.hasSeen(o)||(await this.#t.markSeen(o),e.reason==="command-not-allowed"?(this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),await this.#E(t,i,w(ao)),this.#o.messagesReplied+=1,this.#o.lastReplyAt=new Date().toISOString()):(this.#o.messagesRejected+=1,this.#o.lastRejectedAt=new Date().toISOString()),this.#o.lastError=null)}).catch(A=>{this.#s?.aborted||(this.#o.lastError=A?.message??String(A),this.#i.error?.("[dsh-im:wecom] failed to apply inbound access policy",A))}).finally(()=>{this.#d.delete(o),this.#C.delete(a)}),this.#C.add(a),a}async waitForIdle(){await Promise.allSettled([...this.#c.values(),...[...this.#g.values()].flatMap(t=>t.queue?[t.queue]:[]),...this.#h,...this.#C])}async#m(t,o,i,e,a,A){if(this.#s?.throwIfAborted(),this.#t.hasSeen(o))return;await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString();let r=await A(a.content,this.#A,this.#t,e,{signal:this.#s,isDirect:ws(t).chattype==="single",hasImages:Tt(a),hasFiles:wt(a),pendingInteraction:this.#g.has(e)||this.#u.hasPending(e),control:{owner:this,key:e}});r?.stopped&&await Promise.allSettled([this.#P(e),this.#u.closeRoute(e)]);for(let s of r?.messages??[r?.message])s&&await this.#E(t,i,s);this.#o.lastError=null}async#D(t,o){let i=[];for(let e of hw(o)){this.#s?.throwIfAborted();let a=await this.#e.sendMessage(t,{msgtype:"markdown",markdown:{content:e}}),A=kG(a);A&&i.push(A)}return i}async#E(t,o,i){this.#s?.throwIfAborted();let e=hw(i);if(e.length!==0)try{await this.#e.replyStream(t,this.#n("stream"),e[0],!0);for(let a of e.slice(1))await this.#e.sendMessage(o,{msgtype:"markdown",markdown:{content:a}})}catch{await this.#D(o,i)}}async#N(t,o,i=[],e=null){if(i.length===0)return{receipt:e,failureNoticeVisible:!1,artifactSendErrors:0};let a=await vo({artifacts:i,baseReceipt:e,deliveryId:o,aggregatePresentation:e?"wecom-text-and-files":"wecom-files",alwaysMerge:!0,channelKey:"wecom",signal:this.#s,sendImage:A=>iLe(this.#e,t,A,{signal:this.#s,timeoutMs:this.#p}),sendFile:A=>oLe(this.#e,t,A,{signal:this.#s,timeoutMs:this.#p}),onFailure:(A,r)=>At(this.#o,r,{userMessage:aLe(A?.fileName,r),reason:r?.code}),sendFailureNotice:(A,r,s)=>this.#D(t,dt(s)),logger:this.#i});return this.#o.artifactsSent=(this.#o.artifactsSent??0)+a.artifactsSent,this.#o.artifactSendErrors=(this.#o.artifactSendErrors??0)+a.artifactSendErrors,{receipt:a.receipt,failureNoticeVisible:a.failureNoticeVisible,artifactSendErrors:a.artifactSendErrors}}async#T(t,{alreadyRecorded:o=!1,preparedMessage:i,batchSubmission:e=null}={}){if(this.#s?.aborted)return;let a=ws(t),A=typeof a.msgid=="string"?a.msgid:"",r=typeof a.from?.userid=="string"?a.from.userid:"",s=a.chattype==="group"?a.chatid:r;if(!A||!r||!s||!["single","group"].includes(a.chattype))return;if(!o){if(this.#t.hasSeen(A))return;this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString()}let g=i??NG(t,this.#e),c=g.content,I=Tt(g),d=wt(g),B=TZ(t),f=null,Q=!1,y=w("\u6B63\u5728\u601D\u8003\u4E2D\u2026"),m="",_=e===null,T=!1;try{if(!c&&!I&&!d){await this.#E(t,s,w("\u76EE\u524D\u652F\u6301\u6587\u5B57\u3001\u56FE\u7247\u3001\u6587\u4EF6\u548C\u8BED\u97F3\u8F6C\u5199\u6D88\u606F\u3002")),await this.#t.markSeen(A);return}let R=c.toLowerCase();if(!I&&!d&&R==="/help"){await this.#E(t,s,qFe()),await this.#t.markSeen(A);return}if(!I&&!d&&R==="/status"){await this.#A.ensureRunning({signal:this.#s}),await this.#E(t,s,w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA\u4E0E DeepSeek Harness \u8FDE\u63A5\u6B63\u5E38\u3002")),await this.#t.markSeen(A);return}if(!I&&!d&&R==="/new"){await this.#t.clearSession(B),await this.#E(t,s,w("\u5DF2\u5F00\u542F\u65B0\u4F1A\u8BDD\u3002\u8BF7\u53D1\u9001\u4F60\u7684\u95EE\u9898\u3002")),await this.#t.markSeen(A);return}let K=I||d?null:await Mo(c,this.#A,B);if(K){for(let pe of K.messages??[K.message])await this.#E(t,s,pe);await this.#t.markSeen(A);return}let L=I||d?null:await bi(c,this.#A,this.#t,B,{signal:this.#s});if(L){await this.#E(t,s,L.message),await this.#t.markSeen(A);return}f=this.#n("stream");try{await this.#e.replyStream(t,f,AB(y),!1),Q=!0}catch(pe){this.#i.warn?.("[dsh-im:wecom] unable to start a stream; using an active reply:",pe)}let U=I?await Oo(g,{signal:this.#s}):void 0,z=this.#d.get(A),q=!1;if(z){let pe=U??c;U=To(pe,z,()=>({channel:"wecom",senderId:r})),q=U!==pe}await this.#t.markSeen(A),T=!0;let{answer:x,artifacts:G=[]}=await Oi({harness:this.#A,state:this.#t,key:B,text:c,content:U,contextEnhanced:q,createOptions:{signal:this.#s},existsOptions:{signal:this.#s},askOptions:{timeoutMs:this.#a,signal:this.#s,control:{owner:this,key:B},onUpdate:Q&&typeof this.#e.replyStreamNonBlocking=="function"?async pe=>{pe?.type==="text"?m=pe.text:y=rLe(pe)||y;let se=hw(AB(y,m))[0];se&&await this.#e.replyStreamNonBlocking(t,f,se,!1)}:void 0,onInteraction:pe=>this.#w(pe,{key:B,actor:r,chatId:s,requiresMention:a.chattype==="group"}),onInteractionResolved:pe=>this.#R(pe),files:g.files}});e&&(this.#B.complete(B,e.token),_=!0),this.#s?.throwIfAborted();let V=nLe(x,G),F=hw(AB(y,V,{finish:!0})),N=!1,k=null,J=null;try{if(Q&&F.length>0)try{let pe=[],se=await this.#e.replyStream(t,f,F[0],!0),Me=kG(se);Me&&pe.push(Me);for(let fe of F.slice(1)){let ke=await this.#e.sendMessage(s,{msgtype:"markdown",markdown:{content:fe}}),Ne=kG(ke);Ne&&pe.push(Ne)}N=!0,k=Zt({deliveryId:A,presentation:"wecom-text",providerMessageIds:pe})}catch(pe){this.#i.warn?.("[dsh-im:wecom] stream finalization failed; using an active reply:",pe)}if(!N){let pe=await this.#D(s,V);k=Zt({deliveryId:A,presentation:"wecom-text",providerMessageIds:pe})}}catch(pe){J=va(pe),this.#i.warn?.("[dsh-im:wecom] final text delivery failed; continuing with result files:",pe)}let $=await this.#N(s,A,G,k),ie=$.receipt?.artifacts?.some(({outcome:pe})=>pe==="sent"||pe==="unknown");if(J&&!ie&&!$.failureNoticeVisible)throw J;return J&&$.artifactSendErrors===0&&At(this.#o,J),T||await this.#t.markSeen(A),this.#o.messagesReplied+=1,this.#o.lastReplyAt=new Date().toISOString(),this.#o.lastError=null,!J&&$.artifactSendErrors===0&&wo(this.#o),$.receipt}catch(R){let K=null;if(!_&&e&&(R?.code==="turn-stopped"?this.#B.complete(B,e.token):K=this.#B.fail(B,e.token).message??null,_=!0),R?.code==="turn-stopped"){Q&&f&&await this.#e.replyStream(t,f,AB(y,w("\u5DF2\u505C\u6B62\u3002"),{finish:!0}),!0).catch(()=>{}),T||await this.#t.markSeen(A);return}if(this.#s?.aborted)return;this.#o.lastError=R?.message??String(R);let L=ko(R)??bo(R),U=At(this.#o,R,{userMessage:L,reason:eo(R)?.reason});this.#i.error?.(`[dsh-im:wecom] failed to process an inbound message [${U.referenceId}]`);let z=dt(U),q=K?`${z} -${K}`:z;try{Q&&f?await this.#e.replyStream(t,f,AB(y,q,{finish:!0}),!0):await this.#E(t,s,q),T||await this.#t.markSeen(A)}catch{this.#i.error?.("[dsh-im:wecom] failed to send the safe error reply")}}finally{await Promise.allSettled([this.#P(B),this.#u.closeRoute(B)])}}async#O(t,o,i,e,a,A){if(this.#s?.aborted)return;let r=this.#g.get(a),s=A.claimedReplyMessageId===o;if(!r||r!==A||r.submitting)return s&&(!r||r!==A)?this.#G(t,o,e):this.#Q(t,o,a,{releaseMessageId:!1});if(this.#t.hasSeen(o))return;await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString();let g=Sa(PG(t));if(!g){await this.#E(t,e,w("\u8BF7\u7528\u6587\u5B57\u56DE\u7B54\u5F53\u524D\u95EE\u9898\u3002")).catch(()=>{});return}let c=this.#g.get(a);if(!c||c!==A||c.submitting){if(s&&(!c||c!==A)){await this.#E(t,e,w("\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002")).catch(()=>{});return}return this.#Q(t,o,a,{releaseMessageId:!1,alreadyRecorded:!0})}if(c.actor!==i)return this.#Q(t,o,a,{releaseMessageId:!1,alreadyRecorded:!0});if(c.chatId=e,c.needsPresentation){try{await this.#_(c)}catch{this.#o.lastError=w("\u4F01\u4E1A\u5FAE\u4FE1\u4EA4\u4E92\u95EE\u9898\u53D1\u9001\u5931\u8D25\u3002"),this.#i.error?.("[dsh-im:wecom] failed to retry an interaction question"),c.interaction.reconnect?.();return}let d=this.#g.get(a);if(!d||d!==A||d.submitting){if(s&&(!d||d!==A)){await this.#E(t,e,w("\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002")).catch(()=>{});return}return this.#Q(t,o,a,{releaseMessageId:!1,alreadyRecorded:!0})}}let I=c.questions[c.index];if(I){if(c.answers.push(wi(I,g)),c.index+=1,c.index{});return}if(this.#g.get(a)!==c)return;c.submitting=!1,c.answers.pop(),c.index-=1,this.#o.lastError=w("\u56DE\u7B54\u63D0\u4EA4\u5931\u8D25\u3002"),this.#i.error?.("[dsh-im:wecom] failed to answer a Harness interaction"),await this.#E(t,e,w("\u56DE\u7B54\u63D0\u4EA4\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001\u5F53\u524D\u95EE\u9898\u7684\u7B54\u6848\u3002")).catch(()=>{})}}}async#w(t,{key:o,actor:i,chatId:e,requiresMention:a}){if(t?.kind==="approval")return this.#u.handleRequested(t,{key:o,actor:i,requiresMention:a,send:c=>this.#D(e,c)});if(t?.kind!=="question")return;let A=t?.payload?.questions,r=typeof t?.interactionId=="string"?t.interactionId:t?.rpcId;if(typeof t?.rpcId!="string"||typeof r!="string"||typeof t.sessionId!="string"||!Array.isArray(A)||A.length===0||A.some(c=>!mi(c))){this.#i.warn?.("[dsh-im:wecom] ignored an invalid Harness question interaction");return}if(t.recovered===!0){await t.respond({ok:!1,error:{code:"cancelled",message:"Enterprise WeChat safely cancelled an interaction left by an earlier client.",details:{}}}),await this.#D(e,w("\u68C0\u6D4B\u5230\u8FD9\u4E2A Session \u4E2D\u9057\u7559\u7684\u5F85\u56DE\u7B54\u95EE\u9898\uFF0C\u5DF2\u5B89\u5168\u53D6\u6D88\u5E76\u7EE7\u7EED\u5904\u7406\u4F60\u521A\u624D\u7684\u6D88\u606F\u3002")).catch(()=>{});return}let s=this.#g.get(o);if(s?.interactionId===r){s.interaction=t,s.needsPresentation&&await this.#_(s);return}if(this.#I.has(r))return;if(s){this.#i.warn?.("[dsh-im:wecom] cancelled a second pending Harness question"),await t.respond({ok:!1,error:{code:"cancelled",message:"Enterprise WeChat is already handling another user interaction.",details:{}}});return}let g={kind:"question",interactionId:r,sessionId:t.sessionId,interaction:t,actor:i,requiresMention:a,questions:A,answers:[],index:0,chatId:e,queue:null,claimedReplyMessageId:null,submitting:!1,needsPresentation:!0,presentationPromise:null};this.#g.set(o,g),this.#I.set(g.interactionId,o),await this.#_(g)}async#R(t){if(t?.kind==="approval"){await this.#u.handleResolved(t);return}let o=t?.interactionId;if(t?.kind!=="question"||typeof o!="string")return;let i=this.#I.get(o);i&&this.#F(i,o)}#_(t){if(!t.needsPresentation)return Promise.resolve();if(t.presentationPromise)return t.presentationPromise;let o=t.questions[t.index];if(!o)return Promise.resolve();let i=this.#D(t.chatId,Si(o,t.index,t.questions.length,{requiresMention:t.requiresMention})).then(()=>{t.needsPresentation=!1}).finally(()=>{t.presentationPromise===i&&(t.presentationPromise=null)});return t.presentationPromise=i,i}async#G(t,o,i){this.#t.hasSeen(o)||(await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),await this.#E(t,i,w("\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002")).catch(()=>{}))}#k(t,o){let i=this.#g.get(t);return!i||o!==void 0&&i.interactionId!==o?null:(this.#g.delete(t),this.#I.delete(i.interactionId),i)}#F(t,o){return this.#k(t,o)!==null}async#P(t){let o=this.#k(t);if(!(!o||o.kind!=="question"))try{await o.interaction.respond({ok:!1,error:{code:"cancelled",message:"The Enterprise WeChat interaction ended before the user answered.",details:{}}},{signal:AbortSignal.timeout(5e3)})}catch(i){i?.code!=="interaction-not-pending"&&this.#i.warn?.("[dsh-im:wecom] failed to cancel a pending Harness interaction")}}};function lLe(){let n=new Error("Enterprise WeChat WebSocket authentication timed out");return n.code="connect-timeout",n}function pLe(){return{startedAt:null,ready:!1,wecomConnectionState:"idle",harnessReachable:!1,lastCheckedAt:null,lastConnectedAt:null,lastError:null,...LG()}}var tB=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c=pLe();#g=null;#I=null;#d=null;#h=null;#C=null;constructor({config:t,secret:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,logger:r=console,replyTimeoutMs:s=6e5,connectTimeoutMs:g=2e4,maxReconnectAttempts:c=10,createClient:I=d=>new cLe(d)}){if(!t||!o||!i||!e)throw new TypeError("WecomRuntime requires config, secret, Harness, and state");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#s=c,this.#p=I}get status(){return structuredClone(this.#c)}async start(){if(this.#c.ready&&this.#g)return this.status;if(this.#d)return this.#d;this.#C?.abort(new DOMException("Enterprise WeChat runtime replaced","AbortError"));let t=new AbortController;return this.#h=t,this.#C=t,this.#d=this.#u(t.signal).finally(()=>{this.#h===t&&(this.#h=null),this.#d=null}),this.#d}async#u(t){await this.#B(),t.throwIfAborted(),this.#c.startedAt=new Date().toISOString(),this.#c.wecomConnectionState="connecting",this.#c.lastError=null,await this.#t.ensureRunning(),this.#c.harnessReachable=!0;let o={debug(){},info(){},warn(){},error(){}},i=this.#p({botId:this.#e.remoteBotId,secret:this.#A,logger:o,maxReconnectAttempts:this.#s});if(!i||typeof i.connect!="function"||typeof i.disconnect!="function")throw new TypeError("Enterprise WeChat client factory returned an invalid client");this.#g=i,this.#I=new Ew({client:i,harness:this.#t,state:this.#r,contextEnhancement:this.#l,accessPolicy:this.#o,status:this.#c,logger:this.#i,replyTimeoutMs:this.#a,signal:t});let e,a,A=!1,r=new Promise((f,Q)=>{e=f,a=Q}),s=()=>{if(this.#g!==i||t.aborted)return;A=!0;let f=Date.now();this.#c.ready=!0,this.#c.wecomConnectionState="connected",this.#c.lastCheckedAt=f,this.#c.lastConnectedAt=f,this.#c.lastError=null,e()},g=()=>{this.#g===i&&(this.#c.ready=!1,this.#c.wecomConnectionState="connecting",this.#c.lastCheckedAt=Date.now())},c=()=>{this.#g===i&&(this.#c.ready=!1,this.#c.wecomConnectionState="connecting",this.#c.lastCheckedAt=Date.now())},I=f=>{if(this.#g!==i)return;let Q=f instanceof gLe||f instanceof ILe;!A&&Q&&a(f),Q&&(this.#c.ready=!1,this.#c.wecomConnectionState="failed"),this.#c.lastError=Q?f.name:"connection-error",this.#i.warn?.(`[dsh-im:wecom] bot ${this.#e.botId} connection error`)},d=f=>this.#I?.accept(f);i.on("authenticated",s),i.on("disconnected",g),i.on("reconnecting",c),i.on("error",I),i.on("message",d);let B;try{return i.connect(),await Promise.race([r,new Promise((f,Q)=>{t.addEventListener("abort",()=>Q(t.reason),{once:!0})}),new Promise((f,Q)=>{B=setTimeout(()=>Q(lLe()),this.#n)})]),this.status}catch(f){throw t.aborted?(await this.#B(),f):(this.#c.ready=!1,this.#c.wecomConnectionState="failed",this.#c.lastError=f?.message??String(f),await this.#B(),f)}finally{clearTimeout(B)}}async stop(){let t=this.#d;return this.#h?.abort(new DOMException("Enterprise WeChat runtime stopped","AbortError")),this.#C?.abort(new DOMException("Enterprise WeChat runtime stopped","AbortError")),this.#C=null,await this.#B(),await t?.catch(()=>{}),this.status}async sendConnectionTest(t){return nc({state:this.#r,text:t,channelLabel:w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA"),send:async({chatId:o},i)=>{if(!this.#c.ready||!this.#g)throw new Error("Enterprise WeChat runtime is not connected");await this.#g.sendMessage(o,{msgtype:"markdown",markdown:{content:i}})}})}async sendProactiveText(t,o,{signal:i}={}){let e=typeof t?.route?.chatId=="string"?t.route.chatId.trim():"";if(t?.kind!=="user"&&t?.kind!=="group"||!e){let a=new TypeError("Invalid Enterprise WeChat proactive delivery target");throw a.code="invalid-target",a}if(!this.#c.ready||!this.#g){let a=new Error("Enterprise WeChat runtime is not connected");throw a.code="bot-not-connected",a}return i?.throwIfAborted(),await this.#g.sendMessage(e,{msgtype:"markdown",markdown:{content:o}}),{sent:!0}}async#B(){let t=this.#g,o=this.#I;this.#g=null,this.#I=null;try{t?.disconnect(),t?.removeAllListeners?.()}catch{this.#i.warn?.(`[dsh-im:wecom] bot ${this.#e.botId} failed to stop cleanly`)}await o?.waitForIdle(),this.#c.ready=!1,this.#c.wecomConnectionState="idle"}};var vZ=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function dLe(n){if(!Array.isArray(n)||n.length===0)return[...vZ];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...vZ]}var Cw=class{#e;#A;#t;#r;#l;#o;#i;#a=null;#n=null;#s=0;#p=!1;#c=!1;#g;#I;constructor({controller:t,harness:o,logger:i=console,retryDelaysMs:e,healthyIntervalMs:a=15e3,setTimeoutImpl:A=setTimeout,clearTimeoutImpl:r=clearTimeout}){if(!t||typeof t.initialize!="function"||typeof t.status!="function")throw new TypeError("ConnectionSupervisor requires a controller");if(!o||typeof o.ensureRunning!="function")throw new TypeError("ConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=dLe(e),this.#l=Number.isFinite(a)&&a>=0?a:15e3,this.#o=A,this.#i=r,this.#g=new Promise(s=>{this.#I=s})}get ready(){return this.#g}start(){return this.#c||this.#p?this:(this.#c=!0,this.#d(0),this)}async close(){this.#p||(this.#p=!0,this.#a!==null&&this.#i(this.#a),this.#a=null,await this.#n?.catch(()=>{}),this.#I?.(null),this.#I=null)}#d(t){this.#p||(this.#a=this.#o(()=>{this.#a=null,this.#h()},t),this.#a?.unref?.())}async#h(){if(this.#p||this.#n)return;let t=this.#C();this.#n=t;try{await t}finally{this.#n===t&&(this.#n=null)}}async#C(){try{if(await this.#A.ensureRunning(),this.#p)return;let t=await this.#e.initialize();if(this.#p)return;this.#I?.(t),this.#I=null;let{configured:o,connected:i}=t.totals;if(iLa(n),B=CLe(t),f=await new e(B.config).load(),Q=Ol(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=f.list();await m.reconcile(_.map(J=>J.botId)),await Promise.all(_.map(J=>m.ensure(J.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("wecom",J)})));let T=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,R=o.qrAuth??new g({source:t.qrSource??"deepseek-harness",platform:t.qrPlatform}),K=new Map,L=J=>Ol(B.bots,J,"state.json"),U=async J=>{let $=K.get(J);return $||($=await new a(L(J)).load(),K.set(J,$)),$},z=ja(n,o.commandExecutor),{controlExecutor:q,sessionMaintenanceExecutor:x,fileIngressExecutor:G}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),V=new A({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...z?{commandExecutor:z}:{},...q?{controlExecutor:q}:{},...x?{sessionMaintenanceExecutor:x}:{},...G?{fileIngressExecutor:G}:{}}),F=new r({qrAuth:R,credentials:n.credentials,configStore:T,logger:I,createRuntime:async({botId:J,config:$,secret:ie})=>{let pe=await U(J);await m.ensure(J,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("wecom",$)});let se=Ka(V,{botId:J,workspaces:m,state:pe,agentPresetCatalog:d});return new s({config:$,secret:ie,harness:se.harness,state:se.state,contextEnhancement:{botId:J,getSettings:()=>m.contextEnhancementFor(J)},accessPolicy:qa(m,J,{channel:"wecom",config:$}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??2e4,maxReconnectAttempts:t.maxReconnectAttempts??10,logger:{error:(...Te)=>I.error?.(`[${J}]`,...Te),warn:(...Te)=>I.warn?.(`[${J}]`,...Te),info:(...Te)=>I.info?.(`[${J}]`,...Te),debug:(...Te)=>I.debug?.(`[${J}]`,...Te)}})},deleteState:async({botId:J})=>{let $=K.get(J);if(K.delete(J),$&&typeof $.remove=="function")await $.remove();else try{await hLe(L(J))}catch(ie){if(ie?.code!=="ENOENT")throw ie}}}),N=xa(F,{workspaces:m,stateFor:U,agentPresetCatalog:d}),k=c({controller:N,harness:V,logger:I,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:N,deliveryAdapter:Ya({channel:"wecom",workspaces:m,coreController:F,stateFor:U}),ready:k.ready,async close(){await k.close(),await N.close(),V.stopManagedProcess()}}}import uLe from"qrcode";var GZ="/wecom",Ir=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va}),FZ=Object.freeze(Object.values(Ir)),BLe=new Set(["secret","secretRef","scode","remoteBotId","verificationUrl","bot_info","botid"]);function YG(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function Xd(n,t){return YG(n)&&Object.keys(n).every(o=>t.includes(o))}function KG(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function PZ(n,t){return typeof n=="string"&&n.trim().length>0&&n.length<=t}function fLe(n,t){return YG(t)?n===Ir.status?Xd(t,[])?null:"connection.status does not accept fields.":n===Ir.beginProvisioning?Xd(t,["locale"])&&(t.locale===void 0||t.locale==="zh-CN")?null:"provision.begin received unsupported fields.":[Ir.pollProvisioning,Ir.cancelProvisioning].includes(n)?Xd(t,["attemptId"])&&KG(t.attemptId)?null:`${n} requires an attemptId.`:n===Ir.bindCredentials?Xd(t,["botId","secret"])&&PZ(t.botId,512)&&PZ(t.secret,1024)?null:"bot.bind-credentials requires Bot ID and Secret.":n===Ir.reconnectBot?Xd(t,["botId","sendTest"])&&KG(t.botId)&&(t.sendTest===void 0||t.sendTest===!0)?null:"bot.reconnect requires a botId and optional sendTest=true.":n===Ir.deleteBot?Xd(t,["botId","confirm"])&&KG(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Ir.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Ir.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Ir.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===Ir.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Unknown Enterprise WeChat endpoint.":"Payload must be an object."}function $d(n){if(Array.isArray(n))return n.map($d);if(!YG(n))return n;let t={};for(let[o,i]of Object.entries(n))BLe.has(o)||(t[o]=$d(i));return t}async function QLe(n){return uLe.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function xG(n,t){return!n||typeof n.verificationUrl!="string"?$d(n):$d({...n,qrCodeDataUrl:await t(n.verificationUrl)})}async function Gc(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await xG(o.provisioning,t)),$d(o)}function LZ(n,{encodeQr:t=QLe}={}){for(let e of["status","startProvisioning","registrationStatus","cancelProvisioning","bindCredentials","reconnectBot","deleteBot"])if(typeof n?.[e]!="function")throw new TypeError(`A complete Enterprise WeChat controller is required (${e})`);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!FZ.includes(e))return{ok:!1,error:{code:"bad-request",message:"Unknown Enterprise WeChat endpoint."}};let r=fLe(e,a);if(r)return{ok:!1,error:{code:"bad-request",message:r}};try{let s;if(e===Ir.status)s=await Gc(await n.status(),i);else if(e===Ir.beginProvisioning)s=await xG(await n.startProvisioning(),i);else if(e===Ir.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return{ok:!1,error:{code:"bad-request",message:"The provisioning attempt no longer exists."}};s=await xG(g,i)}else if(e===Ir.cancelProvisioning)s=$d(await n.cancelProvisioning(a.attemptId));else if(e===Ir.bindCredentials)s=await Gc(await n.bindCredentials(a),i);else if(e===Ir.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};let c;if(a.sendTest===!0)if(!g?.bots?.some(d=>d?.botId===a.botId&&d?.connected===!0)||typeof n.sendConnectionTest!="function")c=or(Cr("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA"));else try{await n.sendConnectionTest(a.botId),c=or()}catch(d){c=or(d)}s=await Gc({...g,...c?{testMessage:c}:{}},i)}else if(e===Ir.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await Gc(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===Ir.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>Gc(g,i))}else if(e===Ir.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>Gc(g,i))}else if(e===Ir.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await Gc(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else s=await Gc(await n.deleteBot(a.botId),i);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:g??{code:"wecom-operation-failed",message:"\u4F01\u4E1A\u5FAE\u4FE1\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}}}function uw(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(GZ,LZ(t,o),{authority:fr(i)})}async function UZ(n,t={}){if(t?.controller)return uw(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await HG(n,t,t.internals),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=uw(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close Enterprise WeChat bot connections"),e}import{unlink as w2e}from"node:fs/promises";import{homedir as D2e}from"node:os";import{join as lB,resolve as _l}from"node:path";import{createHash as KLe}from"node:crypto";import{mkdir as xLe,readFile as YLe,rename as jLe,unlink as JLe,writeFile as qLe}from"node:fs/promises";import{dirname as zLe}from"node:path";import{createCipheriv as yLe,createDecipheriv as mLe,createHash as HZ,randomBytes as JG,randomUUID as KZ}from"node:crypto";var Bw="https://ilinkai.weixin.qq.com/",SLe="2.4.6",wLe="3",jZ="https://novac2c.cdn.weixin.qq.com/c2c",bl=1800,qG="novac2c.cdn.weixin.qq.com",DLe="bot",OLe=2<<16|1024|6,bLe=15e3,xZ=35e3,MLe=3,_Le=new Set(["wait","scaned","confirmed","expired","scaned_but_redirect","need_verifycode","verify_code_blocked","binded_redirect"]),NA=class extends Error{constructor(t,o,i={}){super(o,i),this.name="WeixinApiError",this.code=t,this.status=i.status,this.providerCode=i.providerCode}};function Mt(n){return typeof n=="string"&&n.trim()?n.trim():null}function JZ(n){let t=n==null?null:String(n).trim();return t&&/^-?[A-Za-z0-9_.:-]{1,160}$/.test(t)?t:void 0}function qZ(n,t){return Number.isInteger(t?.status)&&(n.status=t.status),t?.providerCode!==void 0&&(n.providerCode=t.providerCode),n}function aB(n,{fallback:t="artifact-provider-rejected"}={}){if(n?.code?.startsWith?.("artifact-"))return n;let o=Number(n?.status),i=JZ(n?.providerCode),e=i??"",a=t,A="Weixin could not prepare the file for delivery.";o===401||o===403||i==="401"||i==="403"||/(?:permission|forbidden|unauthor|access.?denied)/i.test(e)?(a="artifact-permission-required",A="Weixin denied permission to send the file."):o===413||i==="413"||/(?:too.?large|size.?limit)/i.test(e)?(a="artifact-too-large",A="The file exceeds Weixin's size limit."):o===429||i==="429"||/(?:rate.?limit|too.?many)/i.test(e)?(a="artifact-rate-limited",A="Weixin rate-limited file delivery."):t==="artifact-provider-rejected"&&(A="Weixin rejected the file message.");let r=new Error(A,{cause:n});return r.code=a,qZ(r,n)}function TLe(n){let t=new Error("Weixin file delivery result is uncertain",{cause:n});return t.code="artifact-delivery-uncertain",qZ(t,n)}function jG(n){if(!n||typeof n!="object")return null;for(let t of["ret","errcode"])if(n[t]!==void 0&&n[t]!==0&&n[t]!=="0")return JZ(n[t])??"rejected";return null}function NLe(n,t){if(t?.aborted)throw eh(t);let o=Number(n?.status);return n?.code==="network-error"||n?.code==="timeout"||n?.code==="invalid-response"||o>=500&&o<600?TLe(n):aB(n)}function RLe(n){let t=Mt(n);return!t||t.length%4!==0||!/^[A-Za-z0-9+/]+={0,2}$/.test(t)?null:Buffer.from(t,"base64")}function zZ(n){let t=Mt(n?.aeskey);if(t){if(!/^[0-9a-fA-F]{32}$/.test(t))throw new NA("invalid-image-key","\u5FAE\u4FE1\u56FE\u7247\u7684\u52A0\u5BC6\u5BC6\u94A5\u65E0\u6548\u3002");return Buffer.from(t,"hex")}let o=RLe(n?.media?.aes_key);if(o?.length===16)return o;if(o?.length===32&&/^[0-9a-fA-F]{32}$/.test(o.toString("ascii")))return Buffer.from(o.toString("ascii"),"hex");throw new NA("invalid-image-key","\u5FAE\u4FE1\u56FE\u7247\u7684\u52A0\u5BC6\u5BC6\u94A5\u65E0\u6548\u3002")}function VZ(n,t){let o=Buffer.from(n),i=Buffer.from(t);if(i.length!==16||o.length===0||o.length%16!==0)throw new NA("invalid-image-ciphertext","\u5FAE\u4FE1\u56FE\u7247\u7684\u52A0\u5BC6\u6570\u636E\u65E0\u6548\u3002");try{let e=mLe("aes-128-ecb",i,null);return Buffer.concat([e.update(o),e.final()])}catch(e){throw new NA("image-decryption-failed","\u5FAE\u4FE1\u56FE\u7247\u89E3\u5BC6\u5931\u8D25\u3002",{cause:e})}}function WZ(n){let t=Mt(n?.encrypt_query_param);if(t)return`${jZ}/download?encrypted_query_param=${encodeURIComponent(t)}`;let o=Mt(n?.full_url);if(!o)throw new NA("missing-image-url","\u5FAE\u4FE1\u56FE\u7247\u6CA1\u6709\u53EF\u7528\u7684\u4E0B\u8F7D\u5730\u5740\u3002");let i;try{i=new URL(o)}catch{throw new NA("invalid-image-url","\u5FAE\u4FE1\u56FE\u7247\u7684\u4E0B\u8F7D\u5730\u5740\u65E0\u6548\u3002")}if(i.protocol!=="https:"||i.hostname!==qG||i.port&&i.port!=="443"||!i.pathname.startsWith("/c2c/"))throw new NA("untrusted-image-url","\u5FAE\u4FE1\u56FE\u7247\u7684\u4E0B\u8F7D\u5730\u5740\u4E0D\u53D7\u4FE1\u4EFB\u3002");return i.username="",i.password="",i.hash="",i.toString()}function zG(n,{fetchImpl:t=fetch}={}){if(typeof t!="function")throw new TypeError("fetchImpl must be a function");let o=[];for(let i of n?.item_list??[]){let e=i?.image_item;!e||typeof e!="object"||o.push({name:o.length===0?"image":`image-${o.length+1}`,load:async({signal:a,maxBytes:A})=>{let r=zZ(e),s=WZ(e.media),g=await Do(s,{fetchImpl:t,signal:a,maxBytes:A+16,allowedHosts:[qG]});return VZ(g,r)}})}return o}async function kLe(n,{fetchImpl:t,signal:o}){let i=await t(new URL(n),{method:"GET",signal:o,redirect:"manual"});if(!i?.ok)throw await i?.body?.cancel?.().catch?.(()=>{}),new NA("file-download-failed",`\u5FAE\u4FE1\u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25\uFF08HTTP ${i?.status??"unknown"}\uFF09\u3002`,{status:i?.status});return Buffer.from(await i.arrayBuffer())}function VG(n,{fetchImpl:t=fetch}={}){if(typeof t!="function")throw new TypeError("fetchImpl must be a function");let o=[];for(let i of n?.item_list??[]){let e=i?.file_item;if(!e||typeof e!="object")continue;let a=Number(e.len);o.push({name:Mt(e.file_name)??(o.length===0?"file":`file-${o.length+1}`),...Number.isFinite(a)&&a>=0?{size:a}:{},load:async({signal:A}={})=>{A?.throwIfAborted();let r=zZ(e),s=WZ(e.media),g=await kLe(s,{fetchImpl:t,signal:A});return A?.throwIfAborted(),VZ(g,r)}})}return o}function WG(n){let t=n.toLowerCase().replace(/\.$/,"");return t==="weixin.qq.com"||t.endsWith(".weixin.qq.com")||t==="wechat.com"||t.endsWith(".wechat.com")}function Ah(n){let t;try{t=new URL(n)}catch{throw new NA("invalid-base-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u8FDE\u63A5\u5730\u5740\u3002")}if(t.protocol!=="https:"||!WG(t.hostname)||t.port!==""&&t.port!=="443")throw new NA("untrusted-base-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53D7\u4FE1\u4EFB\u7684\u8FDE\u63A5\u5730\u5740\u3002");return t.username="",t.password="",t.search="",t.hash="",t.pathname.endsWith("/")||(t.pathname+="/"),t.toString()}function vLe(n){let t=Mt(n);if(!t)throw new NA("invalid-qr","\u5FAE\u4FE1\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u626B\u7801\u5730\u5740\u3002");let o;try{o=new URL(t)}catch{throw new NA("invalid-qr","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u626B\u7801\u5730\u5740\u3002")}if(o.protocol!=="https:"||!WG(o.hostname))throw new NA("untrusted-qr","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53D7\u4FE1\u4EFB\u7684\u626B\u7801\u5730\u5740\u3002");return o.toString()}function ZZ(){return{"iLink-App-Id":DLe,"iLink-App-ClientVersion":String(OLe)}}function PLe(n){let t={...ZZ(),"content-type":"application/json",AuthorizationType:"ilink_bot_token","X-WECHAT-UIN":Buffer.from(String(JG(4).readUInt32BE(0)),"utf8").toString("base64")};return Mt(n)&&(t.Authorization=`Bearer ${n.trim()}`),t}function Fc(){return{channel_version:SLe,bot_agent:"DeepSeekHarness/1.1.0"}}function GLe(n){return Math.ceil((n+1)/16)*16}function YZ(n){let t;try{t=new URL(n)}catch{throw new NA("invalid-upload-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u6587\u4EF6\u4E0A\u4F20\u5730\u5740\u3002")}if(t.protocol!=="https:"||t.hostname!==qG||t.port&&t.port!=="443"||t.pathname!=="/c2c/upload"||t.username||t.password)throw new NA("untrusted-upload-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53D7\u4FE1\u4EFB\u7684\u6587\u4EF6\u4E0A\u4F20\u5730\u5740\u3002");return t.hash="",t}function FLe(n,t){let o=Mt(n?.upload_full_url);if(o)return YZ(o);let i=Mt(n?.upload_param);if(!i)throw new NA("missing-upload-url","\u5FAE\u4FE1\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u6587\u4EF6\u4E0A\u4F20\u5730\u5740\u3002");let e=new URL(`${jZ}/upload`);return e.searchParams.set("encrypted_query_param",i),e.searchParams.set("filekey",t),YZ(e)}function LLe(n,t){let o=yLe("aes-128-ecb",t,null);return Buffer.concat([o.update(n),o.final()])}async function ULe(n,t,o,{signal:i}={}){let e;for(let a=1;a<=MLe;a+=1){i?.throwIfAborted();try{let A=await n(t,{method:"POST",headers:{"content-type":"application/octet-stream"},body:o,signal:i?AbortSignal.any([i,AbortSignal.timeout(6e4)]):AbortSignal.timeout(6e4),redirect:"error"});if(A.status>=400&&A.status<500)throw new NA("upload-rejected",`\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u88AB\u62D2\u7EDD\uFF08HTTP ${A.status}\uFF09\u3002`,{status:A.status});if(A.status!==200)throw new NA("upload-failed",`\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${A.status}\uFF09\u3002`,{status:A.status});let r=Mt(A.headers.get("x-encrypted-param"));if(await A.body?.cancel?.().catch(()=>{}),!r)throw new NA("invalid-upload-response","\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u54CD\u5E94\u7F3A\u5C11\u4E0B\u8F7D\u53C2\u6570\u3002");return r}catch(A){if(i?.aborted)throw eh(i);if(A instanceof NA&&(A.code==="upload-rejected"||A.status<500))throw A;e=A}}throw e instanceof NA?e:new NA("upload-failed","\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25\u3002",{cause:e})}function eh(n){return n?.reason instanceof Error?n.reason:new DOMException("The operation was aborted","AbortError")}async function Ds(n,{method:t,baseUrl:o,endpoint:i,body:e,token:a,timeoutMs:A=bLe,signal:r,authenticated:s=!0}){let g=Ah(o),c=new URL(i,g);if(!WG(c.hostname))throw new NA("untrusted-endpoint","\u62D2\u7EDD\u8BBF\u95EE\u4E0D\u53D7\u4FE1\u4EFB\u7684\u5FAE\u4FE1\u670D\u52A1\u5730\u5740\u3002");let I=new AbortController,d=!1,B=()=>I.abort(r?.reason);if(r?.aborted)throw eh(r);r?.addEventListener("abort",B,{once:!0});let f=A>0?setTimeout(()=>{d=!0,I.abort()},A):null;try{let Q=await n(c,{method:t,headers:s?PLe(a):ZZ(),...e===void 0?{}:{body:JSON.stringify(e)},signal:I.signal});if(!Q.ok)throw new NA("http-error",`\u5FAE\u4FE1\u670D\u52A1\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${Q.status}\uFF09\u3002`,{status:Q.status});try{return await Q.json()}catch(y){throw new NA("invalid-response","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u89E3\u6790\u7684\u54CD\u5E94\u3002",{cause:y})}}catch(Q){throw r?.aborted?eh(r):d?new NA("timeout","\u5FAE\u4FE1\u670D\u52A1\u8BF7\u6C42\u8D85\u65F6\u3002",{cause:Q}):Q instanceof NA?Q:new NA("network-error","\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE\u5FAE\u4FE1\u670D\u52A1\u3002",{cause:Q})}finally{f&&clearTimeout(f),r?.removeEventListener("abort",B)}}function HLe(n){if(!n||typeof n!="object"||!_Le.has(n.status))throw new NA("invalid-login-status","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u626B\u7801\u72B6\u6001\u3002");return n}function XZ({fetchImpl:n=fetch}={}){if(typeof n!="function")throw new TypeError("fetchImpl must be a function");async function t({baseUrl:o,token:i,toUserId:e,file:a,contextToken:A,runId:r,signal:s},{mediaType:g,createItem:c}){let I=Mt(e);if(!I||!a||typeof a!="object"||typeof a.fileName!="string"||!a.fileName||!Buffer.isBuffer(a.bytes))throw new TypeError("toUserId and a file are required");s?.throwIfAborted();let d=JG(16).toString("hex"),B=JG(16),f=HZ("md5").update(a.bytes).digest("hex"),Q;try{Q=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/getuploadurl",token:i,signal:s,body:{filekey:d,media_type:g,to_user_id:I,rawsize:a.bytes.byteLength,rawfilemd5:f,filesize:GLe(a.bytes.byteLength),no_need_thumb:!0,aeskey:B.toString("hex"),base_info:Fc()}})}catch(x){if(s?.aborted)throw eh(s);let G=Number(x?.status),V=x?.code==="http-error"&&G>=400&&G<500?"artifact-provider-rejected":"artifact-provider-failed";throw aB(x,{fallback:V})}let y=jG(Q);if(y)throw aB(new NA("upload-url-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u4E0A\u4F20\u8BF7\u6C42\u3002",{providerCode:y}));let m=FLe(Q,d),_=LLe(a.bytes,B),T;try{T=await ULe(n,m,_,{signal:s})}catch(x){if(s?.aborted)throw eh(s);let G=Number(x?.status),V=x?.code==="upload-rejected"||G>=400&&G<500?"artifact-provider-rejected":"artifact-provider-failed";throw aB(x,{fallback:V})}s?.throwIfAborted();let R=Mt(a.deliveryKey)??Mt(a.artifactId)??KZ(),K=g===3?R:`${R}\0${g}`,L=`dsh-weixin-${HZ("sha256").update(K).digest("hex").slice(0,32)}`,U={encrypt_query_param:T,aes_key:Buffer.from(B.toString("hex")).toString("base64"),encrypt_type:1},z;try{z=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/sendmessage",token:i,signal:s,body:{msg:{from_user_id:"",to_user_id:I,client_id:L,message_type:2,message_state:2,item_list:[c({file:a,media:U,ciphertextSize:_.byteLength})],...Mt(A)?{context_token:A.trim()}:{},...Mt(r)?{run_id:r.trim()}:{}},base_info:Fc()}})}catch(x){throw NLe(x,s)}let q=jG(z);if(q)throw aB(new NA("send-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u6D88\u606F\u3002",{providerCode:q}));return{messageId:L}}return Object.freeze({inboundImages(o){return zG(o,{fetchImpl:n})},inboundFiles(o){return VG(o,{fetchImpl:n})},async beginLogin({localTokens:o=[],botType:i=wLe,signal:e}={}){let a=[...new Set(o.map(Mt).filter(Boolean))].slice(-10),A=await Ds(n,{method:"POST",baseUrl:Bw,endpoint:`ilink/bot/get_bot_qrcode?bot_type=${encodeURIComponent(i)}`,body:{local_token_list:a},timeoutMs:1e4,signal:e}),r=Mt(A?.qrcode);if(!r)throw new NA("invalid-qr","\u5FAE\u4FE1\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u4E8C\u7EF4\u7801\u4EE4\u724C\u3002");return{qrcode:r,qrcodeUrl:vLe(A.qrcode_img_content)}},async pollLogin({qrcode:o,baseUrl:i=Bw,verifyCode:e,signal:a}){let A=Mt(o);if(!A)throw new TypeError("qrcode is required");let r=`ilink/bot/get_qrcode_status?qrcode=${encodeURIComponent(A)}`;Mt(e)&&(r+=`&verify_code=${encodeURIComponent(e.trim())}`);let s=await Ds(n,{method:"GET",baseUrl:i,endpoint:r,timeoutMs:xZ,signal:a,authenticated:!1});return HLe(s)},async getUpdates({baseUrl:o,token:i,getUpdatesBuf:e="",timeoutMs:a,signal:A}){try{return await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/getupdates",body:{get_updates_buf:e,base_info:Fc()},token:i,timeoutMs:a??xZ,signal:A})}catch(r){if(r instanceof NA&&r.code==="timeout")return{ret:0,msgs:[],get_updates_buf:e};throw r}},async getConfig({baseUrl:o,token:i,toUserId:e,contextToken:a,signal:A}){let r=Mt(e);if(!r)throw new TypeError("toUserId is required");let s=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/getconfig",token:i,signal:A,timeoutMs:1e4,body:{ilink_user_id:r,...Mt(a)?{context_token:a.trim()}:{},base_info:Fc()}});if(s?.ret!==void 0&&s.ret!==0)throw new NA("config-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u673A\u5668\u4EBA\u914D\u7F6E\u8BF7\u6C42\u3002");return{typingTicket:Mt(s?.typing_ticket)}},async sendTyping({baseUrl:o,token:i,toUserId:e,typingTicket:a,status:A,signal:r}){let s=Mt(e),g=Mt(a);if(!s||!g)throw new TypeError("toUserId and typingTicket are required");if(A!==1&&A!==2)throw new TypeError("typing status must be 1 or 2");let c=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/sendtyping",token:i,signal:r,timeoutMs:1e4,body:{ilink_user_id:s,typing_ticket:g,status:A,base_info:Fc()}});if(c?.ret!==void 0&&c.ret!==0)throw new NA("typing-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u8F93\u5165\u72B6\u6001\u8BF7\u6C42\u3002");return!0},async sendText({baseUrl:o,token:i,toUserId:e,text:a,contextToken:A,runId:r,signal:s}){let g=Mt(e),c=Mt(a);if(!g||!c)throw new TypeError("toUserId and text are required");let I=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/sendmessage",token:i,signal:s,body:{msg:{from_user_id:"",to_user_id:g,client_id:`dsh-weixin-${KZ()}`,message_type:2,message_state:2,item_list:[{type:1,text_item:{text:c}}],...Mt(A)?{context_token:A.trim()}:{},...Mt(r)?{run_id:r.trim()}:{}},base_info:Fc()}}),d=jG(I);if(d)throw new NA("send-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u56DE\u590D\u6D88\u606F\u3002",{providerCode:d});return!0},async sendFile(o){return t(o,{mediaType:3,createItem:({file:i,media:e})=>({type:4,file_item:{media:e,file_name:i.fileName,len:String(i.bytes.byteLength)}})})},async sendImage(o){return t(o,{mediaType:1,createItem:({media:i,ciphertextSize:e})=>({type:2,image_item:{media:i,mid_size:e}})})},async notifyStart({baseUrl:o,token:i,signal:e}){let a=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/msg/notifystart",token:i,signal:e,timeoutMs:1e4,body:{base_info:Fc()}});if(a?.ret!==void 0&&a.ret!==0)throw new NA("start-rejected","\u5FAE\u4FE1\u8D26\u53F7\u8FDE\u63A5\u542F\u52A8\u5931\u8D25\u3002");return a},async notifyStop({baseUrl:o,token:i,signal:e}){return Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/msg/notifystop",token:i,signal:e,timeoutMs:1e4,body:{base_info:Fc()}})}})}function Ml(n){for(let t of n?.item_list??[]){if(t?.type===1&&typeof t.text_item?.text=="string"){let o=t.text_item.text.trim();if(o)return o}if(t?.type===3&&typeof t.voice_item?.text=="string"){let o=t.voice_item.text.trim();if(o)return o}}return null}function ZG(n){return n?.message_id!==void 0&&n.message_id!==null?String(n.message_id):Mt(n?.client_id)}function $Z(n,t=bl){if(n.length<=t)return[n];let o=[],i=n;for(;i.length>t;){let e=i.lastIndexOf(` +${K}`:z;try{Q&&f?await this.#e.replyStream(t,f,AB(y,q,{finish:!0}),!0):await this.#E(t,s,q),T||await this.#t.markSeen(A)}catch{this.#i.error?.("[dsh-im:wecom] failed to send the safe error reply")}}finally{await Promise.allSettled([this.#P(B),this.#u.closeRoute(B)])}}async#O(t,o,i,e,a,A){if(this.#s?.aborted)return;let r=this.#g.get(a),s=A.claimedReplyMessageId===o;if(!r||r!==A||r.submitting)return s&&(!r||r!==A)?this.#G(t,o,e):this.#Q(t,o,a,{releaseMessageId:!1});if(this.#t.hasSeen(o))return;await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString();let g=Sa(PG(t));if(!g){await this.#E(t,e,w("\u8BF7\u7528\u6587\u5B57\u56DE\u7B54\u5F53\u524D\u95EE\u9898\u3002")).catch(()=>{});return}let c=this.#g.get(a);if(!c||c!==A||c.submitting){if(s&&(!c||c!==A)){await this.#E(t,e,w("\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002")).catch(()=>{});return}return this.#Q(t,o,a,{releaseMessageId:!1,alreadyRecorded:!0})}if(c.actor!==i)return this.#Q(t,o,a,{releaseMessageId:!1,alreadyRecorded:!0});if(c.chatId=e,c.needsPresentation){try{await this.#_(c)}catch{this.#o.lastError=w("\u4F01\u4E1A\u5FAE\u4FE1\u4EA4\u4E92\u95EE\u9898\u53D1\u9001\u5931\u8D25\u3002"),this.#i.error?.("[dsh-im:wecom] failed to retry an interaction question"),c.interaction.reconnect?.();return}let d=this.#g.get(a);if(!d||d!==A||d.submitting){if(s&&(!d||d!==A)){await this.#E(t,e,w("\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002")).catch(()=>{});return}return this.#Q(t,o,a,{releaseMessageId:!1,alreadyRecorded:!0})}}let I=c.questions[c.index];if(I){if(c.answers.push(wi(I,g)),c.index+=1,c.index{});return}if(this.#g.get(a)!==c)return;c.submitting=!1,c.answers.pop(),c.index-=1,this.#o.lastError=w("\u56DE\u7B54\u63D0\u4EA4\u5931\u8D25\u3002"),this.#i.error?.("[dsh-im:wecom] failed to answer a Harness interaction"),await this.#E(t,e,w("\u56DE\u7B54\u63D0\u4EA4\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001\u5F53\u524D\u95EE\u9898\u7684\u7B54\u6848\u3002")).catch(()=>{})}}}async#w(t,{key:o,actor:i,chatId:e,requiresMention:a}){if(t?.kind==="approval")return this.#u.handleRequested(t,{key:o,actor:i,requiresMention:a,send:c=>this.#D(e,c)});if(t?.kind!=="question")return;let A=t?.payload?.questions,r=typeof t?.interactionId=="string"?t.interactionId:t?.rpcId;if(typeof t?.rpcId!="string"||typeof r!="string"||typeof t.sessionId!="string"||!Array.isArray(A)||A.length===0||A.some(c=>!mi(c))){this.#i.warn?.("[dsh-im:wecom] ignored an invalid Harness question interaction");return}if(t.recovered===!0){await t.respond({ok:!1,error:{code:"cancelled",message:"Enterprise WeChat safely cancelled an interaction left by an earlier client.",details:{}}}),await this.#D(e,w("\u68C0\u6D4B\u5230\u8FD9\u4E2A Session \u4E2D\u9057\u7559\u7684\u5F85\u56DE\u7B54\u95EE\u9898\uFF0C\u5DF2\u5B89\u5168\u53D6\u6D88\u5E76\u7EE7\u7EED\u5904\u7406\u4F60\u521A\u624D\u7684\u6D88\u606F\u3002")).catch(()=>{});return}let s=this.#g.get(o);if(s?.interactionId===r){s.interaction=t,s.needsPresentation&&await this.#_(s);return}if(this.#I.has(r))return;if(s){this.#i.warn?.("[dsh-im:wecom] cancelled a second pending Harness question"),await t.respond({ok:!1,error:{code:"cancelled",message:"Enterprise WeChat is already handling another user interaction.",details:{}}});return}let g={kind:"question",interactionId:r,sessionId:t.sessionId,interaction:t,actor:i,requiresMention:a,questions:A,answers:[],index:0,chatId:e,queue:null,claimedReplyMessageId:null,submitting:!1,needsPresentation:!0,presentationPromise:null};this.#g.set(o,g),this.#I.set(g.interactionId,o),await this.#_(g)}async#R(t){if(t?.kind==="approval"){await this.#u.handleResolved(t);return}let o=t?.interactionId;if(t?.kind!=="question"||typeof o!="string")return;let i=this.#I.get(o);i&&this.#F(i,o)}#_(t){if(!t.needsPresentation)return Promise.resolve();if(t.presentationPromise)return t.presentationPromise;let o=t.questions[t.index];if(!o)return Promise.resolve();let i=this.#D(t.chatId,Si(o,t.index,t.questions.length,{requiresMention:t.requiresMention})).then(()=>{t.needsPresentation=!1}).finally(()=>{t.presentationPromise===i&&(t.presentationPromise=null)});return t.presentationPromise=i,i}async#G(t,o,i){this.#t.hasSeen(o)||(await this.#t.markSeen(o),this.#o.messagesReceived+=1,this.#o.lastMessageAt=new Date().toISOString(),await this.#E(t,i,w("\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002")).catch(()=>{}))}#k(t,o){let i=this.#g.get(t);return!i||o!==void 0&&i.interactionId!==o?null:(this.#g.delete(t),this.#I.delete(i.interactionId),i)}#F(t,o){return this.#k(t,o)!==null}async#P(t){let o=this.#k(t);if(!(!o||o.kind!=="question"))try{await o.interaction.respond({ok:!1,error:{code:"cancelled",message:"The Enterprise WeChat interaction ended before the user answered.",details:{}}},{signal:AbortSignal.timeout(5e3)})}catch(i){i?.code!=="interaction-not-pending"&&this.#i.warn?.("[dsh-im:wecom] failed to cancel a pending Harness interaction")}}};function lLe(){let n=new Error("Enterprise WeChat WebSocket authentication timed out");return n.code="connect-timeout",n}function pLe(){return{startedAt:null,ready:!1,wecomConnectionState:"idle",harnessReachable:!1,lastCheckedAt:null,lastConnectedAt:null,lastError:null,...LG()}}var tB=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c=pLe();#g=null;#I=null;#d=null;#h=null;#C=null;constructor({config:t,secret:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,logger:r=console,replyTimeoutMs:s=6e5,connectTimeoutMs:g=2e4,maxReconnectAttempts:c=10,createClient:I=d=>new cLe(d)}){if(!t||!o||!i||!e)throw new TypeError("WecomRuntime requires config, secret, Harness, and state");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,this.#s=c,this.#p=I}get status(){return structuredClone(this.#c)}async start(){if(this.#c.ready&&this.#g)return this.status;if(this.#d)return this.#d;this.#C?.abort(new DOMException("Enterprise WeChat runtime replaced","AbortError"));let t=new AbortController;return this.#h=t,this.#C=t,this.#d=this.#u(t.signal).finally(()=>{this.#h===t&&(this.#h=null),this.#d=null}),this.#d}async#u(t){await this.#B(),t.throwIfAborted(),this.#c.startedAt=new Date().toISOString(),this.#c.wecomConnectionState="connecting",this.#c.lastError=null,await this.#t.ensureRunning(),this.#c.harnessReachable=!0;let o={debug(){},info(){},warn(){},error(){}},i=this.#p({botId:this.#e.remoteBotId,secret:this.#A,logger:o,maxReconnectAttempts:this.#s});if(!i||typeof i.connect!="function"||typeof i.disconnect!="function")throw new TypeError("Enterprise WeChat client factory returned an invalid client");this.#g=i,this.#I=new Ew({client:i,harness:this.#t,state:this.#r,contextEnhancement:this.#l,accessPolicy:this.#o,status:this.#c,logger:this.#i,replyTimeoutMs:this.#a,signal:t});let e,a,A=!1,r=new Promise((f,Q)=>{e=f,a=Q}),s=()=>{if(this.#g!==i||t.aborted)return;A=!0;let f=Date.now();this.#c.ready=!0,this.#c.wecomConnectionState="connected",this.#c.lastCheckedAt=f,this.#c.lastConnectedAt=f,this.#c.lastError=null,e()},g=()=>{this.#g===i&&(this.#c.ready=!1,this.#c.wecomConnectionState="connecting",this.#c.lastCheckedAt=Date.now())},c=()=>{this.#g===i&&(this.#c.ready=!1,this.#c.wecomConnectionState="connecting",this.#c.lastCheckedAt=Date.now())},I=f=>{if(this.#g!==i)return;let Q=f instanceof gLe||f instanceof ILe;!A&&Q&&a(f),Q&&(this.#c.ready=!1,this.#c.wecomConnectionState="failed"),this.#c.lastError=Q?f.name:"connection-error",this.#i.warn?.(`[dsh-im:wecom] bot ${this.#e.botId} connection error`)},d=f=>this.#I?.accept(f);i.on("authenticated",s),i.on("disconnected",g),i.on("reconnecting",c),i.on("error",I),i.on("message",d);let B;try{return i.connect(),await Promise.race([r,new Promise((f,Q)=>{t.addEventListener("abort",()=>Q(t.reason),{once:!0})}),new Promise((f,Q)=>{B=setTimeout(()=>Q(lLe()),this.#n)})]),this.status}catch(f){throw t.aborted?(await this.#B(),f):(this.#c.ready=!1,this.#c.wecomConnectionState="failed",this.#c.lastError=f?.message??String(f),await this.#B(),f)}finally{clearTimeout(B)}}async stop(){let t=this.#d;return this.#h?.abort(new DOMException("Enterprise WeChat runtime stopped","AbortError")),this.#C?.abort(new DOMException("Enterprise WeChat runtime stopped","AbortError")),this.#C=null,await this.#B(),await t?.catch(()=>{}),this.status}async sendConnectionTest(t){return nc({state:this.#r,text:t,channelLabel:w("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA"),send:async({chatId:o},i)=>{if(!this.#c.ready||!this.#g)throw new Error("Enterprise WeChat runtime is not connected");await this.#g.sendMessage(o,{msgtype:"markdown",markdown:{content:i}})}})}async sendProactiveText(t,o,{signal:i}={}){let e=typeof t?.route?.chatId=="string"?t.route.chatId.trim():"";if(t?.kind!=="user"&&t?.kind!=="group"||!e){let a=new TypeError("Invalid Enterprise WeChat proactive delivery target");throw a.code="invalid-target",a}if(!this.#c.ready||!this.#g){let a=new Error("Enterprise WeChat runtime is not connected");throw a.code="bot-not-connected",a}return i?.throwIfAborted(),await this.#g.sendMessage(e,{msgtype:"markdown",markdown:{content:o}}),{sent:!0}}async#B(){let t=this.#g,o=this.#I;this.#g=null,this.#I=null;try{t?.disconnect(),t?.removeAllListeners?.()}catch{this.#i.warn?.(`[dsh-im:wecom] bot ${this.#e.botId} failed to stop cleanly`)}await o?.waitForIdle(),this.#c.ready=!1,this.#c.wecomConnectionState="idle"}};var vZ=Object.freeze([250,1e3,3e3,5e3,1e4,3e4]);function dLe(n){if(!Array.isArray(n)||n.length===0)return[...vZ];let t=n.filter(o=>Number.isFinite(o)&&o>=0);return t.length>0?t:[...vZ]}var Cw=class{#e;#A;#t;#r;#l;#o;#i;#a=null;#n=null;#s=0;#p=!1;#c=!1;#g;#I;constructor({controller:t,harness:o,logger:i=console,retryDelaysMs:e,healthyIntervalMs:a=15e3,setTimeoutImpl:A=setTimeout,clearTimeoutImpl:r=clearTimeout}){if(!t||typeof t.initialize!="function"||typeof t.status!="function")throw new TypeError("ConnectionSupervisor requires a controller");if(!o||typeof o.ensureRunning!="function")throw new TypeError("ConnectionSupervisor requires a Harness client");this.#e=t,this.#A=o,this.#t=i,this.#r=dLe(e),this.#l=Number.isFinite(a)&&a>=0?a:15e3,this.#o=A,this.#i=r,this.#g=new Promise(s=>{this.#I=s})}get ready(){return this.#g}start(){return this.#c||this.#p?this:(this.#c=!0,this.#d(0),this)}async close(){this.#p||(this.#p=!0,this.#a!==null&&this.#i(this.#a),this.#a=null,await this.#n?.catch(()=>{}),this.#I?.(null),this.#I=null)}#d(t){this.#p||(this.#a=this.#o(()=>{this.#a=null,this.#h()},t),this.#a?.unref?.())}async#h(){if(this.#p||this.#n)return;let t=this.#C();this.#n=t;try{await t}finally{this.#n===t&&(this.#n=null)}}async#C(){try{if(await this.#A.ensureRunning(),this.#p)return;let t=await this.#e.initialize();if(this.#p)return;this.#I?.(t),this.#I=null;let{configured:o,connected:i}=t.totals;if(iLa(n),B=CLe(t),f=await new e(B.config).load(),Q=Ol(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=f.list();await m.reconcile(_.map(J=>J.botId)),await Promise.all(_.map(J=>m.ensure(J.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("wecom",J)})));let T=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,R=o.qrAuth??new g({source:t.qrSource??"deepseek-harness",platform:t.qrPlatform}),K=new Map,L=J=>Ol(B.bots,J,"state.json"),U=async J=>{let $=K.get(J);return $||($=await new a(L(J)).load(),K.set(J,$)),$},z=ja(n,o.commandExecutor),{controlExecutor:q,sessionMaintenanceExecutor:x,fileIngressExecutor:G}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),V=new A({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...z?{commandExecutor:z}:{},...q?{controlExecutor:q}:{},...x?{sessionMaintenanceExecutor:x}:{},...G?{fileIngressExecutor:G}:{}}),F=new r({qrAuth:R,credentials:n.credentials,configStore:T,logger:I,createRuntime:async({botId:J,config:$,secret:ie})=>{let pe=await U(J);await m.ensure(J,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("wecom",$)});let se=Ka(V,{botId:J,workspaces:m,state:pe,agentPresetCatalog:d});return new s({config:$,secret:ie,harness:se.harness,state:se.state,contextEnhancement:{botId:J,getSettings:()=>m.contextEnhancementFor(J)},accessPolicy:qa(m,J,{channel:"wecom",config:$}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??2e4,maxReconnectAttempts:t.maxReconnectAttempts??10,logger:{error:(...Me)=>I.error?.(`[${J}]`,...Me),warn:(...Me)=>I.warn?.(`[${J}]`,...Me),info:(...Me)=>I.info?.(`[${J}]`,...Me),debug:(...Me)=>I.debug?.(`[${J}]`,...Me)}})},deleteState:async({botId:J})=>{let $=K.get(J);if(K.delete(J),$&&typeof $.remove=="function")await $.remove();else try{await hLe(L(J))}catch(ie){if(ie?.code!=="ENOENT")throw ie}}}),N=xa(F,{workspaces:m,stateFor:U,agentPresetCatalog:d}),k=c({controller:N,harness:V,logger:I,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:N,deliveryAdapter:Ya({channel:"wecom",workspaces:m,coreController:F,stateFor:U}),ready:k.ready,async close(){await k.close(),await N.close(),V.stopManagedProcess()}}}import uLe from"qrcode";var GZ="/wecom",Ir=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",bindCredentials:"bot.bind-credentials",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki,setAccessPolicy:Va}),FZ=Object.freeze(Object.values(Ir)),BLe=new Set(["secret","secretRef","scode","remoteBotId","verificationUrl","bot_info","botid"]);function YG(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function Xd(n,t){return YG(n)&&Object.keys(n).every(o=>t.includes(o))}function KG(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function PZ(n,t){return typeof n=="string"&&n.trim().length>0&&n.length<=t}function fLe(n,t){return YG(t)?n===Ir.status?Xd(t,[])?null:"connection.status does not accept fields.":n===Ir.beginProvisioning?Xd(t,["locale"])&&(t.locale===void 0||t.locale==="zh-CN")?null:"provision.begin received unsupported fields.":[Ir.pollProvisioning,Ir.cancelProvisioning].includes(n)?Xd(t,["attemptId"])&&KG(t.attemptId)?null:`${n} requires an attemptId.`:n===Ir.bindCredentials?Xd(t,["botId","secret"])&&PZ(t.botId,512)&&PZ(t.secret,1024)?null:"bot.bind-credentials requires Bot ID and Secret.":n===Ir.reconnectBot?Xd(t,["botId","sendTest"])&&KG(t.botId)&&(t.sendTest===void 0||t.sendTest===!0)?null:"bot.reconnect requires a botId and optional sendTest=true.":n===Ir.deleteBot?Xd(t,["botId","confirm"])&&KG(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Ir.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Ir.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Ir.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":n===Ir.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":"Unknown Enterprise WeChat endpoint.":"Payload must be an object."}function $d(n){if(Array.isArray(n))return n.map($d);if(!YG(n))return n;let t={};for(let[o,i]of Object.entries(n))BLe.has(o)||(t[o]=$d(i));return t}async function QLe(n){return uLe.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function xG(n,t){return!n||typeof n.verificationUrl!="string"?$d(n):$d({...n,qrCodeDataUrl:await t(n.verificationUrl)})}async function Gc(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await xG(o.provisioning,t)),$d(o)}function LZ(n,{encodeQr:t=QLe}={}){for(let e of["status","startProvisioning","registrationStatus","cancelProvisioning","bindCredentials","reconnectBot","deleteBot"])if(typeof n?.[e]!="function")throw new TypeError(`A complete Enterprise WeChat controller is required (${e})`);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!FZ.includes(e))return{ok:!1,error:{code:"bad-request",message:"Unknown Enterprise WeChat endpoint."}};let r=fLe(e,a);if(r)return{ok:!1,error:{code:"bad-request",message:r}};try{let s;if(e===Ir.status)s=await Gc(await n.status(),i);else if(e===Ir.beginProvisioning)s=await xG(await n.startProvisioning(),i);else if(e===Ir.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return{ok:!1,error:{code:"bad-request",message:"The provisioning attempt no longer exists."}};s=await xG(g,i)}else if(e===Ir.cancelProvisioning)s=$d(await n.cancelProvisioning(a.attemptId));else if(e===Ir.bindCredentials)s=await Gc(await n.bindCredentials(a),i);else if(e===Ir.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};let c;if(a.sendTest===!0)if(!g?.bots?.some(d=>d?.botId===a.botId&&d?.connected===!0)||typeof n.sendConnectionTest!="function")c=or(Cr("\u4F01\u4E1A\u5FAE\u4FE1\u673A\u5668\u4EBA"));else try{await n.sendConnectionTest(a.botId),c=or()}catch(d){c=or(d)}s=await Gc({...g,...c?{testMessage:c}:{}},i)}else if(e===Ir.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await Gc(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===Ir.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>Gc(g,i))}else if(e===Ir.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>Gc(g,i))}else if(e===Ir.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await Gc(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else s=await Gc(await n.deleteBot(a.botId),i);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:g??{code:"wecom-operation-failed",message:"\u4F01\u4E1A\u5FAE\u4FE1\u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}}}function uw(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(GZ,LZ(t,o),{authority:fr(i)})}async function UZ(n,t={}){if(t?.controller)return uw(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await HG(n,t,t.internals),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=uw(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close Enterprise WeChat bot connections"),e}import{unlink as w2e}from"node:fs/promises";import{homedir as D2e}from"node:os";import{join as lB,resolve as _l}from"node:path";import{createHash as KLe}from"node:crypto";import{mkdir as xLe,readFile as YLe,rename as jLe,unlink as JLe,writeFile as qLe}from"node:fs/promises";import{dirname as zLe}from"node:path";import{createCipheriv as yLe,createDecipheriv as mLe,createHash as HZ,randomBytes as JG,randomUUID as KZ}from"node:crypto";var Bw="https://ilinkai.weixin.qq.com/",SLe="2.4.6",wLe="3",jZ="https://novac2c.cdn.weixin.qq.com/c2c",bl=1800,qG="novac2c.cdn.weixin.qq.com",DLe="bot",OLe=2<<16|1024|6,bLe=15e3,xZ=35e3,MLe=3,_Le=new Set(["wait","scaned","confirmed","expired","scaned_but_redirect","need_verifycode","verify_code_blocked","binded_redirect"]),NA=class extends Error{constructor(t,o,i={}){super(o,i),this.name="WeixinApiError",this.code=t,this.status=i.status,this.providerCode=i.providerCode}};function Mt(n){return typeof n=="string"&&n.trim()?n.trim():null}function JZ(n){let t=n==null?null:String(n).trim();return t&&/^-?[A-Za-z0-9_.:-]{1,160}$/.test(t)?t:void 0}function qZ(n,t){return Number.isInteger(t?.status)&&(n.status=t.status),t?.providerCode!==void 0&&(n.providerCode=t.providerCode),n}function aB(n,{fallback:t="artifact-provider-rejected"}={}){if(n?.code?.startsWith?.("artifact-"))return n;let o=Number(n?.status),i=JZ(n?.providerCode),e=i??"",a=t,A="Weixin could not prepare the file for delivery.";o===401||o===403||i==="401"||i==="403"||/(?:permission|forbidden|unauthor|access.?denied)/i.test(e)?(a="artifact-permission-required",A="Weixin denied permission to send the file."):o===413||i==="413"||/(?:too.?large|size.?limit)/i.test(e)?(a="artifact-too-large",A="The file exceeds Weixin's size limit."):o===429||i==="429"||/(?:rate.?limit|too.?many)/i.test(e)?(a="artifact-rate-limited",A="Weixin rate-limited file delivery."):t==="artifact-provider-rejected"&&(A="Weixin rejected the file message.");let r=new Error(A,{cause:n});return r.code=a,qZ(r,n)}function TLe(n){let t=new Error("Weixin file delivery result is uncertain",{cause:n});return t.code="artifact-delivery-uncertain",qZ(t,n)}function jG(n){if(!n||typeof n!="object")return null;for(let t of["ret","errcode"])if(n[t]!==void 0&&n[t]!==0&&n[t]!=="0")return JZ(n[t])??"rejected";return null}function NLe(n,t){if(t?.aborted)throw eh(t);let o=Number(n?.status);return n?.code==="network-error"||n?.code==="timeout"||n?.code==="invalid-response"||o>=500&&o<600?TLe(n):aB(n)}function RLe(n){let t=Mt(n);return!t||t.length%4!==0||!/^[A-Za-z0-9+/]+={0,2}$/.test(t)?null:Buffer.from(t,"base64")}function zZ(n){let t=Mt(n?.aeskey);if(t){if(!/^[0-9a-fA-F]{32}$/.test(t))throw new NA("invalid-image-key","\u5FAE\u4FE1\u56FE\u7247\u7684\u52A0\u5BC6\u5BC6\u94A5\u65E0\u6548\u3002");return Buffer.from(t,"hex")}let o=RLe(n?.media?.aes_key);if(o?.length===16)return o;if(o?.length===32&&/^[0-9a-fA-F]{32}$/.test(o.toString("ascii")))return Buffer.from(o.toString("ascii"),"hex");throw new NA("invalid-image-key","\u5FAE\u4FE1\u56FE\u7247\u7684\u52A0\u5BC6\u5BC6\u94A5\u65E0\u6548\u3002")}function VZ(n,t){let o=Buffer.from(n),i=Buffer.from(t);if(i.length!==16||o.length===0||o.length%16!==0)throw new NA("invalid-image-ciphertext","\u5FAE\u4FE1\u56FE\u7247\u7684\u52A0\u5BC6\u6570\u636E\u65E0\u6548\u3002");try{let e=mLe("aes-128-ecb",i,null);return Buffer.concat([e.update(o),e.final()])}catch(e){throw new NA("image-decryption-failed","\u5FAE\u4FE1\u56FE\u7247\u89E3\u5BC6\u5931\u8D25\u3002",{cause:e})}}function WZ(n){let t=Mt(n?.encrypt_query_param);if(t)return`${jZ}/download?encrypted_query_param=${encodeURIComponent(t)}`;let o=Mt(n?.full_url);if(!o)throw new NA("missing-image-url","\u5FAE\u4FE1\u56FE\u7247\u6CA1\u6709\u53EF\u7528\u7684\u4E0B\u8F7D\u5730\u5740\u3002");let i;try{i=new URL(o)}catch{throw new NA("invalid-image-url","\u5FAE\u4FE1\u56FE\u7247\u7684\u4E0B\u8F7D\u5730\u5740\u65E0\u6548\u3002")}if(i.protocol!=="https:"||i.hostname!==qG||i.port&&i.port!=="443"||!i.pathname.startsWith("/c2c/"))throw new NA("untrusted-image-url","\u5FAE\u4FE1\u56FE\u7247\u7684\u4E0B\u8F7D\u5730\u5740\u4E0D\u53D7\u4FE1\u4EFB\u3002");return i.username="",i.password="",i.hash="",i.toString()}function zG(n,{fetchImpl:t=fetch}={}){if(typeof t!="function")throw new TypeError("fetchImpl must be a function");let o=[];for(let i of n?.item_list??[]){let e=i?.image_item;!e||typeof e!="object"||o.push({name:o.length===0?"image":`image-${o.length+1}`,load:async({signal:a,maxBytes:A})=>{let r=zZ(e),s=WZ(e.media),g=await Do(s,{fetchImpl:t,signal:a,maxBytes:A+16,allowedHosts:[qG]});return VZ(g,r)}})}return o}async function kLe(n,{fetchImpl:t,signal:o}){let i=await t(new URL(n),{method:"GET",signal:o,redirect:"manual"});if(!i?.ok)throw await i?.body?.cancel?.().catch?.(()=>{}),new NA("file-download-failed",`\u5FAE\u4FE1\u6587\u4EF6\u4E0B\u8F7D\u5931\u8D25\uFF08HTTP ${i?.status??"unknown"}\uFF09\u3002`,{status:i?.status});return Buffer.from(await i.arrayBuffer())}function VG(n,{fetchImpl:t=fetch}={}){if(typeof t!="function")throw new TypeError("fetchImpl must be a function");let o=[];for(let i of n?.item_list??[]){let e=i?.file_item;if(!e||typeof e!="object")continue;let a=Number(e.len);o.push({name:Mt(e.file_name)??(o.length===0?"file":`file-${o.length+1}`),...Number.isFinite(a)&&a>=0?{size:a}:{},load:async({signal:A}={})=>{A?.throwIfAborted();let r=zZ(e),s=WZ(e.media),g=await kLe(s,{fetchImpl:t,signal:A});return A?.throwIfAborted(),VZ(g,r)}})}return o}function WG(n){let t=n.toLowerCase().replace(/\.$/,"");return t==="weixin.qq.com"||t.endsWith(".weixin.qq.com")||t==="wechat.com"||t.endsWith(".wechat.com")}function Ah(n){let t;try{t=new URL(n)}catch{throw new NA("invalid-base-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u8FDE\u63A5\u5730\u5740\u3002")}if(t.protocol!=="https:"||!WG(t.hostname)||t.port!==""&&t.port!=="443")throw new NA("untrusted-base-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53D7\u4FE1\u4EFB\u7684\u8FDE\u63A5\u5730\u5740\u3002");return t.username="",t.password="",t.search="",t.hash="",t.pathname.endsWith("/")||(t.pathname+="/"),t.toString()}function vLe(n){let t=Mt(n);if(!t)throw new NA("invalid-qr","\u5FAE\u4FE1\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u626B\u7801\u5730\u5740\u3002");let o;try{o=new URL(t)}catch{throw new NA("invalid-qr","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u626B\u7801\u5730\u5740\u3002")}if(o.protocol!=="https:"||!WG(o.hostname))throw new NA("untrusted-qr","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53D7\u4FE1\u4EFB\u7684\u626B\u7801\u5730\u5740\u3002");return o.toString()}function ZZ(){return{"iLink-App-Id":DLe,"iLink-App-ClientVersion":String(OLe)}}function PLe(n){let t={...ZZ(),"content-type":"application/json",AuthorizationType:"ilink_bot_token","X-WECHAT-UIN":Buffer.from(String(JG(4).readUInt32BE(0)),"utf8").toString("base64")};return Mt(n)&&(t.Authorization=`Bearer ${n.trim()}`),t}function Fc(){return{channel_version:SLe,bot_agent:"DeepSeekHarness/1.1.0"}}function GLe(n){return Math.ceil((n+1)/16)*16}function YZ(n){let t;try{t=new URL(n)}catch{throw new NA("invalid-upload-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u7684\u6587\u4EF6\u4E0A\u4F20\u5730\u5740\u3002")}if(t.protocol!=="https:"||t.hostname!==qG||t.port&&t.port!=="443"||t.pathname!=="/c2c/upload"||t.username||t.password)throw new NA("untrusted-upload-url","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53D7\u4FE1\u4EFB\u7684\u6587\u4EF6\u4E0A\u4F20\u5730\u5740\u3002");return t.hash="",t}function FLe(n,t){let o=Mt(n?.upload_full_url);if(o)return YZ(o);let i=Mt(n?.upload_param);if(!i)throw new NA("missing-upload-url","\u5FAE\u4FE1\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u6587\u4EF6\u4E0A\u4F20\u5730\u5740\u3002");let e=new URL(`${jZ}/upload`);return e.searchParams.set("encrypted_query_param",i),e.searchParams.set("filekey",t),YZ(e)}function LLe(n,t){let o=yLe("aes-128-ecb",t,null);return Buffer.concat([o.update(n),o.final()])}async function ULe(n,t,o,{signal:i}={}){let e;for(let a=1;a<=MLe;a+=1){i?.throwIfAborted();try{let A=await n(t,{method:"POST",headers:{"content-type":"application/octet-stream"},body:o,signal:i?AbortSignal.any([i,AbortSignal.timeout(6e4)]):AbortSignal.timeout(6e4),redirect:"error"});if(A.status>=400&&A.status<500)throw new NA("upload-rejected",`\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u88AB\u62D2\u7EDD\uFF08HTTP ${A.status}\uFF09\u3002`,{status:A.status});if(A.status!==200)throw new NA("upload-failed",`\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25\uFF08HTTP ${A.status}\uFF09\u3002`,{status:A.status});let r=Mt(A.headers.get("x-encrypted-param"));if(await A.body?.cancel?.().catch(()=>{}),!r)throw new NA("invalid-upload-response","\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u54CD\u5E94\u7F3A\u5C11\u4E0B\u8F7D\u53C2\u6570\u3002");return r}catch(A){if(i?.aborted)throw eh(i);if(A instanceof NA&&(A.code==="upload-rejected"||A.status<500))throw A;e=A}}throw e instanceof NA?e:new NA("upload-failed","\u5FAE\u4FE1\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25\u3002",{cause:e})}function eh(n){return n?.reason instanceof Error?n.reason:new DOMException("The operation was aborted","AbortError")}async function Ds(n,{method:t,baseUrl:o,endpoint:i,body:e,token:a,timeoutMs:A=bLe,signal:r,authenticated:s=!0}){let g=Ah(o),c=new URL(i,g);if(!WG(c.hostname))throw new NA("untrusted-endpoint","\u62D2\u7EDD\u8BBF\u95EE\u4E0D\u53D7\u4FE1\u4EFB\u7684\u5FAE\u4FE1\u670D\u52A1\u5730\u5740\u3002");let I=new AbortController,d=!1,B=()=>I.abort(r?.reason);if(r?.aborted)throw eh(r);r?.addEventListener("abort",B,{once:!0});let f=A>0?setTimeout(()=>{d=!0,I.abort()},A):null;try{let Q=await n(c,{method:t,headers:s?PLe(a):ZZ(),...e===void 0?{}:{body:JSON.stringify(e)},signal:I.signal});if(!Q.ok)throw new NA("http-error",`\u5FAE\u4FE1\u670D\u52A1\u8BF7\u6C42\u5931\u8D25\uFF08HTTP ${Q.status}\uFF09\u3002`,{status:Q.status});try{return await Q.json()}catch(y){throw new NA("invalid-response","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u89E3\u6790\u7684\u54CD\u5E94\u3002",{cause:y})}}catch(Q){throw r?.aborted?eh(r):d?new NA("timeout","\u5FAE\u4FE1\u670D\u52A1\u8BF7\u6C42\u8D85\u65F6\u3002",{cause:Q}):Q instanceof NA?Q:new NA("network-error","\u6682\u65F6\u65E0\u6CD5\u8BBF\u95EE\u5FAE\u4FE1\u670D\u52A1\u3002",{cause:Q})}finally{f&&clearTimeout(f),r?.removeEventListener("abort",B)}}function HLe(n){if(!n||typeof n!="object"||!_Le.has(n.status))throw new NA("invalid-login-status","\u5FAE\u4FE1\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u626B\u7801\u72B6\u6001\u3002");return n}function XZ({fetchImpl:n=fetch}={}){if(typeof n!="function")throw new TypeError("fetchImpl must be a function");async function t({baseUrl:o,token:i,toUserId:e,file:a,contextToken:A,runId:r,signal:s},{mediaType:g,createItem:c}){let I=Mt(e);if(!I||!a||typeof a!="object"||typeof a.fileName!="string"||!a.fileName||!Buffer.isBuffer(a.bytes))throw new TypeError("toUserId and a file are required");s?.throwIfAborted();let d=JG(16).toString("hex"),B=JG(16),f=HZ("md5").update(a.bytes).digest("hex"),Q;try{Q=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/getuploadurl",token:i,signal:s,body:{filekey:d,media_type:g,to_user_id:I,rawsize:a.bytes.byteLength,rawfilemd5:f,filesize:GLe(a.bytes.byteLength),no_need_thumb:!0,aeskey:B.toString("hex"),base_info:Fc()}})}catch(x){if(s?.aborted)throw eh(s);let G=Number(x?.status),V=x?.code==="http-error"&&G>=400&&G<500?"artifact-provider-rejected":"artifact-provider-failed";throw aB(x,{fallback:V})}let y=jG(Q);if(y)throw aB(new NA("upload-url-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u4E0A\u4F20\u8BF7\u6C42\u3002",{providerCode:y}));let m=FLe(Q,d),_=LLe(a.bytes,B),T;try{T=await ULe(n,m,_,{signal:s})}catch(x){if(s?.aborted)throw eh(s);let G=Number(x?.status),V=x?.code==="upload-rejected"||G>=400&&G<500?"artifact-provider-rejected":"artifact-provider-failed";throw aB(x,{fallback:V})}s?.throwIfAborted();let R=Mt(a.deliveryKey)??Mt(a.artifactId)??KZ(),K=g===3?R:`${R}\0${g}`,L=`dsh-weixin-${HZ("sha256").update(K).digest("hex").slice(0,32)}`,U={encrypt_query_param:T,aes_key:Buffer.from(B.toString("hex")).toString("base64"),encrypt_type:1},z;try{z=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/sendmessage",token:i,signal:s,body:{msg:{from_user_id:"",to_user_id:I,client_id:L,message_type:2,message_state:2,item_list:[c({file:a,media:U,ciphertextSize:_.byteLength})],...Mt(A)?{context_token:A.trim()}:{},...Mt(r)?{run_id:r.trim()}:{}},base_info:Fc()}})}catch(x){throw NLe(x,s)}let q=jG(z);if(q)throw aB(new NA("send-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u6587\u4EF6\u6D88\u606F\u3002",{providerCode:q}));return{messageId:L}}return Object.freeze({inboundImages(o){return zG(o,{fetchImpl:n})},inboundFiles(o){return VG(o,{fetchImpl:n})},async beginLogin({localTokens:o=[],botType:i=wLe,signal:e}={}){let a=[...new Set(o.map(Mt).filter(Boolean))].slice(-10),A=await Ds(n,{method:"POST",baseUrl:Bw,endpoint:`ilink/bot/get_bot_qrcode?bot_type=${encodeURIComponent(i)}`,body:{local_token_list:a},timeoutMs:1e4,signal:e}),r=Mt(A?.qrcode);if(!r)throw new NA("invalid-qr","\u5FAE\u4FE1\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE\u4E8C\u7EF4\u7801\u4EE4\u724C\u3002");return{qrcode:r,qrcodeUrl:vLe(A.qrcode_img_content)}},async pollLogin({qrcode:o,baseUrl:i=Bw,verifyCode:e,signal:a}){let A=Mt(o);if(!A)throw new TypeError("qrcode is required");let r=`ilink/bot/get_qrcode_status?qrcode=${encodeURIComponent(A)}`;Mt(e)&&(r+=`&verify_code=${encodeURIComponent(e.trim())}`);let s=await Ds(n,{method:"GET",baseUrl:i,endpoint:r,timeoutMs:xZ,signal:a,authenticated:!1});return HLe(s)},async getUpdates({baseUrl:o,token:i,getUpdatesBuf:e="",timeoutMs:a,signal:A}){try{return await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/getupdates",body:{get_updates_buf:e,base_info:Fc()},token:i,timeoutMs:a??xZ,signal:A})}catch(r){if(r instanceof NA&&r.code==="timeout")return{ret:0,msgs:[],get_updates_buf:e};throw r}},async getConfig({baseUrl:o,token:i,toUserId:e,contextToken:a,signal:A}){let r=Mt(e);if(!r)throw new TypeError("toUserId is required");let s=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/getconfig",token:i,signal:A,timeoutMs:1e4,body:{ilink_user_id:r,...Mt(a)?{context_token:a.trim()}:{},base_info:Fc()}});if(s?.ret!==void 0&&s.ret!==0)throw new NA("config-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u673A\u5668\u4EBA\u914D\u7F6E\u8BF7\u6C42\u3002");return{typingTicket:Mt(s?.typing_ticket)}},async sendTyping({baseUrl:o,token:i,toUserId:e,typingTicket:a,status:A,signal:r}){let s=Mt(e),g=Mt(a);if(!s||!g)throw new TypeError("toUserId and typingTicket are required");if(A!==1&&A!==2)throw new TypeError("typing status must be 1 or 2");let c=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/sendtyping",token:i,signal:r,timeoutMs:1e4,body:{ilink_user_id:s,typing_ticket:g,status:A,base_info:Fc()}});if(c?.ret!==void 0&&c.ret!==0)throw new NA("typing-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u8F93\u5165\u72B6\u6001\u8BF7\u6C42\u3002");return!0},async sendText({baseUrl:o,token:i,toUserId:e,text:a,contextToken:A,runId:r,signal:s}){let g=Mt(e),c=Mt(a);if(!g||!c)throw new TypeError("toUserId and text are required");let I=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/sendmessage",token:i,signal:s,body:{msg:{from_user_id:"",to_user_id:g,client_id:`dsh-weixin-${KZ()}`,message_type:2,message_state:2,item_list:[{type:1,text_item:{text:c}}],...Mt(A)?{context_token:A.trim()}:{},...Mt(r)?{run_id:r.trim()}:{}},base_info:Fc()}}),d=jG(I);if(d)throw new NA("send-rejected","\u5FAE\u4FE1\u670D\u52A1\u62D2\u7EDD\u4E86\u56DE\u590D\u6D88\u606F\u3002",{providerCode:d});return!0},async sendFile(o){return t(o,{mediaType:3,createItem:({file:i,media:e})=>({type:4,file_item:{media:e,file_name:i.fileName,len:String(i.bytes.byteLength)}})})},async sendImage(o){return t(o,{mediaType:1,createItem:({media:i,ciphertextSize:e})=>({type:2,image_item:{media:i,mid_size:e}})})},async notifyStart({baseUrl:o,token:i,signal:e}){let a=await Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/msg/notifystart",token:i,signal:e,timeoutMs:1e4,body:{base_info:Fc()}});if(a?.ret!==void 0&&a.ret!==0)throw new NA("start-rejected","\u5FAE\u4FE1\u8D26\u53F7\u8FDE\u63A5\u542F\u52A8\u5931\u8D25\u3002");return a},async notifyStop({baseUrl:o,token:i,signal:e}){return Ds(n,{method:"POST",baseUrl:o,endpoint:"ilink/bot/msg/notifystop",token:i,signal:e,timeoutMs:1e4,body:{base_info:Fc()}})}})}function Ml(n){for(let t of n?.item_list??[]){if(t?.type===1&&typeof t.text_item?.text=="string"){let o=t.text_item.text.trim();if(o)return o}if(t?.type===3&&typeof t.voice_item?.text=="string"){let o=t.voice_item.text.trim();if(o)return o}}return null}function ZG(n){return n?.message_id!==void 0&&n.message_id!==null?String(n.message_id):Mt(n?.client_id)}function $Z(n,t=bl){if(n.length<=t)return[n];let o=[],i=n;for(;i.length>t;){let e=i.lastIndexOf(` `,t);ea===null))return null;let o=new Set,i=new Set,e=new Set;for(let a of t){if(o.has(a.botId)||i.has(a.accountId)||e.has(a.tokenRef))return null;o.add(a.botId),i.add(a.accountId),e.add(a.tokenRef)}return Object.freeze({version:1,accounts:Object.freeze(t)})}var fw=class{#e;#A=XG;#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{let t=WLe(JSON.parse(await YLe(this.#e,"utf8")));if(!t)throw new Error("dsh-weixin config contains invalid account data");this.#A=t}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=XG}return this}list(){return structuredClone(this.#A.accounts)}get(t){let o=this.#A.accounts.find(i=>i.botId===t);return o?structuredClone(o):null}getByAccountId(t){let o=this.#A.accounts.find(i=>i.accountId===t);return o?structuredClone(o):null}async save(t){let o=A9(t);if(!o)throw new Error("Refusing to persist incomplete dsh-weixin account data");return this.#r(i=>{let e=i.find(r=>r.accountId===o.accountId&&r.botId!==o.botId),a=i.find(r=>r.tokenRef===o.tokenRef&&r.botId!==o.botId);if(e||a)throw new Error("Duplicate Weixin account identity");let A=i.findIndex(r=>r.botId===o.botId);return A===-1?i.push(o):i[A]=o,structuredClone(o)})}async remove(t){if(!e9(t))throw new TypeError("Invalid Weixin bot id");return this.#r(o=>{let i=o.findIndex(a=>a.botId===t);if(i===-1)return null;let[e]=o.splice(i,1);return structuredClone(e)})}async clear(){let t=this.#t.then(async()=>{try{await JLe(this.#e)}catch(o){if(o?.code!=="ENOENT")throw o}this.#A=XG});this.#t=t.then(()=>{},()=>{}),await t}async#r(t){let o,i=this.#t.then(async()=>{let e=[...this.#A.accounts];o=t(e);let a=Object.freeze({version:1,accounts:Object.freeze(e)});await this.#l(a),this.#A=a});return this.#t=i.then(()=>{},()=>{}),await i,o}async#l(t){await xLe(zLe(this.#e),{recursive:!0,mode:448});let o=`${this.#e}.tmp`;await qLe(o,`${JSON.stringify(t,null,2)} `,{encoding:"utf8",mode:384}),await jLe(o,this.#e)}};var Qw=class extends ur{constructor(t){super({...t,rpcIdPrefix:"weixin",logPrefix:"dsh-weixin"})}};import{mkdir as ZLe,readFile as XLe,rename as $Le,unlink as e2e,writeFile as A2e}from"node:fs/promises";import{dirname as t2e}from"node:path";var yw=Object.freeze({version:1,sessions:{},seenMessageIds:[],getUpdatesBuf:""});function r2e(n){if(!n||typeof n!="object")return structuredClone(yw);let t={};if(n.sessions&&typeof n.sessions=="object"&&!Array.isArray(n.sessions))for(let[o,i]of Object.entries(n.sessions))typeof o=="string"&&typeof i=="string"&&i&&(t[o]=i);return{version:1,sessions:t,seenMessageIds:Array.isArray(n.seenMessageIds)?n.seenMessageIds.filter(o=>typeof o=="string").slice(-1e3):[],getUpdatesBuf:typeof n.getUpdatesBuf=="string"?n.getUpdatesBuf:""}}var mw=class{#e;#A=structuredClone(yw);#t=Promise.resolve();constructor(t){this.#e=t}async load(){try{this.#A=r2e(JSON.parse(await XLe(this.#e,"utf8")))}catch(t){if(t?.code!=="ENOENT")throw t;this.#A=structuredClone(yw),await this.#r()}return this}sessionFor(t){return this.#A.sessions[t]??null}async setSession(t,o){this.#A.sessions[t]=o,await this.#r()}async clearSession(t){delete this.#A.sessions[t],await this.#r()}async clearSessions(){this.#A.sessions={},await this.#r()}hasSeen(t){return this.#A.seenMessageIds.includes(t)}async markSeen(t){this.hasSeen(t)||(this.#A.seenMessageIds.push(t),this.#A.seenMessageIds.length>1e3&&this.#A.seenMessageIds.splice(0,this.#A.seenMessageIds.length-1e3),await this.#r())}getUpdatesBuf(){return this.#A.getUpdatesBuf}async setGetUpdatesBuf(t){typeof t!="string"||t===this.#A.getUpdatesBuf||(this.#A.getUpdatesBuf=t,await this.#r())}snapshot(){return structuredClone(this.#A)}async remove(){try{await e2e(this.#e)}catch(t){if(t?.code!=="ENOENT")throw t}this.#A=structuredClone(yw)}async#r(){let t=`${JSON.stringify(this.#A,null,2)} `,o=this.#t.then(async()=>{await ZLe(t2e(this.#e),{recursive:!0,mode:448});let i=`${this.#e}.tmp`;await A2e(i,t,{encoding:"utf8",mode:384}),await $Le(i,this.#e)});this.#t=o.then(()=>{},()=>{}),await o}};import{randomUUID as a2e}from"node:crypto";var t9=new Set(["starting","pending","scanned","needs_verification","connecting"]),Sw=new Set(["connected","expired","failed","cancelled"]),r9=5*6e4,o9=Object.freeze({"credential-read-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u65E0\u6CD5\u8BFB\u53D6\u73B0\u6709\u767B\u5F55\u51ED\u636E\u3002\u8BF7\u68C0\u67E5 DSH \u51ED\u636E\u5B58\u50A8\u3002","credential-save-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u767B\u5F55\u51ED\u636E\u65E0\u6CD5\u5199\u5165 DSH \u51ED\u636E\u5B58\u50A8\u3002\u8BF7\u68C0\u67E5\u51ED\u636E\u5B58\u50A8\u662F\u5426\u53EF\u5199\u3002","account-config-save-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u8D26\u53F7\u914D\u7F6E\u65E0\u6CD5\u5199\u5165\u672C\u673A\u3002\u8BF7\u68C0\u67E5 DSH_HOME \u76EE\u5F55\u6743\u9650\u3002","runtime-prepare-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u65E0\u6CD5\u521D\u59CB\u5316\u8D26\u53F7\u72B6\u6001\u6216\u5DE5\u4F5C\u533A\u3002\u8BF7\u68C0\u67E5 DSH_HOME \u548C\u5DE5\u4F5C\u533A\u76EE\u5F55\u3002","harness-connect-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u63D2\u4EF6\u65E0\u6CD5\u8FDE\u63A5\u672C\u673A Harness\u3002\u8BF7\u68C0\u67E5 dsh web \u5730\u5740\u548C\u7AEF\u53E3\u3002","harness-timeout":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u5065\u5EB7\u68C0\u67E5\u8D85\u65F6\u3002\u8BF7\u786E\u8BA4 dsh web \u672A\u963B\u585E\u3002","harness-auth-required":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u5065\u5EB7\u68C0\u67E5\u9700\u8981\u8EAB\u4EFD\u8BA4\u8BC1\u3002\u8BF7\u68C0\u67E5\u4EE3\u7406\u3001\u7F51\u5173\u6216\u81EA\u5B9A\u4E49\u9274\u6743\u914D\u7F6E\u3002","harness-proxy-auth-required":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u672C\u673A Harness \u8BF7\u6C42\u88AB\u4EE3\u7406\u8981\u6C42\u8BA4\u8BC1\u3002\u8BF7\u8BA9\u56DE\u73AF\u5730\u5740\u7ED5\u8FC7\u4EE3\u7406\uFF0C\u5E76\u68C0\u67E5 NO_PROXY \u914D\u7F6E\u3002","harness-loopback-forbidden":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u5F02\u5E38\u62D2\u7EDD\u4E86\u56DE\u73AF\u5730\u5740\u7684\u5065\u5EB7\u68C0\u67E5\u3002\u8BF7\u68C0\u67E5 HTTP \u4EE3\u7406\u3001Harness \u6E90\u7801\u7248\u672C\u548C\u6784\u5EFA\u4EA7\u7269\u3002","harness-host-untrusted":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u7684 Host \u4FE1\u4EFB\u68C0\u67E5\u62D2\u7EDD\u4E86\u975E\u56DE\u73AF\u5730\u5740\u8BF7\u6C42\u3002\u8BF7\u68C0\u67E5 harnessBaseUrl \u4E0E trustedHosts \u914D\u7F6E\u3002","harness-request-forbidden":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u5065\u5EB7\u68C0\u67E5\u6536\u5230\u4E86\u975E Harness \u6807\u51C6\u7684 403 \u62D2\u7EDD\u54CD\u5E94\u3002\u8BF7\u68C0\u67E5\u4EE3\u7406\u6216\u7F51\u5173\u914D\u7F6E\u3002","harness-api-not-found":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u627E\u4E0D\u5230 Harness \u5065\u5EB7\u68C0\u67E5\u63A5\u53E3\u3002\u8BF7\u786E\u8BA4 Harness \u4E0E\u63D2\u4EF6\u7248\u672C\u517C\u5BB9\u3002","harness-http-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u5065\u5EB7\u68C0\u67E5\u8FD4\u56DE\u670D\u52A1\u9519\u8BEF\u3002\u8BF7\u67E5\u770B dsh web \u65E5\u5FD7\u3002","harness-response-invalid":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u8FD4\u56DE\u4E86\u65E0\u6CD5\u8BC6\u522B\u7684\u54CD\u5E94\u3002\u8BF7\u786E\u8BA4 Harness \u4E0E\u63D2\u4EF6\u7248\u672C\u517C\u5BB9\u3002","harness-rpc-rejected":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u62D2\u7EDD\u4E86\u5065\u5EB7\u68C0\u67E5\u8BF7\u6C42\u3002\u8BF7\u67E5\u770B dsh web \u65E5\u5FD7\u3002","harness-check-unknown-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46 Harness \u5065\u5EB7\u68C0\u67E5\u53D1\u751F\u672A\u77E5\u9519\u8BEF\u3002\u8BF7\u67E5\u770B dsh web \u65E5\u5FD7\u3002","connection-start-failed":"\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u6D88\u606F\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25\u3002\u8BF7\u67E5\u770B dsh web \u65E5\u5FD7\u540E\u91CD\u8BD5\u3002"});function th(n){return typeof n=="string"&&n.trim()?n.trim():null}function i2e(){return new DOMException("Provisioning was cancelled","AbortError")}function a9(n,t){let o=th(n);return o?Ah(o.includes("://")?o:`https://${o}`):Ah(t)}function iB(n){return n?{attemptId:n.id,status:n.state,...n.verificationUrl?{verificationUrl:n.verificationUrl}:{},...n.expiresAt?{expiresAt:n.expiresAt}:{},pollIntervalMs:1e3,...n.state==="needs_verification"?{verificationRequired:!0}:{},...n.botId?{botId:n.botId}:{},...n.alreadyConnected?{alreadyConnected:!0}:{},...n.error?{error:structuredClone(n.error)}:{}}:null}function pi(n,t){return Object.freeze({code:n,message:t})}function oB(n,t){let o=new Error(`Weixin activation failed during ${n}`,{cause:t});return o.name="WeixinActivationStageError",o.code=n,o}function o2e(n){if(n instanceof NA)return pi(n.code,n.message);let t=o9[n?.code];return t?pi(n.code,w(t)):pi("activation-unknown-failed",w("\u5FAE\u4FE1\u5DF2\u6388\u6743\uFF0C\u4F46\u6FC0\u6D3B\u8FC7\u7A0B\u4E2D\u53D1\u751F\u672A\u77E5\u9519\u8BEF\u3002\u8BF7\u67E5\u770B dsh web \u65E5\u5FD7\u3002"))}function i9(n,t){return n instanceof NA||o9[n?.code]?n:oB(t,n)}var nB=class{#e;#A;#t;#r;#l;#o;#i=new Map;#a=new Map;#n=new Map;#s=null;#p=new Map;#c=0;#g=!1;constructor({api:t,credentials:o,configStore:i,createRuntime:e,deleteState:a=async()=>{},logger:A=console}){if(!t||typeof t.beginLogin!="function"||typeof t.pollLogin!="function")throw new TypeError("WeixinController requires a Weixin API client");if(!o||typeof o.resolve!="function"||typeof o.set!="function"||typeof o.unset!="function")throw new TypeError("WeixinController requires the DSH credential provider");if(!i||typeof i.list!="function"||typeof i.save!="function"||typeof i.remove!="function")throw new TypeError("WeixinController requires a config store");if(typeof e!="function")throw new TypeError("createRuntime is required");this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A}async initialize(){if(this.#g)return this.status();for(let t of this.#t.list())this.#i.get(t.botId)?.status?.ready!==!0&&await this.#Q(t.botId,async()=>{let i=this.#t.get(t.botId);if(!(!i||this.#g))try{let e=await this.#u(i.tokenRef);if(!e){this.#a.set(i.botId,pi("missing-token",w("\u767B\u5F55\u51ED\u636E\u7F3A\u5931\uFF0C\u8BF7\u79FB\u9664\u8D26\u53F7\u540E\u91CD\u65B0\u626B\u7801\u3002")));return}await this.#h(i,e),this.#a.delete(i.botId)}catch(e){this.#a.set(i.botId,pi("connection-failed",w("\u5FAE\u4FE1\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5\u3002"))),this.#o.warn?.(`[dsh-weixin] account ${i.botId} failed to initialize:`,e)}finally{this.#y()}});return this.status()}async startProvisioning(){if(this.#g)throw new Error("dsh-weixin controller is closed");this.#s&&await this.cancelProvisioning(this.#s);let t={id:a2e(),state:"starting",createdAt:Date.now(),expiresAt:Date.now()+r9,controller:new AbortController,pendingVerifyCode:null,verifyResolve:null,currentBaseUrl:Bw,error:null,botId:null,task:null};this.#n.set(t.id,t),this.#s=t.id,this.#y();try{let o=(await Promise.all(this.#t.list().slice(-10).map(async e=>this.#u(e.tokenRef)))).filter(Boolean),i=await this.#e.beginLogin({localTokens:o,signal:t.controller.signal});return this.#f(t),t.qrcode=i.qrcode,t.verificationUrl=i.qrcodeUrl,t.state="pending",t.expiresAt=Date.now()+r9,this.#y(),t.task=this.#I(t),iB(t)}catch(o){throw t.controller.signal.aborted?(t.state="cancelled",t.error=pi("cancelled",w("\u626B\u7801\u7ED1\u5B9A\u5DF2\u53D6\u6D88\u3002"))):(t.state="failed",t.error=pi(o instanceof NA?o.code:"qr-start-failed",o instanceof NA?o.message:w("\u65E0\u6CD5\u751F\u6210\u5FAE\u4FE1\u4E8C\u7EF4\u7801\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"))),this.#s===t.id&&(this.#s=null),this.#y(),o}}registrationStatus(t){return iB(this.#n.get(t))}async submitVerification(t,o){let i=this.#n.get(t);if(!i||i.state!=="needs_verification")throw new Error("The provisioning attempt is not waiting for a verification code");let e=th(o);if(!e||!/^\d{4,8}$/.test(e))throw new TypeError("Verification code must contain 4 to 8 digits");return i.pendingVerifyCode=e,i.state="scanned",i.verifyResolve?.(),i.verifyResolve=null,this.#y(),iB(i)}async cancelProvisioning(t){let o=this.#n.get(t);return o?(Sw.has(o.state)||(o.controller.abort(),o.verifyResolve?.(),o.verifyResolve=null,await o.task?.catch(()=>{}),Sw.has(o.state)||(o.state="cancelled"),o.error??=pi("cancelled",w("\u626B\u7801\u7ED1\u5B9A\u5DF2\u53D6\u6D88\u3002"))),this.#s===o.id&&(this.#s=null),this.#y(),iB(o)):null}async reconnectBot(t){let o=this.#t.get(t);if(!o)throw new Error("Unknown Weixin account");return await this.#Q(t,async()=>{let i=await this.#u(o.tokenRef);if(!i)throw new Error("The Weixin token is missing");try{await this.#h(o,i),this.#a.delete(t)}catch(e){throw this.#a.set(t,pi("connection-failed",w("\u5FAE\u4FE1\u8FDE\u63A5\u4ECD\u672A\u5C31\u7EEA\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"))),e}finally{this.#y()}}),this.status()}async sendConnectionTest(t){let o=this.#t.get(t);if(!o)throw new Error("Unknown Weixin account");return this.#Q(t,async()=>{let i=this.#i.get(t);if(!i?.status?.ready||typeof i.sendConnectionTest!="function")throw Cr(w("\u5FAE\u4FE1\u673A\u5668\u4EBA"));return i.sendConnectionTest(ka(w("\u5FAE\u4FE1\u673A\u5668\u4EBA\uFF08{name}\uFF09",{name:eF(o.accountId)})))})}async sendProactiveText(t,o,i,e={}){if(!this.#t.get(t))throw new Error("Unknown Weixin account");return this.#Q(t,async()=>{let A=this.#i.get(t);if(!A?.status?.ready||typeof A.sendProactiveText!="function"){let r=new Error(w("\u5FAE\u4FE1\u8FDE\u63A5\u5F53\u524D\u79BB\u7EBF"));throw r.code="bot-not-connected",r}return A.sendProactiveText(o,i,e)})}async deleteBot(t){let o=this.#t.get(t);if(!o)throw new Error("Unknown Weixin account");return await this.#Q(t,async()=>{let i=await this.#A.resolve(o.tokenRef).catch(()=>{});await this.#C(t);try{await this.#A.unset(o.tokenRef),await this.#t.remove(t)}catch(e){throw i?.value&&(await this.#A.set(o.tokenRef,i.value).catch(()=>{}),await this.#h(o,i.value).catch(()=>{})),new Error("Unable to remove the Weixin account safely.",{cause:e})}try{await this.#l({botId:t,config:o})}catch(e){this.#o.warn?.(`[dsh-weixin] account ${t} state cleanup failed:`,e)}this.#a.delete(t),this.#y()}),this.status()}status(){let t=this.#t.list().map(e=>{let a=this.#i.get(e.botId)?.status??null,A=a?.ready===!0&&a.weixinConnectionState==="connected"&&a.harnessReachable===!0,r=A?"connected":a?.weixinConnectionState==="connecting"?"connecting":this.#a.has(e.botId)||a?.weixinConnectionState==="failed"?"error":"offline",s=this.#a.get(e.botId)??(r==="error"?pi("connection-failed",w("\u5FAE\u4FE1\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5\u3002")):null);return{botId:e.botId,state:r,connected:A,configured:!0,bot:{name:w("\u5FAE\u4FE1\u673A\u5668\u4EBA"),accountIdMasked:eF(e.accountId)},health:{status:A?"healthy":r==="error"?"error":"offline",summary:A?w("\u5FAE\u4FE1\u6D88\u606F\u957F\u8F6E\u8BE2\u8FD0\u884C\u6B63\u5E38"):r==="error"?w("\u5FAE\u4FE1\u8FDE\u63A5\u672A\u5C31\u7EEA\uFF0C\u63D2\u4EF6\u4F1A\u81EA\u52A8\u91CD\u8BD5"):w("\u5FAE\u4FE1\u8FDE\u63A5\u5F53\u524D\u79BB\u7EBF"),lastCheckedAt:a?.lastCheckedAt??null},stats:{messagesReceived:a?.messagesReceived??0,messagesReplied:a?.messagesReplied??0},lastMessageError:Xr(a?.lastMessageError),error:s?structuredClone(s):null}}),o=t.filter(e=>e.connected).length,i=this.#s?this.#n.get(this.#s):null;return{schemaVersion:1,revision:this.#c,state:i&&t9.has(i.state)?"provisioning":t.length===0?"disconnected":o===t.length?"connected":o>0?"degraded":"offline",bots:t,totals:{configured:t.length,connected:o},...i&&t9.has(i.state)?{provisioning:iB(i)}:{}}}async close(){this.#g||(this.#g=!0,this.#s&&await this.cancelProvisioning(this.#s),await Promise.allSettled([...this.#i.keys()].map(t=>this.#C(t))))}async#I(t){try{for(;!t.controller.signal.aborted&&Date.now(){t.verifyResolve=i,t.controller.signal.aborted&&i()}),t.verifyResolve=null,this.#f(t));let o=await this.#e.pollLogin({qrcode:t.qrcode,baseUrl:t.currentBaseUrl,verifyCode:t.pendingVerifyCode,signal:t.controller.signal});if(this.#f(t),o.status==="wait")t.state="pending";else if(o.status==="scaned")t.pendingVerifyCode=null,t.state="scanned";else if(o.status==="need_verifycode")t.pendingVerifyCode=null,t.state="needs_verification";else if(o.status==="verify_code_blocked"){t.state="failed",t.error=pi("verification-blocked",w("\u914D\u5BF9\u7801\u591A\u6B21\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210\u4E8C\u7EF4\u7801\u3002"));break}else if(o.status==="expired"){t.state="expired",t.error=pi("expired",w("\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210\u3002"));break}else if(o.status==="scaned_but_redirect")t.currentBaseUrl=a9(o.redirect_host,t.currentBaseUrl),t.state="scanned";else if(o.status==="binded_redirect"){let i=this.#t.list().find(e=>this.#i.get(e.botId)?.status?.ready===!0)??this.#t.list()[0];i?(t.state="connected",t.botId=i.botId,t.alreadyConnected=!0):(t.state="failed",t.error=pi("already-bound",w("\u8BE5\u5FAE\u4FE1\u8D26\u53F7\u5DF2\u7ED1\u5B9A\uFF0C\u4F46\u672C\u673A\u6CA1\u6709\u53EF\u6062\u590D\u7684\u51ED\u636E\u3002")));break}else if(o.status==="confirmed"){let i=th(o.bot_token),e=th(o.ilink_bot_id),a=th(o.ilink_user_id);if(!i||!e||!a)throw new NA("incomplete-login",w("\u5FAE\u4FE1\u6388\u6743\u6210\u529F\uFF0C\u4F46\u8FD4\u56DE\u7684\u8D26\u53F7\u51ED\u636E\u4E0D\u5B8C\u6574\u3002"));t.state="connecting",this.#y();let A=a9(o.baseurl,t.currentBaseUrl);t.botId=await this.#d(t,{token:i,accountId:e,ownerUserId:a,baseUrl:A}),t.state="connected",t.error=null;break}this.#y()}!t.controller.signal.aborted&&Date.now()>=t.expiresAt&&!Sw.has(t.state)&&(t.state="expired",t.error=pi("expired",w("\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u751F\u6210\u3002")))}catch(o){t.controller.signal.aborted||o?.name==="AbortError"?(t.state="cancelled",t.error=pi("cancelled",w("\u626B\u7801\u7ED1\u5B9A\u5DF2\u53D6\u6D88\u3002"))):(t.state="failed",t.error=o2e(o),this.#o.error?.("[dsh-weixin] provisioning failed:",o))}finally{t.pendingVerifyCode=null,t.verifyResolve?.(),t.verifyResolve=null,this.#s===t.id&&(this.#s=null),this.#y(),this.#S()}}async#d(t,{token:o,accountId:i,ownerUserId:e,baseUrl:a}){let A=$G(i),r=this.#t.getByAccountId(i),s={botId:A.botId,accountId:i,tokenRef:A.tokenRef,ownerUserId:e,baseUrl:a,createdAt:r?.createdAt??new Date().toISOString(),connectedAt:new Date().toISOString()},g;try{g=await this.#A.resolve(A.tokenRef)}catch(c){throw oB("credential-read-failed",c)}return this.#Q(A.botId,async()=>{try{try{await this.#A.set(A.tokenRef,o)}catch(c){throw oB("credential-save-failed",c)}this.#f(t);try{await this.#t.save(s)}catch(c){throw oB("account-config-save-failed",c)}return this.#f(t),await this.#h(s,o),this.#f(t),this.#a.delete(A.botId),this.#y(),A.botId}catch(c){throw await this.#C(A.botId),r?await this.#t.save(r).catch(()=>{}):this.#t.get(A.botId)&&await this.#t.remove(A.botId).catch(()=>null)&&await this.#l({botId:A.botId,config:s}).catch(d=>{this.#o.warn?.("[dsh-weixin] failed to clean up cancelled bot state:",d)}),await this.#B(A.tokenRef,g),r&&g?.value&&await this.#h(r,g.value).catch(()=>{}),c}})}async#h(t,o){await this.#C(t.botId);let i;try{i=await this.#r({botId:t.botId,config:t,token:o})}catch(e){throw i9(e,"runtime-prepare-failed")}if(!i||typeof i.start!="function"||typeof i.stop!="function")throw oB("runtime-prepare-failed",new TypeError("createRuntime returned an invalid Weixin runtime"));try{await i.start(),this.#i.set(t.botId,i)}catch(e){throw await i.stop().catch(()=>{}),i9(e,"connection-start-failed")}}async#C(t){let o=this.#i.get(t);this.#i.delete(t),await o?.stop().catch(i=>{this.#o.warn?.(`[dsh-weixin] account ${t} failed to stop cleanly:`,i)})}async#u(t){let o=await this.#A.resolve(t).catch(()=>{});return th(o?.value)}async#B(t,o){try{o?.value?await this.#A.set(t,o.value):await this.#A.unset(t)}catch(i){this.#o.error?.(`[dsh-weixin] failed to restore credential ${t}:`,i)}}#f(t){if(t.controller.signal.aborted||this.#s!==t.id)throw i2e()}#Q(t,o){let a=(this.#p.get(t)??Promise.resolve()).catch(()=>{}).then(o).finally(()=>{this.#p.get(t)===a&&this.#p.delete(t)});return this.#p.set(t,a),a}#S(){for(let[t,o]of this.#n)t!==this.#s&&Sw.has(o.state)&&this.#n.size>16&&this.#n.delete(t)}#y(){this.#c+=1}};var ww=()=>w("\u8FD9\u4E2A\u95EE\u9898\u5DF2\u5728\u5176\u4ED6\u5BA2\u6237\u7AEF\u5904\u7406\uFF0C\u65E0\u9700\u518D\u6B21\u56DE\u7B54\u3002"),n2e=5e3,AF=6e4,g9=Symbol("weixin-send-diagnostic"),s2e=()=>[w("\u5FAE\u4FE1\u5DF2\u8FDE\u63A5 DeepSeek Harness\u3002"),"",w("\u76F4\u63A5\u53D1\u9001\u6587\u5B57\u3001\u56FE\u7247\u3001\u6587\u4EF6\u6216\u5E26\u6587\u5B57\u8BC6\u522B\u7ED3\u679C\u7684\u8BED\u97F3\u5373\u53EF\u7EE7\u7EED\u5F53\u524D\u4F1A\u8BDD\u3002"),w("/new \u5F00\u542F\u4E00\u4E2A\u5168\u65B0\u4F1A\u8BDD"),w("/compact \u538B\u7F29\u5F53\u524D\u4F1A\u8BDD\u7684\u8F83\u65E9\u4E0A\u4E0B\u6587"),w("/history [\u6570\u91CF] \u67E5\u770B\u6700\u8FD1\u5386\u53F2\u6D88\u606F\uFF08\u9ED8\u8BA4 3 \u6761\uFF0C\u6700\u591A 5 \u6761\uFF09"),w("/workspace \u5DE5\u4F5C\u533A\u5E8F\u53F7\u6216\u7EDD\u5BF9\u8DEF\u5F84 \u5207\u6362\u5DE5\u4F5C\u533A"),w("/workspacelist \u5217\u51FA\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84"),w("/sessionlist \u6216 /sessions [\u5DE5\u4F5C\u533A\u5E8F\u53F7\u6216\u7EDD\u5BF9\u8DEF\u5F84] \u5217\u51FA\u4F1A\u8BDD ID \u548C\u6807\u9898"),w("/session Session ID \u6216\u5F53\u524D\u5DE5\u4F5C\u533A\u5E8F\u53F7 \u5C06\u5F53\u524D\u804A\u5929\u7ED1\u5B9A\u5230\u6307\u5B9A\u4F1A\u8BDD"),w("/models \u6309\u5E8F\u53F7\u5217\u51FA\u6240\u6709\u53EF\u7528\u6A21\u578B"),w("/reasoninglist \u6216 /reasonings \u6309\u5E8F\u53F7\u5217\u51FA\u5F53\u524D\u6A21\u578B\u53EF\u7528\u63A8\u7406\u7B49\u7EA7"),w("/reasoning [\u5E8F\u53F7\u3001\u7B49\u7EA7ID\u6216 --default] \u67E5\u770B\u6216\u5207\u6362\u5F53\u524D\u63A8\u7406\u7B49\u7EA7"),w("/model [\u5E8F\u53F7\u6216\u5B8C\u6574\u6A21\u578BID] [\u63A8\u7406\u7B49\u7EA7ID] \u67E5\u770B\u6216\u5207\u6362\u5F53\u524D\u4F1A\u8BDD\u6A21\u578B"),w("\u793A\u4F8B\uFF1A\u5148\u53D1 /models\uFF0C\u518D\u53D1 /model 2 [\u63A8\u7406\u7B49\u7EA7ID]"),w("/presetlist \u6216 /presets \u6309\u5E8F\u53F7\u5217\u51FA\u53EF\u7528 Agent Preset"),w("/preset [\u5E8F\u53F7\u6216\u5B8C\u6574ID] \u67E5\u770B\u6216\u8BBE\u7F6E\u5F53\u524D\u673A\u5668\u4EBA Agent Preset"),w("\u7EAF\u6570\u5B57 ID\uFF1A/preset id:"),w("/preset --default \u8DDF\u968F Host \u9ED8\u8BA4"),w("/stop \u505C\u6B62\u5F53\u524D\u4EFB\u52A1"),w("/steer \u8865\u5145\u6307\u4EE4 \u7EA0\u504F\u5F53\u524D\u4EFB\u52A1"),w("/batch \u5F00\u59CB\u6279\u91CF\u8F93\u5165\uFF08\u4EC5\u79C1\u804A\uFF0C\u6700\u591A 10 \u6761\u6587\u5B57\uFF09"),w("/send \u63D0\u4EA4\u5F53\u524D\u6279\u6B21"),w("/cancel \u53D6\u6D88\u5F53\u524D\u6279\u6B21"),w("/status \u68C0\u67E5\u8FDE\u63A5\u72B6\u6001"),w("/version \u67E5\u770B\u63D2\u4EF6\u7248\u672C"),w("/help \u663E\u793A\u672C\u5E2E\u52A9")].join(` @@ -420,8 +420,8 @@ ${B}`:dt(m),s,g),I||await this.#o.markSeen(A)}catch(_){this.#s.error?.("[dsh-wei `);let o=Gn(n.content,t+1),i=`<${n.tag} ${Object.entries(n.attrs||{}).filter(([,a])=>a!==void 0).map(([a,A])=>`${a}='${A}'`).join(" ")}`,e=o?`> ${o} ${iD(t)}`:"/>";return i+e}var eI=qe(xc(),1);import{createCipheriv as VF,createDecipheriv as WF,createHash as hHe,createHmac as EHe,randomBytes as CHe}from"crypto";var MB=class n{static __wrap(t){t=t>>>0;let o=Object.create(n.prototype);return o.__wbg_ptr=t,u7.register(o,o.__wbg_ptr,o),o}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,u7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_expandedappstatekeys_free(t,0)}get indexKey(){let t=ae.expandedappstatekeys_indexKey(this.__wbg_ptr);return mA(t)}get patchMacKey(){let t=ae.expandedappstatekeys_patchMacKey(this.__wbg_ptr);return mA(t)}get snapshotMacKey(){let t=ae.expandedappstatekeys_snapshotMacKey(this.__wbg_ptr);return mA(t)}get valueEncryptionKey(){let t=ae.expandedappstatekeys_valueEncryptionKey(this.__wbg_ptr);return mA(t)}get valueMacKey(){let t=ae.expandedappstatekeys_valueMacKey(this.__wbg_ptr);return mA(t)}};Symbol.dispose&&(MB.prototype[Symbol.dispose]=MB.prototype.free);var nD=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,B7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_groupcipher_free(t,0)}decrypt(t){let o=kt(t,ae.__wbindgen_export),i=KA,e=ae.groupcipher_decrypt(this.__wbg_ptr,o,i);return mA(e)}encrypt(t){let o=kt(t,ae.__wbindgen_export),i=KA,e=ae.groupcipher_encrypt(this.__wbg_ptr,o,i);return mA(e)}constructor(t,o,i){let e=Ln(o,ae.__wbindgen_export,ae.__wbindgen_export2),a=KA;Xc(i,$c);let A=ae.groupcipher_new(rA(t),e,a,i.__wbg_ptr);return this.__wbg_ptr=A>>>0,B7.register(this,this.__wbg_ptr,this),this}};Symbol.dispose&&(nD.prototype[Symbol.dispose]=nD.prototype.free);var sD=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,f7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_groupsessionbuilder_free(t,0)}create(t){Xc(t,Ch);let o=ae.groupsessionbuilder_create(this.__wbg_ptr,t.__wbg_ptr);return mA(o)}constructor(t){let o=ae.groupsessionbuilder_new(rA(t));return this.__wbg_ptr=o>>>0,f7.register(this,this.__wbg_ptr,this),this}process(t,o){Xc(t,Ch),Xc(o,Eh);let i=ae.groupsessionbuilder_process(this.__wbg_ptr,t.__wbg_ptr,o.__wbg_ptr);return mA(i)}};Symbol.dispose&&(sD.prototype[Symbol.dispose]=sD.prototype.free);var _B=class n{static __wrap(t){t=t>>>0;let o=Object.create(n.prototype);return o.__wbg_ptr=t,Q7.register(o,o.__wbg_ptr,o),o}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,Q7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_internalbinarynode_free(t,0)}get attrs(){let t=ae.internalbinarynode_attrs(this.__wbg_ptr);return mA(t)}get content(){let t=ae.internalbinarynode_content(this.__wbg_ptr);return mA(t)}set attrs(t){ae.internalbinarynode_set_attrs(this.__wbg_ptr,rA(t))}set content(t){ae.internalbinarynode_set_content(this.__wbg_ptr,rA(t))}get tag(){let t,o;try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.internalbinarynode_tag(a,this.__wbg_ptr);var i=eA().getInt32(a+0,!0),e=eA().getInt32(a+4,!0);return t=i,o=e,kr(i,e)}finally{ae.__wbindgen_add_to_stack_pointer(16),ae.__wbindgen_export4(t,o,1)}}toJSON(){let t=ae.internalbinarynode_toJSON(this.__wbg_ptr);return mA(t)}};Symbol.dispose&&(_B.prototype[Symbol.dispose]=_B.prototype.free);var hh=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,y7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_lthashantitampering_free(t,0)}constructor(){let t=ae.lthashantitampering_new();return this.__wbg_ptr=t>>>0,y7.register(this,this.__wbg_ptr,this),this}subtractThenAdd(t,o,i){try{let r=ae.__wbindgen_add_to_stack_pointer(-16),s=kt(t,ae.__wbindgen_export),g=KA,c=_7(o,ae.__wbindgen_export),I=KA,d=_7(i,ae.__wbindgen_export),B=KA;ae.lthashantitampering_subtractThenAdd(r,this.__wbg_ptr,s,g,c,I,d,B);var e=eA().getInt32(r+0,!0),a=eA().getInt32(r+4,!0),A=eA().getInt32(r+8,!0);if(A)throw mA(a);return mA(e)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(hh.prototype[Symbol.dispose]=hh.prototype.free);var gD=class n{static __wrap(t){t=t>>>0;let o=Object.create(n.prototype);return o.__wbg_ptr=t,YF.register(o,o.__wbg_ptr,o),o}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,YF.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_lthashstate_free(t,0)}clone(){let t=ae.lthashstate_clone(this.__wbg_ptr);return n.__wrap(t)}deleteValueMac(t){let o=Ln(t,ae.__wbindgen_export,ae.__wbindgen_export2),i=KA;return ae.lthashstate_deleteValueMac(this.__wbg_ptr,o,i)!==0}getValueMac(t){let o=Ln(t,ae.__wbindgen_export,ae.__wbindgen_export2),i=KA,e=ae.lthashstate_getValueMac(this.__wbg_ptr,o,i);return mA(e)}hasValueMac(t){let o=Ln(t,ae.__wbindgen_export,ae.__wbindgen_export2),i=KA;return ae.lthashstate_hasValueMac(this.__wbg_ptr,o,i)!==0}get hash(){let t=ae.lthashstate_hash(this.__wbg_ptr);return mA(t)}constructor(){let t=ae.lthashstate_new();return this.__wbg_ptr=t>>>0,YF.register(this,this.__wbg_ptr,this),this}setValueMac(t,o){let i=Ln(t,ae.__wbindgen_export,ae.__wbindgen_export2),e=KA,a=kt(o,ae.__wbindgen_export),A=KA;ae.lthashstate_setValueMac(this.__wbg_ptr,i,e,a,A)}set hash(t){let o=kt(t,ae.__wbindgen_export),i=KA;ae.lthashstate_set_hash(this.__wbg_ptr,o,i)}set version(t){ae.lthashstate_set_version(this.__wbg_ptr,t)}get version(){let t=ae.lthashstate_version(this.__wbg_ptr);return BigInt.asUintN(64,t)}};Symbol.dispose&&(gD.prototype[Symbol.dispose]=gD.prototype.free);var cD=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,m7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_noisesession_free(t,0)}authenticate(t){let o=kt(t,ae.__wbindgen_export),i=KA;ae.noisesession_authenticate(this.__wbg_ptr,o,i)}get bufferedBytes(){return ae.noisesession_bufferedBytes(this.__wbg_ptr)>>>0}clearBuffer(){ae.noisesession_clearBuffer(this.__wbg_ptr)}decodeFrame(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16),A=kt(t,ae.__wbindgen_export),r=KA;ae.noisesession_decodeFrame(a,this.__wbg_ptr,A,r);var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return mA(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}decrypt(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16),A=kt(t,ae.__wbindgen_export),r=KA;ae.noisesession_decrypt(a,this.__wbg_ptr,A,r);var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return mA(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}encodeFrame(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.noisesession_encodeFrame(a,this.__wbg_ptr,rA(t));var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return mA(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}encodeFrameRaw(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16),A=kt(t,ae.__wbindgen_export),r=KA;ae.noisesession_encodeFrameRaw(a,this.__wbg_ptr,A,r);var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return mA(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}encrypt(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16),A=kt(t,ae.__wbindgen_export),r=KA;ae.noisesession_encrypt(a,this.__wbg_ptr,A,r);var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return mA(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}finishInit(){try{let i=ae.__wbindgen_add_to_stack_pointer(-16);ae.noisesession_finishInit(i,this.__wbg_ptr);var t=eA().getInt32(i+0,!0),o=eA().getInt32(i+4,!0);if(o)throw mA(t)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}getHash(){let t=ae.noisesession_getHash(this.__wbg_ptr);return mA(t)}get isFinished(){return ae.noisesession_isFinished(this.__wbg_ptr)!==0}mixIntoKey(t){try{let e=ae.__wbindgen_add_to_stack_pointer(-16),a=kt(t,ae.__wbindgen_export),A=KA;ae.noisesession_mixIntoKey(e,this.__wbg_ptr,a,A);var o=eA().getInt32(e+0,!0),i=eA().getInt32(e+4,!0);if(i)throw mA(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}constructor(t,o,i){try{let g=ae.__wbindgen_add_to_stack_pointer(-16),c=kt(t,ae.__wbindgen_export),I=KA,d=kt(o,ae.__wbindgen_export),B=KA;var e=Fn(i)?0:kt(i,ae.__wbindgen_export),a=KA;ae.noisesession_new(g,c,I,d,B,e,a);var A=eA().getInt32(g+0,!0),r=eA().getInt32(g+4,!0),s=eA().getInt32(g+8,!0);if(s)throw mA(r);return this.__wbg_ptr=A>>>0,m7.register(this,this.__wbg_ptr,this),this}finally{ae.__wbindgen_add_to_stack_pointer(16)}}processHandshakeFinish(t,o,i){try{let r=ae.__wbindgen_add_to_stack_pointer(-16),s=kt(t,ae.__wbindgen_export),g=KA,c=kt(o,ae.__wbindgen_export),I=KA,d=kt(i,ae.__wbindgen_export),B=KA;ae.noisesession_processHandshakeFinish(r,this.__wbg_ptr,s,g,c,I,d,B);var e=eA().getInt32(r+0,!0),a=eA().getInt32(r+4,!0),A=eA().getInt32(r+8,!0);if(A)throw mA(a);return mA(e)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}processHandshakeInit(t,o,i,e){try{let s=ae.__wbindgen_add_to_stack_pointer(-16),g=kt(t,ae.__wbindgen_export),c=KA,I=kt(o,ae.__wbindgen_export),d=KA,B=kt(i,ae.__wbindgen_export),f=KA,Q=kt(e,ae.__wbindgen_export),y=KA;ae.noisesession_processHandshakeInit(s,this.__wbg_ptr,g,c,I,d,B,f,Q,y);var a=eA().getInt32(s+0,!0),A=eA().getInt32(s+4,!0),r=eA().getInt32(s+8,!0);if(r)throw mA(A);return mA(a)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(cD.prototype[Symbol.dispose]=cD.prototype.free);var $c=class n{static __wrap(t){t=t>>>0;let o=Object.create(n.prototype);return o.__wbg_ptr=t,jF.register(o,o.__wbg_ptr,o),o}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,jF.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_protocoladdress_free(t,0)}get deviceId(){return ae.protocoladdress_deviceId(this.__wbg_ptr)>>>0}static from(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.protocoladdress_from(a,rA(t));var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return n.__wrap(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}get id(){let t,o;try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.protocoladdress_id(a,this.__wbg_ptr);var i=eA().getInt32(a+0,!0),e=eA().getInt32(a+4,!0);return t=i,o=e,kr(i,e)}finally{ae.__wbindgen_add_to_stack_pointer(16),ae.__wbindgen_export4(t,o,1)}}is(t){return Xc(t,n),ae.protocoladdress_is(this.__wbg_ptr,t.__wbg_ptr)!==0}constructor(t,o){try{let A=ae.__wbindgen_add_to_stack_pointer(-16);ae.protocoladdress_new(A,rA(t),rA(o));var i=eA().getInt32(A+0,!0),e=eA().getInt32(A+4,!0),a=eA().getInt32(A+8,!0);if(a)throw mA(e);return this.__wbg_ptr=i>>>0,jF.register(this,this.__wbg_ptr,this),this}finally{ae.__wbindgen_add_to_stack_pointer(16)}}toString(){let t,o;try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.protocoladdress_toString(a,this.__wbg_ptr);var i=eA().getInt32(a+0,!0),e=eA().getInt32(a+4,!0);return t=i,o=e,kr(i,e)}finally{ae.__wbindgen_add_to_stack_pointer(16),ae.__wbindgen_export4(t,o,1)}}};Symbol.dispose&&($c.prototype[Symbol.dispose]=$c.prototype.free);var Eh=class n{static __wrap(t){t=t>>>0;let o=Object.create(n.prototype);return o.__wbg_ptr=t,S7.register(o,o.__wbg_ptr,o),o}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,S7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_senderkeydistributionmessage_free(t,0)}static deserialize(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16),A=kt(t,ae.__wbindgen_export),r=KA;ae.senderkeydistributionmessage_deserialize(a,A,r);var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return n.__wrap(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}serialize(){let t=ae.senderkeydistributionmessage_serialize(this.__wbg_ptr);return mA(t)}};Symbol.dispose&&(Eh.prototype[Symbol.dispose]=Eh.prototype.free);var Ch=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,w7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_senderkeyname_free(t,0)}constructor(t,o){let i=Ln(t,ae.__wbindgen_export,ae.__wbindgen_export2),e=KA;Xc(o,$c);let a=ae.senderkeyname_new(i,e,o.__wbg_ptr);return this.__wbg_ptr=a>>>0,w7.register(this,this.__wbg_ptr,this),this}toString(){let t,o;try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.senderkeyname_toString(a,this.__wbg_ptr);var i=eA().getInt32(a+0,!0),e=eA().getInt32(a+4,!0);return t=i,o=e,kr(i,e)}finally{ae.__wbindgen_add_to_stack_pointer(16),ae.__wbindgen_export4(t,o,1)}}};Symbol.dispose&&(Ch.prototype[Symbol.dispose]=Ch.prototype.free);var ID=class n{static __wrap(t){t=t>>>0;let o=Object.create(n.prototype);return o.__wbg_ptr=t,JF.register(o,o.__wbg_ptr,o),o}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,JF.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_senderkeyrecord_free(t,0)}static deserialize(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16),A=kt(t,ae.__wbindgen_export),r=KA;ae.senderkeyrecord_deserialize(a,A,r);var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return n.__wrap(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}isEmpty(){return ae.senderkeyrecord_isEmpty(this.__wbg_ptr)!==0}constructor(){let t=ae.senderkeyrecord_new();return this.__wbg_ptr=t>>>0,JF.register(this,this.__wbg_ptr,this),this}serialize(){try{let e=ae.__wbindgen_add_to_stack_pointer(-16);ae.senderkeyrecord_serialize(e,this.__wbg_ptr);var t=eA().getInt32(e+0,!0),o=eA().getInt32(e+4,!0),i=eA().getInt32(e+8,!0);if(i)throw mA(o);return mA(t)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(ID.prototype[Symbol.dispose]=ID.prototype.free);var lD=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,D7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_sessionbuilder_free(t,0)}initOutgoing(t){let o=ae.sessionbuilder_initOutgoing(this.__wbg_ptr,rA(t));return mA(o)}constructor(t,o){Xc(o,$c);let i=ae.sessionbuilder_new(rA(t),o.__wbg_ptr);return this.__wbg_ptr=i>>>0,D7.register(this,this.__wbg_ptr,this),this}processPreKeyBundle(t){let o=ae.sessionbuilder_processPreKeyBundle(this.__wbg_ptr,rA(t));return mA(o)}};Symbol.dispose&&(lD.prototype[Symbol.dispose]=lD.prototype.free);var pD=class{__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,O7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_sessioncipher_free(t,0)}decryptPreKeyWhisperMessage(t){let o=kt(t,ae.__wbindgen_export),i=KA,e=ae.sessioncipher_decryptPreKeyWhisperMessage(this.__wbg_ptr,o,i);return mA(e)}decryptWhisperMessage(t){let o=kt(t,ae.__wbindgen_export),i=KA,e=ae.sessioncipher_decryptWhisperMessage(this.__wbg_ptr,o,i);return mA(e)}encrypt(t){let o=kt(t,ae.__wbindgen_export),i=KA,e=ae.sessioncipher_encrypt(this.__wbg_ptr,o,i);return mA(e)}hasOpenSession(){let t=ae.sessioncipher_hasOpenSession(this.__wbg_ptr);return mA(t)}constructor(t,o){Xc(o,$c);let i=ae.sessioncipher_new(rA(t),o.__wbg_ptr);return this.__wbg_ptr=i>>>0,O7.register(this,this.__wbg_ptr,this),this}};Symbol.dispose&&(pD.prototype[Symbol.dispose]=pD.prototype.free);var TB=class n{static __wrap(t){t=t>>>0;let o=Object.create(n.prototype);return o.__wbg_ptr=t,b7.register(o,o.__wbg_ptr,o),o}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,b7.unregister(this),t}free(){let t=this.__destroy_into_raw();ae.__wbg_sessionrecord_free(t,0)}static deserialize(t){try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.sessionrecord_deserialize(a,rA(t));var o=eA().getInt32(a+0,!0),i=eA().getInt32(a+4,!0),e=eA().getInt32(a+8,!0);if(e)throw mA(i);return n.__wrap(o)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}haveOpenSession(){return ae.sessionrecord_haveOpenSession(this.__wbg_ptr)!==0}serialize(){let t=ae.sessionrecord_serialize(this.__wbg_ptr);return mA(t)}};Symbol.dispose&&(TB.prototype[Symbol.dispose]=TB.prototype.free);function T7(n){let t=kt(n,ae.__wbindgen_export),o=KA,i=ae.expandAppStateKeys(t,o);return MB.__wrap(i)}function Un(n,t,o){try{let A=ae.__wbindgen_add_to_stack_pointer(-16),r=kt(n,ae.__wbindgen_export),s=KA;ae.hkdf(A,r,s,t,rA(o));var i=eA().getInt32(A+0,!0),e=eA().getInt32(A+4,!0),a=eA().getInt32(A+8,!0);if(a)throw mA(e);return mA(i)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}function AHe(){return{__proto__:null,"./whatsapp_rust_bridge_bg.js":{__proto__:null,__wbg_Error_83742b46f01ce22d:function(t,o){let i=Error(kr(t,o));return rA(i)},__wbg_Number_a5a435bd7bbec835:function(t){return Number(Fe(t))},__wbg_String_8564e559799eccda:function(t,o){let i=String(Fe(o)),e=Ln(i,ae.__wbindgen_export,ae.__wbindgen_export2),a=KA;eA().setInt32(t+4,a,!0),eA().setInt32(t+0,e,!0)},__wbg___wbindgen_bigint_get_as_i64_447a76b5c6ef7bda:function(t,o){let i=Fe(o),e=typeof i=="bigint"?i:void 0;eA().setBigInt64(t+8,Fn(e)?BigInt(0):e,!0),eA().setInt32(t+0,!Fn(e),!0)},__wbg___wbindgen_boolean_get_c0f3f60bac5a78d1:function(t){let o=Fe(t),i=typeof o=="boolean"?o:void 0;return Fn(i)?16777215:i?1:0},__wbg___wbindgen_debug_string_5398f5bb970e0daa:function(t,o){let i=zF(Fe(o)),e=Ln(i,ae.__wbindgen_export,ae.__wbindgen_export2),a=KA;eA().setInt32(t+4,a,!0),eA().setInt32(t+0,e,!0)},__wbg___wbindgen_in_41dbb8413020e076:function(t,o){return Fe(t)in Fe(o)},__wbg___wbindgen_is_bigint_e2141d4f045b7eda:function(t){return typeof Fe(t)=="bigint"},__wbg___wbindgen_is_function_3c846841762788c1:function(t){return typeof Fe(t)=="function"},__wbg___wbindgen_is_null_0b605fc6b167c56f:function(t){return Fe(t)===null},__wbg___wbindgen_is_object_781bc9f159099513:function(t){let o=Fe(t);return typeof o=="object"&&o!==null},__wbg___wbindgen_is_undefined_52709e72fb9f179c:function(t){return Fe(t)===void 0},__wbg___wbindgen_jsval_eq_ee31bfad3e536463:function(t,o){return Fe(t)===Fe(o)},__wbg___wbindgen_jsval_loose_eq_5bcc3bed3c69e72b:function(t,o){return Fe(t)==Fe(o)},__wbg___wbindgen_number_get_34bb9d9dcfa21373:function(t,o){let i=Fe(o),e=typeof i=="number"?i:void 0;eA().setFloat64(t+8,Fn(e)?0:e,!0),eA().setInt32(t+0,!Fn(e),!0)},__wbg___wbindgen_string_get_395e606bd0ee4427:function(t,o){let i=Fe(o),e=typeof i=="string"?i:void 0;var a=Fn(e)?0:Ln(e,ae.__wbindgen_export,ae.__wbindgen_export2),A=KA;eA().setInt32(t+4,A,!0),eA().setInt32(t+0,a,!0)},__wbg___wbindgen_throw_6ddd609b62940d55:function(t,o){throw new Error(kr(t,o))},__wbg__wbg_cb_unref_6b5b6b8576d35cb1:function(t){Fe(t)._wbg_cb_unref()},__wbg_attrs_eb268b5ce109b817:function(t){let o=Fe(t).attrs;return rA(o)},__wbg_call_2d781c1f4d5c0ef8:function(){return Rr(function(t,o,i){let e=Fe(t).call(Fe(o),Fe(i));return rA(e)},arguments)},__wbg_call_e133b57c9155d22c:function(){return Rr(function(t,o){let i=Fe(t).call(Fe(o));return rA(i)},arguments)},__wbg_content_54fb4ecf37d1b68a:function(t){let o=Fe(t).content;return rA(o)},__wbg_debug_10ca7029b12f8d85:function(t,o,i,e){Fe(t).debug(Fe(o),i===0?void 0:kr(i,e))},__wbg_done_08ce71ee07e3bd17:function(t){return Fe(t).done},__wbg_entries_e8a20ff8c9757101:function(t){let o=Object.entries(Fe(t));return rA(o)},__wbg_error_9cce413345f88385:function(t,o,i,e){Fe(t).error(Fe(o),i===0?void 0:kr(i,e))},__wbg_from_4bdf88943703fd48:function(t){let o=Array.from(Fe(t));return rA(o)},__wbg_getOurIdentity_85a51d9b5b46c006:function(){return Rr(function(t){let o=Fe(t).getOurIdentity();return rA(o)},arguments)},__wbg_getOurRegistrationId_6d41d022f3c2af8a:function(){return Rr(function(t){let o=Fe(t).getOurRegistrationId();return rA(o)},arguments)},__wbg_getRandomValues_3f44b700395062e5:function(){return Rr(function(t,o){globalThis.crypto.getRandomValues(wB(t,o))},arguments)},__wbg_get_326e41e095fb2575:function(){return Rr(function(t,o){let i=Reflect.get(Fe(t),Fe(o));return rA(i)},arguments)},__wbg_get_3ef1eba1850ade27:function(){return Rr(function(t,o){let i=Reflect.get(Fe(t),Fe(o));return rA(i)},arguments)},__wbg_get_a8ee5c45dabc1b3b:function(t,o){let i=Fe(t)[o>>>0];return rA(i)},__wbg_get_unchecked_329cfe50afab7352:function(t,o){let i=Fe(t)[o>>>0];return rA(i)},__wbg_get_with_ref_key_6412cf3094599694:function(t,o){let i=Fe(t)[Fe(o)];return rA(i)},__wbg_has_926ef2ff40b308cf:function(){return Rr(function(t,o){return Reflect.has(Fe(t),Fe(o))},arguments)},__wbg_info_b728e87a346ff6a2:function(t,o,i,e){Fe(t).info(Fe(o),i===0?void 0:kr(i,e))},__wbg_instanceof_ArrayBuffer_101e2bf31071a9f6:function(t){let o;try{o=Fe(t)instanceof ArrayBuffer}catch{o=!1}return o},__wbg_instanceof_Map_f194b366846aca0c:function(t){let o;try{o=Fe(t)instanceof Map}catch{o=!1}return o},__wbg_instanceof_Object_be1962063fcc0c9f:function(t){let o;try{o=Fe(t)instanceof Object}catch{o=!1}return o},__wbg_instanceof_Promise_7c3bdd7805c2c6e6:function(t){let o;try{o=Fe(t)instanceof Promise}catch{o=!1}return o},__wbg_instanceof_Uint8Array_740438561a5b956d:function(t){let o;try{o=Fe(t)instanceof Uint8Array}catch{o=!1}return o},__wbg_internalbinarynode_new:function(t){let o=_B.__wrap(t);return rA(o)},__wbg_isArray_33b91feb269ff46e:function(t){return Array.isArray(Fe(t))},__wbg_isSafeInteger_ecd6a7f9c3e053cd:function(t){return Number.isSafeInteger(Fe(t))},__wbg_isTrustedIdentity_8beedd37958ed6af:function(){return Rr(function(t,o,i,e,a){let A=Fe(t).isTrustedIdentity(kr(o,i),Fe(e),a>>>0);return rA(A)},arguments)},__wbg_iterator_d8f549ec8fb061b1:function(){return rA(Symbol.iterator)},__wbg_keys_ab0d051a1c55236d:function(t){let o=Object.keys(Fe(t));return rA(o)},__wbg_length_b3416cf66a5452c8:function(t){return Fe(t).length},__wbg_length_ea16607d7b61445b:function(t){return Fe(t).length},__wbg_level_4b50b181832c5acf:function(t,o){let i=Fe(o).level,e=Ln(i,ae.__wbindgen_export,ae.__wbindgen_export2),a=KA;eA().setInt32(t+4,a,!0),eA().setInt32(t+0,e,!0)},__wbg_loadPreKey_db3458e3339f7328:function(){return Rr(function(t,o){let i=Fe(t).loadPreKey(o>>>0);return rA(i)},arguments)},__wbg_loadSenderKey_fd075b57283fd71b:function(){return Rr(function(t,o,i){let e=Fe(t).loadSenderKey(kr(o,i));return rA(e)},arguments)},__wbg_loadSession_8564b20b09724f27:function(){return Rr(function(t,o,i){let e=Fe(t).loadSession(kr(o,i));return rA(e)},arguments)},__wbg_loadSignedPreKey_3d5c6c6819f3adf3:function(){return Rr(function(t,o){let i=Fe(t).loadSignedPreKey(o>>>0);return rA(i)},arguments)},__wbg_new_5f486cdf45a04d78:function(t){let o=new Uint8Array(Fe(t));return rA(o)},__wbg_new_7dce085c132c6f91:function(t,o){let i=new TypeError(kr(t,o));return rA(i)},__wbg_new_a70fbab9066b301f:function(){let t=new Array;return rA(t)},__wbg_new_ab79df5bd7c26067:function(){let t=new Object;return rA(t)},__wbg_new_from_slice_22da9388ac046e50:function(t,o){let i=new Uint8Array(wB(t,o));return rA(i)},__wbg_new_typed_aaaeaf29cf802876:function(t,o){try{var i={a:t,b:o},e=(A,r)=>{let s=i.a;i.a=0;try{return rHe(s,i.b,A,r)}finally{i.a=s}};let a=new Promise(e);return rA(a)}finally{i.a=i.b=0}},__wbg_new_with_length_3259a525196bd8cc:function(t){let o=new Array(t>>>0);return rA(o)},__wbg_new_with_length_825018a1616e9e55:function(t){let o=new Uint8Array(t>>>0);return rA(o)},__wbg_next_11b99ee6237339e3:function(){return Rr(function(t){let o=Fe(t).next();return rA(o)},arguments)},__wbg_next_e01a967809d1aa68:function(t){let o=Fe(t).next;return rA(o)},__wbg_parse_e9eddd2a82c706eb:function(){return Rr(function(t,o){let i=JSON.parse(kr(t,o));return rA(i)},arguments)},__wbg_prototypesetcall_d62e5099504357e6:function(t,o,i){Uint8Array.prototype.set.call(wB(t,o),Fe(i))},__wbg_push_e87b0e732085a946:function(t,o){return Fe(t).push(Fe(o))},__wbg_queueMicrotask_0c399741342fb10f:function(t){let o=Fe(t).queueMicrotask;return rA(o)},__wbg_queueMicrotask_a082d78ce798393e:function(t){queueMicrotask(Fe(t))},__wbg_removePreKey_c0b0a066eb6f2e1e:function(){return Rr(function(t,o){let i=Fe(t).removePreKey(o>>>0);return rA(i)},arguments)},__wbg_resolve_ae8d83246e5bcc12:function(t){let o=Promise.resolve(Fe(t));return rA(o)},__wbg_senderkeydistributionmessage_new:function(t){let o=Eh.__wrap(t);return rA(o)},__wbg_sessionrecord_new:function(t){let o=TB.__wrap(t);return rA(o)},__wbg_set_282384002438957f:function(t,o,i){Fe(t)[o>>>0]=mA(i)},__wbg_set_6be42768c690e380:function(t,o,i){Fe(t)[mA(o)]=mA(i)},__wbg_set_7eaa4f96924fd6b3:function(){return Rr(function(t,o,i){return Reflect.set(Fe(t),Fe(o),Fe(i))},arguments)},__wbg_set_8c0b3ffcf05d61c2:function(t,o,i){Fe(t).set(wB(o,i))},__wbg_static_accessor_GLOBAL_8adb955bd33fac2f:function(){let t=typeof global>"u"?null:global;return Fn(t)?0:rA(t)},__wbg_static_accessor_GLOBAL_THIS_ad356e0db91c7913:function(){let t=typeof globalThis>"u"?null:globalThis;return Fn(t)?0:rA(t)},__wbg_static_accessor_SELF_f207c857566db248:function(){let t=typeof self>"u"?null:self;return Fn(t)?0:rA(t)},__wbg_static_accessor_WINDOW_bb9f1ba69d61b386:function(){let t=typeof window>"u"?null:window;return Fn(t)?0:rA(t)},__wbg_storeSenderKey_8a6c9ec5f7e1cd2e:function(){return Rr(function(t,o,i,e){let a=Fe(t).storeSenderKey(kr(o,i),Fe(e));return rA(a)},arguments)},__wbg_storeSessionRaw_09b5cc73064d12d8:function(){return Rr(function(t,o,i,e){let a=Fe(t).storeSessionRaw(kr(o,i),Fe(e));return rA(a)},arguments)},__wbg_storeSession_4d419555ce654965:function(){return Rr(function(t,o,i,e){let a=Fe(t).storeSession(kr(o,i),mA(e));return rA(a)},arguments)},__wbg_tag_33cfe8e9ee66b4db:function(t,o){let i=Fe(o).tag,e=Ln(i,ae.__wbindgen_export,ae.__wbindgen_export2),a=KA;eA().setInt32(t+4,a,!0),eA().setInt32(t+0,e,!0)},__wbg_then_098abe61755d12f6:function(t,o){let i=Fe(t).then(Fe(o));return rA(i)},__wbg_then_9e335f6dd892bc11:function(t,o,i){let e=Fe(t).then(Fe(o),Fe(i));return rA(e)},__wbg_trace_58264fbce2ceb5e6:function(t,o,i,e){Fe(t).trace(Fe(o),i===0?void 0:kr(i,e))},__wbg_value_21fc78aab0322612:function(t){let o=Fe(t).value;return rA(o)},__wbg_warn_db531770752932a9:function(t,o,i,e){Fe(t).warn(Fe(o),i===0?void 0:kr(i,e))},__wbindgen_cast_0000000000000001:function(t,o){let i=iHe(t,o,ae.__wasm_bindgen_func_elem_694,tHe);return rA(i)},__wbindgen_cast_0000000000000002:function(t){return rA(t)},__wbindgen_cast_0000000000000003:function(t){return rA(t)},__wbindgen_cast_0000000000000004:function(t,o){let i=wB(t,o);return rA(i)},__wbindgen_cast_0000000000000005:function(t,o){let i=kr(t,o);return rA(i)},__wbindgen_cast_0000000000000006:function(t){let o=BigInt.asUintN(64,t);return rA(o)},__wbindgen_object_clone_ref:function(t){let o=Fe(t);return rA(o)},__wbindgen_object_drop_ref:function(t){mA(t)}}}}function tHe(n,t,o){try{let a=ae.__wbindgen_add_to_stack_pointer(-16);ae.__wasm_bindgen_func_elem_699(a,n,t,rA(o));var i=eA().getInt32(a+0,!0),e=eA().getInt32(a+4,!0);if(e)throw mA(i)}finally{ae.__wbindgen_add_to_stack_pointer(16)}}function rHe(n,t,o,i){ae.__wasm_bindgen_func_elem_1248(n,t,rA(o),rA(i))}var u7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_expandedappstatekeys_free(n>>>0,1)),B7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_groupcipher_free(n>>>0,1)),f7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_groupsessionbuilder_free(n>>>0,1)),Q7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_internalbinarynode_free(n>>>0,1)),y7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_lthashantitampering_free(n>>>0,1)),YF=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_lthashstate_free(n>>>0,1)),m7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_noisesession_free(n>>>0,1)),jF=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_protocoladdress_free(n>>>0,1)),S7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_senderkeydistributionmessage_free(n>>>0,1)),w7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_senderkeyname_free(n>>>0,1)),JF=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_senderkeyrecord_free(n>>>0,1)),D7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_sessionbuilder_free(n>>>0,1)),O7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_sessioncipher_free(n>>>0,1)),b7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ae.__wbg_sessionrecord_free(n>>>0,1));function rA(n){OB===Ug.length&&Ug.push(Ug.length+1);let t=OB;return OB=Ug[t],Ug[t]=n,t}function Xc(n,t){if(!(n instanceof t))throw new Error(`expected instance of ${t.name}`)}var M7=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>n.dtor(n.a,n.b));function zF(n){let t=typeof n;if(t=="number"||t=="boolean"||n==null)return`${n}`;if(t=="string")return`"${n}"`;if(t=="symbol"){let e=n.description;return e==null?"Symbol":`Symbol(${e})`}if(t=="function"){let e=n.name;return typeof e=="string"&&e.length>0?`Function(${e})`:"Function"}if(Array.isArray(n)){let e=n.length,a="[";e>0&&(a+=zF(n[0]));for(let A=1;A1)i=o[1];else return toString.call(n);if(i=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message} -${n.stack}`:i}function aHe(n){n<1028||(Ug[n]=OB,OB=n)}function wB(n,t){return n=n>>>0,dh().subarray(n/1,n/1+t)}var vl=null;function eA(){return(vl===null||vl.buffer.detached===!0||vl.buffer.detached===void 0&&vl.buffer!==ae.memory.buffer)&&(vl=new DataView(ae.memory.buffer)),vl}function kr(n,t){return n=n>>>0,nHe(n,t)}var DB=null;function dh(){return(DB===null||DB.byteLength===0)&&(DB=new Uint8Array(ae.memory.buffer)),DB}function Fe(n){return Ug[n]}function Rr(n,t){try{return n.apply(this,t)}catch(o){ae.__wbindgen_export3(rA(o))}}var Ug=new Array(1024).fill(void 0);Ug.push(void 0,null,!0,!1);var OB=Ug.length;function Fn(n){return n==null}function iHe(n,t,o,i){let e={a:n,b:t,cnt:1,dtor:o},a=(...A)=>{e.cnt++;let r=e.a;e.a=0;try{return i(r,e.b,...A)}finally{e.a=r,a._wbg_cb_unref()}};return a._wbg_cb_unref=()=>{--e.cnt===0&&(e.dtor(e.a,e.b),e.a=0,M7.unregister(e))},M7.register(a,e,e),a}function kt(n,t){let o=t(n.length*1,1)>>>0;return dh().set(n,o/1),KA=n.length,o}function _7(n,t){let o=t(n.length*4,4)>>>0,i=eA();for(let e=0;e>>0;return dh().subarray(s,s+r.length).set(r),KA=r.length,s}let i=n.length,e=t(i,1)>>>0,a=dh(),A=0;for(;A127)break;a[e+A]=r}if(A!==i){A!==0&&(n=n.slice(A)),e=o(e,i,i=A+n.length*3,1)>>>0;let r=dh().subarray(e+A,e+i),s=bB.encodeInto(n,r);A+=s.written,e=o(e,i,A,1)>>>0}return KA=A,e}function mA(n){let t=Fe(n);return aHe(n),t}var oD=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});oD.decode();var oHe=2146435072,qF=0;function nHe(n,t){return qF+=t,qF>=oHe&&(oD=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),oD.decode(),qF=t),oD.decode(dh().subarray(n,n+t))}var bB=new TextEncoder;"encodeInto"in bB||(bB.encodeInto=function(n,t){let o=bB.encode(n);return t.set(o),{read:n.length,written:o.length}});var KA=0,sHe,ae;function gHe(n,t){return ae=n.exports,sHe=t,vl=null,DB=null,ae}function N7(n){if(ae!==void 0)return ae;n!==void 0&&(Object.getPrototypeOf(n)===Object.prototype?{module:n}=n:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let t=AHe();n instanceof WebAssembly.Module||(n=new WebAssembly.Module(n));let o=new WebAssembly.Instance(n,t);return gHe(o,n)}var cHe=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);function R7(n){let t=atob(n),o=new Uint8Array(t.length);for(let i=0;in.length===33?n:Buffer.concat([Hg,n]),Sr={generateKeyPair:()=>{let{pubKey:n,privKey:t}=eI.generateKeyPair();return{private:Buffer.from(t),public:Buffer.from(n.slice(1))}},sharedKey:(n,t)=>{let o=eI.calculateAgreement(Wo(t),n);return Buffer.from(o)},sign:(n,t)=>eI.calculateSignature(n,t),verify:(n,t,o)=>{try{return eI.verifySignature(Wo(n),t,o),!0}catch{return!1}}},dD=(n,t)=>{let o=Sr.generateKeyPair(),i=Wo(o.public),e=Sr.sign(n.private,i);return{keyPair:o,signature:e,keyId:t}},v7=16;function Pl(n,t,o,i){let e=VF("aes-256-gcm",t,o);return e.setAAD(i),Buffer.concat([e.update(n),e.final(),e.getAuthTag()])}function Gl(n,t,o,i){let e=WF("aes-256-gcm",t,o),a=n.slice(0,n.length-v7),A=n.slice(n.length-v7);return e.setAAD(i),e.setAuthTag(A),Buffer.concat([e.update(a),e.final()])}function P7(n,t,o){let i=VF("aes-256-ctr",t,o);return Buffer.concat([i.update(n),i.final()])}function G7(n,t,o){let i=WF("aes-256-ctr",t,o);return Buffer.concat([i.update(n),i.final()])}function F7(n,t){return uHe(n.subarray(16),t,n.subarray(0,16))}function uHe(n,t,o){let i=WF("aes-256-cbc",t,o);return Buffer.concat([i.update(n),i.final()])}function L7(n,t){let o=CHe(16),i=VF("aes-256-cbc",t,o);return Buffer.concat([o,i.update(n),i.final()])}function Hn(n,t,o="sha256"){return EHe(o,t).update(n).digest()}function uh(n){return hHe("sha256").update(n).digest()}async function hD(n,t){let i=new TextEncoder().encode(n),e=new Uint8Array(t instanceof Uint8Array?t:new Uint8Array(t)),a=await k7.importKey("raw",i,{name:"PBKDF2"},!1,["deriveBits"]),A=await k7.deriveBits({name:"PBKDF2",salt:e,iterations:2<<16,hash:"SHA-256"},a,256);return Buffer.from(A)}var RB={replacer:(n,t)=>Buffer.isBuffer(t)||t instanceof Uint8Array||t?.type==="Buffer"?{type:"Buffer",data:Buffer.from(t?.data||t).toString("base64")}:t,reviver:(n,t)=>{if(typeof t=="object"&&t!==null&&t.type==="Buffer"&&typeof t.data=="string")return Buffer.from(t.data,"base64");if(typeof t=="object"&&t!==null&&!Array.isArray(t)){let o=Object.keys(t);if(o.length>0&&o.every(i=>!isNaN(parseInt(i,10)))){let i=Object.values(t);if(i.every(e=>typeof e=="number"))return Buffer.from(i)}}return t}},Bh=(n,t="me")=>(n?.fromMe?t:n?.participantAlt||n?.remoteJidAlt||n?.participant||n?.remoteJid)||"",K7=n=>n==null||n==="",fHe=n=>{let o=(NB(1)[0]&15)+1;return Buffer.concat([n,Buffer.alloc(o,o)])},x7=n=>{let t=new Uint8Array(n);if(t.length===0)throw new Error("unpadPkcs7 given empty bytes");var o=t[t.length-1];if(o>t.length)throw new Error(`unpad given ${t.length} bytes, but pad is ${o}`);return new Uint8Array(t.buffer,t.byteOffset,t.length-o)},Y7=n=>(n.sort(),"2:"+uh(Buffer.from(n.join(""))).toString("base64").slice(0,6)),fh=n=>fHe(oe.Message.encode(n).finish()),j7=()=>Uint16Array.from(NB(2))[0]&16383,Kg=(n,t=4)=>{let o=n,i=new Uint8Array(t);for(let e=t-1;e>=0;e--)i[e]=255&o,o>>>=8;return i},Yr=n=>typeof n=="object"&&n?"toNumber"in n?n.toNumber():n.low:n||0,ba=(n=new Date)=>Math.floor(n.getTime()/1e3);var kB=n=>J7(n).delay,J7=n=>{let t=new Error().stack,o,i;return{delay:new Promise((A,r)=>{o=setTimeout(A,n),i=r}),cancel:()=>{clearTimeout(o),i(new ED.Boom("Cancelled",{statusCode:500,data:{stack:t}}))}}};async function Qh(n,t){if(!n)return new Promise(t);let o=new Error().stack,{delay:i,cancel:e}=J7(n);return new Promise((A,r)=>{i.then(()=>r(new ED.Boom("Timed Out",{statusCode:$t.timedOut,data:{stack:o}}))).catch(s=>r(s)),t(A,r)}).finally(e)}var jr=n=>{let t=Buffer.alloc(44);if(t.writeBigUInt64BE(BigInt(Math.floor(Date.now()/1e3))),n){let e=fA(n);e?.user&&(t.write(e.user,8),t.write("@c.us",8+e.user.length))}return NB(16).copy(t,28),"3EB0"+BHe("sha256").update(t).digest().toString("hex").toUpperCase().substring(0,18)},ZF=()=>"3EB0"+NB(18).toString("hex").toUpperCase();function XF(n,t){return async(o,i)=>{let e,a;await Qh(i,(A,r)=>{a=({connection:s,lastDisconnect:g})=>{s==="close"&&r(g?.error||new ED.Boom("Connection Closed",{statusCode:$t.connectionClosed}))},n.on("connection.update",a),e=async s=>{await o(s)&&A()},n.on(t,e)}).finally(()=>{n.off(t,e),n.off("connection.update",a)})}}var q7=n=>XF(n,"connection.update");var z7=()=>{let n=NB(4);return`${n.readUInt16BE()}.${n.readUInt16BE(2)}-`},QHe={sender:oe.WebMessageInfo.Status.SERVER_ACK,played:oe.WebMessageInfo.Status.PLAYED,read:oe.WebMessageInfo.Status.READ,"read-self":oe.WebMessageInfo.Status.READ},V7=n=>{let t=QHe[n];return typeof n>"u"?oe.WebMessageInfo.Status.DELIVERY_ACK:t},yHe={conflict:$t.connectionReplaced},W7=n=>{let[t]=_s(n),o=t?.tag||"unknown",i=+(n.attrs.code||yHe[o]||$t.badSession);return i===$t.restartRequired&&(o="restart required"),{reason:o,statusCode:i}},Z7=({tag:n,attrs:t})=>{let o;switch(n){case"offer":case"offer_notice":o="offer";break;case"terminate":t.reason==="timeout"?o="timeout":o="terminate";break;case"preaccept":o="preaccept";break;case"transport":o="transport";break;case"relaylatency":o="relaylatency";break;case"reject":o="reject";break;case"accept":o="accept";break;default:o="ringing";break}return o},U7="Unexpected server response: ",X7=n=>{let t=500;if(n?.message?.includes(U7)){let o=+n?.message.slice(U7.length);!Number.isNaN(o)&&o>=400&&(t=o)}else(n?.code?.startsWith("E")||n?.message?.includes("timed out"))&&(t=408);return t};function CD(n){for(let t in n)typeof n[t]>"u"&&delete n[t];return n}var H7="123456789ABCDEFGHJKLMNPQRSTVWXYZ";function $7(n){let t=0,o=0,i=[];for(let e of n)for(t=t<<8|e&255,o+=8;o>=5;)i.push(H7.charAt(t>>>o-5&31)),o-=5;return o>0&&i.push(H7.charAt(t<<5-o&31)),i.join("")}function e$(n){return oe.Message.encode(n).finish()}var Fl=qe(Kr(),1);var mHe=async(n,t)=>qA(n)||Ia(n)?n:await t.lidMapping.getLIDForPN(n)||n,SHe=async(n,t,o,i,e)=>{let{senderAlt:a}=BD(n);if(a&&qA(a)&&_t(t)&&i===t)try{await o.lidMapping.storeLIDPNMappings([{lid:a,pn:t}]),await o.migrateSession(t,a),e.debug({sender:t,senderAlt:a},"Stored LID mapping from envelope")}catch(A){e.warn({sender:t,senderAlt:a,error:A},"Failed to store LID mapping")}},uD="Message absent from node",A$="Key used already or never filled",t$="Your account has been restricted",wHe={maxRetries:3,baseDelayMs:100,sessionRecordErrors:["No session record","SessionError: No session record"]},Ll={SenderReachoutTimelocked:463,ParsingError:487,UnrecognizedStanza:488,UnrecognizedStanzaClass:489,UnrecognizedStanzaType:490,InvalidProtobuf:491,InvalidHostedCompanionStanza:493,MissingMessageSecret:495,SignalErrorOldCounter:496,MessageDeletedOnPeer:499,UnhandledError:500,UnsupportedAdminRevoke:550,UnsupportedLIDGroup:551,DBOperationFailed:552},$F={MessageAccountRestriction:"463",SmaxInvalid:"479"},BD=n=>{let t,o,i=n.attrs.participant||n.attrs.from,e=n.attrs.addressing_mode||(i?.endsWith("lid")?"lid":"pn");return e==="lid"?(t=n.attrs.participant_pn||n.attrs.sender_pn||n.attrs.peer_recipient_pn,o=n.attrs.recipient_pn):(t=n.attrs.participant_lid||n.attrs.sender_lid||n.attrs.peer_recipient_lid,o=n.attrs.recipient_lid),{addressingMode:e,senderAlt:t,recipientAlt:o}};function eL(n,t,o){let i,e,a,A=!1,r=n.attrs.id,s=n.attrs.from,g=n.attrs.participant,c=n.attrs.recipient;if(!r)throw new Fl.Boom("Invalid message stanza: missing id attribute",{data:n});if(!s)throw new Fl.Boom("Invalid message stanza: missing from attribute",{data:n});let I=BD(n),d=m=>Rt(m,t),B=m=>Rt(m,o);if(_t(s)||qA(s)||Ia(s)||mr(s)){if(c&&!ph(c)){if(!d(s)&&!B(s))throw new Fl.Boom("receipient present, but msg not from me",{data:n});(d(s)||B(s))&&(A=!0),e=c}else(d(s)||B(s))&&(A=!0),e=s;i="chat",a=s}else if(xr(s)){if(!g)throw new Fl.Boom("No participant in group message");(d(g)||B(g))&&(A=!0),i="group",a=g,e=s}else if(SB(s)){if(!g)throw new Fl.Boom("No participant in group message");let m=d(g);Lg(s)?i=m?"direct_peer_status":"other_status":i=m?"peer_broadcast":"other_broadcast",A=m,e=s,a=g}else if(Wc(s))i="newsletter",e=s,a=s,(d(s)||B(s))&&(A=!0);else throw new Fl.Boom("Unknown message type",{data:n});let f=n?.attrs?.notify,Q={remoteJid:e,remoteJidAlt:xr(e)?void 0:I.senderAlt,remoteJidUsername:xr(e)?void 0:n.attrs.peer_recipient_username||n.attrs.recipient_username,fromMe:A,id:r,participant:g,participantAlt:xr(e)?I.senderAlt:void 0,participantUsername:n.attrs.participant?n.attrs.participant_username:void 0,addressingMode:I.addressingMode,...i==="newsletter"&&n.attrs.server_id?{server_id:n.attrs.server_id}:{}},y={key:Q,category:n.attrs.category,messageTimestamp:+n.attrs.t,pushName:f,broadcast:SB(s)};return Q.fromMe&&(y.status=oe.WebMessageInfo.Status.SERVER_ACK),{fullMessage:y,author:a,sender:i==="chat"?a:e}}var r$=(n,t,o,i,e)=>{let{fullMessage:a,author:A,sender:r}=eL(n,t,o);return{fullMessage:a,category:n.attrs.category,author:A,async decrypt(){let s=0;if(Array.isArray(n.content))for(let{tag:g,attrs:c,content:I}of n.content){if(g==="verified_name"&&I instanceof Uint8Array){let f=oe.VerifiedNameCertificate.decode(I),Q=oe.VerifiedNameCertificate.Details.decode(f.details);a.verifiedBizName=Q.verifiedName}if(g==="unavailable"&&c.type==="view_once"&&(a.key.isViewOnce=!0),c.count&&g==="enc"&&(a.retryCount=Number(c.count)),g!=="enc"&&g!=="plaintext"||!(I instanceof Uint8Array))continue;s+=1;let d,B=await mHe(A,i);g!=="plaintext"&&await SHe(n,A,i,B,e);try{let f=g==="plaintext"?"plaintext":c.type;switch(f){case"skmsg":d=await i.decryptGroupMessage({group:r,authorJid:A,msg:I});break;case"pkmsg":case"msg":d=await i.decryptMessage({jid:B,type:f,ciphertext:I});break;case"plaintext":d=I;break;default:throw new Error(`Unknown e2e type: ${f}`)}let Q=oe.Message.decode(f!=="plaintext"?x7(d):d);if(Q=Q.deviceSentMessage?.message||Q,Q.senderKeyDistributionMessage)try{await i.processSenderKeyDistributionMessage({authorJid:A,item:Q.senderKeyDistributionMessage})}catch(y){e.error({key:a.key,err:y},"failed to process sender key distribution message")}a.message?Object.assign(a.message,Q):a.message=Q}catch(f){let Q={key:a.key,err:f,messageType:g==="plaintext"?"plaintext":c.type,sender:r,author:A,isSessionRecordError:DHe(f)};e.error(Q,"failed to decrypt message"),a.messageStubType=oe.WebMessageInfo.StubType.CIPHERTEXT,a.messageStubParameters=[f.message.toString()]}}!s&&!a.key?.isViewOnce&&(a.messageStubType=oe.WebMessageInfo.StubType.CIPHERTEXT,a.messageStubParameters=[uD])}}};function DHe(n){let t=n?.message||n?.toString()||"";return wHe.sessionRecordErrors.some(o=>t.includes(o))}var Xg=qe(Kr(),1);import{randomBytes as dU}from"crypto";import{promises as hU}from"fs";var xn=qe(Kr(),1);import{exec as D4e}from"child_process";import*as fo from"crypto";import{once as sE}from"events";import{createReadStream as Eb,createWriteStream as oU,promises as cE}from"fs";import{tmpdir as Moe}from"os";import{join as db}from"path";import{Readable as Df,Transform as O4e}from"stream";import{URL as nU}from"url";var sU=()=>Moe(),_oe=async()=>{let[n,t]=await Promise.all([import("jimp").catch(()=>{}),Promise.resolve().then(()=>(dte(),pte)).catch(()=>{})]);if(t)return{sharp:t};if(n)return{jimp:n};throw new xn.Boom("No image processing library available")},b4e=n=>`WhatsApp ${Koe[n]} Keys`,Cb=async(n,t,o)=>{let{stream:i}=await Of(n);o?.debug("got stream for raw upload");let e=fo.createHash("sha256"),a=db(Moe(),t+jr()),A=oU(a),r=0;try{for await(let g of i)r+=g.length,e.update(g),A.write(g)||await sE(A,"drain");A.end(),await sE(A,"finish"),i.destroy();let s=e.digest();return o?.debug("hashed data for raw upload"),{filePath:a,fileSha256:s,fileLength:r}}catch(s){A.destroy(),i.destroy();try{await cE.unlink(a)}catch{}throw s}};async function Toe(n,t){if(!n)throw new xn.Boom("Cannot derive from empty media key");typeof n=="string"&&(n=Buffer.from(n.replace("data:;base64,",""),"base64"));let o=Un(n,112,{info:b4e(t)});return{iv:o.slice(0,16),cipherKey:o.slice(16,48),macKey:o.slice(48,80)}}var M4e=async(n,t,o,i)=>new Promise((e,a)=>{let A=`ffmpeg -ss ${o} -i ${n} -y -vf scale=${i.width}:-1 -vframes 1 -f image2 ${t}`;D4e(A,r=>{r?a(r):e()})}),gU=async(n,t=32)=>{n instanceof Df&&(n=await hb(n));let o=await _oe();if("sharp"in o&&typeof o.sharp?.default=="function"){let i=o.sharp.default(n),e=await i.metadata();return{buffer:await i.resize(t).jpeg({quality:50}).toBuffer(),original:{width:e.width,height:e.height}}}else if("jimp"in o&&typeof o.jimp?.Jimp=="object"){let i=await o.jimp.Jimp.read(n),e={width:i.width,height:i.height};return{buffer:await i.resize({w:t,mode:o.jimp.ResizeStrategy.BILINEAR}).getBuffer("image/jpeg",{quality:50}),original:e}}else throw new xn.Boom("No image processing library available")},_4e=n=>encodeURIComponent(n.replace(/\+/g,"-").replace(/\//g,"_").replace(/\=+$/,"")),ub=async(n,t)=>{let o,{width:i=640,height:e=640}=t||{};if(Buffer.isBuffer(n))o=n;else{let{stream:r}=await Of(n);o=await hb(r)}let a=await _oe(),A;if("sharp"in a&&typeof a.sharp?.default=="function")A=a.sharp.default(o).resize(i,e).jpeg({quality:50}).toBuffer();else if("jimp"in a&&typeof a.jimp?.Jimp=="function"){let r=await a.jimp.Jimp.read(o),s=Math.min(r.width,r.height);A=r.crop({x:0,y:0,w:s,h:s}).resize({w:i,h:e,mode:a.jimp.ResizeStrategy.BILINEAR}).getBuffer("image/jpeg",{quality:50})}else throw new xn.Boom("No image processing library available");return{img:await A}};async function Noe(n){let t=await Promise.resolve().then(()=>(Ooe(),Doe)),o,i={duration:!0};return Buffer.isBuffer(n)?o=await t.parseBuffer(n,void 0,i):typeof n=="string"?o=await t.parseFile(n,i):o=await t.parseStream(n,void 0,i),o.format.duration}async function Roe(n,t){try{let{default:o}=await import("audio-decode"),i;if(Buffer.isBuffer(n))i=n;else if(typeof n=="string"){let d=Eb(n);i=await hb(d)}else i=await hb(n);let a=(await o(i)).getChannelData(0),A=64,r=Math.floor(a.length/A),s=[];for(let d=0;dd*g);return new Uint8Array(c.map(d=>Math.floor(100*d)))}catch(o){t?.debug("Failed to generate waveform: "+o)}}var boe=n=>{let t=new Df({read:()=>{}});return t.push(n),t.push(null),t},hb=async n=>{let t=[];for await(let o of n)t.push(o);return n.destroy(),Buffer.concat(t)},Of=async(n,t)=>{if(Buffer.isBuffer(n))return{stream:boe(n),type:"buffer"};if("stream"in n)return{stream:n.stream,type:"readable"};let o=n.url.toString();if(o.startsWith("data:")){let i=Buffer.from(o.split(",")[1],"base64");return{stream:boe(i),type:"buffer"}}return o.startsWith("http://")||o.startsWith("https://")?{stream:await Bb(n.url,t),type:"remote"}:{stream:Eb(n.url),type:"file"}};async function koe(n,t,o){let i,e;if(t==="image"){let{buffer:a,original:A}=await gU(n);i=a.toString("base64"),A.width&&A.height&&(e={width:A.width,height:A.height})}else if(t==="video"){let a=db(sU(),jr()+".jpg");try{await M4e(n,a,"00:00:00",{width:32,height:32}),i=(await cE.readFile(a)).toString("base64"),await cE.unlink(a)}catch(A){o.logger?.debug("could not generate video thumb: "+A)}}return{thumbnail:i,originalImageDimensions:e}}var Bb=async(n,t={})=>{let o=await fetch(n.toString(),{dispatcher:t.dispatcher,method:"GET",headers:t.headers});if(!o.ok)throw new xn.Boom(`Failed to fetch stream from ${n}`,{statusCode:o.status,data:{url:n}});return o.body instanceof Df?o.body:Df.fromWeb(o.body)},voe=async(n,t,{logger:o,saveOriginalFileIfRequired:i,opts:e}={})=>{let{stream:a,type:A}=await Of(n,e);o?.debug("fetched media stream");let r=fo.randomBytes(32),{cipherKey:s,iv:g,macKey:c}=await Toe(r,t),I=db(sU(),t+jr()+"-enc"),d=oU(I),B,f;i&&(f=db(sU(),t+jr()+"-original"),B=oU(f));let Q=0,y=fo.createCipheriv("aes-256-cbc",s,g),m=fo.createHmac("sha256",c).update(g),_=fo.createHash("sha256"),T=fo.createHash("sha256"),R=async K=>{T.update(K),m.update(K),d.write(K)||await sE(d,"drain")};try{for await(let x of a){if(Q+=x.length,A==="remote"&&e?.maxContentLength&&Q+x.length>e.maxContentLength)throw new xn.Boom(`content length exceeded when encrypting "${A}"`,{data:{media:n,type:A}});B&&(B.write(x)||await sE(B,"drain")),_.update(x),await R(y.update(x))}await R(y.final());let K=m.digest().slice(0,10);T.update(K);let L=_.digest(),U=T.digest();d.write(K);let z=sE(d,"finish"),q=B?sE(B,"finish"):Promise.resolve();return d.end(),B?.end?.(),a.destroy(),await z,await q,o?.debug("encrypted data successfully"),{mediaKey:r,originalFilePath:f,encFilePath:I,mac:K,fileEncSha256:U,fileSha256:L,fileLength:Q}}catch(K){d.destroy(),B?.destroy?.(),y.destroy(),m.destroy(),_.destroy(),T.destroy(),a.destroy();try{await cE.unlink(I),f&&await cE.unlink(f)}catch(L){o?.error({err:L},"failed deleting tmp files")}throw K}},cU="mmg.whatsapp.net",gE=16,iU=n=>Math.floor(n/gE)*gE,bf=(n,t=cU)=>`https://${t}${n}`,T4e=n=>{if(n)try{return new nU(n).host}catch{return}},IE=async({mediaKey:n,directPath:t,url:o},i,e={})=>{let a=e.host??T4e(o),A=t?bf(t,a):o;if(!A)throw new xn.Boom("No valid media URL or directPath present in message",{statusCode:400});let r=await Toe(n,i);return N4e(A,r,e)},N4e=async(n,{cipherKey:t,iv:o},{startByte:i,endByte:e,options:a}={})=>{let A=0,r=0,s=!1;if(i){let m=iU(i||0);m&&(r=m-gE,A=m,s=!0)}let g=e?iU(e||0)+gE:void 0,c=a?.headers?a.headers:void 0,I={...c?Array.isArray(c)?Object.fromEntries(c):c:{},Origin:Mf};(r||g)&&(I.Range=`bytes=${r}-`,g&&(I.Range+=g));let d=await Bb(n,{...a||{},headers:I}),B=Buffer.from([]),f,Q=(m,_)=>{if(i||e){let T=A>=i?void 0:Math.max(i-A,0),R=A+m.lengththis.push(L)),T()}catch(L){T(L)}},final(m){try{Q(f.final(),_=>this.push(_)),m()}catch(_){m(_)}}});return d.pipe(y,{end:!0})};var R4e=()=>typeof process<"u"&&process.versions?.node!==null&&typeof process.versions.bun>"u"&&typeof globalThis.Deno>"u",Poe=async({url:n,filePath:t,headers:o,timeoutMs:i,agent:e},a=0)=>{if(a>5)throw new Error("Too many redirects");let A=new nU(n),r=A.protocol==="https:"?await import("https"):await import("http"),g=(await cE.stat(t)).size;return new Promise((c,I)=>{let d=r.request({hostname:A.hostname,port:A.port||(A.protocol==="https:"?443:80),path:A.pathname+A.search,method:"POST",headers:{...o,"Content-Length":g},agent:e,timeout:i},f=>{if(f.statusCode&&f.statusCode>=300&&f.statusCode<400&&f.headers.location){f.resume();let y=new nU(f.headers.location,n).toString();c(Poe({url:y,filePath:t,headers:o,timeoutMs:i,agent:e},a+1));return}let Q="";f.on("data",y=>Q+=y),f.on("end",()=>{try{c(JSON.parse(Q))}catch{c(void 0)}})});d.on("error",I),d.on("timeout",()=>{d.destroy(),I(new Error("Upload timeout"))});let B=Eb(t);B.pipe(d),B.on("error",f=>{d.destroy(),I(f)})})},k4e=async({url:n,filePath:t,headers:o,timeoutMs:i,agent:e})=>{let a=Eb(t),A=Df.toWeb(a),r=typeof e?.dispatch=="function"?e:void 0,s=await fetch(n,{...r?{dispatcher:r}:{},method:"POST",body:A,headers:o,duplex:"half",signal:i?AbortSignal.timeout(i):void 0});try{return await s.json()}catch{return}},v4e=async(n,t)=>R4e()?(t?.debug("Using Node.js https module for upload (avoids undici buffering bug)"),Poe(n)):(t?.debug("Using web-standard Fetch API for upload"),k4e(n)),Goe=({customUploadHosts:n,fetchAgent:t,logger:o,options:i},e)=>async(a,{mediaType:A,fileEncSha256B64:r,timeoutMs:s})=>{let g=await e(!1),c,I=[...n,...g.hosts];r=_4e(r);let B={...(()=>{let f=i?.headers;return f?Array.isArray(f)?Object.fromEntries(f):f:{}})(),"Content-Type":"application/octet-stream",Origin:Mf};for(let{hostname:f}of I){o.debug(`uploading to "${f}"`);let Q=encodeURIComponent(g.auth),y=`https://${f}${lU[A]}/${r}?auth=${Q}&token=${r}`,m;try{if(m=await v4e({url:y,filePath:a,headers:B,timeoutMs:s,agent:t},o),m?.url||m?.direct_path){c={mediaUrl:m.url,directPath:m.direct_path,meta_hmac:m.meta_hmac,fbid:m.fbid,ts:m.ts};break}else throw g=await e(!0),new Error(`upload failed, reason: ${JSON.stringify(m)}`)}catch(_){let T=f===I[g.hosts.length-1]?.hostname;o.warn({trace:_?.stack,uploadResult:m},`Error in uploading to ${f} ${T?"":", retrying..."}`)}}if(!c)throw new xn.Boom("Media upload failed on all hosts",{statusCode:500});return c},Foe=n=>Un(n,32,{info:"WhatsApp Media Retry Notification"}),Loe=(n,t,o)=>{let i={stanzaId:n.id},e=oe.ServerErrorReceipt.encode(i).finish(),a=fo.randomBytes(12),A=Foe(t),r=Pl(e,A,a,Buffer.from(n.id));return{tag:"receipt",attrs:{id:n.id,to:uA(o),type:"server-error"},content:[{tag:"encrypt",attrs:{},content:[{tag:"enc_p",attrs:{},content:r},{tag:"enc_iv",attrs:{},content:a}]},{tag:"rmr",attrs:{jid:n.remoteJid,from_me:(!!n.fromMe).toString(),participant:n.participant||void 0}}]}},Uoe=n=>{let t=le(n,"rmr"),o={key:{id:n.attrs.id,remoteJid:t.attrs.jid,fromMe:t.attrs.from_me==="true",participant:t.attrs.participant}},i=le(n,"error");if(i){let e=+i.attrs.code;o.error=new xn.Boom(`Failed to re-upload media (${e})`,{data:i.attrs,statusCode:IU(e)})}else{let e=le(n,"encrypt"),a=Oa(e,"enc_p"),A=Oa(e,"enc_iv");a&&A?o.media={ciphertext:a,iv:A}:o.error=new xn.Boom("Failed to re-upload media (missing ciphertext)",{statusCode:404})}return o},Hoe=({ciphertext:n,iv:t},o,i)=>{let e=Foe(o),a=Gl(n,e,t,Buffer.from(i));return oe.MediaRetryNotification.decode(a)},IU=n=>P4e[n],P4e={[oe.MediaRetryNotification.ResultType.SUCCESS]:200,[oe.MediaRetryNotification.ResultType.DECRYPTION_ERROR]:412,[oe.MediaRetryNotification.ResultType.NOT_FOUND]:404,[oe.MediaRetryNotification.ResultType.GENERAL_ERROR]:418};import{createHmac as G4e}from"crypto";var F4e=[{f:1},{f:3,s:[{f:2},{f:3},{f:8},{f:11},{f:17,s:[{f:21},{f:22}]},{f:25}]},{f:4,s:[{f:1},{f:16},{f:17,s:[{f:21},{f:22}]}]},{f:5,s:[{f:3},{f:4},{f:5},{f:16},{f:17,s:[{f:21},{f:22}]}]},{f:6,s:[{f:1},{f:17,s:[{f:21},{f:22}]},{f:30}]},{f:7,s:[{f:2},{f:7},{f:10},{f:17,s:[{f:21},{f:22}]},{f:20}]},{f:8,s:[{f:2},{f:7},{f:9},{f:17,s:[{f:21},{f:22}]},{f:21}]},{f:9,s:[{f:2},{f:6},{f:7},{f:13},{f:17,s:[{f:21},{f:22}]},{f:20}]},{f:12,s:[{f:1},{f:2},{f:14,m:!0},{f:15}]},{f:18,s:[{f:6},{f:16},{f:17,s:[{f:21},{f:22}]}]},{f:26,s:[{f:4},{f:5},{f:8},{f:13},{f:17,s:[{f:21},{f:22}]}]},{f:28,s:[{f:1},{f:2},{f:4},{f:5},{f:6},{f:7,s:[{f:21},{f:22}]}]},{f:37,s:[{f:1,m:!0}]},{f:49,s:[{f:2},{f:3,s:[{f:1},{f:2}]},{f:5,s:[{f:21},{f:22}]},{f:8,s:[{f:1},{f:2}]}]},{f:53,s:[{f:1,m:!0}]},{f:55,s:[{f:1,m:!0}]},{f:58,s:[{f:1,m:!0}]},{f:59,s:[{f:1,m:!0}]},{f:60,s:[{f:2},{f:3,s:[{f:1},{f:2}]},{f:5,s:[{f:21},{f:22}]},{f:8,s:[{f:1},{f:2}]}]},{f:64,s:[{f:2},{f:3,s:[{f:1},{f:2}]},{f:5,s:[{f:21},{f:22}]},{f:8,s:[{f:1},{f:2}]}]},{f:66,s:[{f:2},{f:6},{f:7},{f:13},{f:17,s:[{f:21},{f:22}]},{f:20}]},{f:74,s:[{f:1,m:!0}]},{f:87,s:[{f:1,m:!0}]},{f:88,s:[{f:1},{f:2,s:[{f:1}]},{f:3,s:[{f:21},{f:22}]}]},{f:92,s:[{f:1,m:!0}]},{f:93,s:[{f:1,m:!0}]},{f:94,s:[{f:1,m:!0}]}],Yoe=n=>{let t=new Map;for(let o of n)t.set(o.f,{m:o.m,children:o.s?Yoe(o.s):void 0});return t},L4e=Yoe(F4e),U4e=new Map,H4e="Report Token",fb={VARINT:0,FIXED64:1,BYTES:2,FIXED32:5},Qb=n=>!n.reactionMessage&&!n.encReactionMessage&&!n.encEventResponseMessage&&!n.pollUpdateMessage,K4e=(n,t,o,i,e)=>{let a=Buffer.concat([Buffer.from(t,"utf8"),Buffer.from(o,"utf8"),Buffer.from(i,"utf8"),Buffer.from(n,"utf8")]);return Un(e,32,{info:a.toString("latin1")})},joe=(n,t)=>{let o=[],i=0;for(;i>3,A=e.value&7,r=i;i+=e.bytes;let s=t.get(a),g=I=>I>n.length?!1:(o.push({num:a,bytes:n.subarray(r,I)}),i=I,!0),c=I=>I>n.length?!1:(i=I,!0);if(A===fb.VARINT){let I=pU(n,i);if(!I.ok)return null;let d=i+I.bytes;if(!s){if(!c(d))return null;continue}if(!g(d))return null;continue}if(A===fb.FIXED64){let I=i+8;if(!s){if(!c(I))return null;continue}if(!g(I))return null;continue}if(A===fb.FIXED32){let I=i+4;if(!s){if(!c(I))return null;continue}if(!g(I))return null;continue}if(A===fb.BYTES){let I=pU(n,i);if(!I.ok)return null;let d=i+I.bytes,B=d+I.value;if(B>n.length)return null;if(!s){i=B;continue}if(s.m||s.children){let f=joe(n.subarray(d,B),s.children??U4e);if(f===null)return null;if(f.length>0){let Q=xoe(e.value),y=xoe(f.length);o.push({num:a,bytes:Buffer.concat([Q,y,f])})}i=B;continue}o.push({num:a,bytes:n.subarray(r,B)}),i=B;continue}return null}return o.length===0?Buffer.alloc(0):(o.sort((e,a)=>e.num-a.num),Buffer.concat(o.map(e=>e.bytes)))},pU=(n,t)=>{let o=0,i=0,e=0;for(;t+i35)return{value:0,bytes:0,ok:!1}}return{value:0,bytes:0,ok:!1}},xoe=n=>{let t=[],o=n>>>0;for(;o>127;)t.push(o&127|128),o>>>=7;return t.push(o),Buffer.from(t)},Joe=async(n,t,o)=>{let i=t.messageContextInfo?.messageSecret;if(!i||!o.id)return null;let e=o.fromMe?o.remoteJid:o.participant||o.remoteJid,a=o.fromMe&&o.participant||o.remoteJid,A=K4e(H4e,o.id,e,a,i),r=joe(n,L4e);if(!r||r.length===0)return null;let s=G4e("sha256",A).update(r).digest().subarray(0,16);return{tag:"reporting",attrs:{},content:[{tag:"reporting_token",attrs:{v:"2"},content:s}]}};var x4e={image:"image/jpeg",video:"video/mp4",document:"application/pdf",audio:"audio/ogg; codecs=opus",sticker:"image/webp","product-catalog-image":"image/jpeg"},qoe={image:oe.Message.ImageMessage,video:oe.Message.VideoMessage,audio:oe.Message.AudioMessage,sticker:oe.Message.StickerMessage,document:oe.Message.DocumentMessage},Y4e=n=>n.match(Ane)?.[0],j4e=async(n,t,o)=>{let i=Y4e(n);if(t&&i)try{return await t(i)}catch(e){o?.warn({trace:e.stack},"url generation failed")}},zoe=async n=>{let t;if(typeof n=="number")t=n>0?n:4294967295+Number(n)+1;else{let o=n.trim().replace("#","");return o.length<=6&&(o="FF"+o.padStart(6,"0")),t=parseInt(o,16),t}},_f=async(n,t)=>{let o=t.logger,i;for(let L of tne)L in n&&(i=L);if(!i)throw new Xg.Boom("Invalid media type",{statusCode:400});let e={...n,media:n[i]};delete e[i];let a=typeof e.media=="object"&&"url"in e.media&&!!e.media.url&&!!t.mediaCache&&i+":"+e.media.url.toString();if(i==="document"&&!e.fileName&&(e.fileName="file"),e.mimetype||(e.mimetype=x4e[i]),a){let L=await t.mediaCache.get(a);if(L){o?.debug({cacheableKey:a},"got media cache hit");let U=oe.Message.decode(L),z=`${i}Message`;return Object.assign(U[z],{...e,media:void 0}),U}}if(!!t.jid&&Wc(t.jid)){o?.info({key:a},"Preparing raw media for newsletter");let{filePath:L,fileSha256:U,fileLength:z}=await Cb(e.media,t.mediaTypeOverride||i,o),q=U.toString("base64"),{mediaUrl:x,directPath:G}=await t.upload(L,{fileEncSha256B64:q,mediaType:i,timeoutMs:t.mediaUploadTimeoutMs});await hU.unlink(L);let V=oe.Message.fromObject({[`${i}Message`]:qoe[i].fromObject({url:x,directPath:G,fileSha256:U,fileLength:z,...e,media:void 0})});return e.ptv&&(V.ptvMessage=V.videoMessage,delete V.videoMessage),V.stickerMessage&&(V.stickerMessage.stickerSentTs=Date.now()),a&&(o?.debug({cacheableKey:a},"set cache"),await t.mediaCache.set(a,oe.Message.encode(V).finish())),V}let r=i==="audio"&&typeof e.seconds>"u",s=(i==="image"||i==="video")&&typeof e.jpegThumbnail>"u",g=i==="audio"&&e.ptt===!0&&typeof e.waveform>"u",c=t.backgroundColor&&i==="audio"&&e.ptt===!0,I=r||s,{mediaKey:d,encFilePath:B,originalFilePath:f,fileEncSha256:Q,fileSha256:y,fileLength:m}=await voe(e.media,t.mediaTypeOverride||i,{logger:o,saveOriginalFileIfRequired:I,opts:t.options}),_=Q.toString("base64"),[{mediaUrl:T,directPath:R}]=await Promise.all([(async()=>{let L=await t.upload(B,{fileEncSha256B64:_,mediaType:i,timeoutMs:t.mediaUploadTimeoutMs});return o?.debug({mediaType:i,cacheableKey:a},"uploaded media"),L})(),(async()=>{try{if(s){let{thumbnail:L,originalImageDimensions:U}=await koe(f,i,t);e.jpegThumbnail=L,!e.width&&U&&(e.width=U.width,e.height=U.height,o?.debug("set dimensions")),o?.debug("generated thumbnail")}r&&(e.seconds=await Noe(f),o?.debug("computed audio duration")),g&&(e.waveform=await Roe(f,o),o?.debug("processed waveform")),c&&(e.backgroundArgb=await zoe(t.backgroundColor),o?.debug("computed backgroundColor audio status"))}catch(L){o?.warn({trace:L.stack},"failed to obtain extra info")}})()]).finally(async()=>{try{await hU.unlink(B),f&&await hU.unlink(f),o?.debug("removed tmp files")}catch{o?.warn("failed to remove tmp file")}}),K=oe.Message.fromObject({[`${i}Message`]:qoe[i].fromObject({url:T,directPath:R,mediaKey:d,fileEncSha256:Q,fileSha256:y,fileLength:m,mediaKeyTimestamp:ba(),...e,media:void 0})});return e.ptv&&(K.ptvMessage=K.videoMessage,delete K.videoMessage),a&&(o?.debug({cacheableKey:a},"set cache"),await t.mediaCache.set(a,oe.Message.encode(K).finish())),K},J4e=n=>{n=n||0;let t={ephemeralMessage:{message:{protocolMessage:{type:oe.Message.ProtocolMessage.Type.EPHEMERAL_SETTING,ephemeralExpiration:n}}}};return oe.Message.fromObject(t)},q4e=(n,t)=>{let o=n.message;if(!o)throw new Xg.Boom("no content in message",{statusCode:400});o=Ra(o),o=oe.Message.decode(oe.Message.encode(o).finish());let i=Object.keys(o)[0],e=o?.[i]?.contextInfo?.forwardingScore||0;e+=n.key.fromMe&&!t?0:1,i==="conversation"&&(o.extendedTextMessage={text:o[i]},delete o.conversation,i="extendedTextMessage");let a=o?.[i];return e>0?a.contextInfo={forwardingScore:e,isForwarded:!0}:a.contextInfo={},o},Ea=(n,t)=>typeof n=="object"&&n!==null&&t in n&&n[t]!==null&&n[t]!==void 0;function op(n,t){return typeof n=="object"&&n!==null&&t in n&&n[t]!==null}var z4e=async(n,t)=>{var o,i;let e={};if(Ea(n,"text")){let a={text:n.text},A=n.linkPreview;if(typeof A>"u"&&(A=await j4e(n.text,t.getUrlInfo,t.logger)),A){a.matchedText=A["matched-text"],a.jpegThumbnail=A.jpegThumbnail,a.description=A.description,a.title=A.title,a.previewType=0;let r=A.highQualityThumbnail;r&&(a.thumbnailDirectPath=r.directPath,a.mediaKey=r.mediaKey,a.mediaKeyTimestamp=r.mediaKeyTimestamp,a.thumbnailWidth=r.width,a.thumbnailHeight=r.height,a.thumbnailSha256=r.fileSha256,a.thumbnailEncSha256=r.fileEncSha256)}t.backgroundColor&&(a.backgroundArgb=await zoe(t.backgroundColor)),t.font&&(a.font=t.font),e.extendedTextMessage=a}else if(Ea(n,"contacts")){let a=n.contacts.contacts.length;if(!a)throw new Xg.Boom("require atleast 1 contact",{statusCode:400});a===1?e.contactMessage=oe.Message.ContactMessage.create(n.contacts.contacts[0]):e.contactsArrayMessage=oe.Message.ContactsArrayMessage.create(n.contacts)}else if(Ea(n,"location"))e.locationMessage=oe.Message.LocationMessage.create(n.location);else if(Ea(n,"react"))n.react.senderTimestampMs||(n.react.senderTimestampMs=Date.now()),e.reactionMessage=oe.Message.ReactionMessage.create(n.react);else if(Ea(n,"delete"))e.protocolMessage={key:n.delete,type:oe.Message.ProtocolMessage.Type.REVOKE};else if(Ea(n,"forward"))e=q4e(n.forward,n.force);else if(Ea(n,"disappearingMessagesInChat")){let a=typeof n.disappearingMessagesInChat=="boolean"?n.disappearingMessagesInChat?Nf:0:n.disappearingMessagesInChat;e=J4e(a)}else if(Ea(n,"groupInvite")){if(e.groupInviteMessage={},e.groupInviteMessage.inviteCode=n.groupInvite.inviteCode,e.groupInviteMessage.inviteExpiration=n.groupInvite.inviteExpiration,e.groupInviteMessage.caption=n.groupInvite.text,e.groupInviteMessage.groupJid=n.groupInvite.jid,e.groupInviteMessage.groupName=n.groupInvite.subject,t.getProfilePicUrl){let a=await t.getProfilePicUrl(n.groupInvite.jid,"preview");if(a){let A=await fetch(a,{method:"GET",dispatcher:t?.options?.dispatcher});if(A.ok){let r=Buffer.from(await A.arrayBuffer());e.groupInviteMessage.jpegThumbnail=r}}}}else if(Ea(n,"pin"))e.pinInChatMessage={},e.messageContextInfo={},e.pinInChatMessage.key=n.pin,e.pinInChatMessage.type=n.type,e.pinInChatMessage.senderTimestampMs=Date.now(),e.messageContextInfo.messageAddOnDurationInSecs=n.type===1?n.time||86400:0;else if(Ea(n,"buttonReply"))switch(n.type){case"template":e.templateButtonReplyMessage={selectedDisplayText:n.buttonReply.displayText,selectedId:n.buttonReply.id,selectedIndex:n.buttonReply.index};break;case"plain":e.buttonsResponseMessage={selectedButtonId:n.buttonReply.id,selectedDisplayText:n.buttonReply.displayText,type:oe.Message.ButtonsResponseMessage.Type.DISPLAY_TEXT};break}else if(op(n,"ptv")&&n.ptv){let{videoMessage:a}=await _f({video:n.video},t);e.ptvMessage=a}else if(Ea(n,"product")){let{imageMessage:a}=await _f({image:n.product.productImage},t);e.productMessage=oe.Message.ProductMessage.create({...n,product:{...n.product,productImage:a}})}else if(Ea(n,"listReply"))e.listResponseMessage={...n.listReply};else if(Ea(n,"event")){e.eventMessage={};let a=Math.floor(n.event.startDate.getTime()/1e3);if(n.event.call&&t.getCallLink){let A=await t.getCallLink(n.event.call,{startTime:a});e.eventMessage.joinLink=(n.event.call==="audio"?ene:$oe)+A}e.messageContextInfo={messageSecret:n.event.messageSecret||dU(32)},e.eventMessage.name=n.event.name,e.eventMessage.description=n.event.description,e.eventMessage.startTime=a,e.eventMessage.endTime=n.event.endDate?n.event.endDate.getTime()/1e3:void 0,e.eventMessage.isCanceled=n.event.isCancelled??!1,e.eventMessage.extraGuestsAllowed=n.event.extraGuestsAllowed,e.eventMessage.isScheduleCall=n.event.isScheduleCall??!1,e.eventMessage.location=n.event.location}else if(Ea(n,"poll")){if((o=n.poll).selectableCount||(o.selectableCount=0),(i=n.poll).toAnnouncementGroup||(i.toAnnouncementGroup=!1),!Array.isArray(n.poll.values))throw new Xg.Boom("Invalid poll values",{statusCode:400});if(n.poll.selectableCount<0||n.poll.selectableCount>n.poll.values.length)throw new Xg.Boom(`poll.selectableCount in poll should be >= 0 and <= ${n.poll.values.length}`,{statusCode:400});e.messageContextInfo={messageSecret:n.poll.messageSecret||dU(32)};let a={name:n.poll.name,selectableOptionsCount:n.poll.selectableCount,options:n.poll.values.map(A=>({optionName:A}))};n.poll.toAnnouncementGroup?e.pollCreationMessageV2=a:n.poll.selectableCount===1?e.pollCreationMessageV3=a:e.pollCreationMessage=a}else Ea(n,"album")?e.albumMessage={expectedImageCount:n.album.expectedImageCount,expectedVideoCount:n.album.expectedVideoCount}:Ea(n,"sharePhoneNumber")?e.protocolMessage={type:oe.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER}:Ea(n,"requestPhoneNumber")?e.requestPhoneNumberMessage={}:Ea(n,"limitSharing")?e.protocolMessage={type:oe.Message.ProtocolMessage.Type.LIMIT_SHARING,limitSharing:{sharingLimited:n.limitSharing===!0,trigger:1,limitSharingSettingTimestamp:Date.now(),initiatedByMe:!0}}:e=await _f(n,t);if(op(n,"viewOnce")&&n.viewOnce&&(e={viewOnceMessage:{message:e}}),op(n,"mentions")&&n.mentions?.length||op(n,"mentionAll")&&n.mentionAll){let a=Object.keys(e)[0],A=e[a];A&&"contextInfo"in A?(A.contextInfo=A.contextInfo||{},n.mentions?.length&&(A.contextInfo.mentionedJid=n.mentions),n.mentionAll&&(A.contextInfo.nonJidMentions=1)):A&&(A.contextInfo={mentionedJid:n.mentions,nonJidMentions:n.mentionAll?1:0})}if(op(n,"edit")&&(e={protocolMessage:{key:n.edit,editedMessage:e,timestampMs:Date.now(),type:oe.Message.ProtocolMessage.Type.MESSAGE_EDIT}}),op(n,"contextInfo")&&n.contextInfo){let a=Object.keys(e)[0],A=e[a];"contextInfo"in A&&A.contextInfo?A.contextInfo={...A.contextInfo,...n.contextInfo}:A&&(A.contextInfo=n.contextInfo)}return op(n,"albumParentKey")&&n.albumParentKey&&(e.messageContextInfo={...e.messageContextInfo,messageAssociation:{associationType:oe.MessageAssociation.AssociationType.MEDIA_ALBUM,parentMessageKey:n.albumParentKey}}),Qb(e)&&(e.messageContextInfo=e.messageContextInfo||{},e.messageContextInfo.messageSecret||(e.messageContextInfo.messageSecret=dU(32))),oe.Message.create(e)},V4e=(n,t,o)=>{o.timestamp||(o.timestamp=new Date);let i=Ra(t),e=Tf(i),a=ba(o.timestamp),{quoted:A,userJid:r}=o;if(A&&!Wc(n)){let g=A.key.fromMe?r:A.participant||A.key.participant||A.key.remoteJid,c=Ra(A.message),I=Tf(c);c=oe.Message.create({[I]:c[I]});let d=c[I];typeof d=="object"&&d&&"contextInfo"in d&&delete d.contextInfo;let B="contextInfo"in i[e]&&i[e]?.contextInfo||{};B.participant=uA(g),B.stanzaId=A.key.id,B.quotedMessage=c,n!==A.key.remoteJid&&(B.remoteJid=A.key.remoteJid),B&&i[e]&&(i[e].contextInfo=B)}o?.ephemeralExpiration&&e!=="protocolMessage"&&e!=="ephemeralMessage"&&!Wc(n)&&(i[e].contextInfo={...i[e].contextInfo||{},expiration:o.ephemeralExpiration||Nf}),t=oe.Message.create(t);let s={key:{remoteJid:n,fromMe:!0,id:o?.messageId||jr()},message:t,messageTimestamp:a,messageStubParameters:[],participant:xr(n)||Lg(n)?r:void 0,status:lh.PENDING};return oe.WebMessageInfo.fromObject(s)},Voe=async(n,t,o)=>(o.logger=o?.logger?.child({msgId:o.messageId}),V4e(n,await z4e(t,{...o,jid:n}),o)),Tf=n=>{if(n)return Object.keys(n).find(i=>(i==="conversation"||i.includes("Message"))&&i!=="senderKeyDistributionMessage")},Ra=n=>{if(!n)return;for(let o=0;o<5;o++){let i=t(n);if(!i)break;n=i.message}return n;function t(o){return o?.ephemeralMessage||o?.viewOnceMessage||o?.documentWithCaptionMessage||o?.viewOnceMessageV2||o?.viewOnceMessageV2Extension||o?.editedMessage||o?.associatedChildMessage||o?.groupStatusMessage||o?.groupStatusMessageV2}},Woe=n=>{let t=o=>o.imageMessage?{imageMessage:o.imageMessage}:o.documentMessage?{documentMessage:o.documentMessage}:o.videoMessage?{videoMessage:o.videoMessage}:o.locationMessage?{locationMessage:o.locationMessage}:{conversation:"contentText"in o?o.contentText:"hydratedContentText"in o?o.hydratedContentText:""};return n=Ra(n),n?.buttonsMessage?t(n.buttonsMessage):n?.templateMessage?.hydratedFourRowTemplate?t(n?.templateMessage?.hydratedFourRowTemplate):n?.templateMessage?.hydratedTemplate?t(n?.templateMessage?.hydratedTemplate):n?.templateMessage?.fourRowTemplate?t(n?.templateMessage?.fourRowTemplate):n};var EU=(n,t)=>{n.userReceipt=n.userReceipt||[];let o=n.userReceipt.find(i=>i.userJid===t.userJid);o?Object.assign(o,t):n.userReceipt.push(t)},CU=(n,t)=>{let o=Bh(t.key),i=(n.reactions||[]).filter(e=>Bh(e.key)!==o);t.text=t.text||"",i.push(t),n.reactions=i};var Zoe=n=>{let t={};for(let{remoteJid:o,id:i,participant:e,fromMe:a}of n)if(!a){let A=`${o}:${e||""}`;t[A]||(t[A]={jid:o,participant:e,messageIds:[]}),t[A].messageIds.push(i)}return Object.values(t)},W4e=[410,404],uU=async(n,t,o,i)=>{return await a().catch(async A=>{if(i&&typeof A?.status=="number"&&W4e.includes(A.status))return i.logger.info({key:n.key},"sending reupload media request..."),n=await i.reuploadRequest(n),await a();throw A});async function a(){let A=Woe(n.message);if(!A)throw new Xg.Boom("No message present",{statusCode:400,data:n});let r=Tf(A),s=r?.replace("Message",""),g=A[r];if(!g||typeof g!="object"||!("url"in g)&&!("thumbnailDirectPath"in g))throw new Xg.Boom(`"${r}" message is not a media message`);let c;"thumbnailDirectPath"in g&&!("url"in g)?(c={directPath:g.thumbnailDirectPath,mediaKey:g.mediaKey},s="thumbnail-link"):c=g;let I=await IE(c,s,o);if(t==="buffer"){let d=[];for await(let B of I)d.push(B);return Buffer.concat(d)}return I}},Xoe=n=>{n=Woe(n);let t=n?.documentMessage||n?.imageMessage||n?.videoMessage||n?.audioMessage||n?.stickerMessage;if(!t)throw new Xg.Boom("given message is not a media message",{statusCode:400,data:n});return t};var yb=qe(Kr(),1);import{createHash as e8e}from"crypto";function Z4e(n,t){let o=[];for(let i=0;i({identifier:{name:n,deviceId:0},identifierKey:Wo(t)}),X4e=async({get:n},t,o)=>{let i=[];for(let e=t;e{let o=n.nextPreKeyId-n.firstUnuploadedPreKeyId,i=t-o,e=n.nextPreKeyId+i-1,a={};if(i>0)for(let A=n.nextPreKeyId;A<=e;A++)a[A]=Sr.generateKeyPair();return{newPreKeys:a,lastPreKeyId:e,preKeysRange:[n.firstUnuploadedPreKeyId,t]}},Rf=n=>({tag:"skey",attrs:{},content:[{tag:"id",attrs:{},content:Kg(n.keyId,3)},{tag:"value",attrs:{},content:n.keyPair.public},{tag:"signature",attrs:{},content:n.signature}]}),fU=(n,t)=>({tag:"key",attrs:{},content:[{tag:"id",attrs:{},content:Kg(t,3)},{tag:"value",attrs:{},content:n.public}]}),BU=n=>typeof n=="number"&&Number.isInteger(n),ane=n=>{let t=le(n,"keys");if(!t)return null;let o=Oa(t,"type");if(!o||o.length!==1||o[0]!==Hg[0])return null;let i=Oa(t,"identity"),e=le(t,"skey");if(!i||i.length!==32||!e)return null;let a=Zc(n,"registration",4);if(!BU(a))return null;let A=Oa(e,"value"),r=Oa(e,"signature"),s=Zc(e,"id",3);if(!A||A.length!==32||!r||!BU(s))return null;let g=le(t,"key"),c;if(g){let I=Oa(g,"value"),d=Zc(g,"id",3);if(!I||I.length!==32||!BU(d))return null;c={keyId:d,publicKey:Wo(I)}}return{registrationId:a,identityKey:Wo(i),signedPreKey:{keyId:s,publicKey:Wo(A),signature:r},preKey:c}},ine=async(n,t)=>{let o=A=>A?{keyId:Zc(A,"id",3),publicKey:Wo(Oa(A,"value")),signature:Oa(A,"signature")}:void 0,i=PA(le(n,"list"),"user");for(let A of i)Ji(A);let a=Z4e(i,100);for(let A of a)for(let r of A){let s=le(r,"skey"),g=le(r,"key"),c=Oa(r,"identity"),I=r.attrs.jid,d=Zc(r,"registration",4);await t.injectE2ESession({jid:I,session:{registrationId:d,identityKey:Wo(c),signedPreKey:o(s),preKey:o(g)}})}},one=(n,t,o,i)=>{let{user:e,device:a}=fA(t),A=[];for(let r of n){let{devices:s,id:g}=r,c=fA(g),{user:I,server:d}=c,{domainType:B}=c,f=s?.deviceList;if(Array.isArray(f))for(let{id:Q,keyIndex:y,isHosted:m}of f)(!i||Q!==0)&&(e!==I&&o!==I||a!==Q)&&(Q===0||y)&&(m&&(B=B===Jt.LID?Jt.HOSTED_LID:Jt.HOSTED),A.push({user:I,device:Q,domainType:B,server:g7(d,B)}))}return A},QU=async({creds:n,keys:t},o)=>{let{newPreKeys:i,lastPreKeyId:e,preKeysRange:a}=$4e(n,o),A={nextPreKeyId:Math.max(e+1,n.nextPreKeyId),firstUnuploadedPreKeyId:Math.max(n.firstUnuploadedPreKeyId,e+1)};await t.set({"pre-key":i});let r=await X4e(t,a[0],a[0]+a[1]);return{update:A,preKeys:r}},nne=async(n,t)=>{let{creds:o}=n,{update:i,preKeys:e}=await QU(n,t),a={tag:"iq",attrs:{xmlns:"encrypt",type:"set",to:OA},content:[{tag:"registration",attrs:{},content:Kg(o.registrationId)},{tag:"type",attrs:{},content:Hg},{tag:"identity",attrs:{},content:o.signedIdentityKey.public},{tag:"list",attrs:{},content:Object.keys(e).map(A=>fU(e[+A],+A))},Rf(o.signedPreKey)]};return{update:i,node:a}};var A8e=n=>({appVersion:{primary:n.version[0],secondary:n.version[1],tertiary:n.version[2]},platform:n.browser[1].toLocaleLowerCase().includes("android")?oe.ClientPayload.UserAgent.Platform.ANDROID:oe.ClientPayload.UserAgent.Platform.WEB,releaseChannel:oe.ClientPayload.UserAgent.ReleaseChannel.RELEASE,osVersion:"0.1",device:"Desktop",osBuildNumber:"0.1",localeLanguageIso6391:"en",mnc:"000",mcc:"000",localeCountryIso31661Alpha2:n.countryCode}),sne={"Mac OS":oe.ClientPayload.WebInfo.WebSubPlatform.DARWIN,Windows:oe.ClientPayload.WebInfo.WebSubPlatform.WIN32},t8e=n=>{let t=oe.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;return n.syncFullHistory&&sne[n.browser[0]]&&n.browser[1]==="Desktop"&&(t=sne[n.browser[0]]),{webSubPlatform:t}},gne=n=>{let t={connectType:oe.ClientPayload.ConnectType.WIFI_UNKNOWN,connectReason:oe.ClientPayload.ConnectReason.USER_ACTIVATED,userAgent:A8e(n)};return n.browser[1].toLocaleLowerCase().includes("android")||(t.webInfo=t8e(n)),n.pushName&&(t.pushName=n.pushName),t},cne=(n,t)=>{let{user:o,device:i}=fA(n),e={...gne(t),passive:!0,pull:!0,username:+o,device:i,lidDbMigrated:!1};return oe.ClientPayload.fromObject(e)},r8e=n=>{let t=n.toUpperCase();return t==="ANDROID"?oe.DeviceProps.PlatformType.ANDROID_PHONE:oe.DeviceProps.PlatformType[t]||oe.DeviceProps.PlatformType.CHROME},Ine=({registrationId:n,signedPreKey:t,signedIdentityKey:o},i)=>{let e=e8e("md5").update(i.version.join(".")).digest(),a={os:i.browser[0],platformType:r8e(i.browser[1]),requireFullSync:i.syncFullHistory,historySyncConfig:{storageQuotaMb:10240,inlineInitialPayloadInE2EeMsg:!0,recentSyncDaysLimit:void 0,supportCallLogHistory:!1,supportBotUserAgentChatHistory:!0,supportCagReactionsAndPolls:!0,supportBizHostedMsg:!0,supportRecentSyncChunkMessageCountTuning:!0,supportHostedGroupMsg:!0,supportFbidBotChatHistory:!0,supportAddOnHistorySyncMigration:void 0,supportMessageAssociation:!0,supportGroupHistory:!1,onDemandReady:void 0,supportGuestChat:void 0},version:{primary:10,secondary:15,tertiary:7}},A=oe.DeviceProps.encode(a).finish(),r={...gne(i),passive:!1,pull:!1,devicePairingData:{buildHash:e,deviceProps:A,eRegid:Kg(n),eKeytype:Hg,eIdent:o.public,eSkeyId:Kg(t.keyId,3),eSkeyVal:t.keyPair.public,eSkeySig:t.signature}};return oe.ClientPayload.fromObject(r)},lne=(n,{advSecretKey:t,signedIdentityKey:o,signalIdentities:i})=>{let e=n.attrs.id,a=le(n,"pair-success"),A=le(a,"device-identity"),r=le(a,"platform"),s=le(a,"device"),g=le(a,"biz");if(!A||!s)throw new yb.Boom("Missing device-identity or device in pair success node",{data:n});let c=g?.attrs.name,I=s.attrs.jid,d=s.attrs.lid,{details:B,hmac:f,accountType:Q}=oe.ADVSignedDeviceIdentityHMAC.decode(A.content),y=Buffer.from([]);Q!==void 0&&Q===oe.ADVEncryptionType.HOSTED&&(y=yU);let m=Hn(Buffer.concat([y,B]),Buffer.from(t,"base64"));if(Buffer.compare(f,m)!==0)throw new yb.Boom("Invalid account signature");let _=oe.ADVSignedDeviceIdentity.decode(B),{accountSignatureKey:T,accountSignature:R,details:K}=_,L=oe.ADVDeviceIdentity.decode(K),U=L.deviceType===oe.ADVEncryptionType.HOSTED?yU:pne,z=Buffer.concat([U,K,o.public]);if(!Sr.verify(T,z,R))throw new yb.Boom("Failed to verify account signature");let q=Buffer.concat([dne,K,o.public,T]);_.deviceSignature=Sr.sign(o.private,q);let x=rne(d,T),G=kf(_,!1),V={tag:"iq",attrs:{to:OA,type:"result",id:e},content:[{tag:"pair-device-sign",attrs:{},content:[{tag:"device-identity",attrs:{"key-index":L.keyIndex.toString()},content:G}]}]};return{creds:{account:_,me:{id:I,name:c,lid:d},signalIdentities:[...i||[],x],platform:r?.attrs.name},reply:V}},kf=(n,t)=>(n={...n},(!t||!n.accountSignatureKey?.length)&&(n.accountSignatureKey=null),oe.ADVSignedDeviceIdentity.encode(n).finish());var lE=qe(Kr(),1);var Cne=12,hne=Buffer.alloc(0),Ene=n=>{let t=new ArrayBuffer(Cne);return new DataView(t).setUint32(8,n),new Uint8Array(t)},mU=class{constructor(t,o){this.encKey=t,this.decKey=o,this.readCounter=0,this.writeCounter=0,this.iv=new Uint8Array(Cne)}encrypt(t){let o=this.writeCounter++;return this.iv[8]=o>>>24&255,this.iv[9]=o>>>16&255,this.iv[10]=o>>>8&255,this.iv[11]=o&255,Pl(t,this.encKey,this.iv,hne)}decrypt(t){let o=this.readCounter++;return this.iv[8]=o>>>24&255,this.iv[9]=o>>>16&255,this.iv[10]=o>>>8&255,this.iv[11]=o&255,Gl(t,this.decKey,this.iv,hne)}},une=({keyPair:{private:n,public:t},NOISE_HEADER:o,logger:i,routingInfo:e})=>{i=i.child({class:"ns"});let a=Buffer.from(Bne),A=a.byteLength===32?a:uh(a),r=A,s=A,g=A,c=0,I=!1,d=Buffer.alloc(0),B=null,f=!1,Q=null,y;e?(y=Buffer.alloc(7+e.byteLength+o.length),y.write("ED",0,"utf8"),y.writeUint8(0,2),y.writeUint8(1,3),y.writeUint8(e.byteLength>>16,4),y.writeUint16BE(e.byteLength&65535,5),y.set(e,7),y.set(o,7+e.byteLength)):y=Buffer.from(o);let m=z=>{B||(A=uh(Buffer.concat([A,z])))},_=z=>{if(B)return B.encrypt(z);let q=Pl(z,s,Ene(c++),A);return m(q),q},T=z=>{if(B)return B.decrypt(z);let q=Gl(z,g,Ene(c++),A);return m(z),q},R=z=>{let q=Un(Buffer.from(z),64,{salt:r,info:""});return[q.subarray(0,32),q.subarray(32)]},K=z=>{let[q,x]=R(z);r=q,s=x,g=x,c=0},L=async()=>{f=!0;let[z,q]=R(new Uint8Array(0));B=new mU(z,q),f=!1,i.trace("Noise handler transitioned to Transport state"),Q&&(i.trace({length:d.length},"Flushing buffered frames after transport ready"),await U(Q),Q=null)},U=async z=>{let q;for(;;){if(d.length<3||(q=d[0]<<16|d[1]<<8|d[2],d.length{m(z.ephemeral),K(Sr.sharedKey(n,z.ephemeral));let x=T(z.static);K(Sr.sharedKey(n,x));let G=T(z.payload),{intermediate:V,leaf:F}=oe.CertChain.decode(G);if(!F?.details||!F?.signature)throw new lE.Boom("invalid noise leaf certificate",{statusCode:400});if(!V?.details||!V?.signature)throw new lE.Boom("invalid noise intermediate certificate",{statusCode:400});let N=oe.CertChain.NoiseCertificate.Details.decode(V.details),{issuerSerial:k}=N,J=Sr.verify(N.key,F.details,F.signature),$=Sr.verify(SU.PUBLIC_KEY,V.details,V.signature);if(!J)throw new lE.Boom("noise certificate signature invalid",{statusCode:400});if(!$)throw new lE.Boom("noise intermediate certificate signature invalid",{statusCode:400});if(k!==SU.SERIAL)throw new lE.Boom("certification match failed",{statusCode:400});let ie=_(q.public);return K(Sr.sharedKey(q.private,z.ephemeral)),ie},encodeFrame:z=>{B&&(z=B.encrypt(z));let q=z.byteLength,x=I?0:y.length,G=Buffer.allocUnsafe(x+3+q);return I||(G.set(y),I=!0),G[x]=q>>>16&255,G[x+1]=q>>>8&255,G[x+2]=q&255,G.set(z,x+3),G},decodeFrame:async(z,q)=>{if(f){d=Buffer.concat([d,z]),Q=q;return}d.length===0?d=Buffer.from(z):d=Buffer.concat([d,z]),await U(q)}}};import{pipeline as a8e}from"stream/promises";import{promisify as i8e}from"util";import{createInflate as o8e,inflate as n8e}from"zlib";var s8e=i8e(n8e),g8e=n=>{for(let t of n){let o=t.message;if(!o?.key?.fromMe||!o.userReceipt?.length)continue;let i=o.userReceipt[0]?.userJid;if(i&&(_t(i)||mr(i)))return i}},c8e=async(n,t)=>{let o=await IE(n,"md-msg-hist",{options:t}),i=o8e(),e=[];i.on("data",r=>e.push(r)),await a8e(o,i);let a=Buffer.concat(e);return oe.HistorySync.decode(a)},I8e=(n,t)=>{let o=[],i=[],e=[],a=[];t?.trace({progress:n.progress},"processing history of type "+n.syncType?.toString());for(let A of n.phoneNumberToLidMappings||[])A.lidJid&&A.pnJid&&a.push({lid:A.lidJid,pn:A.pnJid});switch(n.syncType){case oe.HistorySync.HistorySyncType.INITIAL_BOOTSTRAP:case oe.HistorySync.HistorySyncType.RECENT:case oe.HistorySync.HistorySyncType.FULL:case oe.HistorySync.HistorySyncType.ON_DEMAND:for(let A of n.conversations){i.push({id:A.id,name:A.displayName||A.name||A.username||void 0,username:A.username||void 0,lid:A.lidJid||A.accountLid||void 0,phoneNumber:A.pnJid||void 0});let r=A.id,s=qA(r)||Ia(r),g=_t(r)||mr(r);if(s&&A.pnJid)a.push({lid:r,pn:A.pnJid});else if(g&&A.lidJid)a.push({lid:A.lidJid,pn:r});else if(s&&!A.pnJid){let I=g8e(A.messages||[]);I&&a.push({lid:r,pn:I})}let c=A.messages||[];delete A.messages;for(let I of c){let d=I.message;o.push(d),A.messages?.length||(A.messages=[{message:d}]),!d.key.fromMe&&!A.lastMessageRecvTimestamp&&(A.lastMessageRecvTimestamp=Yr(d.messageTimestamp)),(d.messageStubType===RA.BIZ_PRIVACY_MODE_TO_BSP||d.messageStubType===RA.BIZ_PRIVACY_MODE_TO_FB)&&d.messageStubParameters?.[0]&&i.push({id:d.key.participant||d.key.remoteJid,verifiedName:d.messageStubParameters?.[0]})}e.push(A)}break;case oe.HistorySync.HistorySyncType.PUSH_NAME:for(let A of n.pushnames)i.push({id:A.id,notify:A.pushname});break}return{chats:e,contacts:i,messages:o,lidPnMappings:a,pastParticipants:n.pastParticipants,syncType:n.syncType,progress:n.progress}},fne=async(n,t,o)=>{let i;return n.initialHistBootstrapInlinePayload?i=oe.HistorySync.decode(await s8e(n.initialHistBootstrapInlinePayload)):i=await c8e(n,t),I8e(i,o)},mb=n=>(n?Ra(n):void 0)?.protocolMessage?.historySyncNotification;var sn=qe(Kr(),1);var Zs;(function(n){n.Chat="label_jid",n.Message="label_message"})(Zs||(Zs={}));var Qne=new hh;var yne=(n,t,o)=>{let i=[];if(!t)return o?.warn({hasFullName:!!n.fullName,hasLidJid:!!n.lidJid,hasPnJid:!!n.pnJid},"contactAction sync: missing id in index"),i;let e=n.lidJid,a=_t(t),A=a?t:n.pnJid||void 0;return i.push({event:"contacts.upsert",data:[{id:t,name:n.fullName||n.firstName||n.username||void 0,username:n.username||void 0,lid:e||void 0,phoneNumber:A}]}),e&&qA(e)&&a&&i.push({event:"lid-mapping.update",data:{lid:e,pn:t}}),i},mne=(n,t)=>{for(let o of t)o.event==="contacts.upsert"?n.emit("contacts.upsert",o.data):n.emit("lid-mapping.update",o.data)};var vf=n=>{let t=T7(n);return{indexKey:t.indexKey,valueEncryptionKey:t.valueEncryptionKey,valueMacKey:t.valueMacKey,snapshotMacKey:t.snapshotMacKey,patchMacKey:t.patchMacKey}},Sne=(n,t,o,i)=>{let e=n===oe.SyncdMutation.SyncdOperation.SET?1:2,a=typeof o=="string"?Buffer.from(o,"base64"):o,A=new Uint8Array(1+a.length);A[0]=e,A.set(a,1);let r=new Uint8Array(8);r[7]=A.length;let s=new Uint8Array(A.length+t.length+r.length);return s.set(A,0),s.set(t,A.length),s.set(r,A.length+t.length),Hn(s,i,"sha512").subarray(0,32)},wne=n=>{let t=Buffer.alloc(8);return t.writeUint32BE(n,4),t},Dne=({indexValueMap:n,hash:t})=>{n={...n};let o=[],i=[];return{mix:({indexMac:e,valueMac:a,operation:A})=>{let r=Buffer.from(e).toString("base64"),s=n[r];if(A===oe.SyncdMutation.SyncdOperation.REMOVE){if(!s)return;delete n[r]}else o.push(a),n[r]={valueMac:a};s&&i.push(s.valueMac)},finish:()=>{let e=Qne.subtractThenAdd(t,i,o);return{hash:Buffer.from(e),indexValueMap:n}}}},wU=(n,t,o,i)=>{let e=Buffer.concat([n,wne(t),Buffer.from(o,"utf-8")]);return Hn(e,i,"sha256")},One=(n,t,o,i,e)=>{let a=Buffer.concat([n,...t,wne(o),Buffer.from(i,"utf-8")]);return Hn(a,e)},Sb=()=>({version:0,hash:Buffer.alloc(128),indexValueMap:{}}),DU=n=>((typeof n.version!="number"||isNaN(n.version))&&(n.version=0),n),OU=2,Pf=n=>n?.data?.isMissingKey===!0,bne=(n,t)=>t>=OU||n?.name==="TypeError",Mne=async({type:n,index:t,syncAction:o,apiVersion:i,operation:e},a,A,r)=>{let s=a?await r(a):void 0;if(!s)throw new sn.Boom(`myAppStateKey ("${a}") not present`,{data:{isMissingKey:!0}});let g=Buffer.from(a,"base64");A={...A,indexValueMap:{...A.indexValueMap}};let c=Buffer.from(JSON.stringify(t)),I=oe.SyncActionData.fromObject({index:c,value:o,padding:new Uint8Array(0),version:i}),d=oe.SyncActionData.encode(I).finish(),B=vf(s.keyData),f=L7(d,B.valueEncryptionKey),Q=Sne(e,f,g,B.valueMacKey),y=Hn(c,B.indexKey),m=Dne(A);m.mix({indexMac:y,valueMac:Q,operation:e}),Object.assign(A,m.finish()),A.version+=1;let _=wU(A.hash,A.version,n,B.snapshotMacKey),T={patchMac:One(_,[Q],A.version,n,B.patchMacKey),snapshotMac:_,keyId:{id:g},mutations:[{operation:e,record:{index:{blob:y},value:{blob:Buffer.concat([f,Q])},keyId:{id:g}}}]},R=y.toString("base64");return A.indexValueMap[R]={valueMac:Q},{patch:T,state:A}},_ne=async(n,t,o,i,e)=>{let a=Dne(t),A=new Map;for(let s of n){let g="operation"in s?s.operation:oe.SyncdMutation.SyncdOperation.SET,c="record"in s&&s.record?s.record:s,I;try{I=await r(c.keyId.id)}catch(_){if(Pf(_))throw _;continue}let d=c.value.blob,B=d.subarray(0,-32),f=d.subarray(-32);if(e){let _=Sne(g,B,c.keyId.id,I.valueMacKey);if(Buffer.compare(_,f)!==0)continue}let Q;try{Q=F7(B,I.valueEncryptionKey)}catch{continue}let y=oe.SyncActionData.decode(Q);if(e){let _=Hn(y.index,I.indexKey);if(Buffer.compare(_,c.index.blob)!==0)throw new sn.Boom("HMAC index verification failed")}let m=Buffer.from(y.index).toString();i({syncAction:y,index:JSON.parse(m)}),a.mix({indexMac:c.index.blob,valueMac:f,operation:g})}return a.finish();async function r(s){let g=Buffer.from(s).toString("base64"),c=A.get(g);if(c)return c;let I=await o(g);if(!I)throw new sn.Boom(`failed to find key "${g}" to decode mutation`,{data:{isMissingKey:!0,msgMutations:n}});let d=vf(I.keyData);return A.set(g,d),d}},l8e=async(n,t,o,i,e,a)=>{if(a){let r=Buffer.from(n.keyId.id).toString("base64"),s=await i(r);if(!s)throw new sn.Boom(`failed to find key "${r}" to decode patch`,{data:{isMissingKey:!0,msg:n}});let g=vf(s.keyData),c=n.mutations.map(d=>d.record.value.blob.slice(-32)),I=One(n.snapshotMac,c,Yr(n.version.version),t,g.patchMacKey);if(Buffer.compare(I,n.patchMac)!==0)throw new sn.Boom("Invalid patch mac")}return await _ne(n.mutations,o,i,e,a)},Tne=async(n,t)=>{let o=le(n,"sync"),i=PA(o,"collection"),e={};return await Promise.all(i.map(async a=>{let A=le(a,"patches"),r=PA(A||a,"patch"),s=le(a,"snapshot"),g=[],c=a.attrs.name,I=a.attrs.has_more_patches==="true",d;if(s&&s.content){Buffer.isBuffer(s)||(s.content=Buffer.from(Object.values(s.content)));let B=oe.ExternalBlobReference.decode(s.content),f=await Nne(B,t);d=oe.SyncdSnapshot.decode(f)}for(let{content:B}of r)if(B){Buffer.isBuffer(B)||(B=Buffer.from(Object.values(B)));let f=oe.SyncdPatch.decode(B);f.version||(f.version={version:+a.attrs.version+1}),g.push(f)}e[c]={patches:g,hasMorePatches:I,snapshot:d}})),e},Nne=async(n,t)=>{let o=await IE(n,"md-app-state",{options:t}),i=[];for await(let e of o)i.push(e);return Buffer.concat(i)},p8e=async(n,t)=>{let o=await Nne(n,t);return oe.SyncdMutations.decode(o)},Rne=async(n,t,o,i,e=!0,a)=>{let A=Sb();A.version=Yr(t.version.version);let r={},s=typeof i>"u"||A.version>i,{hash:g,indexValueMap:c}=await _ne(t.records,A,o,s?I=>{let d=I.syncAction.index?.toString();r[d]=I}:()=>{},e);if(A.hash=g,A.indexValueMap=c,e){let I=Buffer.from(t.keyId.id).toString("base64"),d=await o(I);if(!d)throw new sn.Boom(`failed to find key "${I}" to decode mutation`,{data:{isMissingKey:!0}});let B=vf(d.keyData),f=wU(A.hash,A.version,n,B.snapshotMacKey);Buffer.compare(t.mac,f)!==0&&a?.warn({name:n,version:A.version},"LTHash verification failed on snapshot, continuing with partial state")}return{state:A,mutationMap:r}},bU=async(n,t,o,i,e,a,A,r=!0)=>{let s={...o,indexValueMap:{...o.indexValueMap}},g={};for(let c of t){let{version:I,keyId:d,snapshotMac:B}=c;if(c.externalMutations){A?.trace({name:n,version:I},"downloading external patch");let m=await p8e(c.externalMutations,e);A?.debug({name:n,version:I,mutations:m.mutations.length},"downloaded external patch"),c.mutations?.push(...m.mutations)}let f=Yr(I.version);s.version=f;let Q=typeof a>"u"||f>a,y;try{y=await l8e(c,n,s,i,Q?m=>{let _=m.syncAction.index?.toString();g[_]=m}:()=>{},r)}catch(m){if(Pf(m))throw m;A?.warn({name:n,version:f,error:m.message},"failed to decode patch, skipping");continue}if(s.hash=y.hash,s.indexValueMap=y.indexValueMap,r){let m=Buffer.from(d.id).toString("base64"),_=await i(m);if(!_)throw new sn.Boom(`failed to find key "${m}" to decode mutation`,{data:{isMissingKey:!0}});let T=vf(_.keyData),R=wU(s.hash,s.version,n,T.snapshotMacKey);if(Buffer.compare(B,R)!==0){A?.warn({name:n,version:s.version},"LTHash verification failed, skipping remaining patches");break}}c.mutations=[]}return{state:s,mutationMap:g}},kne=(n,t)=>{let o=oe.SyncdMutation.SyncdOperation,i=a=>{let A;return Array.isArray(a)?A={lastMessageTimestamp:a[a.length-1]?.messageTimestamp,messages:a?.length?a.map(s=>{if(!s.key?.id||!s.key?.remoteJid)throw new sn.Boom("Incomplete key",{statusCode:400,data:s});if(xr(s.key.remoteJid)&&!s.key.fromMe&&!s.key.participant)throw new sn.Boom("Expected not from me message to have participant",{statusCode:400,data:s});if(!s.messageTimestamp||!Yr(s.messageTimestamp))throw new sn.Boom("Missing timestamp in last message list",{statusCode:400,data:s});return s.key.participant&&(s.key.participant=uA(s.key.participant)),s}):void 0}:A=a,A},e;if("mute"in n)e={syncAction:{muteAction:{muted:!!n.mute,muteEndTimestamp:n.mute||void 0}},index:["mute",t],type:"regular_high",apiVersion:2,operation:o.SET};else if("archive"in n)e={syncAction:{archiveChatAction:{archived:!!n.archive,messageRange:i(n.lastMessages)}},index:["archive",t],type:"regular_low",apiVersion:3,operation:o.SET};else if("markRead"in n)e={syncAction:{markChatAsReadAction:{read:n.markRead,messageRange:i(n.lastMessages)}},index:["markChatAsRead",t],type:"regular_low",apiVersion:3,operation:o.SET};else if("deleteForMe"in n){let{timestamp:a,key:A,deleteMedia:r}=n.deleteForMe;e={syncAction:{deleteMessageForMeAction:{deleteMedia:r,messageTimestamp:a}},index:["deleteMessageForMe",t,A.id,A.fromMe?"1":"0","0"],type:"regular_high",apiVersion:3,operation:o.SET}}else if("clear"in n)e={syncAction:{clearChatAction:{messageRange:i(n.lastMessages)}},index:["clearChat",t,"1","0"],type:"regular_high",apiVersion:6,operation:o.SET};else if("pin"in n)e={syncAction:{pinAction:{pinned:!!n.pin}},index:["pin_v1",t],type:"regular_low",apiVersion:5,operation:o.SET};else if("contact"in n)e={syncAction:{contactAction:n.contact||{}},index:["contact",t],type:"critical_unblock_low",apiVersion:2,operation:n.contact?o.SET:o.REMOVE};else if("disableLinkPreviews"in n)e={syncAction:{privacySettingDisableLinkPreviewsAction:n.disableLinkPreviews||{}},index:["setting_disableLinkPreviews"],type:"regular",apiVersion:8,operation:o.SET};else if("star"in n){let a=n.star.messages[0];e={syncAction:{starAction:{starred:!!n.star.star}},index:["star",t,a.id,a.fromMe?"1":"0","0"],type:"regular_low",apiVersion:2,operation:o.SET}}else if("delete"in n)e={syncAction:{deleteChatAction:{messageRange:i(n.lastMessages)}},index:["deleteChat",t,"1"],type:"regular_high",apiVersion:6,operation:o.SET};else if("pushNameSetting"in n)e={syncAction:{pushNameSetting:{name:n.pushNameSetting}},index:["setting_pushName"],type:"critical_block",apiVersion:1,operation:o.SET};else if("quickReply"in n)e={syncAction:{quickReplyAction:{count:0,deleted:n.quickReply.deleted||!1,keywords:[],message:n.quickReply.message||"",shortcut:n.quickReply.shortcut||""}},index:["quick_reply",n.quickReply.timestamp||String(Math.floor(Date.now()/1e3))],type:"regular",apiVersion:2,operation:o.SET};else if("addLabel"in n)e={syncAction:{labelEditAction:{name:n.addLabel.name,color:n.addLabel.color,predefinedId:n.addLabel.predefinedId,deleted:n.addLabel.deleted}},index:["label_edit",n.addLabel.id],type:"regular",apiVersion:3,operation:o.SET};else if("addChatLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!0}},index:[Zs.Chat,n.addChatLabel.labelId,t],type:"regular",apiVersion:3,operation:o.SET};else if("removeChatLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!1}},index:[Zs.Chat,n.removeChatLabel.labelId,t],type:"regular",apiVersion:3,operation:o.SET};else if("addMessageLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!0}},index:[Zs.Message,n.addMessageLabel.labelId,t,n.addMessageLabel.messageId,"0","0"],type:"regular",apiVersion:3,operation:o.SET};else if("removeMessageLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!1}},index:[Zs.Message,n.removeMessageLabel.labelId,t,n.removeMessageLabel.messageId,"0","0"],type:"regular",apiVersion:3,operation:o.SET};else throw new sn.Boom("not supported");return e.syncAction.timestamp=Date.now(),e},vne=(n,t,o,i,e)=>{let a=!!i,A=i?.accountSettings;e?.trace({syncAction:n,initialSync:!!i},"processing sync action");let{syncAction:{value:r},index:[s,g,c,I]}=n;if(r?.muteAction)t.emit("chats.update",[{id:g,muteEndTime:r.muteAction?.muted?Yr(r.muteAction.muteEndTimestamp):null,conditional:d(g,void 0)}]);else if(r?.archiveChatAction||s==="archive"||s==="unarchive"){let f=r?.archiveChatAction,Q=f?f.archived:s==="archive",y=A?.unarchiveChats?f?.messageRange:void 0;t.emit("chats.update",[{id:g,archived:Q,conditional:d(g,y)}])}else if(r?.markChatAsReadAction){let f=r.markChatAsReadAction,Q=a&&f.read;t.emit("chats.update",[{id:g,unreadCount:Q?null:f?.read?0:-1,conditional:d(g,f?.messageRange)}])}else if(r?.deleteMessageForMeAction||s==="deleteMessageForMe")t.emit("messages.delete",{keys:[{remoteJid:g,id:c,fromMe:I==="1"}]});else if(r?.contactAction){let f=yne(r.contactAction,g,e);mne(t,f)}else if(r?.pushNameSetting){let f=r?.pushNameSetting?.name;f&&o?.name!==f&&t.emit("creds.update",{me:{...o,name:f}})}else if(r?.pinAction)t.emit("chats.update",[{id:g,pinned:r.pinAction?.pinned?Yr(r.timestamp):null,conditional:d(g,void 0)}]);else if(r?.unarchiveChatsSetting){let f=!!r.unarchiveChatsSetting.unarchiveChats;t.emit("creds.update",{accountSettings:{unarchiveChats:f}}),e?.info(`archive setting updated => '${r.unarchiveChatsSetting.unarchiveChats}'`),A&&(A.unarchiveChats=f)}else if(r?.starAction||s==="star"){let f=r?.starAction?.starred;typeof f!="boolean"&&(f=n.index[n.index.length-1]==="1"),t.emit("messages.update",[{key:{remoteJid:g,id:c,fromMe:I==="1"},update:{starred:f}}])}else if(r?.deleteChatAction||s==="deleteChat")a||t.emit("chats.delete",[g]);else if(r?.labelEditAction){let{name:f,color:Q,deleted:y,predefinedId:m}=r.labelEditAction;t.emit("labels.edit",{id:g,name:f,color:Q,deleted:y,predefinedId:m?String(m):void 0})}else r?.labelAssociationAction?t.emit("labels.association",{type:r.labelAssociationAction.labeled?"add":"remove",association:s===Zs.Chat?{type:Zs.Chat,chatId:n.index[2],labelId:n.index[1]}:{type:Zs.Message,chatId:n.index[2],messageId:n.index[3],labelId:n.index[1]}}):r?.localeSetting?.locale?t.emit("settings.update",{setting:"locale",value:r.localeSetting.locale}):r?.timeFormatAction?t.emit("settings.update",{setting:"timeFormat",value:r.timeFormatAction}):r?.pnForLidChatAction?r.pnForLidChatAction.pnJid&&t.emit("lid-mapping.update",{lid:g,pn:r.pnForLidChatAction.pnJid}):r?.privacySettingRelayAllCalls?t.emit("settings.update",{setting:"privacySettingRelayAllCalls",value:r.privacySettingRelayAllCalls}):r?.statusPrivacy?t.emit("settings.update",{setting:"statusPrivacy",value:r.statusPrivacy}):r?.lockChatAction?t.emit("chats.lock",{id:g,locked:!!r.lockChatAction.locked}):r?.privacySettingDisableLinkPreviewsAction?t.emit("settings.update",{setting:"disableLinkPreviews",value:r.privacySettingDisableLinkPreviewsAction}):r?.notificationActivitySettingAction?.notificationActivitySetting?t.emit("settings.update",{setting:"notificationActivitySetting",value:r.notificationActivitySettingAction.notificationActivitySetting}):r?.lidContactAction?t.emit("contacts.upsert",[{id:g,name:r.lidContactAction.fullName||r.lidContactAction.firstName||r.lidContactAction.username||void 0,username:r.lidContactAction.username||void 0,lid:g,phoneNumber:void 0}]):r?.privacySettingChannelsPersonalisedRecommendationAction?t.emit("settings.update",{setting:"channelsPersonalisedRecommendation",value:r.privacySettingChannelsPersonalisedRecommendationAction}):e?.debug({syncAction:n,id:g},"unprocessable update");function d(f,Q){return a?y=>{let m=y.historySets.chats[f]||y.chatUpserts[f];if(m)return Q?B(m,Q):!0}:void 0}function B(f,Q){let y=Number(Q?.lastMessageTimestamp||Q?.lastSystemMessageTimestamp||0),m=Number(f?.lastMessageRecvTimestamp||0);return y>=m}};var d8e=class{_eventListeners;_maxListeners;_logger;_throwOnEmitError=!1;_throwOnEmptyListeners=!1;_errorEvent="error";constructor(n){this._eventListeners=new Map,this._maxListeners=100,this._logger=n?.logger,n?.throwOnEmitError!==void 0&&(this._throwOnEmitError=n.throwOnEmitError),n?.throwOnEmptyListeners!==void 0&&(this._throwOnEmptyListeners=n.throwOnEmptyListeners)}get logger(){return this._logger}set logger(n){this._logger=n}get throwOnEmitError(){return this._throwOnEmitError}set throwOnEmitError(n){this._throwOnEmitError=n}get throwOnEmptyListeners(){return this._throwOnEmptyListeners}set throwOnEmptyListeners(n){this._throwOnEmptyListeners=n}once(n,t){let o=(...i)=>{this.off(n,o),t(...i)};return this.on(n,o),this}listenerCount(n){if(n===void 0)return this.getAllListeners().length;let t=this._eventListeners.get(n);return t?t.length:0}eventNames(){return[...this._eventListeners.keys()]}rawListeners(n){return n===void 0?this.getAllListeners():this._eventListeners.get(n)??[]}prependListener(n,t){let o=this._eventListeners.get(n)??[];return o.unshift(t),this._eventListeners.set(n,o),this}prependOnceListener(n,t){let o=(...i)=>{this.off(n,o),t(...i)};return this.prependListener(n,o),this}maxListeners(){return this._maxListeners}addListener(n,t){return this.on(n,t),this}on(n,t){this._eventListeners.has(n)||this._eventListeners.set(n,[]);let o=this._eventListeners.get(n);return o&&(o.length>=this._maxListeners&&console.warn(`MaxListenersExceededWarning: Possible event memory leak detected. ${o.length+1} ${n} listeners added. Use setMaxListeners() to increase limit.`),o.push(t)),this}removeListener(n,t){return this.off(n,t),this}off(n,t){let o=this._eventListeners.get(n)??[],i=o.indexOf(t);return i!==-1&&o.splice(i,1),o.length===0&&this._eventListeners.delete(n),this}emit(n,...t){let o=!1,i=this._eventListeners.get(n);if(i&&i.length>0)for(let e of i)e(...t),o=!0;if(n===this._errorEvent){let e=t[0]instanceof Error?t[0]:new Error(`${t[0]}`);if(this._throwOnEmitError&&!o)throw e;if(this.listeners(this._errorEvent).length===0&&this._throwOnEmptyListeners===!0)throw e}return this.sendLog(n,t),o}listeners(n){return this._eventListeners.get(n)??[]}removeAllListeners(n){return n!==void 0?this._eventListeners.delete(n):this._eventListeners.clear(),this}setMaxListeners(n){this._maxListeners=n;for(let t of this._eventListeners.values())t.length>n&&t.splice(n)}getAllListeners(){let n=[];for(let t of this._eventListeners.values())n=[...n,...t];return n}sendLog(n,t){if(!this._logger)return;let o;switch(typeof t=="string"?o=t:Array.isArray(t)&&t.length>0&&t[0]instanceof Error?o=t[0].message:t instanceof Error?o=t.message:Array.isArray(t)&&t.length>0&&typeof t[0]?.message=="string"?o=t[0].message:o=JSON.stringify(t),n){case"error":{this._logger.error?.(o,{event:n,data:t});break}case"warn":{this._logger.warn?.(o,{event:n,data:t});break}case"trace":{this._logger.trace?.(o,{event:n,data:t});break}case"debug":{this._logger.debug?.(o,{event:n,data:t});break}case"fatal":{this._logger.fatal?.(o,{event:n,data:t});break}default:{this._logger.info?.(o,{event:n,data:t});break}}}},QI=class extends d8e{_hooks;_throwOnHookError=!1;_enforceBeforeAfter=!1;_deprecatedHooks;_allowDeprecated=!0;constructor(n){super({logger:n?.logger,throwOnEmitError:n?.throwOnEmitError,throwOnEmptyListeners:n?.throwOnEmptyListeners}),this._hooks=new Map,this._deprecatedHooks=n?.deprecatedHooks?new Map(n.deprecatedHooks):new Map,n?.throwOnHookError!==void 0?this._throwOnHookError=n.throwOnHookError:n?.throwHookErrors!==void 0&&(this._throwOnHookError=n.throwHookErrors),n?.enforceBeforeAfter!==void 0&&(this._enforceBeforeAfter=n.enforceBeforeAfter),n?.allowDeprecated!==void 0&&(this._allowDeprecated=n.allowDeprecated)}get hooks(){return this._hooks}get throwHookErrors(){return this._throwOnHookError}set throwHookErrors(n){this._throwOnHookError=n}get throwOnHookError(){return this._throwOnHookError}set throwOnHookError(n){this._throwOnHookError=n}get enforceBeforeAfter(){return this._enforceBeforeAfter}set enforceBeforeAfter(n){this._enforceBeforeAfter=n}get deprecatedHooks(){return this._deprecatedHooks}set deprecatedHooks(n){this._deprecatedHooks=n}get allowDeprecated(){return this._allowDeprecated}set allowDeprecated(n){this._allowDeprecated=n}validateHookName(n){if(this._enforceBeforeAfter){let t=n.trim().toLocaleLowerCase();if(!t.startsWith("before")&&!t.startsWith("after"))throw new Error(`Hook event "${n}" must start with "before" or "after" when enforceBeforeAfter is enabled`)}}checkDeprecatedHook(n){if(this._deprecatedHooks.has(n)){let t=this._deprecatedHooks.get(n),o=`Hook "${n}" is deprecated${t?`: ${t}`:""}`;return this.emit("warn",{hook:n,message:o}),this._allowDeprecated}return!0}onHook(n,t){this.onHookEntry({event:n,handler:t})}onHookEntry(n){if(this.validateHookName(n.event),!this.checkDeprecatedHook(n.event))return;let t=this._hooks.get(n.event);t?t.push(n.handler):this._hooks.set(n.event,[n.handler])}addHook(n,t){this.onHookEntry({event:n,handler:t})}onHooks(n){for(let t of n)this.onHook(t.event,t.handler)}prependHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);o?o.unshift(t):this._hooks.set(n,[t])}prependOnceHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=async(...i)=>(this.removeHook(n,o),t(...i));this.prependHook(n,o)}onceHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=async(...i)=>(this.removeHook(n,o),t(...i));this.onHook(n,o)}removeHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);if(o){let i=o.indexOf(t);i!==-1&&o.splice(i,1)}}removeHooks(n){for(let t of n)this.removeHook(t.event,t.handler)}async hook(n,...t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);if(o)for(let i of o)try{await i(...t)}catch(e){let a=`${n}: ${e.message}`;if(this.emit("error",new Error(a)),this._throwOnHookError)throw new Error(a)}}hookSync(n,...t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);if(o){for(let i of o)if(i.constructor.name!=="AsyncFunction")try{i(...t)}catch(e){let a=`${n}: ${e.message}`;if(this.emit("error",new Error(a)),this._throwOnHookError)throw new Error(a)}}}async beforeHook(n,...t){await this.hook(`before:${n}`,...t)}async afterHook(n,...t){await this.hook(`after:${n}`,...t)}async callHook(n,...t){await this.hook(n,...t)}getHooks(n){if(this.validateHookName(n),!!this.checkDeprecatedHook(n))return this._hooks.get(n)}clearHooks(){this._hooks.clear()}};var h8e=class{_enabled=!0;_maxSize=4e3;_store=new Map;_keys=[];constructor(n){n?.enabled!==void 0&&(this._enabled=n.enabled),n?.maxSize!==void 0&&(this._maxSize=n.maxSize)}get enabled(){return this._enabled}set enabled(n){this._enabled=n}get maxSize(){return this._maxSize}set maxSize(n){this._maxSize=n}get store(){return this._store}get size(){return this._store.size}get(n){return this._store.get(n)}set(n,t){if(this._enabled){if(this._store.has(n)){this._store.set(n,t);return}if(this._store.size>=this._maxSize){let o=this._keys.shift();o&&this._store.delete(o)}this._keys.push(n),this._store.set(n,t)}}has(n){return this._store.has(n)}clear(){this._store.clear(),this._keys=[]}},E8e=class{get name(){return"crc32"}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let a=n;t=new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}let o=3988292384,i=4294967295;for(let a=0;a>>1^o&-(i&1)}return i=(i^4294967295)>>>0,i.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}},wb=class{_algorithm="SHA-256";constructor(n){n?.algorithm&&(this._algorithm=n?.algorithm)}get name(){return this._algorithm}async toHash(n){let t=await crypto.subtle.digest(this._algorithm,n);return Array.from(new Uint8Array(t)).map(e=>e.toString(16).padStart(2,"0")).join("")}},C8e=class{get name(){return"djb2"}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let e=n;t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let o=5381;for(let e=0;e>>0;return o.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}},u8e=class{get name(){return"fnv1"}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let A=n;t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}let o=2166136261,i=16777619,e=o;for(let A=0;A>>0;return e.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}},B8e=class{_seed;constructor(n=0){this._seed=n>>>0}get name(){return"murmur"}get seed(){return this._seed}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let c=n;t=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}let o=3432918353,i=461845907,e=t.length,a=Math.floor(e/4),A=this._seed;for(let c=0;c>>16,A=this._imul(A,2246822507),A^=A>>>13,A=this._imul(A,3266489909),A^=A>>>16,A=A>>>0,A.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}_imul(n,t){if(Math.imul)return Math.imul(n,t);let o=n>>>16&65535,i=n&65535,e=t>>>16&65535,a=t&65535;return i*a+(o*a+i*e<<16>>>0)|0}_rotl32(n,t){return n<>>32-t}},f8e=class{_providers=new Map;_getFuzzy=!0;constructor(n){n?.providers&&this.loadProviders(n?.providers),n?.getFuzzy!==void 0&&(this._getFuzzy=!!n?.getFuzzy)}loadProviders(n){for(let t of n)this._providers.set(t.name,t)}get providers(){return this._providers}set providers(n){this._providers=n}get names(){return Array.from(this._providers.keys())}get(n,t){let o=t?.fuzzy??this._getFuzzy;n=n.trim();let i=this._providers.get(n);return i===void 0&&o===!0&&(n=n.toLowerCase(),i=this._providers.get(n)),i===void 0&&o===!0&&(n=n.replaceAll("-",""),i=this._providers.get(n)),i}add(n){this._providers.set(n.name,n)}remove(n){return this._providers.delete(n)}},MU=class extends QI{_parse=JSON.parse;_stringify=JSON.stringify;_providers=new f8e;_defaultAlgorithm="SHA-256";_defaultAlgorithmSync="djb2";_cache;constructor(n){super(n),n?.parse&&(this._parse=n.parse),n?.stringify&&(this._stringify=n.stringify),n?.defaultAlgorithm&&(this._defaultAlgorithm=n.defaultAlgorithm),n?.defaultAlgorithmSync&&(this._defaultAlgorithmSync=n.defaultAlgorithmSync),this._cache=new h8e(n?.cache),this.loadProviders(n?.providers,{includeBase:n?.includeBase??!0})}get parse(){return this._parse}set parse(n){this._parse=n}get stringify(){return this._stringify}set stringify(n){this._stringify=n}get providers(){return this._providers}set providers(n){this._providers=n}get names(){return this._providers.names}get defaultAlgorithm(){return this._defaultAlgorithm}set defaultAlgorithm(n){this._defaultAlgorithm=n}get defaultAlgorithmSync(){return this._defaultAlgorithmSync}set defaultAlgorithmSync(n){this._defaultAlgorithmSync=n}get cache(){return this._cache}async toHash(n,t){let o={data:n,algorithm:t?.algorithm??this._defaultAlgorithm,maxLength:t?.maxLength};await this.beforeHook("toHash",o);let i=this._stringify(o.data),e=`${o.algorithm}:${i}`;if(this._cache.enabled){let c=this._cache.get(e);if(c!==void 0){let I=c;t?.maxLength&&I.length>t.maxLength&&(I=I.substring(0,t.maxLength));let d={hash:I,data:o.data,algorithm:o.algorithm};return await this.afterHook("toHash",d),d.hash}}let A=new TextEncoder().encode(i),r=this._providers.get(o.algorithm);r||(this.emit("warn",`Invalid algorithm '${o.algorithm}' not found. Falling back to default algorithm '${this._defaultAlgorithm}'.`),r=new wb({algorithm:this._defaultAlgorithm}));let s=await r.toHash(A);this._cache.enabled&&this._cache.set(e,s),t?.maxLength&&s.length>t?.maxLength&&(s=s.substring(0,t.maxLength));let g={hash:s,data:o.data,algorithm:o.algorithm};return await this.afterHook("toHash",g),g.hash}async toNumber(n,t={}){let{min:o=0,max:i=100,algorithm:e=this._defaultAlgorithm,hashLength:a=16}=t;if(o>i)throw new Error("min cannot be greater than max");let A=await this.toHash(n,{algorithm:e,maxLength:a}),r=Number.parseInt(A,16),s=i-o+1;return o+r%s}toHashSync(n,t){let o={data:n,algorithm:t?.algorithm??this._defaultAlgorithmSync,maxLength:t?.maxLength};this.hookSync("before:toHashSync",o);let i=o.algorithm,e=this._stringify(o.data),a=`${i}:${e}`;if(this._cache.enabled){let I=this._cache.get(a);if(I!==void 0){let d=I;t?.maxLength&&d.length>t.maxLength&&(d=d.substring(0,t.maxLength));let B={hash:d,data:o.data,algorithm:i};return this.hookSync("after:toHashSync",B),B.hash}}let r=new TextEncoder().encode(e),s=this._providers.get(i);if(!s&&(this.emit("warn",`Invalid algorithm '${i}' not found. Falling back to default algorithm '${this._defaultAlgorithmSync}'.`),s=this._providers.get(this._defaultAlgorithmSync),!s))throw new Error(`Hash provider '${this._defaultAlgorithmSync}' (default) not found`);if(!s.toHashSync)throw new Error(`Hash provider '${i}' does not support synchronous hashing. Use toHash() instead or choose a different algorithm (djb2, fnv1, murmur, crc32).`);let g=s.toHashSync(r);this._cache.enabled&&this._cache.set(a,g),t?.maxLength&&g.length>t?.maxLength&&(g=g.substring(0,t.maxLength));let c={hash:g,data:o.data,algorithm:o.algorithm};return this.hookSync("after:toHashSync",c),c.hash}toNumberSync(n,t={}){let{min:o=0,max:i=100,algorithm:e=this._defaultAlgorithmSync,hashLength:a=16}=t;if(o>i)throw new Error("min cannot be greater than max");let A=this.toHashSync(n,{algorithm:e,maxLength:a}),r=Number.parseInt(A,16),s=i-o+1;return o+r%s}loadProviders(n,t={includeBase:!0}){if(n)for(let o of n)this._providers.add(o);t.includeBase&&(this.providers.add(new wb({algorithm:"SHA-256"})),this.providers.add(new wb({algorithm:"SHA-384"})),this.providers.add(new wb({algorithm:"SHA-512"})),this.providers.add(new E8e),this.providers.add(new C8e),this.providers.add(new u8e),this.providers.add(new B8e))}};var NU=n=>{let t;if(n!==void 0){if(typeof n=="number")t=n;else{if(typeof n!="string")return;if(n=n.trim(),Number.isNaN(Number(n))){let o=/^([\d.]+)\s*(ms|s|m|h|hr|d)$/i.exec(n);if(!o)throw new Error(`Unsupported time format: "${n}". Use 'ms', 's', 'm', 'h', 'hr', or 'd'.`);let[,i,e]=o,a=Number.parseFloat(i);switch(e.toLowerCase()){case"ms":t=a;break;case"s":t=a*1e3;break;case"m":t=a*1e3*60;break;case"h":t=a*1e3*60*60;break;case"hr":t=a*1e3*60*60;break;case"d":t=a*1e3*60*60*24;break;default:t=Number(n)}}else t=Number(n)}return t}},np=(n,t)=>{t??=new Date;let o=NU(n);return o===void 0?t.getTime():t.getTime()+o};var Gf=(function(n){return n.SHA256="SHA-256",n.SHA384="SHA-384",n.SHA512="SHA-512",n.DJB2="djb2",n.FNV1="fnv1",n.MURMER="murmer",n.CRC32="crc32",n})({});function _U(n,t={algorithm:"djb2",serialize:JSON.stringify}){let o=t?.algorithm??"djb2",i=(t?.serialize??JSON.stringify)(n);return new MU().toHashSync(i,{algorithm:o})}function Pne(n,t={min:0,max:10,algorithm:"djb2",serialize:JSON.stringify}){let o=t?.min??0,i=t?.max??10,e=t?.algorithm??"djb2",a=t?.serialize??JSON.stringify,A=t?.hashLength??16;if(o>=i)throw new Error(`Invalid range: min (${o}) must be less than max (${i})`);let r=a(n);return new MU().toNumberSync(r,{algorithm:e,min:o,max:i,hashLength:A})}function RU(n,t){let{ttl:o,keyPrefix:i,cache:e,serialize:a}=t;return(...A)=>{let r=Q8e(n,A,{keyPrefix:i,serialize:a});t.createKey&&(r=t.createKey(n,A,t));let s=e.get(r);if(s===void 0)try{s=n(...A),e.set(r,s,o)}catch(g){e.emit("error",g),t.cacheErrors&&e.set(r,g,o)}return s}}function kU(n,t,o){let i=typeof n=="function"?n(o):n,e;try{e=o.cache.get(i)}catch(a){if(o.cache.emit("error",a),o.throwErrors===!0||o.throwErrors==="store")throw a}if(e===void 0)try{try{e=t()}catch(a){throw new Db(a,"function")}try{o.cache.set(i,e,o.ttl)}catch(a){throw new Db(a,"store")}}catch(a){let A=a instanceof Db?a.context:void 0,r=a instanceof Db?a.error:a;if(o.cache.emit("error",r),o.cacheErrors&&A==="function")try{o.cache.set(i,r,o.ttl)}catch(s){o.cache.emit("error",s)}if(o.throwErrors===!0||o.throwErrors===A)throw r}return e}function Q8e(n,t,o){let{keyPrefix:i,serialize:e}=o||{};return i?`${i}::${n.name}::${_U(t,{serialize:e})}`:`${n.name}::${_U(t,{serialize:e})}`}var Db=class{error;context;constructor(n,t){this.error=n,this.context=t}};var yI=class{_counters={hits:0,misses:0,gets:0,sets:0,deletes:0,clears:0,count:0};_vsize=0;_ksize=0;_enabled=!1;_lastUpdated;_lastReset;_subscriptions=[];_trackedKeys=new Map;_trackKeys=!1;_maxTrackedKeys;constructor(n){n?.enabled&&(this._enabled=n.enabled),n?.trackKeys&&(this._trackKeys=n.trackKeys),n?.maxTrackedKeys!==void 0&&(this._maxTrackedKeys=n.maxTrackedKeys),n?.emitter&&n?.eventMap&&this.subscribe(n.emitter,n.eventMap)}get enabled(){return this._enabled}set enabled(n){this._enabled=n}get trackKeys(){return this._trackKeys}set trackKeys(n){this._trackKeys=n}get maxTrackedKeys(){return this._maxTrackedKeys}set maxTrackedKeys(n){this._maxTrackedKeys=n}get trackedKeys(){return this._trackedKeys}get hits(){return this._counters.hits}get misses(){return this._counters.misses}get gets(){return this._counters.gets}get sets(){return this._counters.sets}get deletes(){return this._counters.deletes}get clears(){return this._counters.clears}get vsize(){return this._vsize}get ksize(){return this._ksize}get count(){return this._counters.count}get hitRate(){let n=this._counters.hits+this._counters.misses;return n===0?0:this._counters.hits/n}get missRate(){let n=this._counters.hits+this._counters.misses;return n===0?0:this._counters.misses/n}get lastUpdated(){return this._lastUpdated}get lastReset(){return this._lastReset}increment(n,t=1){this._enabled&&(this._counters[n]+=t,this.touch())}decrement(n,t=1){this._enabled&&(this._counters[n]-=t,this.touch())}incrementHits(n=1){this.increment("hits",n)}incrementMisses(n=1){this.increment("misses",n)}incrementGets(n=1){this.increment("gets",n)}incrementSets(n=1){this.increment("sets",n)}incrementDeletes(n=1){this.increment("deletes",n)}incrementClears(n=1){this.increment("clears",n)}incrementVSize(n){this._enabled&&(this._vsize+=this.roughSizeOfObject(n),this.touch())}decreaseVSize(n){this._enabled&&(this._vsize=Math.max(0,this._vsize-this.roughSizeOfObject(n)),this.touch())}incrementKSize(n){this._enabled&&(this._ksize+=this.roughSizeOfString(n),this.touch())}decreaseKSize(n){this._enabled&&(this._ksize=Math.max(0,this._ksize-this.roughSizeOfString(n)),this.touch())}incrementCount(n=1){this.increment("count",n)}decreaseCount(n=1){this._enabled&&(this._counters.count=Math.max(0,this._counters.count-n),this.touch())}setCount(n){this._enabled&&(this._counters.count=n,this.touch())}roughSizeOfString(n){return n.length*2}roughSizeOfObject(n){let t=[],o=[n],i=0;for(;o.length>0;){let e=o.pop();if(typeof e=="boolean")i+=4;else if(typeof e=="string")i+=e.length*2;else if(typeof e=="number")i+=8;else{if(e==null){i+=4;continue}if(t.includes(e))continue;t.push(e);for(let a in e)i+=a.length*2,o.push(e[a])}}return i}enable(){this._enabled=!0}disable(){this._enabled=!1}clear(){this.reset()}reset(){this._counters={hits:0,misses:0,gets:0,sets:0,deletes:0,clears:0,count:0},this._vsize=0,this._ksize=0,this._trackedKeys.clear(),this._lastReset=Date.now(),this._lastUpdated=void 0}resetStoreValues(){this._vsize=0,this._ksize=0,this._counters.count=0}toJSON(){return{enabled:this._enabled,hits:this._counters.hits,misses:this._counters.misses,gets:this._counters.gets,sets:this._counters.sets,deletes:this._counters.deletes,clears:this._counters.clears,vsize:this._vsize,ksize:this._ksize,count:this._counters.count,hitRate:this.hitRate,missRate:this.missRate,trackedKeys:this._trackedKeys.size,lastUpdated:this._lastUpdated,lastReset:this._lastReset}}snapshot(){return this.toJSON()}recordKey(n,t,o=1){if(!this._enabled||!this._trackKeys)return;let i=this._trackedKeys.get(n);i||(i={hits:0,misses:0,gets:0,sets:0,deletes:0},this._trackedKeys.set(n,i),this.pruneTrackedKeys(n)),i[t]+=o,this.touch()}mostUsedKeys(n=100,t){return this.sortedKeyEntries(t,"desc").slice(0,n)}leastUsedKeys(n=100,t){return this.sortedKeyEntries(t,"asc").slice(0,n)}keyStats(n){let t=this._trackedKeys.get(n);return t?this.toKeyEntry(n,t):void 0}clearKeys(){this._trackedKeys.clear()}totalOf(n){return n.hits+n.misses+n.gets+n.sets+n.deletes}toKeyEntry(n,t){let o=t.hits+t.misses;return{key:n,count:this.totalOf(t),hits:t.hits,misses:t.misses,gets:t.gets,sets:t.sets,deletes:t.deletes,hitRate:o===0?0:t.hits/o}}sortedKeyEntries(n,t){let o=[];for(let[e,a]of this._trackedKeys)o.push(this.toKeyEntry(e,a));let i=t==="asc"?1:-1;return o.sort((e,a)=>{let A=n?e[n]:e.count,r=n?a[n]:a.count;return A!==r?(A-r)*i:e.keythis.totalOf(i[1])-this.totalOf(e[1]));for(let[i]of o){if(this._trackedKeys.size<=t)break;i!==n&&this._trackedKeys.delete(i)}}subscribe(n,t){for(let[o,i]of Object.entries(t)){let e=(...a)=>{this.applyEvent(i,a)};n.on(o,e),this._subscriptions.push({emitter:n,event:o,listener:e})}}unsubscribe(n){let t=[];for(let o of this._subscriptions){if(n&&o.emitter!==n){t.push(o);continue}(o.emitter.off??o.emitter.removeListener)?.call(o.emitter,o.event,o.listener)}this._subscriptions=t}applyEvent(n,t){if(this._enabled){if(typeof n=="function"){n(this,...t);return}if(Array.isArray(n)){for(let o of n)this.increment(o);return}this.increment(n)}}touch(){this._lastUpdated=Date.now()}};var y8e=class{value;prev=void 0;next=void 0;constructor(n){this.value=n}},vU=class{head=void 0;tail=void 0;nodesMap=new Map;addToFront(n){let t=new y8e(n);this.head?(t.next=this.head,this.head.prev=t,this.head=t):this.head=this.tail=t,this.nodesMap.set(n,t)}moveToFront(n){let t=this.nodesMap.get(n);if(!t||this.head===t)return;t.prev&&(t.prev.next=t.next);t.next&&(t.next.prev=t.prev);t===this.tail&&(this.tail=t.prev),t.prev=void 0,t.next=this.head;this.head&&(this.head.prev=t),this.head=t,this.tail??=t}getOldest(){return this.tail?this.tail.value:void 0}removeOldest(){if(!this.tail)return;let n=this.tail.value;return this.tail.prev?(this.tail=this.tail.prev,this.tail.next=void 0):this.head=this.tail=void 0,this.nodesMap.delete(n),n}remove(n){let t=this.nodesMap.get(n);return t?(t.prev?t.prev.next=t.next:(this.head=t.next,this.head&&(this.head.prev=void 0)),t.next?t.next.prev=t.prev:(this.tail=t.prev,this.tail&&(this.tail.next=void 0)),this.nodesMap.delete(n),!0):!1}get size(){return this.nodesMap.size}};var Gne=16777216,PU=class extends QI{_lru=new vU;_storeHashSize=16;_storeHashAlgorithm=Gf.DJB2;_store=Array.from({length:this._storeHashSize},()=>new Map);_ttl;_maxTtl;_useClone=!0;_lruSize=0;_checkInterval=0;_interval=0;_stats=new yI({enabled:!1});constructor(n){super(),n?.ttl&&this.setTtl(n.ttl),n?.maxTtl!==void 0&&this.setMaxTtl(n.maxTtl),n?.useClone!==void 0&&(this._useClone=n.useClone),n?.stats&&(this._stats.enabled=n.stats),n?.storeHashSize&&n.storeHashSize>0&&(this._storeHashSize=n.storeHashSize),n?.lruSize&&(n.lruSize>16777216?this.emit("error",new Error(`LRU size cannot be larger than ${Gne} due to Map limitations.`)):this._lruSize=n.lruSize),n?.checkInterval&&(this._checkInterval=n.checkInterval),n?.storeHashAlgorithm&&(this._storeHashAlgorithm=n.storeHashAlgorithm),this._store=Array.from({length:this._storeHashSize},()=>new Map),this.startIntervalCheck()}get ttl(){return this._ttl}set ttl(n){this.setTtl(n)}get maxTtl(){return this._maxTtl}set maxTtl(n){this.setMaxTtl(n)}get useClone(){return this._useClone}set useClone(n){this._useClone=n}get lruSize(){return this._lruSize}set lruSize(n){if(n>16777216){this.emit("error",new Error(`LRU size cannot be larger than ${Gne} due to Map limitations.`));return}if(this._lruSize=n,this._lruSize===0){this._lru=new vU;return}this.lruResize()}get checkInterval(){return this._checkInterval}set checkInterval(n){this._checkInterval=n}get size(){let n=0;for(let t of this._store)n+=t.size;return n}get stats(){return this._stats}get storeHashSize(){return this._storeHashSize}set storeHashSize(n){n!==this._storeHashSize&&(this._storeHashSize=n,this._store=Array.from({length:this._storeHashSize},()=>new Map),this._stats.enabled&&this._stats.resetStoreValues())}get storeHashAlgorithm(){return this._storeHashAlgorithm}set storeHashAlgorithm(n){this._storeHashAlgorithm=n}get keys(){let n=[];for(let t of this._store)for(let o of t.keys()){let i=t.get(o);if(i&&this.hasExpired(i)){this.recordExpiration(i),t.delete(o),this.lruRemove(o);continue}n.push(o)}return n.values()}get items(){let n=[];for(let t of this._store)for(let o of t.values()){if(this.hasExpired(o)){this.recordExpiration(o),t.delete(o.key),this.lruRemove(o.key);continue}n.push(o)}return n.values()}get store(){return this._store}get(n){this.hookSync("BEFORE_GET",n);let t=this.getStore(n),o=t.get(n);if(!o){this.recordRead(!1),this.hookSync("AFTER_GET",{key:n,result:void 0});return}if(o.expires&&Date.now()>o.expires){this.recordExpiration(o),t.delete(n),this.lruRemove(n),this.recordRead(!1),this.hookSync("AFTER_GET",{key:n,result:void 0});return}this.lruMoveToFront(n);let i;return this._useClone?i=this.clone(o.value):i=o.value,this.recordRead(!0),this.hookSync("AFTER_GET",{key:n,result:i}),i}getMany(n){this.hookSync("BEFORE_GET_MANY",n);let t=[];for(let o of n)t.push(this.get(o));return this.hookSync("AFTER_GET_MANY",{keys:n,result:t}),t}getRaw(n){let t=this.getStore(n),o=t.get(n);if(!o){this.recordRead(!1);return}if(o.expires&&Date.now()>o.expires){this.recordExpiration(o),t.delete(n),this.lruRemove(n),this.recordRead(!1);return}return this.lruMoveToFront(n),this.recordRead(!0),o}getManyRaw(n){let t=[];for(let o of n)t.push(this.getRaw(o));return t}set(n,t,o){let i={key:n,value:t,ttl:o};this.hookSync("BEFORE_SET",i);let e=this.getStore(i.key),a,A=i.ttl;if(A!==void 0||this._ttl!==void 0)if(typeof A=="object"){if(A.expire&&(a=typeof A.expire=="number"?A.expire:A.expire.getTime()),A.ttl){let s=np(A.ttl);s!==void 0&&(a=s)}}else{let s=np(A??this._ttl);s!==void 0&&(a=s)}if(this._maxTtl!==void 0){let s=np(this._maxTtl);(a===void 0||a>s)&&(a=s)}if(this._lruSize>0){if(e.has(i.key))this.lruMoveToFront(i.key);else if(this.lruAddToFront(i.key),this._lru.size>this._lruSize){let s=this._lru.getOldest();s&&(this._lru.removeOldest(),this.delete(s))}}if(this._stats.enabled){let s=e.get(i.key);s?this._stats.decreaseVSize(s.value):(this._stats.incrementKSize(i.key),this._stats.incrementCount()),this._stats.incrementVSize(i.value),this._stats.incrementSets()}let r={key:i.key,value:i.value,expires:a};e.set(i.key,r),this.hookSync("AFTER_SET",i)}setMany(n){this.hookSync("BEFORE_SET_MANY",n);for(let t of n)this.set(t.key,t.value,t.ttl);this.hookSync("AFTER_SET_MANY",n)}has(n){return!!this.get(n)}hasMany(n){let t=[];for(let o of n){let i=this.get(o);t.push(!!i)}return t}take(n){let t=this.get(n);if(t)return this.delete(n),t}takeMany(n){let t=[];for(let o of n)t.push(this.take(o));return t}delete(n){this.hookSync("BEFORE_DELETE",n);let t=this.getStore(n);if(this._stats.enabled){let o=t.get(n);o&&(this._stats.decreaseKSize(n),this._stats.decreaseVSize(o.value),this._stats.decreaseCount(),this._stats.incrementDeletes())}t.delete(n),this.lruRemove(n),this.hookSync("AFTER_DELETE",n)}deleteMany(n){this.hookSync("BEFORE_DELETE_MANY",n);for(let t of n)this.delete(t);this.hookSync("AFTER_DELETE_MANY",n)}clear(){this.hookSync("BEFORE_CLEAR"),this._store=Array.from({length:this._storeHashSize},()=>new Map),this._lru=new vU,this._stats.enabled&&(this._stats.resetStoreValues(),this._stats.incrementClears()),this.hookSync("AFTER_CLEAR")}getStore(n){let t=this.getKeyStoreHash(n);return this._store[t]||=new Map,this._store[t]}getKeyStoreHash(n){return this._store.length===1?0:typeof this._storeHashAlgorithm=="function"?this._storeHashAlgorithm(n,this._storeHashSize):Pne(n,{min:0,max:this._storeHashSize-1,algorithm:this._storeHashAlgorithm})}clone(n){return this.isPrimitive(n)?n:structuredClone(n)}lruAddToFront(n){this._lruSize!==0&&this._lru.addToFront(n)}lruMoveToFront(n){this._lruSize!==0&&this._lru.moveToFront(n)}lruRemove(n){this._lruSize!==0&&this._lru.remove(n)}lruResize(){for(;this._lru.size>this._lruSize;){let n=this._lru.getOldest();n&&(this._lru.removeOldest(),this.delete(n))}}checkExpiration(){for(let n of this._store)for(let t of n.values())t.expires&&Date.now()>t.expires&&(this.recordExpiration(t),n.delete(t.key),this.lruRemove(t.key))}startIntervalCheck(){if(this._checkInterval>0){this._interval&&clearInterval(this._interval),this._interval=setInterval(()=>{this.checkExpiration()},this._checkInterval).unref()}}stopIntervalCheck(){this._interval&&clearInterval(this._interval),this._interval=0,this._checkInterval=0}wrap(n,t){return RU(n,{ttl:t?.ttl??this._ttl,keyPrefix:t?.keyPrefix,createKey:t?.createKey,cache:this})}getOrSet(n,t,o){return kU(n,t,{cache:this,ttl:o?.ttl??this._ttl,cacheErrors:o?.cacheErrors,throwErrors:o?.throwErrors})}recordRead(n){this._stats.enabled&&(n?this._stats.incrementHits():this._stats.incrementMisses(),this._stats.incrementGets())}recordExpiration(n){this._stats.enabled&&(this._stats.decreaseKSize(n.key),this._stats.decreaseVSize(n.value),this._stats.decreaseCount())}isPrimitive(n){return n==null||typeof n=="string"||typeof n=="number"||typeof n=="boolean"}setTtl(n){typeof n=="string"||n===void 0?this._ttl=n:n>0?this._ttl=n:this._ttl=void 0}setMaxTtl(n){typeof n=="string"||n===void 0?this._maxTtl=n:n>0?this._maxTtl=n:this._maxTtl=void 0}hasExpired(n){return!!(n.expires&&Date.now()>n.expires)}};var M8e=class extends QI{options={stdTTL:0,checkperiod:600,useClones:!0,deleteOnExpire:!0,maxKeys:-1};store=new Map;_stats=new yI({enabled:!0});_cacheable=new PU;intervalId=0;constructor(n){super(),n&&(this.options={...this.options,...n}),this.startInterval()}set(n,t,o=0){if(typeof n!="string"&&typeof n!="number")throw this.createError("The key argument has to be of type `string` or `number`. Found: `__key`",n);if(o&&typeof o!="number"&&typeof o!="string")throw this.createError("The ttl argument has to be a number or a string for shorthand ttl.",this.formatKey(n));let i=this.formatKey(n),e=0;this.options.stdTTL&&(e=this.getExpirationTimestamp(this.options.stdTTL)),o&&(e=this.getExpirationTimestamp(o));let a=0;if(e&&e>0&&(a=e),this.options.maxKeys){let{maxKeys:A}=this.options;if(A>-1&&this.store.size>=A)throw this.createError("Cache max keys amount exceeded",this.formatKey(n))}return this.store.set(i,{key:i,value:t,ttl:a}),this.emit("set",i,t,e),this._stats.incrementKSize(i),this._stats.incrementVSize(t),this._stats.setCount(this.store.size),!0}mset(n){if(!Array.isArray(n))throw this.createError("The keys argument has to be an array.");for(let t of n)this.set(t.key,t.value,t.ttl);return!0}get(n){let t=this.store.get(this.formatKey(n));if(t){if(t.ttl>0){if(t.ttl0){let n=this.options.checkperiod*1e3;this.intervalId=setInterval(()=>{this.checkData()},n).unref();return}this.intervalId=0}stopInterval(){this.intervalId!==0&&(clearInterval(this.intervalId),this.intervalId=0)}formatKey(n){return n.toString()}getExpirationTimestamp(n){if(typeof n=="string")return np(n);let t=Date.now(),o=n*1e3;return t+o}checkData(){for(let[n,t]of this.store.entries())t.ttl>0&&t.ttl{let a={resolve:i,reject:e,weight:t,priority:o},A=Lne(this._queue,r=>o<=r.priority);A===-1&&t<=this._value?this._dispatchItem(a):this._queue.splice(A+1,0,a)})}runExclusive(t){return T8e(this,arguments,void 0,function*(o,i=1,e=0){let[a,A]=yield this.acquire(i,e);try{return yield o(a)}finally{A()}})}waitForUnlock(t=1,o=0){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return this._couldLockImmediately(t,o)?Promise.resolve():new Promise(i=>{this._weightedWaiters[t-1]||(this._weightedWaiters[t-1]=[]),N8e(this._weightedWaiters[t-1],{resolve:i,priority:o})})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(t){this._value=t,this._dispatchQueue()}release(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);this._value+=t,this._dispatchQueue()}cancel(){this._queue.forEach(t=>t.reject(this._cancelError)),this._queue=[]}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters()}_dispatchItem(t){let o=this._value;this._value-=t.weight,t.resolve([o,this._newReleaser(t.weight)])}_newReleaser(t){let o=!1;return()=>{o||(o=!0,this.release(t))}}_drainUnlockWaiters(){if(this._queue.length===0)for(let t=this._value;t>0;t--){let o=this._weightedWaiters[t-1];o&&(o.forEach(i=>i.resolve()),this._weightedWaiters[t-1]=[])}else{let t=this._queue[0].priority;for(let o=this._value;o>0;o--){let i=this._weightedWaiters[o-1];if(!i)continue;let e=i.findIndex(a=>a.priority<=t);(e===-1?i:i.splice(0,e)).forEach((a=>a.resolve()))}}}_couldLockImmediately(t,o){return(this._queue.length===0||this._queue[0].priorityt.priority<=i.priority);n.splice(o+1,0,t)}function Lne(n,t){for(let o=n.length-1;o>=0;o--)if(t(n[o]))return o;return-1}var R8e=function(n,t,o,i){function e(a){return a instanceof o?a:new o(function(A){A(a)})}return new(o||(o=Promise))(function(a,A){function r(c){try{g(i.next(c))}catch(I){A(I)}}function s(c){try{g(i.throw(c))}catch(I){A(I)}}function g(c){c.done?a(c.value):e(c.value).then(r,s)}g((i=i.apply(n,t||[])).next())})},ec=class{constructor(t){this._semaphore=new GU(1,t)}acquire(){return R8e(this,arguments,void 0,function*(t=0){let[,o]=yield this._semaphore.acquire(1,t);return o})}runExclusive(t,o=0){return this._semaphore.runExclusive(()=>t(),1,o)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(t=0){return this._semaphore.waitForUnlock(1,t)}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}};import{randomBytes as F8e}from"crypto";var LU=qe(Hne(),1);var UU=class n extends Error{name="TimeoutError";constructor(t,o){super(t,o),Error.captureStackTrace?.(this,n)}},Kne=n=>n.reason??new DOMException("This operation was aborted.","AbortError");function HU(n,t){let{milliseconds:o,fallback:i,message:e,customTimers:a={setTimeout,clearTimeout},signal:A}=t,r,s,c=new Promise((I,d)=>{if(typeof o!="number"||Math.sign(o)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${o}\``);if(A?.aborted){d(Kne(A));return}if(A&&(s=()=>{d(Kne(A))},A.addEventListener("abort",s,{once:!0})),n.then(I,d),o===Number.POSITIVE_INFINITY)return;let B=new UU;r=a.setTimeout.call(void 0,()=>{if(i){try{I(i())}catch(f){d(f)}return}typeof n.cancel=="function"&&n.cancel(),e===!1?I():e instanceof Error?d(e):(B.message=e??`Promise timed out after ${o} milliseconds`,d(B))},o)}).finally(()=>{c.clear(),s&&A&&A.removeEventListener("abort",s)});return c.clear=()=>{a.clearTimeout.call(void 0,r),r=void 0},c}function KU(n,t,o){let i=0,e=n.length;for(;e>0;){let a=Math.trunc(e/2),A=i+a;o(n[A],t)<=0?(i=++A,e-=a+1):e=a}return i}var P8e=100,pE=class{#e=[];#A=0;enqueue(t,o){let{priority:i=0,id:e}=o??{},{size:a}=this,A={priority:i,id:e,run:t};if(a===0){this.#e.length=0,this.#A=0,this.#e.push(A);return}if(this.#e.at(-1).priority>=i){this.#e.push(A);return}this.#t();let r=KU(this.#e,A,(s,g)=>g.priority-s.priority);this.#e.splice(r,0,A)}setPriority(t,o){let i=this.#e.findIndex((a,A)=>A>=this.#A&&a.id===t);if(i===-1)throw new ReferenceError(`No promise function with the id "${t}" exists in the queue.`);let[e]=this.#e.splice(i,1);this.enqueue(e.run,{priority:o,id:t})}remove(t){let o=this.#e.findIndex((i,e)=>eP8e&&this.#A>this.#e.length/2&&this.#t(),t?.run}filter(t){let o=[];for(let i=this.#A;i=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${t.intervalCap?.toString()??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${t.interval?.toString()??""}\` (${typeof t.interval})`);if(t.strict&&t.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(t.strict&&t.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=t.carryoverIntervalCount??t.carryoverConcurrencyCount??!1,this.#A=t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0,this.#r=t.intervalCap,this.#i=t.interval,this.#p=t.strict,this.#I=new t.queueClass,this.#d=t.queueClass,this.concurrency=t.concurrency,t.timeout!==void 0&&!(Number.isFinite(t.timeout)&&t.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${t.timeout}\` (${typeof t.timeout})`);this.timeout=t.timeout,this.#u=t.autoStart===!1,this.#L()}#S(t){for(;this.#g=this.#i)this.#g++;else break}(this.#g>100&&this.#g>this.#c.length/2||this.#g===this.#c.length)&&(this.#c=this.#c.slice(this.#g),this.#g=0)}#y(t){this.#p?this.#c.push(t):this.#t++}#m(){this.#p?this.#c.length>this.#g&&this.#c.pop():this.#t>0&&this.#t--}#D(){return this.#c.length-this.#g}get#E(){return this.#A?!0:this.#p?this.#D()=this.#r){let i=this.#c[this.#g],e=this.#i-(t-i);return this.#R(e),!0}return!1}if(this.#n===void 0){let o=this.#a-t;if(o<0)this.#t=this.#e?this.#h:0;else return this.#R(o),!0}return!1}#R(t){this.#s===void 0&&(this.#s=setTimeout(()=>{this.#O()},t))}#_(){this.#n&&(clearInterval(this.#n),this.#n=void 0)}#G(){this.#s&&(clearTimeout(this.#s),this.#s=void 0)}#k(){if(this.#I.size===0){if(this.#_(),this.emit("empty"),this.#h===0){if(this.#G(),this.#p&&this.#g>0){let o=Date.now();this.#S(o)}this.emit("idle")}return!1}let t=!1;if(!this.#u){let o=Date.now(),i=!this.#w(o);if(this.#E&&this.#N){let e=this.#I.dequeue();this.#A||(this.#y(o),this.#v()),i&&this.#F(),this.emit("active"),e(),t=!0}}return t}#F(){this.#A||this.#n!==void 0||this.#p||(this.#n=setInterval(()=>{this.#P()},this.#i),this.#a=Date.now()+this.#i)}#P(){this.#p||(this.#n!==void 0&&(this.#t===0&&this.#h===0?this.#_():this.#a=Date.now()+this.#i),this.#t=this.#e?this.#h:0),this.#H(),this.#v()}#H(){for(;this.#k(););}get concurrency(){return this.#C}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);this.#C=t,this.#H()}setPriority(t,o){if(typeof o!="number"||!Number.isFinite(o))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${o}\` (${typeof o})`);this.#I.setPriority(t,o)}async add(t,o={}){if(o={timeout:this.timeout,...o,id:o.id??(this.#B++).toString()},o.timeout!==void 0&&!(Number.isFinite(o.timeout)&&o.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${o.timeout}\` (${typeof o.timeout})`);return new Promise((i,e)=>{let a=Symbol(`task-${o.id}`),A=()=>{},r=async()=>{A(),this.#h++,this.#f.set(a,{id:o.id,priority:o.priority??0,startTime:Date.now(),timeout:o.timeout});let g;try{try{o.signal?.throwIfAborted()}catch(d){throw this.#K(),this.#f.delete(a),d}let c=t({signal:o.signal});if(o.timeout!==void 0&&(c=HU(Promise.resolve(c),{milliseconds:o.timeout,message:`Task timed out after ${o.timeout}ms (queue has ${this.#h} running, ${this.#I.size} waiting)`})),o.signal){let{signal:d}=o;c=Promise.race([c,new Promise((B,f)=>{g=()=>{f(d.reason)},d.addEventListener("abort",g,{once:!0})})])}let I=await c;i(I),this.emit("completed",I)}catch(c){e(c),this.emit("error",c)}finally{g&&o.signal?.removeEventListener("abort",g),this.#f.delete(a),queueMicrotask(()=>{this.#T()})}};this.#I.enqueue(r,o);let s=()=>{if(this.#I instanceof pE){this.#I.remove(r);return}this.#I.remove?.(o.id)};if(o.signal){let{signal:g}=o,c=()=>{A(),s(),e(g.reason),this.#k(),this.emit("next")};if(A=()=>{g.removeEventListener("abort",c),this.#Q.delete(A)},g.aborted){c();return}g.addEventListener("abort",c,{once:!0}),this.#Q.add(A)}this.emit("add"),this.#k()})}async addAll(t,o){return Promise.all(t.map(async i=>this.add(i,o)))}start(){return this.#u?(this.#u=!1,this.#H(),this):this}pause(){this.#u=!0}clear(){for(let t of this.#Q)t();this.#I=new this.#d,this.#_(),this.#q(),this.emit("empty"),this.#h===0&&(this.#G(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#I.size!==0&&await this.#U("empty")}async onSizeLessThan(t){this.#I.sizethis.#I.size{let i=e=>{this.off("error",i),o(e)};this.on("error",i)})}async#U(t,o){let i=Array.isArray(t)?t:[t];return new Promise(e=>{let a=()=>{if(!(o&&!o())){for(let A of i)this.off(A,a);e()}};for(let A of i)this.on(A,a)})}get size(){return this.#I.size}sizeBy(t){return this.#I.filter(t).length}get pending(){return this.#h}get isPaused(){return this.#u}#L(){this.#A||(this.on("add",()=>{this.#I.size>0&&this.#v()}),this.on("next",()=>{this.#v()}))}#v(){this.#A||this.#o||(this.#o=!0,queueMicrotask(()=>{this.#o=!1,this.#q()}))}#K(){this.#A||(this.#m(),this.#v())}#q(){let t=this.#l;if(this.#A||this.#I.size===0){t&&(this.#l=!1,this.emit("rateLimitCleared"));return}let o;if(this.#p){let e=Date.now();this.#S(e),o=this.#D()}else o=this.#t;let i=o>=this.#r;i!==t&&(this.#l=i,this.emit(i?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#l}get isSaturated(){return this.#h===this.#C&&this.#I.size>0||this.isRateLimited&&this.#I.size>0}get runningTasks(){return[...this.#f.values()].map(t=>({...t,timeoutRemaining:t.timeout?Math.max(0,t.startTime+t.timeout-Date.now()):void 0}))}};var bb=class{constructor(t,o){this.store=t,this.logger=o,this.queues=new Map}getQueue(t){return this.queues.has(t)||this.queues.set(t,new sp({concurrency:1})),this.queues.get(t)}async processOperations(t,o,i,e,a){let A=t[o];if(A)return this.getQueue(o).add(async()=>{i[o]=i[o]||{},e[o]=e[o]||{};let r=[],s={};for(let g in A)A[g]===null?r.push(g):s[g]=A[g];Object.keys(s).length>0&&(Object.assign(i[o],s),Object.assign(e[o],s)),r.length>0&&await this.processDeletions(o,r,i,e,a)})}async processDeletions(t,o,i,e,a){if(a)for(let A of o)i[t]?.[A]?(i[t][A]=null,e[t][A]=null):this.logger.warn(`Skipping deletion of non-existent ${t} in transaction: ${A}`);else{let A=await this.store.get(t,o);for(let r of o)A[r]?(i[t][r]=null,e[t][r]=null):this.logger.warn(`Skipping deletion of non-existent ${t}: ${r}`)}}async validateDeletions(t,o){let i=t[o];if(i)return this.getQueue(o).add(async()=>{let e=Object.keys(i).filter(A=>i[A]===null);if(e.length===0)return;let a=await this.store.get(o,e);for(let A of e)a[A]||(this.logger.warn(`Skipping deletion of non-existent ${o}: ${A}`),delete t[o][A])})}};var Yne=(n,t,{maxCommitRetries:o,delayBetweenTriesMs:i})=>{let e=new G8e,a=new Map,A=new Map,r=new Map,s=new bb(n,t);function g(Q){return a.has(Q)||a.set(Q,new sp({concurrency:1})),a.get(Q)}function c(Q){return A.has(Q)||(A.set(Q,new ec),r.set(Q,0)),A.get(Q)}function I(Q){let y=r.get(Q)??0;r.set(Q,y+1)}function d(Q){let y=(r.get(Q)??1)-1;if(r.set(Q,y),y<=0){let m=A.get(Q);m&&!m.isLocked()&&(A.delete(Q),r.delete(Q))}}function B(){return!!e.getStore()}async function f(Q){if(Object.keys(Q).length===0){t.trace("no mutations in transaction");return}t.trace("committing transaction");for(let y=0;y{let m=e.getStore();if(!m)return n.get(Q,y);let _=m.cache[Q]||{},T=y.filter(K=>!(K in _));if(T.length>0){m.dbQueries++,t.trace({type:Q,count:T.length},"fetching missing keys in transaction");let K=await c(Q).runExclusive(()=>n.get(Q,T));m.cache[Q]=m.cache[Q]||{},Object.assign(m.cache[Q],K)}let R={};for(let K of y){let L=m.cache[Q]?.[K];L!=null&&(R[K]=L)}return R},set:async Q=>{let y=e.getStore();if(!y){let m=Object.keys(Q);for(let _ of m){let T=_;T==="pre-key"&&await s.validateDeletions(Q,T)}await Promise.all(m.map(_=>g(_).add(async()=>{let T={[_]:Q[_]};await n.set(T)})));return}t.trace({types:Object.keys(Q)},"caching in transaction");for(let m in Q){let _=m;y.cache[_]=y.cache[_]||{},y.mutations[_]=y.mutations[_]||{},_==="pre-key"?await s.processOperations(Q,_,y.cache,y.mutations,!0):(Object.assign(y.cache[_],Q[_]),Object.assign(y.mutations[_],Q[_]))}},isInTransaction:B,transaction:async(Q,y)=>{if(e.getStore())return t.trace("reusing existing transaction context"),Q();let _=c(y);I(y);try{return await _.runExclusive(async()=>{let T={cache:{},mutations:{},dbQueries:0};t.trace("entering transaction");try{let R=await e.run(T,Q);return await f(T.mutations),t.trace({dbQueries:T.dbQueries},"transaction completed"),R}catch(R){throw t.error({error:R},"transaction failed, rolling back"),R}})}finally{d(y)}}}},jne=n=>{let t=n.me?.id;if(!t)throw new xne.Boom("Cannot proceed: socket is not authenticated yet (creds.me.id is missing)",{statusCode:401});return t},Jne=()=>{let n=Sr.generateKeyPair();return{noiseKey:Sr.generateKeyPair(),pairingEphemeralKeyPair:Sr.generateKeyPair(),signedIdentityKey:n,signedPreKey:dD(n,1),registrationId:j7(),advSecretKey:F8e(32).toString("base64"),processedHistoryMessages:[],nextPreKeyId:1,firstUnuploadedPreKeyId:1,accountSyncCounter:0,accountSettings:{unarchiveChats:!1},registered:!1,pairingCode:void 0,lastPropHash:void 0,routingInfo:void 0,additionalData:void 0}};import{mkdir as L8e,readFile as U8e,stat as H8e,unlink as K8e,writeFile as x8e}from"fs/promises";import{join as xU}from"path";var qne=new Map,YU=n=>{let t=qne.get(n);return t||(t=new ec,qne.set(n,t)),t},zne=async n=>{let t=async(r,s)=>{let g=xU(n,a(s));return YU(g).acquire().then(async I=>{try{await x8e(g,JSON.stringify(r,RB.replacer))}finally{I()}})},o=async r=>{try{let s=xU(n,a(r));return await YU(s).acquire().then(async c=>{try{let I=await U8e(s,{encoding:"utf-8"});return JSON.parse(I,RB.reviver)}finally{c()}})}catch{return null}},i=async r=>{try{let s=xU(n,a(r));return YU(s).acquire().then(async c=>{try{await K8e(s)}catch{}finally{c()}})}catch{}},e=await H8e(n).catch(()=>{});if(e){if(!e.isDirectory())throw new Error(`found something that is not a directory at ${n}, either delete it or specify a different location`)}else await L8e(n,{recursive:!0});let a=r=>r?.replace(/\//g,"__")?.replace(/:/g,"-"),A=await o("creds.json")||Jne();return{state:{creds:A,keys:{get:async(r,s)=>{let g={};return await Promise.all(s.map(async c=>{let I=await o(`${r}-${c}.json`);r==="app-state-sync-key"&&I&&(I=oe.Message.AppStateSyncKeyData.fromObject(I)),g[c]=I})),g},set:async r=>{let s=[];for(let g in r)for(let c in r[g]){let I=r[g][c],d=`${g}-${c}.json`;s.push(I?t(I,d):i(d))}await Promise.all(s)}}},saveCreds:async()=>t(A,"creds.json")}};var Y8e=192,j8e=async(n,{thumbnailWidth:t,fetchOpts:o})=>{let i=await Bb(n,o);return await gU(i,t)},Vne=async(n,t={thumbnailWidth:Y8e,fetchOpts:{timeout:3e3}})=>{try{let o=0,i=5,{getLinkPreview:e}=await import("link-preview-js"),a=n;!n.startsWith("https://")&&!n.startsWith("http://")&&(a="https://"+a);let A=await e(a,{...t.fetchOpts,followRedirects:"follow",handleRedirects:(r,s)=>{let g=new URL(r),c=new URL(s);return o>=i?!1:c.hostname===g.hostname||c.hostname==="www."+g.hostname||"www."+c.hostname===g.hostname?(o+=1,!0):!1},headers:t.fetchOpts?.headers});if(A&&"title"in A&&A.title){let[r]=A.images,s={"canonical-url":A.url,"matched-text":n,title:A.title,description:A.description,originalThumbnailUrl:r};if(t.uploadImage){let{imageMessage:g}=await _f({image:{url:r}},{upload:t.uploadImage,mediaTypeOverride:"thumbnail-link",options:t.fetchOpts});s.jpegThumbnail=g?.jpegThumbnail?Buffer.from(g.jpegThumbnail):void 0,s.highQualityThumbnail=g||void 0}else try{s.jpegThumbnail=r?(await j8e(r,t)).buffer:void 0}catch(g){t.logger?.debug({err:g.stack,url:a},"error in generating thumbnail")}return s}}catch(o){if(!o.message.includes("receive a valid"))throw o}};import Aze from"events";var JU=qe(Kr(),1);var J8e=/^1313555\d{4}$|^131655500\d{2}$/;function q8e(n){if(!n)return!1;let t=n.split("@")[0]??"";return t==="0"||J8e.test(t)||ph(n)?!1:!!(_t(n)||qA(n)||mr(n)||Ia(n)||n.endsWith("@c.us"))}var Mb=604800,z8e=4,SI="__index";async function _b(n){let o=(await n.get("tctoken",[SI]))[SI];if(!o?.token?.length)return[];try{let i=JSON.parse(Buffer.from(o.token).toString());return Array.isArray(i)?i.filter(e=>typeof e=="string"&&e.length>0&&e!==SI):[]}catch{return[]}}async function dE(n,t){let o=await _b(n),i=new Set(o);for(let e of t)e&&e!==SI&&i.add(e);return{[SI]:{token:Buffer.from(JSON.stringify([...i]))}}}function gp(n){if(n==null)return!0;let t=typeof n=="string"?parseInt(n):n;if(isNaN(t))return!0;let o=Math.floor(Date.now()/1e3),a=(Math.floor(o/Mb)-(z8e-1))*Mb;return ti}async function Xs(n,t){return qA(n)?n:await t(n)??n}async function Lf(n,t,o,i){return t?qA(n)?n:await o(n)??n:qA(n)&&i?await i(n)??n:n}async function jU({authState:n,jid:t,baseContent:o=[],getLIDForPN:i}){try{let e=await Xs(t,i),A=(await n.keys.get("tctoken",[e]))?.[e],r=A?.token,s=A?.timestamp;if(!r?.length||s===void 0||gp(s)){if(r){let g=A?.senderTimestamp!==void 0?{token:Buffer.alloc(0),senderTimestamp:A.senderTimestamp}:null;await n.keys.set({tctoken:{[e]:g}})}return o.length>0?o:void 0}return o.push({tag:"tctoken",attrs:{t:String(s)},content:r}),o}catch{return o.length>0?o:void 0}}async function hE({result:n,fallbackJid:t,keys:o,getLIDForPN:i,onNewJidStored:e}){let a=le(n,"tokens");if(!a)return;let A=PA(a,"token");for(let r of A){if(r.attrs.type!=="trusted_contact"||!(r.content instanceof Uint8Array))continue;let s=uA(t||r.attrs.jid);if(!q8e(s))continue;let g=await Xs(s,i),I=(await o.get("tctoken",[g]))[g],d=I?.timestamp?Number(I.timestamp):0,B=r.attrs.t?Number(r.attrs.t):0;B&&(d>0&&d>B||(await o.set({tctoken:{[g]:{...I,token:Buffer.from(r.content),timestamp:r.attrs.t}}}),e?.(g)))}}var V8e=new Set([RA.CALL_MISSED_GROUP_VIDEO,RA.CALL_MISSED_GROUP_VOICE,RA.CALL_MISSED_VIDEO,RA.CALL_MISSED_VOICE]),W8e=new Set([RA.GROUP_PARTICIPANT_ADD]);async function Z8e(n,t,o,i){let e=t.lidMapping.getLIDForPN.bind(t.lidMapping),a=[];for(let g of n){let c=g.tcTokenTimestamp?Yr(g.tcTokenTimestamp):0;if(g.tcToken?.length&&c>0){let I=uA(g.id),d=await Xs(I,e);a.push({storageJid:d,token:Buffer.from(g.tcToken),ts:c,senderTs:g.tcTokenSenderTimestamp?Yr(g.tcTokenSenderTimestamp):void 0})}}if(!a.length)return;let A=a.map(g=>g.storageJid),r=await o.get("tctoken",A),s={};for(let g of a){let c=r[g.storageJid],I=c?.timestamp?Number(c.timestamp):0;I>0&&I>=g.ts||(s[g.storageJid]={...c,token:g.token,timestamp:String(g.ts),...g.senderTs!==void 0?{senderTimestamp:g.senderTs}:{}})}if(Object.keys(s).length){i?.debug({count:Object.keys(s).length},"storing tctokens from history sync");try{let g=await dE(o,Object.keys(s));await o.set({tctoken:{...s,...g}})}catch(g){i?.warn({err:g},"failed to store tctokens from history sync")}}}var Zne=(n,t,o)=>{mr(n.key.remoteJid)||Ia(n.key.remoteJid)?n.key.remoteJid=yr(fA(n.key?.remoteJid)?.user,mr(n.key.remoteJid)?"s.whatsapp.net":"lid"):n.key.remoteJid=uA(n.key.remoteJid),mr(n.key.participant)||Ia(n.key.participant)?n.key.participant=yr(fA(n.key.participant)?.user,mr(n.key.participant)?"s.whatsapp.net":"lid"):n.key.participant=uA(n.key.participant);let i=Ra(n.message);i?.reactionMessage&&e(i.reactionMessage.key),i?.pollUpdateMessage&&e(i.pollUpdateMessage.pollCreationMessageKey);function e(a){n.key.fromMe||(a.fromMe=a.fromMe?!1:Rt(a.participant||a.remoteJid,t)||Rt(a.participant||a.remoteJid,o),a.remoteJid=n.key.remoteJid,a.participant=a.participant||n.key.participant)}},qU=n=>{let t=Ra(n.message),o=!!Tf(t);return(!!t||V8e.has(n.messageStubType)||W8e.has(n.messageStubType))&&o&&!t?.protocolMessage&&!t?.reactionMessage&&!t?.pollUpdateMessage},zU=n=>!n.key.fromMe&&!n.messageStubType,X8e=({remoteJid:n,participant:t,fromMe:o})=>{if(!n)throw new JU.Boom("Cannot derive chat id: message key is missing remoteJid",{data:{remoteJid:n,participant:t,fromMe:o}});if(SB(n)&&!Lg(n)&&!o){if(!t)throw new JU.Boom("Cannot derive chat id: broadcast message key is missing participant",{data:{remoteJid:n,fromMe:o}});return t}return n};function $8e({encPayload:n,encIv:t},{eventCreatorJid:o,eventMsgId:i,eventEncKey:e,responderJid:a}){let A=Buffer.concat([I(i),I(o),I(a),I("Event Response"),new Uint8Array([1])]),r=Hn(e,new Uint8Array(32),"sha256"),s=Hn(A,r,"sha256"),g=I(`${i}\0${a}`),c=Gl(n,s,t,g);return oe.Message.EventResponseMessage.decode(c);function I(d){return Buffer.from(d)}}var eze=async(n,{shouldProcessHistoryMsg:t,placeholderResendCache:o,ev:i,creds:e,signalRepository:a,keyStore:A,logger:r,options:s,getMessage:g})=>{let c=e.me.id,{accountSettings:I}=e,d={id:uA(X8e(n.key))},B=qU(n);B&&(d.messages=[{message:n}],d.conversationTimestamp=Yr(n.messageTimestamp),zU(n)&&(d.unreadCount=(d.unreadCount||0)+1));let f=Ra(n.message);(B||f?.reactionMessage?.key?.fromMe)&&I?.unarchiveChats&&(d.archived=!1,d.readOnly=!1);let Q=f?.protocolMessage;if(Q){let y=new Set([oe.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION,oe.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE,oe.Message.ProtocolMessage.Type.LID_MIGRATION_MAPPING_SYNC,oe.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE]);if(Q.type!==null&&Q.type!==void 0&&y.has(Q.type)&&!n.key.fromMe){r?.warn({msgId:n.key.id,type:Q.type,from:n.key.participant||n.key.remoteJid},"dropping spoofed self-only protocolMessage from non-self origin");return}switch(Q.type){case oe.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION:let m=Q.historySyncNotification,_=t,T=!e.processedHistoryMessages?.length;if(r?.info({histNotification:m,process:_,id:n.key.id,isLatest:T},"got history notification"),_){m.syncType!==oe.HistorySync.HistorySyncType.ON_DEMAND&&i.emit("creds.update",{processedHistoryMessages:[...e.processedHistoryMessages||[],{key:n.key,messageTimestamp:n.messageTimestamp}]});let G=await fne(m,s,r);G.lidPnMappings?.length&&(r?.debug({count:G.lidPnMappings.length},"processing LID-PN mappings from history sync"),await a.lidMapping.storeLIDPNMappings(G.lidPnMappings).catch(V=>r?.warn({err:V},"failed to store LID-PN mappings from history sync"))),await Z8e(G.chats,a,A,r),i.emit("messaging-history.set",{...G,isLatest:m.syncType!==oe.HistorySync.HistorySyncType.ON_DEMAND?T:void 0,chunkOrder:m.chunkOrder,peerDataRequestSessionId:m.peerDataRequestSessionId})}break;case oe.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE:let R=Q.appStateSyncKeyShare.keys;if(R?.length){let G="";await A.transaction(async()=>{let V=[];for(let{keyData:F,keyId:N}of R){let k=Buffer.from(N.keyId).toString("base64");V.push(k),await A.set({"app-state-sync-key":{[k]:F}}),G=k}r?.info({newAppStateSyncKeyId:G,newKeys:V},"injecting new app state sync keys")},c),i.emit("creds.update",{myAppStateKeyId:G})}else r?.info({protocolMsg:Q},"recv app state sync with 0 keys");break;case oe.Message.ProtocolMessage.Type.REVOKE:i.emit("messages.update",[{key:{...n.key,id:Q.key.id},update:{message:null,messageStubType:RA.REVOKE,key:n.key}}]);break;case oe.Message.ProtocolMessage.Type.EPHEMERAL_SETTING:Object.assign(d,{ephemeralSettingTimestamp:Yr(n.messageTimestamp),ephemeralExpiration:Q.ephemeralExpiration||null});break;case oe.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE:let K=Q.peerDataOperationRequestResponseMessage;if(K){let G=K.peerDataOperationResult||[];for(let V of G){let F=V?.placeholderMessageResendResponse;if(F?.webMessageInfoBytes)try{let N=oe.WebMessageInfo.decode(F.webMessageInfoBytes),k=N.key?.id,J=k?await o?.get(k):void 0;k&&await o?.del(k);let $;J&&typeof J=="object"?(J.message=N.message,N.messageTimestamp&&(J.messageTimestamp=N.messageTimestamp),$=J):$=N,r?.debug({msgId:k,requestId:K.stanzaId},"received placeholder resend"),i.emit("messages.upsert",{messages:[$],type:"notify",requestId:K.stanzaId})}catch(N){r?.warn({err:N,stanzaId:K.stanzaId},"failed to decode placeholder resend response")}}}break;case oe.Message.ProtocolMessage.Type.MESSAGE_EDIT:i.emit("messages.update",[{key:{...n.key,id:Q.key?.id},update:{message:{editedMessage:{message:Q.editedMessage}},messageTimestamp:Q.timestampMs?Math.floor(Yr(Q.timestampMs)/1e3):n.messageTimestamp}}]);break;case oe.Message.ProtocolMessage.Type.GROUP_MEMBER_LABEL_CHANGE:let L=Q.memberLabel;L?.label&&i.emit("group.member-tag.update",{groupId:d.id,label:L.label,participant:n.key.participant,participantAlt:n.key.participantAlt,messageTimestamp:Number(n.messageTimestamp)});break;case oe.Message.ProtocolMessage.Type.LID_MIGRATION_MAPPING_SYNC:let U=Q.lidMigrationMappingSyncMessage?.encodedMappingPayload,{pnToLidMappings:z,chatDbMigrationTimestamp:q}=oe.LIDMigrationMappingSyncPayload.decode(U);r?.debug({pnToLidMappings:z,chatDbMigrationTimestamp:q},"got lid mappings and chat db migration timestamp");let x=[];for(let{pn:G,latestLid:V,assignedLid:F}of z){let N=V||F;x.push({lid:`${N}@lid`,pn:`${G}@s.whatsapp.net`})}if(await a.lidMapping.storeLIDPNMappings(x),x.length)for(let{pn:G,lid:V}of x)await a.migrateSession(G,V)}}else if(f?.reactionMessage){let y={...f.reactionMessage,key:n.key};i.emit("messages.reaction",[{reaction:y,key:f.reactionMessage?.key}])}else if(f?.encEventResponseMessage){let y=f.encEventResponseMessage,m=y.eventCreationMessageKey,_=await g(m);if(_)try{let T=uA(c),R=m.participant||m.remoteJid,K=qA(R)?await a.lidMapping.getPNForLID(R):R,L=Bh({remoteJid:uA(K),fromMe:T===K},T),U=Bh(n.key,T),z=_?.messageContextInfo?.messageSecret;if(!z)r?.warn({creationMsgKey:m},"event response: missing messageSecret for decryption");else{let q=$8e(y,{eventEncKey:z,eventCreatorJid:L,eventMsgId:m.id,responderJid:U}),x={eventResponseMessageKey:n.key,senderTimestampMs:q.timestampMs,response:q};i.emit("messages.update",[{key:m,update:{eventResponses:[x]}}])}}catch(T){r?.warn({err:T,creationMsgKey:m},"failed to decrypt event response")}else r?.warn({creationMsgKey:m},"event creation message not found, cannot decrypt response")}else if(n.messageStubType){let y=n.key?.remoteJid,m,_=L=>i.emit("group-participants.update",{id:y,author:n.key.participant,authorPn:n.key.participantAlt,authorUsername:n.key.participantUsername,participants:m,action:L}),T=L=>{i.emit("groups.update",[{id:y,...L,author:n.key.participant??void 0,authorPn:n.key.participantAlt,authorUsername:n.key.participantUsername}])},R=(L,U,z)=>{i.emit("group.join-request",{id:y,author:n.key.participant,authorPn:n.key.participantAlt,authorUsername:n.key.participantUsername,participant:L.lid,participantPn:L.pn,action:U,method:z})},K=()=>m.find(L=>Rt(c,L.phoneNumber));switch(n.messageStubType){case RA.GROUP_PARTICIPANT_CHANGE_NUMBER:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("modify");break;case RA.GROUP_PARTICIPANT_LEAVE:case RA.GROUP_PARTICIPANT_REMOVE:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("remove"),K()&&(d.readOnly=!0);break;case RA.GROUP_PARTICIPANT_ADD:case RA.GROUP_PARTICIPANT_INVITE:case RA.GROUP_PARTICIPANT_ADD_REQUEST_JOIN:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],K()&&(d.readOnly=!1),_("add");break;case RA.GROUP_PARTICIPANT_DEMOTE:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("demote");break;case RA.GROUP_PARTICIPANT_PROMOTE:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("promote");break;case RA.GROUP_CHANGE_ANNOUNCE:let L=n.messageStubParameters?.[0];T({announce:L==="true"||L==="on"});break;case RA.GROUP_CHANGE_RESTRICT:let U=n.messageStubParameters?.[0];T({restrict:U==="true"||U==="on"});break;case RA.GROUP_CHANGE_SUBJECT:let z=n.messageStubParameters?.[0];d.name=z,T({subject:z});break;case RA.GROUP_CHANGE_DESCRIPTION:let q=n.messageStubParameters?.[0];d.description=q,T({desc:q});break;case RA.GROUP_CHANGE_INVITE_LINK:let x=n.messageStubParameters?.[0];T({inviteCode:x});break;case RA.GROUP_MEMBER_ADD_MODE:let G=n.messageStubParameters?.[0];T({memberAddMode:G==="all_member_add"});break;case RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE:let V=n.messageStubParameters?.[0];T({joinApprovalMode:V==="on"});break;case RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD:let F=JSON.parse(n.messageStubParameters?.[0]),N=n.messageStubParameters?.[1],k=n.messageStubParameters?.[2];R(F,N,k);break}}Object.keys(d).length>1&&i.emit("chats.update",[d])},Xne=eze;var tze=["messaging-history.set","chats.upsert","chats.update","chats.delete","contacts.upsert","contacts.update","messages.upsert","messages.update","messages.delete","messages.reaction","message-receipt.update","groups.update"],rze=new Set(tze),$ne=n=>{let t=new Aze,o=new Set,i=VU(),e=!1,a=null,A=null,r=0,s=1e4,g=3e4;t.on("event",d=>{for(let B in d)t.emit(B,d[B])});function c(){e||(n.debug("Event buffer activated"),e=!0,r=0,a&&clearTimeout(a),a=setTimeout(()=>{e&&(n.warn("Buffer timeout reached, auto-flushing"),I())},g)),r++}function I(){if(!e)return!1;n.debug({bufferCount:r},"Flushing event buffer"),e=!1,r=0,a&&(clearTimeout(a),a=null),A&&(clearTimeout(A),A=null),o.size>s&&(n.debug({cacheSize:o.size},"Clearing history cache"),o.clear());let d=VU(),B=Object.values(i.chatUpdates),f=0;for(let y of B)y.conditional&&(f+=1,d.chatUpdates[y.id]=y,delete i.chatUpdates[y.id]);let Q=ize(i);return Object.keys(Q).length&&t.emit("event",Q),i=d,n.trace({conditionalChatUpdatesLeft:f},"released buffered events"),!0}return{process(d){let B=async f=>{await d(f)};return t.on("event",B),()=>{t.off("event",B)}},emit(d,B){if(d==="messages.upsert"){let{type:f}=B,Q=Object.values(i.messageUpserts);if(Q.length>0){let y=Q[0].type;y!==f&&(n.debug({bufferedType:y,newType:f},"messages.upsert type mismatch, emitting buffered messages"),t.emit("event",{"messages.upsert":{messages:Q.map(m=>m.message),type:y}}),i.messageUpserts={})}}return e&&rze.has(d)?(aze(i,o,d,B,n),!0):t.emit("event",{[d]:B})},isBuffering(){return e},buffer:c,flush:I,createBufferedFunction(d){return async(...B)=>{c();try{let f=await d(...B);return r===1&&setTimeout(()=>{e&&r===1&&I()},100),f}catch(f){throw f}finally{r=Math.max(0,r-1),r===0&&(A||(A=setTimeout(I,100)))}}},on:(...d)=>t.on(...d),off:(...d)=>t.off(...d),removeAllListeners:(...d)=>t.removeAllListeners(...d),destroy(){a&&(clearTimeout(a),a=null),A&&(clearTimeout(A),A=null),o.clear(),i=VU(),e=!1,r=0,t.removeAllListeners(),n.debug("Event buffer destroyed")}}},VU=()=>({historySets:{chats:{},messages:{},contacts:{},isLatest:!1,empty:!0},chatUpserts:{},chatUpdates:{},chatDeletes:new Set,contactUpserts:{},contactUpdates:{},messageUpserts:{},messageUpdates:{},messageReactions:{},messageDeletes:{},messageReceipts:{},groupUpdates:{}});function aze(n,t,o,i,e){switch(o){case"messaging-history.set":for(let Q of i.chats){let y=Q.id||"",m=n.historySets.chats[y];m&&(m.endOfHistoryTransferType=Q.endOfHistoryTransferType),!m&&!t.has(y)&&(n.historySets.chats[y]=Q,t.add(y),a(Q))}for(let Q of i.contacts){let y=n.historySets.contacts[Q.id];if(y)Object.assign(y,CD(Q));else{let m=`c:${Q.id}`,_=Q.notify||Q.name||Q.verifiedName;(!t.has(m)||_)&&(n.historySets.contacts[Q.id]=Q,t.add(m))}}for(let Q of i.messages){let y=EE(Q.key);!n.historySets.messages[y]&&!t.has(y)&&(n.historySets.messages[y]=Q,t.add(y))}if(n.historySets.empty=!1,n.historySets.syncType=i.syncType,i.pastParticipants?.length){let Q=new Map,y=_=>`${_.userJid||""}:${_.leaveTs||""}:${_.leaveReason||""}`,m=_=>{let T=_.groupJid??JSON.stringify(_),R=Q.get(T);if(!R){Q.set(T,{..._,pastParticipants:[..._.pastParticipants||[]]});return}let K=new Set((R.pastParticipants||[]).map(y));for(let L of _.pastParticipants||[]){let U=y(L);K.has(U)||(R.pastParticipants.push(L),K.add(U))}};for(let _ of n.historySets.pastParticipants||[])m(_);for(let _ of i.pastParticipants)m(_);n.historySets.pastParticipants=[...Q.values()]}n.historySets.progress=i.progress,n.historySets.chunkOrder=i.chunkOrder,n.historySets.peerDataRequestSessionId=i.peerDataRequestSessionId,n.historySets.isLatest=i.isLatest||n.historySets.isLatest;break;case"chats.upsert":for(let Q of i){let y=Q.id||"",m=n.chatUpserts[y];y&&!m&&(m=n.historySets.chats[y],m&&e.debug({chatId:y},"absorbed chat upsert in chat set")),m?m=Tb(m,Q):(m=Q,n.chatUpserts[y]=m),a(m),n.chatDeletes.has(y)&&n.chatDeletes.delete(y)}break;case"chats.update":for(let Q of i){let y=Q.id,m=Q.conditional?Q.conditional(n):!0;if(m){delete Q.conditional;let _=n.historySets.chats[y]||n.chatUpserts[y];if(_)Tb(_,Q);else{let T=n.chatUpdates[y]||{};n.chatUpdates[y]=Tb(T,Q)}}else m===void 0&&(n.chatUpdates[y]=Q);n.chatDeletes.has(y)&&n.chatDeletes.delete(y)}break;case"chats.delete":for(let Q of i)n.chatDeletes.has(Q)||n.chatDeletes.add(Q),n.chatUpdates[Q]&&delete n.chatUpdates[Q],n.chatUpserts[Q]&&delete n.chatUpserts[Q],n.historySets.chats[Q]&&delete n.historySets.chats[Q];break;case"contacts.upsert":for(let Q of i){let y=n.contactUpserts[Q.id];y||(y=n.historySets.contacts[Q.id],y&&e.debug({contactId:Q.id},"absorbed contact upsert in contact set")),y?y=Object.assign(y,CD(Q)):(y=Q,n.contactUpserts[Q.id]=y),n.contactUpdates[Q.id]&&(y=Object.assign(n.contactUpdates[Q.id],CD(Q)),delete n.contactUpdates[Q.id])}break;case"contacts.update":let r=i;for(let Q of r){let y=Q.id,m=n.historySets.contacts[y]||n.contactUpserts[y];if(m)Object.assign(m,Q);else{let _=n.contactUpdates[y]||{};n.contactUpdates[y]=Object.assign(_,Q)}}break;case"messages.upsert":let{messages:s,type:g}=i;for(let Q of s){let y=EE(Q.key),m=n.messageUpserts[y]?.message;m||(m=n.historySets.messages[y],m&&e.debug({messageId:y},"absorbed message upsert in message set")),m&&(Q.messageTimestamp=m.messageTimestamp),n.messageUpdates[y]&&(e.debug("absorbed prior message update in message upsert"),Object.assign(Q,n.messageUpdates[y].update),delete n.messageUpdates[y]),n.historySets.messages[y]?n.historySets.messages[y]=Q:n.messageUpserts[y]={message:Q,type:g==="notify"||n.messageUpserts[y]?.type==="notify"?"notify":g}}break;case"messages.update":let c=i;for(let{key:Q,update:y}of c){let m=EE(Q),_=n.historySets.messages[m]||n.messageUpserts[m]?.message;if(_)Object.assign(_,y),y.status===lh.READ&&!Q.fromMe&&A(_);else{let T=n.messageUpdates[m]||{key:Q,update:{}};Object.assign(T.update,y),n.messageUpdates[m]=T}}break;case"messages.delete":let I=i;if("keys"in I){let{keys:Q}=I;for(let y of Q){let m=EE(y);n.messageDeletes[m]||(n.messageDeletes[m]=y),n.messageUpserts[m]&&delete n.messageUpserts[m],n.messageUpdates[m]&&delete n.messageUpdates[m]}}break;case"messages.reaction":let d=i;for(let{key:Q,reaction:y}of d){let m=EE(Q),_=n.messageUpserts[m];_?CU(_.message,y):(n.messageReactions[m]=n.messageReactions[m]||{key:Q,reactions:[]},CU(n.messageReactions[m],y))}break;case"message-receipt.update":let B=i;for(let{key:Q,receipt:y}of B){let m=EE(Q),_=n.messageUpserts[m];_?EU(_.message,y):(n.messageReceipts[m]=n.messageReceipts[m]||{key:Q,userReceipt:[]},EU(n.messageReceipts[m],y))}break;case"groups.update":let f=i;for(let Q of f){let y=Q.id,m=n.groupUpdates[y]||{};n.groupUpdates[y]||(n.groupUpdates[y]=Object.assign(m,Q))}break;default:throw new Error(`"${o}" cannot be buffered`)}function a(r){let s=r.id||"",g=n.chatUpdates[s];if(g){let c=g.conditional?g.conditional(n):!0;c?(delete g.conditional,e.debug({chatId:s},"absorbed chat update in existing chat"),Object.assign(r,Tb(g,r)),delete n.chatUpdates[s]):c===!1&&(e.debug({chatId:s},"chat update condition fail, removing"),delete n.chatUpdates[s])}}function A(r){let s=r.key.remoteJid,g=n.chatUpdates[s]||n.chatUpserts[s];qU(r)&&zU(r)&&typeof g?.unreadCount=="number"&&g.unreadCount>0&&(e.debug({chatId:g.id},"decrementing chat counter"),g.unreadCount-=1,g.unreadCount===0&&delete g.unreadCount)}}function ize(n){let t={};n.historySets.empty||(t["messaging-history.set"]={chats:Object.values(n.historySets.chats),messages:Object.values(n.historySets.messages),contacts:Object.values(n.historySets.contacts),pastParticipants:n.historySets.pastParticipants,syncType:n.historySets.syncType,progress:n.historySets.progress,isLatest:n.historySets.isLatest,chunkOrder:n.historySets.chunkOrder,peerDataRequestSessionId:n.historySets.peerDataRequestSessionId});let o=Object.values(n.chatUpserts);o.length&&(t["chats.upsert"]=o);let i=Object.values(n.chatUpdates);i.length&&(t["chats.update"]=i);let e=Array.from(n.chatDeletes);e.length&&(t["chats.delete"]=e);let a=Object.values(n.messageUpserts);if(a.length){let B=a[0].type;t["messages.upsert"]={messages:a.map(f=>f.message),type:B}}let A=Object.values(n.messageUpdates);A.length&&(t["messages.update"]=A);let r=Object.values(n.messageDeletes);r.length&&(t["messages.delete"]={keys:r});let s=Object.values(n.messageReactions).flatMap(({key:B,reactions:f})=>f.flatMap(Q=>({key:B,reaction:Q})));s.length&&(t["messages.reaction"]=s);let g=Object.values(n.messageReceipts).flatMap(({key:B,userReceipt:f})=>f.flatMap(Q=>({key:B,receipt:Q})));g.length&&(t["message-receipt.update"]=g);let c=Object.values(n.contactUpserts);c.length&&(t["contacts.upsert"]=c);let I=Object.values(n.contactUpdates);I.length&&(t["contacts.update"]=I);let d=Object.values(n.groupUpdates);return d.length&&(t["groups.update"]=d),t}function Tb(n,t){return t.unreadCount===null&&n.unreadCount<0&&(n.unreadCount=void 0,t.unreadCount=void 0),typeof n.unreadCount=="number"&&typeof t.unreadCount=="number"&&(t={...t},t.unreadCount>=0&&(t.unreadCount=Math.max(t.unreadCount,0)+Math.max(n.unreadCount,0))),Object.assign(n,t)}var EE=n=>`${n.remoteJid},${n.id},${n.fromMe?"1":"0"}`;var oze=512,WU="\0",ese=3600*1e3,nze=3e3,Ac;(function(n){n[n.UnknownError=0]="UnknownError",n[n.SignalErrorNoSession=1]="SignalErrorNoSession",n[n.SignalErrorInvalidKey=2]="SignalErrorInvalidKey",n[n.SignalErrorInvalidKeyId=3]="SignalErrorInvalidKeyId",n[n.SignalErrorInvalidMessage=4]="SignalErrorInvalidMessage",n[n.SignalErrorInvalidSignature=5]="SignalErrorInvalidSignature",n[n.SignalErrorFutureMessage=6]="SignalErrorFutureMessage",n[n.SignalErrorBadMac=7]="SignalErrorBadMac",n[n.SignalErrorInvalidSession=8]="SignalErrorInvalidSession",n[n.SignalErrorInvalidMsgKey=9]="SignalErrorInvalidMsgKey",n[n.BadBroadcastEphemeralSetting=10]="BadBroadcastEphemeralSetting",n[n.UnknownCompanionNoPrekey=11]="UnknownCompanionNoPrekey",n[n.AdvFailure=12]="AdvFailure",n[n.StatusRevokeDelay=13]="StatusRevokeDelay"})(Ac||(Ac={}));var Ase=new Set([Ac.SignalErrorInvalidMessage,Ac.SignalErrorBadMac]),Nb=class{constructor(t,o){this.logger=t,this.recentMessagesMap=new Gg({max:oze,ttl:300*1e3,ttlAutopurge:!0,dispose:(i,e)=>{let a=e.lastIndexOf(WU);if(a>-1){let A=e.slice(a+WU.length);this.messageKeyIndex.delete(A)}}}),this.messageKeyIndex=new Map,this.sessionRecreateHistory=new Gg({ttl:ese*2,ttlAutopurge:!0}),this.retryCounters=new Gg({ttl:900*1e3,ttlAutopurge:!0,updateAgeOnGet:!0}),this.baseKeys=new Gg({max:1024,ttl:900*1e3,ttlAutopurge:!0}),this.pendingPhoneRequests={},this.maxMsgRetryCount=5,this.statistics={totalRetries:0,successfulRetries:0,failedRetries:0,mediaRetries:0,sessionRecreations:0,phoneRequests:0},this.maxMsgRetryCount=o}addRecentMessage(t,o,i){let e={to:t,id:o},a=this.keyToString(e);this.recentMessagesMap.set(a,{message:i,timestamp:Date.now()}),this.messageKeyIndex.set(o,a),this.logger.debug(`Added message to retry cache: ${t}/${o}`)}getRecentMessage(t,o){let i={to:t,id:o},e=this.keyToString(i);return this.recentMessagesMap.get(e)}shouldRecreateSession(t,o,i){if(!o)return this.sessionRecreateHistory.set(t,Date.now()),this.statistics.sessionRecreations++,{reason:"we don't have a Signal session with them",recreate:!0};if(i!==void 0&&Ase.has(i))return this.sessionRecreateHistory.set(t,Date.now()),this.statistics.sessionRecreations++,this.logger.warn({jid:t,errorCode:Ac[i]},"MAC error detected, forcing immediate session recreation"),{reason:`MAC error (code ${i}: ${Ac[i]}), immediate session recreation`,recreate:!0};let e=Date.now(),a=this.sessionRecreateHistory.get(t);return!a||e-a>ese?(this.sessionRecreateHistory.set(t,e),this.statistics.sessionRecreations++,{reason:"retry count > 1 and over an hour since last recreation",recreate:!0}):{reason:"",recreate:!1}}parseRetryErrorCode(t){if(t===void 0||t==="")return;let o=parseInt(t,10);if(!Number.isNaN(o))return o>=Ac.UnknownError&&o<=Ac.StatusRevokeDelay?o:Ac.UnknownError}isMacError(t){return t!==void 0&&Ase.has(t)}incrementRetryCount(t){return this.retryCounters.set(t,(this.retryCounters.get(t)||0)+1),this.statistics.totalRetries++,this.retryCounters.get(t)}getRetryCount(t){return this.retryCounters.get(t)||0}hasExceededMaxRetries(t){return this.getRetryCount(t)>=this.maxMsgRetryCount}markRetrySuccess(t){this.statistics.successfulRetries++,this.retryCounters.delete(t),this.cancelPendingPhoneRequest(t),this.removeRecentMessage(t)}markRetryFailed(t){this.statistics.failedRetries++,this.retryCounters.delete(t),this.cancelPendingPhoneRequest(t),this.removeRecentMessage(t)}schedulePhoneRequest(t,o,i=nze){this.cancelPendingPhoneRequest(t),this.pendingPhoneRequests[t]=setTimeout(()=>{delete this.pendingPhoneRequests[t],this.statistics.phoneRequests++,o()},i),this.logger.debug(`Scheduled phone request for message ${t} with ${i}ms delay`)}cancelPendingPhoneRequest(t){let o=this.pendingPhoneRequests[t];o&&(clearTimeout(o),delete this.pendingPhoneRequests[t],this.logger.debug(`Cancelled pending phone request for message ${t}`))}clear(){this.recentMessagesMap.clear(),this.messageKeyIndex.clear(),this.sessionRecreateHistory.clear(),this.retryCounters.clear(),this.baseKeys.clear();for(let t of Object.keys(this.pendingPhoneRequests))this.cancelPendingPhoneRequest(t);this.statistics={totalRetries:0,successfulRetries:0,failedRetries:0,mediaRetries:0,sessionRecreations:0,phoneRequests:0}}saveBaseKey(t,o,i){this.baseKeys.set(`${t}:${o}`,i)}hasSameBaseKey(t,o,i){let e=this.baseKeys.get(`${t}:${o}`);if(!e||e.length!==i.length)return!1;for(let a=0;a["Ubuntu",n,"22.04.4"],macOS:n=>["Mac OS",n,"14.4.1"],baileys:n=>["Baileys",n,"6.5.0"],windows:n=>["Windows",n,"10.0.22631"],android:n=>[n,"Android",""],appropriate:n=>[cze[sze()]||"Ubuntu",n,gze()]};var Yn;(function(n){n[n.UNKNOWN=0]="UNKNOWN",n[n.CHROME=1]="CHROME",n[n.EDGE=2]="EDGE",n[n.FIREFOX=3]="FIREFOX",n[n.IE=4]="IE",n[n.OPERA=5]="OPERA",n[n.SAFARI=6]="SAFARI",n[n.ELECTRON=7]="ELECTRON",n[n.UWP=8]="UWP",n[n.OTHER_WEB_CLIENT=9]="OTHER_WEB_CLIENT"})(Yn||(Yn={}));var Ize={Chrome:Yn.CHROME,Edge:Yn.EDGE,Firefox:Yn.FIREFOX,IE:Yn.IE,Opera:Yn.OPERA,Safari:Yn.SAFARI},lze=([n,t])=>t==="Desktop"?n==="Windows"?Yn.UWP:Yn.ELECTRON:Ize[t]||Yn.OTHER_WEB_CLIENT,ZU=n=>lze(n).toString(),tse=(n,t,o,i,e)=>"https://wa.me/settings/linked_devices#"+[n,t,o,i,ZU(e)].join(",");async function rse(n,t){let o=n.attrs.from;if(!o)return{action:"invalid_notification"};if(!le(n,"identity"))return{action:"no_identity_node"};t.logger.info({jid:o},"identity changed");let e=fA(o);if(e?.device&&e.device!==0)return t.logger.debug({jid:o,device:e.device},"ignoring identity change from companion device"),{action:"skipped_companion_device",device:e.device};if(t.meId&&(Rt(o,t.meId)||t.meLid&&Rt(o,t.meLid)))return t.logger.info({jid:o},"self primary identity changed"),{action:"skipped_self_primary"};if(t.debounceCache.get(o))return t.logger.debug({jid:o},"skipping identity assert (debounced)"),{action:"debounced"};t.debounceCache.set(o,!0);let A=!K7(n.attrs.offline);if(!(await t.validateSession(o)).exists)return t.logger.debug({jid:o},"no old session, skipping session refresh"),{action:"skipped_no_session"};if(t.logger.debug({jid:o},"old session exists, will refresh session"),A)return t.logger.debug({jid:o},"skipping session refresh during offline processing"),{action:"skipped_offline"};t.onBeforeSessionRefresh?.(o);try{return await t.assertSessions([o],!0),{action:"session_refreshed"}}catch(s){return t.logger.warn({error:s,jid:o},"failed to assert sessions after identity change"),{action:"session_refresh_failed",error:s}}}function ase(n,t,o){let{tag:i,attrs:e}=n,a={tag:"ack",attrs:{id:e.id,to:e.from,class:i}};return t&&(a.attrs.error=t.toString()),e.participant&&(a.attrs.participant=e.participant),e.recipient&&(a.attrs.recipient=e.recipient),e.type&&(a.attrs.type=e.type),i==="message"&&o&&(a.attrs.from=o),a}function pze(n){return n===null||n===""}function dze(n){return n>2147483647||n<-2147483648?n&4294967295:n}function ise(n){let t=0;if(!pze(n))for(let o=0;oo.iteration===t)}addSenderMessageKey(t){this.senderKeyStateStructure.senderMessageKeys.push({iteration:t.getIteration(),seed:t.getSeed()}),this.senderKeyStateStructure.senderMessageKeys.length>this.MAX_MESSAGE_KEYS&&this.senderKeyStateStructure.senderMessageKeys.shift()}removeSenderMessageKey(t){let o=this.senderKeyStateStructure.senderMessageKeys.findIndex(i=>i.iteration===t);if(o!==-1){let i=this.senderKeyStateStructure.senderMessageKeys[o];return this.senderKeyStateStructure.senderMessageKeys.splice(o,1),new cp(i.iteration,i.seed)}return null}getStructure(){return this.senderKeyStateStructure}};var tc=class n{constructor(t){if(this.MAX_STATES=5,this.senderKeyStates=[],t)for(let o of t)this.senderKeyStates.push(new Ip(null,null,null,null,null,null,o))}isEmpty(){return this.senderKeyStates.length===0}getSenderKeyState(t){return t===void 0&&this.senderKeyStates.length?this.senderKeyStates[this.senderKeyStates.length-1]:this.senderKeyStates.find(o=>o.getKeyId()===t)}addSenderKeyState(t,o,i,e){this.senderKeyStates.push(new Ip(t,o,i,null,e)),this.senderKeyStates.length>this.MAX_STATES&&this.senderKeyStates.shift()}setSenderKeyState(t,o,i,e){this.senderKeyStates.length=0,this.senderKeyStates.push(new Ip(t,o,i,e))}serialize(){return this.senderKeyStates.map(t=>t.getStructure())}static deserialize(t){let o=Buffer.from(t).toString("utf-8"),i=JSON.parse(o,RB.reviver);return new n(i)}};var sse=qe(xc(),1);import*as kb from"crypto";function gse(){return kb.randomBytes(32)}function cse(){return kb.randomInt(2147483647)}function Ise(n){return n||(n=(0,sse.generateKeyPair)()),{public:Buffer.from(n.pubKey),private:Buffer.from(n.privKey)}}var lp=class{constructor(){this.UNSUPPORTED_VERSION=1,this.CURRENT_VERSION=3,this.WHISPER_TYPE=2,this.PREKEY_TYPE=3,this.SENDERKEY_TYPE=4,this.SENDERKEY_DISTRIBUTION_TYPE=5,this.ENCRYPTED_MESSAGE_OVERHEAD=53}};var pp=class extends lp{constructor(t,o,i,e,a){if(super(),a)try{let A=a.slice(1),r=oe.SenderKeyDistributionMessage.decode(A).toJSON();this.serialized=a,this.id=r.id,this.iteration=r.iteration,this.chainKey=typeof r.chainKey=="string"?Buffer.from(r.chainKey,"base64"):r.chainKey,this.signatureKey=typeof r.signingKey=="string"?Buffer.from(r.signingKey,"base64"):r.signingKey}catch(A){throw new Error(String(A))}else{let A=this.intsToByteHighAndLow(this.CURRENT_VERSION,this.CURRENT_VERSION);this.id=t,this.iteration=o,this.chainKey=i,this.signatureKey=e;let r=oe.SenderKeyDistributionMessage.encode(oe.SenderKeyDistributionMessage.create({id:t,iteration:o,chainKey:i,signingKey:this.signatureKey})).finish();this.serialized=Buffer.concat([Buffer.from([A]),r])}}intsToByteHighAndLow(t,o){return((t<<4|o)&255)%256}serialize(){return this.serialized}getType(){return this.SENDERKEY_DISTRIBUTION_TYPE}getIteration(){return this.iteration}getChainKey(){return this.chainKey}getSignatureKey(){return this.signatureKey}getId(){return this.id}};var CE=class{constructor(t){this.senderKeyStore=t}async process(t,o){let i=await this.senderKeyStore.loadSenderKey(t);i.addSenderKeyState(o.getId(),o.getIteration(),o.getChainKey(),o.getSignatureKey()),await this.senderKeyStore.storeSenderKey(t,i)}async create(t){let o=await this.senderKeyStore.loadSenderKey(t);if(o.isEmpty()){let e=cse(),a=gse(),A=Ise();o.setSenderKeyState(e,0,a,A),await this.senderKeyStore.storeSenderKey(t,o)}let i=o.getSenderKeyState();if(!i)throw new Error("No session state available");return new pp(i.getKeyId(),i.getSenderChainKey().getIteration(),i.getSenderChainKey().getSeed(),i.getSigningKeyPublic())}};var Pb=qe(Nl(),1);var vb=qe(xc(),1);var uE=class extends lp{constructor(t,o,i,e,a){if(super(),this.SIGNATURE_LENGTH=64,a){let A=a[0],r=a.slice(1,a.length-this.SIGNATURE_LENGTH),s=a.slice(-1*this.SIGNATURE_LENGTH),g=oe.SenderKeyMessage.decode(r).toJSON();this.serialized=a,this.messageVersion=(A&255)>>4,this.keyId=g.id,this.iteration=g.iteration,this.ciphertext=typeof g.ciphertext=="string"?Buffer.from(g.ciphertext,"base64"):g.ciphertext,this.signature=s}else{let A=((this.CURRENT_VERSION<<4|this.CURRENT_VERSION)&255)%256,r=Buffer.from(i),s=oe.SenderKeyMessage.encode(oe.SenderKeyMessage.create({id:t,iteration:o,ciphertext:r})).finish(),g=this.getSignature(e,Buffer.concat([Buffer.from([A]),s]));this.serialized=Buffer.concat([Buffer.from([A]),s,Buffer.from(g)]),this.messageVersion=this.CURRENT_VERSION,this.keyId=t,this.iteration=o,this.ciphertext=r,this.signature=g}}getKeyId(){return this.keyId}getIteration(){return this.iteration}getCipherText(){return this.ciphertext}verifySignature(t){let o=this.serialized.slice(0,this.serialized.length-this.SIGNATURE_LENGTH),i=this.serialized.slice(-1*this.SIGNATURE_LENGTH);if(!(0,vb.verifySignature)(t,o,i))throw new Error("Invalid signature!")}getSignature(t,o){return Buffer.from((0,vb.calculateSignature)(t,o))}serialize(){return this.serialized}getType(){return 4}};var BE=class{constructor(t,o){this.senderKeyStore=t,this.senderKeyName=o}async encrypt(t){let o=await this.senderKeyStore.loadSenderKey(this.senderKeyName);if(!o)throw new Error("No SenderKeyRecord found for encryption");let i=o.getSenderKeyState();if(!i)throw new Error("No session to encrypt message");let e=i.getSenderChainKey().getIteration(),a=this.getSenderKey(i,e===0?0:e+1),A=await this.getCipherText(a.getIv(),a.getCipherKey(),t),r=new uE(i.getKeyId(),a.getIteration(),A,i.getSigningKeyPrivate());return await this.senderKeyStore.storeSenderKey(this.senderKeyName,o),r.serialize()}async decrypt(t){let o=await this.senderKeyStore.loadSenderKey(this.senderKeyName);if(!o)throw new Error("No SenderKeyRecord found for decryption");let i=new uE(null,null,null,null,t),e=o.getSenderKeyState(i.getKeyId());if(!e)throw new Error("No session found to decrypt message");i.verifySignature(e.getSigningKeyPublic());let a=this.getSenderKey(e,i.getIteration()),A=await this.getPlainText(a.getIv(),a.getCipherKey(),i.getCipherText());return await this.senderKeyStore.storeSenderKey(this.senderKeyName,o),A}getSenderKey(t,o){let i=t.getSenderChainKey();if(i.getIteration()>o){if(t.hasSenderMessageKey(o)){let e=t.removeSenderMessageKey(o);if(!e)throw new Error("No sender message key found for iteration");return e}throw new Error(`Received message with old counter: ${i.getIteration()}, ${o}`)}if(o-i.getIteration()>2e3)throw new Error("Over 2000 messages into the future!");for(;i.getIteration()0){let r=[...i];this.logger.trace(`Batch fetching ${r.length} LID mappings from database`);let s=await this.keys.get("lid-mapping",r);for(let g of r){let c=s[g];c&&(e.set(g,c),this.mappingCache.set(`pn:${g}`,c),this.mappingCache.set(`lid:${c}`,g))}}let a={};for(let{pnUser:r,lidUser:s}of o){if(e.get(r)===s){this.logger.debug({pnUser:r,lidUser:s},"LID mapping already exists, skipping");continue}a[r]=s}if(Object.keys(a).length===0)return;this.logger.trace({pairMap:a},`Storing ${Object.keys(a).length} pn mappings`);let A={};for(let[r,s]of Object.entries(a))A[r]=s,A[`${s}_reverse`]=r;await this.keys.transaction(async()=>{await this.keys.set({"lid-mapping":A})},"lid-mapping");for(let[r,s]of Object.entries(a))this.mappingCache.set(`pn:${r}`,s),this.mappingCache.set(`lid:${s}`,r)}async getLIDForPN(t){return(await this.getLIDsForPNs([t]))?.[0]?.lid||null}async getLIDsForPNs(t){if(t.length===0)return null;let o=[...new Set(t)].sort(),i=o.join(","),e=this.inflightLIDLookups.get(i);if(e)return this.logger.trace(`Coalescing getLIDsForPNs request for ${o.length} PNs`),e;let a=this._getLIDsForPNsImpl(t);this.inflightLIDLookups.set(i,a);try{return await a}finally{this.inflightLIDLookups.delete(i)}}async _getLIDsForPNsImpl(t){let o={},i={},e=[],a=(A,r,s)=>{let g=s.toString();if(!g)return this.logger.warn(`Invalid or empty LID user for PN ${A}: lidUser = "${s}"`),!1;let c=r.device!==void 0?r.device:0,I=`${g}${c?`:${c}`:""}@${r.server==="hosted"?"hosted.lid":"lid"}`;return this.logger.trace(`getLIDForPN: ${A} \u2192 ${I} (user mapping with device ${c})`),i[A]={lid:I,pn:A},!0};for(let A of t){if(!_t(A)&&!mr(A))continue;let r=fA(A);if(!r)continue;let s=r.user,g=this.mappingCache.get(`pn:${s}`);if(g&&typeof g=="string"){if(!a(A,r,g)){this.logger.warn(`Invalid entry for ${A} (pair not resolved)`);continue}continue}e.push({pn:A,pnUser:s,decoded:r})}if(e.length){let A=[...new Set(e.map(s=>s.pnUser))],r=await this.keys.get("lid-mapping",A);for(let s of A){let g=r[s];g&&typeof g=="string"&&(this.mappingCache.set(`pn:${s}`,g),this.mappingCache.set(`lid:${g}`,s))}for(let{pn:s,pnUser:g,decoded:c}of e){let I=this.mappingCache.get(`pn:${g}`);if(I&&typeof I=="string"){if(!a(s,c,I)){this.logger.warn(`Invalid entry for ${s} (pair not resolved)`);continue}}else{this.logger.trace(`No LID mapping found for PN user ${g}; batch getting from USync`);let d=c.device||0,B=uA(s);mr(B)&&(B=`${g}@s.whatsapp.net`),o[B]?o[B]?.push(d):o[B]=[d]}}}if(Object.keys(o).length>0){let A=await this.pnToLIDFunc?.(Object.keys(o));if(A&&A.length>0){await this.storeLIDPNMappings(A);for(let r of A){let g=fA(r.pn)?.user;if(!g)continue;let c=fA(r.lid)?.user;if(c)for(let I of o[r.pn]){let d=`${c}${I?`:${I}`:""}@${I===99?"hosted.lid":"lid"}`;this.logger.trace(`getLIDForPN: USYNC success for ${r.pn} \u2192 ${d} (user mapping with device ${I})`);let B=`${g}${I?`:${I}`:""}@${I===99?"hosted":"s.whatsapp.net"}`;i[B]={lid:d,pn:B}}}}else this.logger.warn("USync fetch yielded no results for pending PNs")}return Object.values(i).length>0?Object.values(i):null}async getPNForLID(t){return(await this.getPNsForLIDs([t]))?.[0]?.pn||null}async getPNsForLIDs(t){if(t.length===0)return null;let o=[...new Set(t)].sort(),i=o.join(","),e=this.inflightPNLookups.get(i);if(e)return this.logger.trace(`Coalescing getPNsForLIDs request for ${o.length} LIDs`),e;let a=this._getPNsForLIDsImpl(t);this.inflightPNLookups.set(i,a);try{return await a}finally{this.inflightPNLookups.delete(i)}}async _getPNsForLIDsImpl(t){let o={},i=[],e=(a,A,r)=>{if(!r||typeof r!="string")return!1;let s=A.device!==void 0?A.device:0,g=`${r}:${s}@${A.domainType===Jt.HOSTED_LID?"hosted":"s.whatsapp.net"}`;return this.logger.trace(`Found reverse mapping: ${a} \u2192 ${g}`),o[a]={lid:a,pn:g},!0};for(let a of t){if(!qA(a))continue;let A=fA(a);if(!A)continue;let r=A.user,s=this.mappingCache.get(`lid:${r}`);if(s&&typeof s=="string"){e(a,A,s);continue}i.push({lid:a,lidUser:r,decoded:A})}if(i.length){let a=[...new Set(i.map(r=>`${r.lidUser}_reverse`))],A=await this.keys.get("lid-mapping",a);for(let{lid:r,lidUser:s,decoded:g}of i){let c=this.mappingCache.get(`lid:${s}`);(!c||typeof c!="string")&&(c=A[`${s}_reverse`],c&&typeof c=="string"&&(this.mappingCache.set(`lid:${s}`,c),this.mappingCache.set(`pn:${c}`,s))),c&&typeof c=="string"?e(r,g,c):this.logger.trace(`No reverse mapping found for LID user: ${s}`)}}return Object.values(o).length?Object.values(o):null}close(){this.mappingCache.clear()}};function hze(n){try{if(!n||n.length<2||(n[0]&15)!==3)return;let o=pse.PreKeyWhisperMessage.decode(n.slice(1));return o.identityKey?.length===33?new Uint8Array(o.identityKey):void 0}catch{return}}function dse(n,t,o){let i=new Gb(n.keys,t,o),e=Eze(n,i),a=n.keys,A=new Gg({ttl:4320*60*1e3,ttlAutopurge:!0,updateAgeOnGet:!0}),r=async(g,c)=>{let I=Fb(g,c),d=I.toString(),{[d]:B}=await n.keys.get("sender-key",[d]);B||await e.storeSenderKey(I,new tc);let f=await new CE(e).create(I);return{senderName:I,skdm:f}};return{decryptGroupMessage({group:g,authorJid:c,msg:I}){let d=Fb(g,c),B=new BE(e,d);return a.transaction(async()=>B.decrypt(I),g)},async processSenderKeyDistributionMessage({item:g,authorJid:c}){let I=new CE(e);if(!g.groupId)throw new Error("Group ID is required for sender key distribution message");let d=Fb(g.groupId,c),B=new pp(null,null,null,null,g.axolotlSenderKeyDistributionMessage),f=d.toString(),{[f]:Q}=await n.keys.get("sender-key",[f]);return Q||await e.storeSenderKey(d,new tc),a.transaction(async()=>{let{[f]:y}=await n.keys.get("sender-key",[f]);y||await e.storeSenderKey(d,new tc),await I.process(d,B)},g.groupId)},async decryptMessage({jid:g,type:c,ciphertext:I}){let d=jn(g),B=new $s.SessionCipher(e,d);if(c==="pkmsg"){let Q=hze(I);if(Q){let y=d.toString();await e.saveIdentity(y,Q)&&t.info({jid:g,addr:y},"identity key changed or new contact, session will be re-established")}}async function f(){let Q;switch(c){case"pkmsg":Q=await B.decryptPreKeyWhisperMessage(I);break;case"msg":Q=await B.decryptWhisperMessage(I);break}return Q}return a.transaction(async()=>await f(),g)},async encryptMessage({jid:g,data:c}){let I=jn(g),d=new $s.SessionCipher(e,I);return a.transaction(async()=>{let{type:B,body:f}=await d.encrypt(c);return{type:B===3?"pkmsg":"msg",ciphertext:Buffer.from(f,"binary")}},g)},async encryptGroupMessage({group:g,meId:c,data:I}){return a.transaction(async()=>{let{senderName:d,skdm:B}=await r(g,c);return{ciphertext:await new BE(e,d).encrypt(I),senderKeyDistributionMessage:B.serialize()}},g)},async getSenderKeyDistributionMessage({group:g,meId:c}){return a.transaction(async()=>{let{skdm:I}=await r(g,c);return I.serialize()},g)},async hasSenderKey({group:g,meId:c}){let I=Fb(g,c).toString(),{[I]:d}=await n.keys.get("sender-key",[I]);return!!d},async getSessionInfo(g){let c=jn(g).toString(),I=await e.loadSession(c);if(!I)return null;let d=I.getOpenSession?.(),B=d?.indexInfo?.baseKey,f=d?.registrationId;return!B||typeof f!="number"?null:{baseKey:new Uint8Array(B),registrationId:f}},async injectE2ESession({jid:g,session:c}){t.trace({jid:g},"injecting E2EE session");let I=new $s.SessionBuilder(e,jn(g));return a.transaction(async()=>{await I.initOutgoing(c)},g)},jidToSignalProtocolAddress(g){return jn(g).toString()},lidMapping:i,async validateSession(g){try{let c=jn(g),I=await e.loadSession(c.toString());return I?I.haveOpenSession()?{exists:!0}:{exists:!1,reason:"no open session"}:{exists:!1,reason:"no session"}}catch{return{exists:!1,reason:"validation error"}}},async deleteSession(g){if(!g.length)return;let c={};return g.forEach(I=>{let d=jn(I);c[d.toString()]=null}),a.transaction(async()=>{await n.keys.set({session:c})},`delete-${g.length}-sessions`)},close(){A.clear(),i.close()},async migrateSession(g,c){if(!g||!qA(c)&&!Ia(c))return{migrated:0,skipped:0,total:0};if(!_t(g)&&!mr(g))return{migrated:0,skipped:0,total:1};let{user:I}=fA(g);t.debug({fromJid:g},"bulk device migration - loading all user devices");let{[I]:d}=await a.get("device-list",[I]);if(!d)return{migrated:0,skipped:0,total:0};let{device:B}=fA(g),f=B?.toString()||"0";d.includes(f)||d.push(f);let y=d.filter(T=>{let R=`${I}.${T}`;return!A.has(R)}).map(T=>`${I}.${T}`),m=await a.get("session",y),_=[];for(let[T,R]of Object.entries(m))if(R){let K=T.split(".")[1];if(!K)continue;let L=parseInt(K),U=L===0?`${I}@s.whatsapp.net`:`${I}:${L}@s.whatsapp.net`;L===99&&(U=`${I}:99@hosted`),_.push(U)}return t.debug({fromJid:g,totalDevices:d.length,devicesWithSessions:_.length,devices:_},"bulk device migration complete - all user devices processed"),a.transaction(async()=>{let T=_.map(x=>{let G=I7(x,c),V=fA(x),F=fA(G);return{fromJid:x,toJid:G,pnUser:V.user,lidUser:F.user,deviceId:V.device||0,fromAddr:jn(x),toAddr:jn(G)}}),R=T.length,K=0,L=Array.from(new Set(T.map(x=>x.fromAddr.toString()))),U=await a.get("session",L),z={};for(let x of T){let G=x.fromAddr.toString(),V=x.toAddr.toString(),F=U[G];if(F){let N=$s.SessionRecord.deserialize(F);N.haveOpenSession()&&(z[V]=N.serialize(),z[G]=null,K++)}}if(Object.keys(z).length>0){await a.set({session:z}),t.debug({migratedSessions:K},"bulk session migration complete");for(let x of T)if(z[x.toAddr.toString()]){let G=`${x.pnUser}.${x.deviceId}`;A.set(G,!0)}}let q=R-K;return{migrated:K,skipped:q,total:R}},`migrate-${_.length}-sessions-${fA(c)?.user}`)}}}var jn=n=>{let t=fA(n),{user:o,device:i,server:e,domainType:a}=t;if(!o)throw new Error(`JID decoded but user is empty: "${n}" -> user: "${o}", server: "${e}", device: ${i}`);let A=a!==Jt.WHATSAPP?`${o}_${a}`:o,r=i||0;if(i===99&&t.server!=="hosted"&&t.server!=="hosted.lid")throw new Error("Unexpected non-hosted device JID with device 99. This ID seems invalid. ID:"+n);return new $s.ProtocolAddress(A,r)},Fb=(n,t)=>new Uf(n,jn(t));function Eze({creds:n,keys:t},o){let i=async e=>{if(e.includes(".")){let[a,A]=e.split("."),[r,s]=a.split("_"),g=parseInt(s||"0");if(g===Jt.LID||g===Jt.HOSTED_LID)return e;let c=`${r}${A!=="0"?`:${A}`:""}@${g===Jt.HOSTED?"hosted":"s.whatsapp.net"}`,I=await o.getLIDForPN(c);if(I)return jn(I).toString()}return e};return{loadSession:async e=>{try{let a=await i(e),{[a]:A}=await t.get("session",[a]);if(A)return $s.SessionRecord.deserialize(A)}catch{return null}return null},storeSession:async(e,a)=>{let A=await i(e);await t.set({session:{[A]:a.serialize()}})},isTrustedIdentity:()=>!0,loadIdentityKey:async e=>{let a=await i(e),{[a]:A}=await t.get("identity-key",[a]);return A||void 0},saveIdentity:async(e,a)=>{let A=await i(e),{[A]:r}=await t.get("identity-key",[A]),s=r?.length===a.length&&r.every((g,c)=>g===a[c]);return r&&!s?(await t.set({session:{[A]:null},"identity-key":{[A]:a}}),!0):r?!1:(await t.set({"identity-key":{[A]:a}}),!0)},loadPreKey:async e=>{let a=e.toString(),{[a]:A}=await t.get("pre-key",[a]);if(A)return{privKey:Buffer.from(A.private),pubKey:Buffer.from(A.public)}},removePreKey:e=>t.set({"pre-key":{[e]:null}}),loadSignedPreKey:()=>{let e=n.signedPreKey;return{privKey:Buffer.from(e.keyPair.private),pubKey:Buffer.from(e.keyPair.public)}},loadSenderKey:async e=>{let a=e.toString(),{[a]:A}=await t.get("sender-key",[a]);return A?tc.deserialize(A):new tc},storeSenderKey:async(e,a)=>{let A=e.toString(),r=JSON.stringify(a.serialize());await t.set({"sender-key":{[A]:Buffer.from(r,"utf-8")}})},getOurRegistrationId:()=>n.registrationId,getOurIdentity:()=>{let{signedIdentityKey:e}=n;return{privKey:Buffer.from(e.private),pubKey:Buffer.from(Wo(e.public))}}}}var Ece=qe(hce(),1),Jf=(0,Ece.default)({timestamp:()=>`,"time":"${new Date().toJSON()}"`});var j5e=[2,3e3,1043857760];var Mf="https://web.whatsapp.com",$oe="https://call.whatsapp.com/video/",ene="https://call.whatsapp.com/voice/",SE="CB:",Cce="TAG:";var pne=Buffer.from([6,0]),dne=Buffer.from([6,1]),yU=Buffer.from([6,5]),DvA=Buffer.from([6,6]),Nf=10080*60,uce=1440*60,Bce=336*60*60,Bne="Noise_XX_25519_AESGCM_SHA256\0\0\0\0",J5e=3,Hg=Buffer.from([5]),fce=Buffer.from([87,65,6,J5e]),Ane=/https:\/\/(?![^:@\/\s]+:[^:@\/\s]+@)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?/g,SU={SERIAL:0,ISSUER:"WhatsAppLongTerm1",PUBLIC_KEY:Buffer.from("142375574d0a587166aae71ebe516437c4a28b73e3695c6ce1f7f9545da8ee6b","hex")},qf=[oe.HistorySync.HistorySyncType.INITIAL_BOOTSTRAP,oe.HistorySync.HistorySyncType.PUSH_NAME,oe.HistorySync.HistorySyncType.RECENT,oe.HistorySync.HistorySyncType.FULL,oe.HistorySync.HistorySyncType.ON_DEMAND,oe.HistorySync.HistorySyncType.NON_BLOCKING_DATA,oe.HistorySync.HistorySyncType.INITIAL_STATUS_V3],mI={SIGNAL_STORE:300,MSG_RETRY:3600,CALL_OFFER:300,USER_DEVICES:300},Qce={version:j5e,browser:Rb.macOS("Chrome"),waWebSocketUrl:"wss://web.whatsapp.com/ws/chat",connectTimeoutMs:2e4,keepAliveIntervalMs:3e4,logger:Jf.child({class:"baileys"}),emitOwnEvents:!0,defaultQueryTimeoutMs:6e4,customUploadHosts:[],retryRequestDelayMs:250,maxMsgRetryCount:5,fireInitQueries:!0,auth:void 0,markOnlineOnConnect:!0,syncFullHistory:!0,patchMessageBeforeSending:n=>n,shouldSyncHistoryMessage:({syncType:n})=>n!==oe.HistorySync.HistorySyncType.FULL,shouldIgnoreJid:()=>!1,linkPreviewImageThumbnailWidth:192,transactionOpts:{maxCommitRetries:10,delayBetweenTriesMs:3e3},generateHighQualityLinkPreview:!1,enableAutoSessionRecreation:!0,enableRecentMessageCache:!0,options:{},appStateMacVerification:{patch:!1,snapshot:!1},countryCode:"US",getMessage:async()=>{},cachedGroupMetadata:async()=>{},makeSignalRepository:dse},lU={image:"/mms/image",video:"/mms/video",document:"/mms/document",audio:"/mms/audio",sticker:"/mms/image","thumbnail-link":"/mms/image","product-catalog-image":"/product/image","md-app-state":"","md-msg-hist":"/mms/md-app-state","biz-cover-photo":"/pps/biz-cover-photo"},Koe={audio:"Audio",document:"Document",gif:"Video",image:"Image",ppic:"",product:"Image",ptt:"Audio",sticker:"Image",video:"Video","thumbnail-document":"Document Thumbnail","thumbnail-image":"Image Thumbnail","thumbnail-video":"Video Thumbnail","thumbnail-link":"Link Thumbnail","md-msg-hist":"History","md-app-state":"App State","product-catalog-image":"","payment-bg-image":"Payment Background",ptv:"Video","biz-cover-photo":"Image"},tne=Object.keys(lU),yce=12e4,zf=5,mce=812,Sce=3e4,YH={Minute:60*1e3,Hour:3600*1e3,Day:1440*60*1e3,Week:10080*60*1e3};var wce=qe(Kr(),1);import{createHash as q5e}from"crypto";import{createWriteStream as z5e,promises as V5e}from"fs";import{tmpdir as W5e}from"os";import{join as Z5e}from"path";var Dce=n=>{let t=le(n,"product_catalog"),o=PA(t,"product").map(Vf),i=le(t,"paging");return{products:o,nextPageCursor:i?jA(i,"after"):void 0}},Oce=n=>{let t=le(n,"collections");return{collections:PA(t,"collection").map(i=>{let e=jA(i,"id"),a=jA(i,"name"),A=PA(i,"product").map(Vf);return{id:e,name:a,products:A,status:eZe(i)}})}},bce=n=>{let t=le(n,"order"),o=PA(t,"product").map(a=>{let A=le(a,"image");return{id:jA(a,"id"),name:jA(a,"name"),imageUrl:jA(A,"url"),price:+jA(a,"price"),currency:jA(a,"currency"),quantity:+jA(a,"quantity")}}),i=le(t,"price");return{price:{total:+jA(i,"total"),currency:jA(i,"currency")},products:o}},jH=(n,t)=>{let o={},i=[];return typeof n<"u"&&i.push({tag:"id",attrs:{},content:Buffer.from(n)}),typeof t.name<"u"&&i.push({tag:"name",attrs:{},content:Buffer.from(t.name)}),typeof t.description<"u"&&i.push({tag:"description",attrs:{},content:Buffer.from(t.description)}),typeof t.retailerId<"u"&&i.push({tag:"retailer_id",attrs:{},content:Buffer.from(t.retailerId)}),t.images.length&&i.push({tag:"media",attrs:{},content:t.images.map(a=>{if(!("url"in a))throw new wce.Boom("Expected img for product to already be uploaded",{statusCode:400});return{tag:"image",attrs:{},content:[{tag:"url",attrs:{},content:Buffer.from(a.url.toString())}]}})}),typeof t.price<"u"&&i.push({tag:"price",attrs:{},content:Buffer.from(t.price.toString())}),typeof t.currency<"u"&&i.push({tag:"currency",attrs:{},content:Buffer.from(t.currency)}),"originCountryCode"in t&&(typeof t.originCountryCode>"u"?o.compliance_category="COUNTRY_ORIGIN_EXEMPT":i.push({tag:"compliance_info",attrs:{},content:[{tag:"country_code_origin",attrs:{},content:Buffer.from(t.originCountryCode)}]})),typeof t.isHidden<"u"&&(o.is_hidden=t.isHidden.toString()),{tag:"product",attrs:o,content:i}},Vf=n=>{let t=n.attrs.is_hidden==="true",o=jA(n,"id"),i=le(n,"media"),e=le(n,"status_info");return{id:o,imageUrls:$5e(i),reviewStatus:{whatsapp:jA(e,"status")},availability:"in stock",name:jA(n,"name"),retailerId:jA(n,"retailer_id"),url:jA(n,"url"),description:jA(n,"description"),price:+jA(n,"price"),currency:jA(n,"currency"),isHidden:t}};async function JH(n,t,o=3e4){return n={...n,images:n.images?await X5e(n.images,t,o):n.images},n}var X5e=async(n,t,o=3e4)=>await Promise.all(n.map(async e=>{if("url"in e){let I=e.url.toString();if(I.includes(".whatsapp.net"))return{url:I}}let{stream:a}=await Of(e),A=q5e("sha256"),r=Z5e(W5e(),"img"+jr()),s=z5e(r);for await(let I of a)A.update(I),s.write(I);let g=A.digest("base64"),{directPath:c}=await t(r,{mediaType:"product-catalog-image",fileEncSha256B64:g,timeoutMs:o});return await V5e.unlink(r).catch(I=>console.log("Error deleting temp file ",I)),{url:bf(c)}})),$5e=n=>{let t=le(n,"image");return{requested:jA(t,"request_image_url"),original:jA(t,"original_image_url")}},eZe=n=>{let t=le(n,"status_info");return{status:jA(t,"status"),canAppeal:jA(t,"can_appeal")==="true"}};var Zf=qe(Kr(),1);import{randomBytes as XH}from"crypto";var In=null;try{In=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function Pt(n,t,o){this.low=n|0,this.high=t|0,this.unsigned=!!o}Pt.prototype.__isLong__;Object.defineProperty(Pt.prototype,"__isLong__",{value:!0});function oi(n){return(n&&n.__isLong__)===!0}function Mce(n){var t=Math.clz32(n&-n);return n?31-t:t}Pt.isLong=oi;var _ce={},Tce={};function up(n,t){var o,i,e;return t?(n>>>=0,(e=0<=n&&n<256)&&(i=Tce[n],i)?i:(o=yt(n,0,!0),e&&(Tce[n]=o),o)):(n|=0,(e=-128<=n&&n<128)&&(i=_ce[n],i)?i:(o=yt(n,n<0?-1:0,!1),e&&(_ce[n]=o),o))}Pt.fromInt=up;function ln(n,t){if(isNaN(n))return t?rc:zn;if(t){if(n<0)return rc;if(n>=vce)return Fce}else{if(n<=-Rce)return Xi;if(n+1>=Rce)return Gce}return n<0?ln(-n,t).neg():yt(n%DE|0,n/DE|0,t)}Pt.fromNumber=ln;function yt(n,t,o){return new Pt(n,t,o)}Pt.fromBits=yt;var oM=Math.pow;function zH(n,t,o){if(n.length===0)throw Error("empty string");if(typeof t=="number"?(o=t,t=!1):t=!!t,n==="NaN"||n==="Infinity"||n==="+Infinity"||n==="-Infinity")return t?rc:zn;if(o=o||10,o<2||360)throw Error("interior hyphen");if(i===0)return zH(n.substring(1),t,o).neg();for(var e=ln(oM(o,8)),a=zn,A=0;A>>0:this.low};He.toNumber=function(){return this.unsigned?(this.high>>>0)*DE+(this.low>>>0):this.high*DE+(this.low>>>0)};He.toString=function(t){if(t=t||10,t<2||36>>0,c=g.toString(t);if(A=s,A.isZero())return c+r;for(;c.length<6;)c="0"+c;r=""+c+r}};He.getHighBits=function(){return this.high};He.getHighBitsUnsigned=function(){return this.high>>>0};He.getLowBits=function(){return this.low};He.getLowBitsUnsigned=function(){return this.low>>>0};He.getNumBitsAbs=function(){if(this.isNegative())return this.eq(Xi)?64:this.neg().getNumBitsAbs();for(var t=this.high!=0?this.high:this.low,o=31;o>0&&(t&1<>21;return t?this.unsigned?!1:t===-1&&!(this.low===0&&this.high===-2097152):!0};He.isZero=function(){return this.high===0&&this.low===0};He.eqz=He.isZero;He.isNegative=function(){return!this.unsigned&&this.high<0};He.isPositive=function(){return this.unsigned||this.high>=0};He.isOdd=function(){return(this.low&1)===1};He.isEven=function(){return(this.low&1)===0};He.equals=function(t){return oi(t)||(t=pn(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low};He.eq=He.equals;He.notEquals=function(t){return!this.eq(t)};He.neq=He.notEquals;He.ne=He.notEquals;He.lessThan=function(t){return this.comp(t)<0};He.lt=He.lessThan;He.lessThanOrEqual=function(t){return this.comp(t)<=0};He.lte=He.lessThanOrEqual;He.le=He.lessThanOrEqual;He.greaterThan=function(t){return this.comp(t)>0};He.gt=He.greaterThan;He.greaterThanOrEqual=function(t){return this.comp(t)>=0};He.gte=He.greaterThanOrEqual;He.ge=He.greaterThanOrEqual;He.compare=function(t){if(oi(t)||(t=pn(t)),this.eq(t))return 0;var o=this.isNegative(),i=t.isNegative();return o&&!i?-1:!o&&i?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1};He.comp=He.compare;He.negate=function(){return!this.unsigned&&this.eq(Xi)?Xi:this.not().add(wE)};He.neg=He.negate;He.add=function(t){oi(t)||(t=pn(t));var o=this.high>>>16,i=this.high&65535,e=this.low>>>16,a=this.low&65535,A=t.high>>>16,r=t.high&65535,s=t.low>>>16,g=t.low&65535,c=0,I=0,d=0,B=0;return B+=a+g,d+=B>>>16,B&=65535,d+=e+s,I+=d>>>16,d&=65535,I+=i+r,c+=I>>>16,I&=65535,c+=o+A,c&=65535,yt(d<<16|B,c<<16|I,this.unsigned)};He.subtract=function(t){return oi(t)||(t=pn(t)),this.add(t.neg())};He.sub=He.subtract;He.multiply=function(t){if(this.isZero())return this;if(oi(t)||(t=pn(t)),In){var o=In.mul(this.low,this.high,t.low,t.high);return yt(o,In.get_high(),this.unsigned)}if(t.isZero())return this.unsigned?rc:zn;if(this.eq(Xi))return t.isOdd()?Xi:zn;if(t.eq(Xi))return this.isOdd()?Xi:zn;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(kce)&&t.lt(kce))return ln(this.toNumber()*t.toNumber(),this.unsigned);var i=this.high>>>16,e=this.high&65535,a=this.low>>>16,A=this.low&65535,r=t.high>>>16,s=t.high&65535,g=t.low>>>16,c=t.low&65535,I=0,d=0,B=0,f=0;return f+=A*c,B+=f>>>16,f&=65535,B+=a*c,d+=B>>>16,B&=65535,B+=A*g,d+=B>>>16,B&=65535,d+=e*c,I+=d>>>16,d&=65535,d+=a*g,I+=d>>>16,d&=65535,d+=A*s,I+=d>>>16,d&=65535,I+=i*c+e*g+a*s+A*r,I&=65535,yt(B<<16|f,I<<16|d,this.unsigned)};He.mul=He.multiply;He.divide=function(t){if(oi(t)||(t=pn(t)),t.isZero())throw Error("division by zero");if(In){if(!this.unsigned&&this.high===-2147483648&&t.low===-1&&t.high===-1)return this;var o=(this.unsigned?In.div_u:In.div_s)(this.low,this.high,t.low,t.high);return yt(o,In.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?rc:zn;var i,e,a;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return rc;if(t.gt(this.shru(1)))return Pce;a=rc}else{if(this.eq(Xi)){if(t.eq(wE)||t.eq(qH))return Xi;if(t.eq(Xi))return wE;var A=this.shr(1);return i=A.div(t).shl(1),i.eq(zn)?t.isNegative()?wE:qH:(e=this.sub(t.mul(i)),a=i.add(e.div(t)),a)}else if(t.eq(Xi))return this.unsigned?rc:zn;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();a=zn}for(e=this;e.gte(t);){i=Math.max(1,Math.floor(e.toNumber()/t.toNumber()));for(var r=Math.ceil(Math.log(i)/Math.LN2),s=r<=48?1:oM(2,r-48),g=ln(i),c=g.mul(t);c.isNegative()||c.gt(e);)i-=s,g=ln(i,this.unsigned),c=g.mul(t);g.isZero()&&(g=wE),a=a.add(g),e=e.sub(c)}return a};He.div=He.divide;He.modulo=function(t){if(oi(t)||(t=pn(t)),In){var o=(this.unsigned?In.rem_u:In.rem_s)(this.low,this.high,t.low,t.high);return yt(o,In.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))};He.mod=He.modulo;He.rem=He.modulo;He.not=function(){return yt(~this.low,~this.high,this.unsigned)};He.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32};He.clz=He.countLeadingZeros;He.countTrailingZeros=function(){return this.low?Mce(this.low):Mce(this.high)+32};He.ctz=He.countTrailingZeros;He.and=function(t){return oi(t)||(t=pn(t)),yt(this.low&t.low,this.high&t.high,this.unsigned)};He.or=function(t){return oi(t)||(t=pn(t)),yt(this.low|t.low,this.high|t.high,this.unsigned)};He.xor=function(t){return oi(t)||(t=pn(t)),yt(this.low^t.low,this.high^t.high,this.unsigned)};He.shiftLeft=function(t){return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?yt(this.low<>>32-t,this.unsigned):yt(0,this.low<>>t|this.high<<32-t,this.high>>t,this.unsigned):yt(this.high>>t-32,this.high>=0?0:-1,this.unsigned)};He.shr=He.shiftRight;He.shiftRightUnsigned=function(t){return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?yt(this.low>>>t|this.high<<32-t,this.high>>>t,this.unsigned):t===32?yt(this.high,0,this.unsigned):yt(this.high>>>t-32,0,this.unsigned)};He.shru=He.shiftRightUnsigned;He.shr_u=He.shiftRightUnsigned;He.rotateLeft=function(t){var o;return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?yt(this.high,this.low,this.unsigned):t<32?(o=32-t,yt(this.low<>>o,this.high<>>o,this.unsigned)):(t-=32,o=32-t,yt(this.high<>>o,this.low<>>o,this.unsigned))};He.rotl=He.rotateLeft;He.rotateRight=function(t){var o;return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?yt(this.high,this.low,this.unsigned):t<32?(o=32-t,yt(this.high<>>t,this.low<>>t,this.unsigned)):(t-=32,o=32-t,yt(this.low<>>t,this.high<>>t,this.unsigned))};He.rotr=He.rotateRight;He.toSigned=function(){return this.unsigned?yt(this.low,this.high,!1):this};He.toUnsigned=function(){return this.unsigned?this:yt(this.low,this.high,!0)};He.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()};He.toBytesLE=function(){var t=this.high,o=this.low;return[o&255,o>>>8&255,o>>>16&255,o>>>24,t&255,t>>>8&255,t>>>16&255,t>>>24]};He.toBytesBE=function(){var t=this.high,o=this.low;return[t>>>24,t>>>16&255,t>>>8&255,t&255,o>>>24,o>>>16&255,o>>>8&255,o&255]};Pt.fromBytes=function(t,o,i){return i?Pt.fromBytesLE(t,o):Pt.fromBytesBE(t,o)};Pt.fromBytesLE=function(t,o){return new Pt(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,o)};Pt.fromBytesBE=function(t,o){return new Pt(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],o)};typeof BigInt=="function"&&(Pt.fromBigInt=function(t,o){var i=Number(BigInt.asIntN(32,t)),e=Number(BigInt.asIntN(32,t>>BigInt(32)));return yt(i,e,o)},Pt.fromValue=function(t,o){return typeof t=="bigint"?Pt.fromBigInt(t,o):pn(t,o)},He.toBigInt=function(){var t=BigInt(this.low>>>0),o=BigInt(this.unsigned?this.high>>>0:this.high);return o<{let n=new ec;return{mutex(t){return n.runExclusive(t)}}},Lce=()=>{let n=new Map;return{async mutex(t,o){let i=n.get(t);i||(i={mutex:new ec,refCount:0},n.set(t,i)),i.refCount++;try{return await i.mutex.runExclusive(o)}finally{i.refCount--,i.refCount===0&&n.get(t)===i&&n.delete(t)}}}};function Uce(n,t,o=10){let i=[],e=!1;return{enqueue:(A,r)=>{if(i.push({type:A,node:r}),e)return;e=!0,(async()=>{let g=0;for(;i.length&&t.isWsOpen();){let{type:c,node:I}=i.shift(),d=n.get(c);if(!d){t.onUnexpectedError(new Error(`unknown offline node type: ${c}`),"processing offline node");continue}await d(I).catch(B=>t.onUnexpectedError(B,`processing offline ${c}`)),g++,g>=o&&(g=0,await t.yieldToEventLoop())}e=!1})().catch(g=>t.onUnexpectedError(g,"processing offline nodes"))}}}var CM=qe(Kr(),1);var DI=qe(Kr(),1);var nM=class{constructor(){this.name="devices"}getQueryElement(){return{tag:"devices",attrs:{version:"2"}}}getUserElement(){return null}parser(t){let o=[],i;if(t.tag==="devices"){Ji(t);let e=le(t,"device-list"),a=le(t,"key-index-list");if(Array.isArray(e?.content))for(let{tag:A,attrs:r}of e.content){let s=+r.id,g=+r["key-index"];A==="device"&&o.push({id:s,keyIndex:g,isHosted:!!(r.is_hosted&&r.is_hosted==="true")})}a?.tag==="key-index-list"&&(i={timestamp:+a.attrs.ts,signedKeyIndex:a?.content,expectedTimestamp:a.attrs.expected_ts?+a.attrs.expected_ts:void 0})}return{deviceList:o,keyIndex:i}}};var tg=class{withId(t){return this.id=t,this}withLid(t){return this.lid=t,this}withPhone(t){return this.phone=t,this}withUsername(t){return this.username=t,this}withUsernameKey(t){return this.usernameKey=t,this}withType(t){return this.type=t,this}withPersonaId(t){return this.personaId=t,this}};var sM=class{constructor(){this.name="contact"}getQueryElement(){return{tag:"contact",attrs:{}}}getUserElement(t){return t.phone?{tag:"contact",attrs:{},content:t.phone}:t.username?{tag:"contact",attrs:{username:t.username,...t.usernameKey?{pin:t.usernameKey}:{},...t.lid?{lid:t.lid}:{}}}:t.type?{tag:"contact",attrs:{type:t.type}}:{tag:"contact",attrs:{}}}parser(t){return t.tag==="contact"?(Ji(t),t?.attrs?.type==="in"):!1}};var gM=class{constructor(){this.name="status"}getQueryElement(){return{tag:"status",attrs:{}}}getUserElement(){return null}parser(t){if(t.tag==="status"){Ji(t);let o=t?.content?.toString()??null,i=new Date(+(t?.attrs.t||0)*1e3);return o?typeof o=="string"&&o.length===0&&(o=null):t.attrs?.code&&+t.attrs.code==401?o="":o=null,{status:o,setAt:i}}}};var cM=class{constructor(){this.name="disappearing_mode"}getQueryElement(){return{tag:"disappearing_mode",attrs:{}}}getUserElement(){return null}parser(t){if(t.tag==="disappearing_mode"){Ji(t);let o=+t?.attrs.duration,i=new Date(+(t?.attrs.t||0)*1e3);return{duration:o,setAt:i}}}};var IM=class{constructor(){this.name="username"}getQueryElement(){return{tag:"username",attrs:{}}}getUserElement(t){return null}parser(t){return t.tag==="username"?(Ji(t),typeof t.content=="string"?t.content:null):null}};var lM=class{constructor(){this.name="bot"}getQueryElement(){return{tag:"bot",attrs:{},content:[{tag:"profile",attrs:{v:"1"}}]}}getUserElement(t){return{tag:"bot",attrs:{},content:[{tag:"profile",attrs:{persona_id:t.personaId}}]}}parser(t){let o=le(t,"bot"),i=le(o,"profile"),e=le(i,"commands"),a=le(i,"prompts"),A=[],r=[];for(let s of PA(e,"command"))A.push({name:jA(s,"name"),description:jA(s,"description")});for(let s of PA(a,"prompt"))r.push(`${jA(s,"emoji")} ${jA(s,"text")}`);return{isDefault:!!le(i,"default"),jid:t.attrs.jid,name:jA(i,"name"),attributes:jA(i,"attributes"),description:jA(i,"description"),category:jA(i,"category"),personaId:i.attrs.persona_id,commandsDescription:jA(e,"description"),commands:A,prompts:r}}};var pM=class{constructor(){this.name="lid"}getQueryElement(){return{tag:"lid",attrs:{}}}getUserElement(t){return t.lid?{tag:"lid",attrs:{jid:t.lid}}:null}parser(t){return t.tag==="lid"?t.attrs.val:null}};var rg=class{constructor(){this.protocols=[],this.users=[],this.context="interactive",this.mode="query"}withMode(t){return this.mode=t,this}withContext(t){return this.context=t,this}withUser(t){return this.users.push(t),this}parseUSyncQueryResult(t){if(t?.attrs.type!=="result")return;let o=Object.fromEntries(this.protocols.map(A=>[A.name,A.parser])),i={list:[],sideList:[]},e=le(t,"usync"),a=e?le(e,"list"):void 0;return a?.content&&Array.isArray(a.content)&&(i.list=a.content.reduce((A,r)=>{let s=r?.attrs.jid;if(s){let g=Array.isArray(r?.content)?Object.fromEntries(r.content.map(c=>{let I=c.tag,d=o[I];return d?[I,d(c)]:[I,null]}).filter(([,c])=>c!==null)):{};A.push({...g,id:s})}return A},[])),i}withDeviceProtocol(){return this.protocols.push(new nM),this}withContactProtocol(){return this.protocols.push(new sM),this}withStatusProtocol(){return this.protocols.push(new gM),this}withDisappearingModeProtocol(){return this.protocols.push(new cM),this}withBotProfileProtocol(){return this.protocols.push(new lM),this}withLIDProtocol(){return this.protocols.push(new pM),this}withUsernameProtocol(){return this.protocols.push(new IM),this}};var Wr=qe(Kr(),1);import{randomBytes as WH}from"crypto";import{URL as aZe}from"url";import{promisify as iZe}from"util";var dM=class{constructor(t={}){this.protocolVersion=5,this.sequence=0,this.events=[],this.buffer=[],Object.assign(this,t)}};import{EventEmitter as tZe}from"events";var hM=class extends tZe{constructor(t,o){super(),this.url=t,this.config=o,this.setMaxListeners(0)}};var EM=class extends hM{constructor(){super(...arguments),this.socket=null}get isOpen(){return this.socket?.readyState===Ho.OPEN}get isClosed(){return this.socket===null||this.socket?.readyState===Ho.CLOSED}get isClosing(){return this.socket===null||this.socket?.readyState===Ho.CLOSING}get isConnecting(){return this.socket?.readyState===Ho.CONNECTING}connect(){if(this.socket)return;this.socket=new Ho(this.url,{origin:Mf,headers:this.config.options?.headers,handshakeTimeout:this.config.connectTimeoutMs,timeout:this.config.connectTimeoutMs,agent:this.config.agent}),this.socket.setMaxListeners(0);let t=["close","error","upgrade","message","open","ping","pong","unexpected-response"];for(let o of t)this.socket?.on(o,(...i)=>this.emit(o,...i))}async close(){if(!this.socket)return;let t=new Promise(o=>{this.socket?.once("close",o)});this.socket.close(),await t,this.socket=null}send(t,o){return this.socket?.send(t,o),!!this.socket}};var VH=qe(Kr(),1);var rZe=(n,t,o,i)=>o({tag:"iq",attrs:{id:i(),type:"get",to:OA,xmlns:"w:mex"},content:[{tag:"query",attrs:{query_id:t},content:Buffer.from(JSON.stringify({variables:n}),"utf-8")}]}),Wf=async(n,t,o,i,e)=>{let a=await rZe(n,t,i,e),A=le(a,"result");if(A?.content){let s=JSON.parse(A.content.toString());if(s.errors&&s.errors.length>0){let c=s.errors.map(B=>B.message||"Unknown error").join(", "),I=s.errors[0],d=I.extensions?.error_code||400;throw new VH.Boom(`GraphQL server error: ${c}`,{statusCode:d,data:I})}let g=o?s?.data?.[o]:s?.data;if(typeof g<"u")return g}let r=(o||"").startsWith("xwa2_")?o.substring(5).replace(/_/g," "):o?.replace(/_/g," ");throw new VH.Boom(`Failed to ${r}, unexpected response structure.`,{statusCode:400,data:a})};var Hce=n=>{let{waWebSocketUrl:t,connectTimeoutMs:o,logger:i,keepAliveIntervalMs:e,browser:a,auth:A,printQRInTerminal:r,defaultQueryTimeoutMs:s,transactionOpts:g,qrTimeout:c,makeSignalRepository:I}=n,d=new dM,B=0,f=z7(),Q=()=>`${f}${se++}`;r&&i.warn({},"\u26A0\uFE0F The printQRInTerminal option has been deprecated. You will no longer receive QR codes in the terminal automatically. Please listen to the connection.update event yourself and handle the QR your way. You can remove this message by removing this opttion. This message will be removed in a future version."),a[1].toLocaleLowerCase().includes("android")&&i.warn("\u26A0\uFE0F Using the Android browser is experimental and may lead to unexpected behavior. Use at your own risk."),qf.map(de=>n.shouldSyncHistoryMessage({syncType:de})).filter(de=>de===!1).length===qf.length&&i.warn("\u26A0\uFE0F DANGER: DISABLING ALL SYNC BY shouldSyncHistoryMsg PREVENTS BAILEYS FROM ACCESSING INITIAL LID MAPPINGS, LEADING TO INSTABILIY AND SESSION ERRORS");let m=typeof t=="string"?new aZe(t):t;if(n.mobile||m.protocol==="tcp:")throw new Wr.Boom("Mobile API is not supported anymore",{statusCode:$t.loggedOut});m.protocol==="wss"&&A?.creds?.routingInfo&&m.searchParams.append("ED",A.creds.routingInfo.toString("base64url"));let _=Sr.generateKeyPair(),T=une({keyPair:_,NOISE_HEADER:fce,logger:i,routingInfo:A?.creds?.routingInfo}),R=new EM(m,n);R.connect();let K=iZe(R.send),L=async de=>{if(!R.isOpen)throw new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed});let ye=T.encodeFrame(de);await Qh(o,async(be,oA)=>{try{await K.call(R,ye),be()}catch(pA){oA(pA)}})},U=de=>{i.level==="trace"&&i.trace({xml:Gn(de),msg:"xml send"});let ye=l7(de);return L(ye)},z=async(de,ye=s)=>{let be,oA;try{return await Qh(ye,(FA,Kt)=>(be=st=>{FA(st)},oA=st=>{Kt(st||new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed}))},R.on(`TAG:${de}`,be),R.on("close",oA),R.on("error",oA),()=>Kt(new Wr.Boom("Query Cancelled"))))}catch(pA){if(pA instanceof Wr.Boom&&pA.output?.statusCode===$t.timedOut){i?.warn?.({msgId:de},"timed out waiting for message");return}throw pA}finally{be&&R.off(`TAG:${de}`,be),oA&&(R.off("close",oA),R.off("error",oA))}},q=async(de,ye)=>{de.attrs.id||(de.attrs.id=Q());let be=de.attrs.id,oA=await Qh(ye,async(pA,FA)=>{let Kt=z(be,ye).catch(FA);U(de).then(async()=>pA(await Kt)).catch(FA)});return oA&&"tag"in oA&&Ji(oA),oA},x=async()=>{let de=await q({tag:"iq",attrs:{to:OA,type:"get",xmlns:"encrypt"},content:[{tag:"digest",attrs:{}}]});if(!le(de,"digest"))throw await Xe(),new Error("encrypt/get digest returned no digest node")},G=async()=>{let de=(J.signedPreKey.keyId||0)+1,ye=await dD(J.signedIdentityKey,de);await q({tag:"iq",attrs:{to:OA,type:"set",xmlns:"encrypt"},content:[{tag:"rotate",attrs:{},content:[Rf(ye)]}]}),k.emit("creds.update",{signedPreKey:ye})},V=async de=>{if(de.protocols.length===0)throw new Wr.Boom("USyncQuery must have at least one protocol");let be=de.users.map(st=>({tag:"user",attrs:{jid:st.phone?void 0:st.id},content:de.protocols.map(Dr=>Dr.getUserElement(st)).filter(Dr=>Dr!==null)})),oA={tag:"list",attrs:{},content:be},pA={tag:"query",attrs:{},content:de.protocols.map(st=>st.getQueryElement())},FA={tag:"iq",attrs:{to:OA,type:"get",xmlns:"usync"},content:[{tag:"usync",attrs:{context:de.context,mode:de.mode,sid:Q(),last:"true",index:"0"},content:[pA,oA]}]},Kt=await q(FA);return de.parseUSyncQueryResult(Kt)},F=async(...de)=>{let ye=new rg,be=!1;for(let pA of de)if(qA(pA)){i?.warn("LIDs are not supported with onWhatsApp");continue}else{be||(be=!0,ye=ye.withContactProtocol());let FA=`+${pA.replace("+","").split("@")[0]?.split(":")[0]}`;ye.withUser(new tg().withPhone(FA))}if(ye.users.length===0)return[];let oA=await V(ye);if(oA)return oA.list.filter(pA=>!!pA.contact).map(({contact:pA,id:FA})=>({jid:FA,exists:pA}))},N=async de=>{let ye=new rg().withLIDProtocol().withContext("background");for(let oA of de)if(qA(oA)){i?.warn("LID user found in LID fetch call");continue}else ye.withUser(new tg().withId(oA));if(ye.users.length===0)return[];let be=await V(ye);return be?be.list.filter(oA=>!!oA.lid).map(({lid:oA,id:pA})=>({pn:pA,lid:oA})):[]},k=$ne(i),{creds:J}=A,$=Yne(A.keys,i,g),ie=I({creds:J,keys:$},i,N),pe,se=1,Te,Qe,ke=!1,Ne=[],We=(de,ye)=>{i.error({err:de},`unexpected error in '${ye}'`)},ve=async de=>{if(!R.isOpen)throw new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed});let ye,be,oA=Qh(o,(pA,FA)=>{ye=pA,be=ZH(FA),R.on("frame",ye),R.on("close",be),R.on("error",be)}).finally(()=>{R.off("frame",ye),R.off("close",be),R.off("error",be)});return de&&L(de).catch(be),oA},aA=async()=>{let de={clientHello:{ephemeral:_.public}};de=oe.HandshakeMessage.fromObject(de),i.info({browser:a,helloMsg:de},"connected to WA");let ye=oe.HandshakeMessage.encode(de).finish(),be=await ve(ye),oA=oe.HandshakeMessage.decode(be);i.trace({handshake:oA},"handshake recv from WA");let pA=T.processHandshake(oA,J.noiseKey),FA;J.me?(FA=cne(J.me.id,n),i.info({node:FA},"logging in...")):(FA=Ine(J,n),i.info({node:FA},"not logged in, attempting registration..."));let Kt=T.encrypt(oe.ClientPayload.encode(FA).finish());await L(oe.HandshakeMessage.encode({clientFinish:{static:pA,payload:Kt}}).finish()),await T.finishInit(),Ze()},fe=async()=>{let de=await q({tag:"iq",attrs:{id:Q(),xmlns:"encrypt",type:"get",to:OA},content:[{tag:"count",attrs:{}}]});return+le(de,"count").attrs.value},Ie=null,Xe=async(de=zf)=>{if(Ie){i.debug("Pre-key upload already in progress, waiting for completion"),await Ie;return}let ye=async be=>{i.info({count:de,retryCount:be},"uploading pre-keys");let oA=await $.transaction(async()=>{i.debug({requestedCount:de},"generating pre-keys with requested count");let{update:pA,node:FA}=await nne({creds:J,keys:$},de);return k.emit("creds.update",pA),FA},J?.me?.id||"upload-pre-keys");try{await q(oA),i.info({count:de},"uploaded pre-keys successfully")}catch(pA){if(i.error({uploadError:pA.toString(),count:de},"Failed to upload pre-keys to server"),be<3){let FA=Math.min(1e3*Math.pow(2,be),1e4);return i.info(`Retrying pre-key upload in ${FA}ms`),await new Promise(Kt=>setTimeout(Kt,FA)),ye(be+1)}throw pA}};Ie=Promise.race([ye(0),new Promise((be,oA)=>setTimeout(()=>oA(new Wr.Boom("Pre-key upload timeout",{statusCode:408})),Sce))]);try{await Ie}finally{Ie=null}},je=async()=>{let de=J.nextPreKeyId-1;return de<=0?{exists:!1,currentPreKeyId:0}:{exists:!!(await $.get("pre-key",[de.toString()]))[de.toString()],currentPreKeyId:de}},Oe=async()=>{try{let de=0,ye=await fe();ye===0?de=mce:de=zf;let{exists:be,currentPreKeyId:oA}=await je();i.info(`${ye} pre-keys found on server`),i.info(`Current prekey ID: ${oA}, exists in storage: ${be}`);let pA=ye<=de,FA=!be&&oA>0;if(pA||FA){let st=[];pA&&st.push(`server count low (${ye})`),FA&&st.push(`current prekey ${oA} missing from storage`),i.info(`Uploading PreKeys due to: ${st.join(", ")}`),await Xe(de)}else i.info(`PreKey validation passed - Server: ${ye}, Current prekey ${oA} exists`)}catch(de){i.error({error:de},"Failed to check/upload pre-keys during initialization")}},EA=async de=>{await T.decodeFrame(de,ye=>{pe=new Date;let be=!1;if(be=R.emit("frame",ye),!(ye instanceof Uint8Array)){let oA=ye.attrs.id;i.level==="trace"&&i.trace({xml:Gn(ye),msg:"recv xml"}),be=R.emit(`${Cce}${oA}`,ye)||be;let pA=ye.tag,FA=ye.attrs||{},Kt=Array.isArray(ye.content)?ye.content[0]?.tag:"";for(let st of Object.keys(FA))be=R.emit(`${SE}${pA},${st}:${FA[st]},${Kt}`,ye)||be,be=R.emit(`${SE}${pA},${st}:${FA[st]}`,ye)||be,be=R.emit(`${SE}${pA},${st}`,ye)||be;be=R.emit(`${SE}${pA},,${Kt}`,ye)||be,be=R.emit(`${SE}${pA}`,ye)||be,!be&&i.level==="debug"&&i.debug({unhandled:!0,msgId:oA,fromMe:!1,frame:ye},"communication recv")}})},hA=async de=>{if(ke){i.trace({trace:de?.stack},"connection already closed");return}if(ke=!0,i.info({trace:de?.stack},de?"connection errored":"connection closed"),clearInterval(Te),clearTimeout(Qe),R.removeAllListeners("close"),R.removeAllListeners("open"),R.removeAllListeners("message"),ie.close?.(),!R.isClosed&&!R.isClosing)try{await R.close()}catch{}for(let ye of Ne)try{await ye(de)}catch(be){i.error({err:be},"error in socket end handler")}k.emit("connection.update",{connection:"close",lastDisconnect:{error:de,date:new Date}}),k.removeAllListeners("connection.update"),k.destroy()},iA=async()=>{if(R.isOpen)return;if(R.isClosed||R.isClosing)throw new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed});let de,ye;await new Promise((be,oA)=>{de=()=>be(void 0),ye=ZH(oA),R.on("open",de),R.on("close",ye),R.on("error",ye)}).finally(()=>{R.off("open",de),R.off("close",ye),R.off("error",ye)})},Ze=()=>Te=setInterval(()=>{pe||(pe=new Date),Date.now()-pe.getTime()>e+5e3?hA(new Wr.Boom("Connection was lost",{statusCode:$t.connectionLost})):R.isOpen?q({tag:"iq",attrs:{id:Q(),to:OA,type:"get",xmlns:"w:p"},content:[{tag:"ping",attrs:{}}]}).catch(ye=>{i.error({trace:ye.stack},"error in sending keep alive")}):i.warn("keep alive called when WS not open")},e),bA=de=>q({tag:"iq",attrs:{to:OA,xmlns:"passive",type:"set"},content:[{tag:de,attrs:{}}]}),Be=async de=>{let ye=A.creds.me?.id;ye&&await U({tag:"iq",attrs:{to:OA,type:"set",id:Q(),xmlns:"md"},content:[{tag:"remove-companion-device",attrs:{jid:ye,reason:"user_initiated"}}]}),hA(new Wr.Boom(de||"Intentional Logout",{statusCode:$t.loggedOut}))},Re=async(de,ye)=>{let be=ye??$7(WH(5));if(ye&&ye?.length!==8)throw new Error("Custom pairing code must be exactly 8 chars");return A.creds.pairingCode=be,A.creds.me={id:yr(de,"s.whatsapp.net"),name:"~"},k.emit("creds.update",A.creds),await U({tag:"iq",attrs:{to:OA,type:"set",id:Q(),xmlns:"md"},content:[{tag:"link_code_companion_reg",attrs:{jid:A.creds.me.id,stage:"companion_hello",should_show_push_notification:"true"},content:[{tag:"link_code_pairing_wrapped_companion_ephemeral_pub",attrs:{},content:await Ue()},{tag:"companion_server_auth_key_pub",attrs:{},content:A.creds.noiseKey.public},{tag:"companion_platform_id",attrs:{},content:ZU(a)},{tag:"companion_platform_display",attrs:{},content:`${a[1]} (${a[0]})`},{tag:"link_code_pairing_nonce",attrs:{},content:"0"}]}]}),A.creds.pairingCode};async function Ue(){let de=WH(32),ye=WH(16),be=await hD(A.creds.pairingCode,de),oA=P7(A.creds.pairingEphemeralKeyPair.public,be,ye);return Buffer.concat([de,ye,oA])}let MA=de=>q({tag:"iq",attrs:{to:OA,id:Q(),xmlns:"w:stats"},content:[{tag:"add",attrs:{t:Math.round(Date.now()/1e3)+""},content:de}]});R.on("message",EA),R.on("open",async()=>{try{await aA()}catch(de){i.error({err:de},"error in validating connection"),hA(de)}}),R.on("error",ZH(hA)),R.on("close",()=>void hA(new Wr.Boom("Connection Terminated",{statusCode:$t.connectionClosed}))),R.on("CB:xmlstreamend",()=>void hA(new Wr.Boom("Connection Terminated by Server",{statusCode:$t.connectionClosed}))),R.on("CB:iq,type:set,pair-device",async de=>{let ye={tag:"iq",attrs:{to:OA,type:"result",id:de.attrs.id}};await U(ye);let be=le(de,"pair-device"),oA=PA(be,"ref"),pA=Buffer.from(J.noiseKey.public).toString("base64"),FA=Buffer.from(J.signedIdentityKey.public).toString("base64"),Kt=J.advSecretKey,st=c||6e4,Dr=()=>{if(!R.isOpen)return;let rr=oA.shift();if(!rr){hA(new Wr.Boom("QR refs attempts ended",{statusCode:$t.timedOut}));return}let Qo=rr.content.toString("utf-8"),$i=tse(Qo,pA,FA,Kt,a);k.emit("connection.update",{qr:$i}),Qe=setTimeout(Dr,st),st=c||2e4};Dr()}),R.on("CB:iq,,pair-success",async de=>{i.debug("pair success recv");try{_A(de);let{reply:ye,creds:be}=lne(de,J);i.info({me:be.me,platform:be.platform},"pairing configured successfully, expect to restart the connection..."),k.emit("creds.update",be),k.emit("connection.update",{isNewLogin:!0,qr:void 0}),await U(ye),wA()}catch(ye){i.info({trace:ye.stack},"error in pairing"),hA(ye)}}),R.on("CB:success",async de=>{try{_A(de),await Oe(),await bA("active");try{await x()}catch(ye){i.warn({e:ye},"failed to run digest after login")}}catch(ye){i.warn({err:ye},"failed to send initial passive iq")}if(i.info("opened connection to WA"),clearTimeout(Qe),k.emit("creds.update",{me:{...A.creds.me,lid:de.attrs.lid}}),k.emit("connection.update",{connection:"open"}),wA(),de.attrs.lid&&A.creds.me?.id){let ye=de.attrs.lid;process.nextTick(async()=>{try{let be=A.creds.me.id;await ie.lidMapping.storeLIDPNMappings([{lid:ye,pn:be}]);let{user:oA,device:pA}=fA(be);await A.keys.set({"device-list":{[oA]:[pA?.toString()||"0"]}}),await ie.migrateSession(be,ye),i.info({myPN:be,myLID:ye},"Own LID session created successfully")}catch(be){i.error({error:be,lid:ye},"Failed to create own LID session")}})}}),R.on("CB:stream:error",de=>{let[ye]=_s(de);i.error({reasonNode:ye,fullErrorNode:de},"stream errored out");let{reason:be,statusCode:oA}=W7(de);hA(new Wr.Boom(`Stream Errored (${be})`,{statusCode:oA,data:ye||de}))}),R.on("CB:failure",de=>{let ye=+(de.attrs.reason||500);hA(new Wr.Boom("Connection Failure",{statusCode:ye,data:de.attrs}))}),R.on("CB:ib,,downgrade_webclient",()=>{hA(new Wr.Boom("Multi-device beta not joined",{statusCode:$t.multideviceMismatch}))}),R.on("CB:ib,,offline_preview",async de=>{i.info("offline preview received",JSON.stringify(de)),await U({tag:"ib",attrs:{},content:[{tag:"offline_batch",attrs:{count:"100"}}]})}),R.on("CB:ib,,edge_routing",de=>{let ye=le(de,"edge_routing"),be=le(ye,"routing_info");be?.content&&(A.creds.routingInfo=Buffer.from(be?.content),k.emit("creds.update",A.creds))});let Ke=!1;process.nextTick(()=>{J.me?.id&&(k.buffer(),Ke=!0),k.emit("connection.update",{connection:"connecting",receivedPendingNotifications:!1,qr:void 0})}),R.on("CB:ib,,offline",de=>{let be=+(le(de,"offline")?.attrs.count||0);i.info(`handled ${be} offline messages/notifications`),Ke&&(k.flush(),i.trace("flushed events for initial buffer")),k.emit("connection.update",{receivedPendingNotifications:!0})}),k.on("creds.update",de=>{let ye=de.me?.name;J.me?.name!==ye&&(i.debug({name:ye},"updated pushName"),U({tag:"presence",attrs:{name:ye}}).catch(be=>{i.warn({trace:be.stack},"error in sending presence update on name change")})),Object.assign(J,de)});let _A=({attrs:de})=>{let ye=de?.t;if(!ye)return;let be=Number(ye);if(Number.isNaN(be)||be<=0)return;let oA=Date.now();B=be*1e3-oA,i.debug({offset:B},"calculated server time offset")},at=()=>{let de=3*YH.Day;return((Date.now()+B+de)%YH.Week).toString()},wA=async()=>{if(!R.isOpen)return;let de={tag:"ib",attrs:{},content:[{tag:"unified_session",attrs:{id:at()}}]};try{await U(de)}catch(ye){i.debug({error:ye},"failed to send unified_session telemetry")}},lt=de=>{Ne.push(de)},Er=async()=>{let de=await Wf({},ca.REACHOUT_TIMELOCK,Da.xwa2_fetch_account_reachout_timelock,q,Q),ye={isActive:!!de?.is_active,timeEnforcementEnds:de?.time_enforcement_ends&&de?.time_enforcement_ends!=="0"?new Date(parseInt(de.time_enforcement_ends,10)*1e3):void 0,enforcementType:de?.enforcement_type??Vc.DEFAULT};return k.emit("connection.update",{reachoutTimeLock:ye}),ye},UA=async()=>Wf({input:{type:"INDIVIDUAL_NEW_CHAT_MSG"}},ca.MESSAGE_CAPPING_INFO,Da.xwa2_message_capping_info,q,Q);return{type:"md",ws:R,ev:k,authState:{creds:J,keys:$},signalRepository:ie,get user(){return A.creds.me},generateMessageTag:Q,query:q,waitForMessage:z,waitForSocketOpen:iA,sendRawMessage:L,sendNode:U,logout:Be,end:hA,registerSocketEndHandler:lt,onUnexpectedError:We,uploadPreKeys:Xe,uploadPreKeysToServerIfRequired:Oe,digestKeyBundle:x,rotateSignedPreKey:G,requestPairingCode:Re,updateServerTimeOffset:_A,sendUnifiedSession:wA,wamBuffer:d,waitForConnectionUpdate:q7(k),sendWAMBuffer:MA,executeUSyncQuery:V,onWhatsApp:F,fetchAccountReachoutTimelock:Er,fetchNewChatMessageCap:UA}};function ZH(n){return t=>{n(new Wr.Boom(`WebSocket Error (${t?.message})`,{statusCode:X7(t),data:t}))}}var oZe=(n,t)=>{let o={tag:"picture",attrs:{type:n,query:"url"}};return t?.length&&(o.content=t),[o]},Kce=n=>{let{logger:t,markOnlineOnConnect:o,fireInitQueries:i,appStateMacVerification:e,shouldIgnoreJid:a,shouldSyncHistoryMessage:A,getMessage:r}=n,s=Hce(n),{ev:g,ws:c,authState:I,generateMessageTag:d,sendNode:B,query:f,signalRepository:Q,onUnexpectedError:y,sendUnifiedSession:m,registerSocketEndHandler:_}=s,T=Q.lidMapping.getLIDForPN.bind(Q.lidMapping),R,K={privacyTokenOn1to1:!0,profilePicPrivacyToken:!0,lidTrustedTokenIssueToLid:!1},L=ga.Connecting,U=ac(),z=ac(),q=ac(),x=ac(),G,V={initialBootstrapComplete:!1,recentSyncComplete:!1},F,N=new Set,k=n.placeholderResendCache||new $g({stdTTL:mI.MSG_RETRY,useClones:!1}),J=async W=>{let{[W]:X}=await I.keys.get("app-state-sync-key",[W]);return X},$=async(W=!1)=>{if(!R||W){let{content:X}=await f({tag:"iq",attrs:{xmlns:"privacy",to:OA,type:"get"},content:[{tag:"privacy",attrs:{}}]});R=xF(X?.[0],"category")}return R},ie=async(W,X)=>{await f({tag:"iq",attrs:{xmlns:"privacy",to:OA,type:"set"},content:[{tag:"privacy",attrs:{},content:[{tag:"category",attrs:{name:W,value:X}}]}]})},pe=async W=>{await ie("messages",W)},se=async W=>{await ie("calladd",W)},Te=async W=>{await ie("last",W)},Qe=async W=>{await ie("online",W)},ke=async W=>{await ie("profile",W)},Ne=async W=>{await ie("status",W)},We=async W=>{await ie("readreceipts",W)},ve=async W=>{await ie("groupadd",W)},aA=async W=>{await f({tag:"iq",attrs:{xmlns:"disappearing_mode",to:OA,type:"set"},content:[{tag:"disappearing_mode",attrs:{duration:W.toString()}}]})},fe=async()=>{let W=await f({tag:"iq",attrs:{xmlns:"bot",to:OA,type:"get"},content:[{tag:"bot",attrs:{v:"2"}}]}),X=le(W,"bot"),re=[];for(let ne of PA(X,"section"))if(ne.attrs.type==="all")for(let we of PA(ne,"bot"))re.push({jid:we.attrs.jid,personaId:we.attrs.persona_id});return re},Ie=async(...W)=>{let X=new rg().withStatusProtocol();for(let ne of W)X.withUser(new tg().withId(ne));let re=await s.executeUSyncQuery(X);if(re)return re.list},Xe=async(...W)=>{let X=new rg().withDisappearingModeProtocol();for(let ne of W)X.withUser(new tg().withId(ne));let re=await s.executeUSyncQuery(X);if(re)return re.list},je=async(W,X,re)=>{let ne;if(!W)throw new DI.Boom("Illegal no-jid profile update. Please specify either your ID or the ID of the chat you wish to update");uA(W)!==uA(I.creds.me.id)?ne=uA(W):ne=void 0;let{img:we}=await ub(X,re);await f({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:profile:picture",...ne?{target:ne}:{}},content:[{tag:"picture",attrs:{type:"image"},content:we}]})},Oe=async W=>{let X;if(!W)throw new DI.Boom("Illegal no-jid profile update. Please specify either your ID or the ID of the chat you wish to update");uA(W)!==uA(I.creds.me.id)?X=uA(W):X=void 0,await f({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:profile:picture",...X?{target:X}:{}}})},EA=async W=>{await f({tag:"iq",attrs:{to:OA,type:"set",xmlns:"status"},content:[{tag:"status",attrs:{},content:Buffer.from(W,"utf-8")}]})},hA=async W=>{await UA({pushNameSetting:W},"")},iA=async()=>{let W=await f({tag:"iq",attrs:{xmlns:"blocklist",to:OA,type:"get"}}),X=le(W,"list");return PA(X,"item").map(re=>re.attrs.jid)},Ze=async(W,X)=>{let re=uA(W),ne,we;if(qA(re)||Ia(re)){if(ne=re,X==="block"){let Ee=await Q.lidMapping.getPNForLID(re);if(!Ee)throw new DI.Boom(`Unable to resolve PN JID for LID: ${W}`,{statusCode:400});we=uA(Ee)}}else if(_t(re)||mr(re)){let Ee=await Q.lidMapping.getLIDForPN(re);if(!Ee)throw new DI.Boom(`Unable to resolve LID for PN JID: ${W}`,{statusCode:400});ne=Ee,X==="block"&&(we=uA(re))}else throw new DI.Boom(`Invalid jid: ${W}`,{statusCode:400});let Ce={action:X,jid:ne};if(X==="block"){if(!we)throw new DI.Boom(`pn_jid required for block: ${W}`,{statusCode:400});Ce.pn_jid=we}await f({tag:"iq",attrs:{xmlns:"blocklist",to:OA,type:"set"},content:[{tag:"item",attrs:Ce}]})},bA=async W=>{let X=await f({tag:"iq",attrs:{to:"s.whatsapp.net",xmlns:"w:biz",type:"get"},content:[{tag:"business_profile",attrs:{v:"244"},content:[{tag:"profile",attrs:{jid:W}}]}]}),re=le(X,"business_profile"),ne=le(re,"profile");if(ne){let we=le(ne,"address"),Ce=le(ne,"description"),Ee=le(ne,"website"),me=le(ne,"email"),Je=le(le(ne,"categories"),"category"),IA=le(ne,"business_hours"),yA=IA?PA(IA,"business_hours_config"):void 0,XA=Ee?.content?.toString();return{wid:ne.attrs?.jid,address:we?.content?.toString(),description:Ce?.content?.toString()||"",website:XA?[XA]:[],email:me?.content?.toString(),category:Je?.content?.toString(),business_hours:{timezone:IA?.attrs?.timezone,business_config:yA?.map(({attrs:vA})=>vA)}}}},Be=async(W,X)=>{t.info({fromTimestamp:X},"clean dirty bits "+W),await B({tag:"iq",attrs:{to:OA,type:"set",xmlns:"urn:xmpp:whatsapp:dirty",id:d()},content:[{tag:"clean",attrs:{type:W,...X?{timestamp:X.toString()}:null}}]})},Re=W=>({onMutation(X){vne(X,g,I.creds.me,W?{accountSettings:I.creds.accountSettings}:void 0,t)}}),Ue=g.createBufferedFunction(async(W,X)=>{let re=new Map,ne=async me=>{if(re.has(me))return re.get(me)??void 0;let Je=await J(me);return re.set(me,Je??null),Je},we={},Ce={};await I.keys.transaction(async()=>{let me=new Set(W),Je={},IA=new Set;for(;me.size;){let yA={},XA=[];for(let $A of me){let tA=(await I.keys.get("app-state-sync-version",[$A]))[$A];tA?(tA=DU(tA),typeof we[$A]>"u"&&(we[$A]=tA.version)):tA=Sb(),yA[$A]=tA;let et=IA.has($A);et&&IA.delete($A),t.info(`resyncing ${$A} from v${tA.version}${et?" (forcing snapshot)":""}`),XA.push({tag:"collection",attrs:{name:$A,version:tA.version.toString(),return_snapshot:(et||!tA.version).toString()}})}let vA=await f({tag:"iq",attrs:{to:OA,xmlns:"w:sync:app:state",type:"set"},content:[{tag:"sync",attrs:{},content:XA}]}),YA=await Tne(vA,n?.options);for(let $A in YA){let Ge=$A,{patches:tA,hasMorePatches:et,snapshot:Zr}=YA[Ge];try{if(Zr){let{state:ar,mutationMap:yo}=await Rne(Ge,Zr,ne,we[Ge],e.snapshot,t);yA[Ge]=ar,Object.assign(Ce,yo),t.info(`restored state of ${Ge} from snapshot to v${ar.version} with mutations`),await I.keys.set({"app-state-sync-version":{[Ge]:ar}})}if(tA.length){let{state:ar,mutationMap:yo}=await bU(Ge,tA,yA[Ge],ne,n.options,we[Ge],t,e.patch);await I.keys.set({"app-state-sync-version":{[Ge]:ar}}),t.info(`synced ${Ge} to v${ar.version}`),we[Ge]=ar.version,Object.assign(Ce,yo)}et?t.info(`${Ge} has more patches...`):me.delete(Ge)}catch(ar){Je[Ge]=(Je[Ge]||0)+1;let yo={name:Ge,attempt:Je[Ge],version:yA[Ge].version,statusCode:ar.output?.statusCode,errorType:ar.name,error:ar.stack};Pf(ar)&&Je[Ge]>=OU?(t.warn(yo,`${Ge} blocked on missing key from v${yA[Ge].version}, parking after ${Je[Ge]} attempts`),N.add(Ge),me.delete(Ge)):Pf(ar)?(t.info(yo,`${Ge} blocked on missing key from v${yA[Ge].version}, retrying with snapshot`),IA.add(Ge)):bne(ar,Je[Ge])?(t.warn(yo,`failed to sync ${Ge} from v${yA[Ge].version}, giving up`),me.delete(Ge)):(t.info(yo,`failed to sync ${Ge} from v${yA[Ge].version}, forcing snapshot retry`),IA.add(Ge))}}}},I?.creds?.me?.id||"resync-app-state");let{onMutation:Ee}=Re(X);for(let me in Ce)Ee(Ce[me])}),MA=async(W,X="preview",re)=>{let ne=uA(W),we=_t(ne)||qA(ne),Ce=I.creds.me,Ee=Ce&&(ne===uA(Ce.id)||Ce.lid&&ne===uA(Ce.lid)),me;K.profilePicPrivacyToken&&we&&!Ee&&(me=await jU({authState:I,jid:ne,getLIDForPN:T})),W=uA(W);let Je=await f({tag:"iq",attrs:{target:W,to:OA,type:"get",xmlns:"w:profile:picture"},content:oZe(X,me)},re);return le(Je,"picture")?.attrs?.url},Ke=async(W,X,re)=>{let ne=await f({tag:"call",attrs:{id:d(),to:"@call"},content:[{tag:"link_create",attrs:{media:W},content:X?[{tag:"event",attrs:{start_time:String(X.startTime)}}]:void 0}]},re);return le(ne,"link_create")?.attrs?.token},_A=async(W,X)=>{let re=I.creds.me,ne=W==="available";if(ne||W==="unavailable"){if(!re.name){t.warn("no name present, ignoring presence update request...");return}g.emit("connection.update",{isOnline:ne}),ne&&m(),await B({tag:"presence",attrs:{name:re.name.replace(/@/g,""),type:W}})}else{let{server:we}=fA(X);await B({tag:"chatstate",attrs:{from:we==="lid"?re.lid:re.id,to:X},content:[{tag:W==="recording"?"composing":W,attrs:W==="recording"?{media:"audio"}:{}}]})}},at=async W=>{let X=uA(W),ne=_t(X)||qA(X)?await jU({authState:I,jid:X,getLIDForPN:T}):void 0;return B({tag:"presence",attrs:{to:W,id:d(),type:"subscribe"},content:ne})},wA=({tag:W,attrs:X,content:re})=>{let ne,we=X.from,Ce=X.participant||X.from;if(!(a(we)&&we!==OA)){if(W==="presence")ne={lastKnownPresence:X.type==="unavailable"?"unavailable":"available",lastSeen:X.last&&X.last!=="deny"?+X.last:void 0,groupOnlineCount:X.count?+X.count:void 0};else if(Array.isArray(re)){let[Ee]=re,me=Ee.tag;me==="paused"&&(me="available"),Ee.attrs?.media==="audio"&&(me="recording"),ne={lastKnownPresence:me}}else t.error({tag:W,attrs:X,content:re},"recv invalid presence node");ne&&g.emit("presence.update",{id:we,presences:{[Ce]:ne}})}},lt=async W=>{let X=W.type,re=I.creds.myAppStateKeyId;if(!re)throw new DI.Boom("App state key not present!",{statusCode:400});let ne,we;if(await q.mutex(async()=>{await I.keys.transaction(async()=>{t.debug({patch:W},"applying app patch"),await Ue([X],!1);let{[X]:Ce}=await I.keys.get("app-state-sync-version",[X]);ne=Ce?DU(Ce):Sb(),we=await Mne(W,re,ne,J);let{patch:Ee,state:me}=we,Je={tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:sync:app:state"},content:[{tag:"sync",attrs:{},content:[{tag:"collection",attrs:{name:X,version:(me.version-1).toString(),return_snapshot:"false"},content:[{tag:"patch",attrs:{},content:oe.SyncdPatch.encode(Ee).finish()}]}]}]};await f(Je),await I.keys.set({"app-state-sync-version":{[X]:me}})},I?.creds?.me?.id||"app-patch")}),n.emitOwnEvents){let{onMutation:Ce}=Re(!1),{mutationMap:Ee}=await bU(X,[{...we.patch,version:{version:we.state.version}}],ne,J,n.options,void 0,t);for(let me in Ee)Ce(Ee[me])}},Er=async()=>{let W=await f({tag:"iq",attrs:{to:OA,xmlns:"abt",type:"get"},content:[{tag:"props",attrs:{protocol:"1",...I?.creds?.lastPropHash?{hash:I.creds.lastPropHash}:{}}}]}),X=le(W,"props"),re={};X&&(X.attrs?.hash&&(I.creds.lastPropHash=X?.attrs?.hash,g.emit("creds.update",I.creds)),re=xF(X,"prop"));let ne=re[10518]??re.privacy_token_sending_on_all_1_on_1_messages;ne!==void 0&&(K.privacyTokenOn1to1=ne==="true"||ne==="1");let we=re[9666]??re.profile_scraping_privacy_token_in_photo_iq;we!==void 0&&(K.profilePicPrivacyToken=we==="true"||we==="1");let Ce=re[14303]??re.lid_trusted_token_issue_to_lid;return Ce!==void 0&&(K.lidTrustedTokenIssueToLid=Ce==="true"||Ce==="1"),t.debug({serverProps:K},"fetched props"),re},UA=(W,X)=>{let re=kne(W,X);return lt(re)},de=W=>UA({disableLinkPreviews:{isPreviewsDisabled:W}},""),ye=(W,X,re)=>UA({star:{messages:X,star:re}},W),be=(W,X)=>UA({contact:X},W),oA=W=>UA({contact:null},W),pA=(W,X)=>UA({addLabel:{...X}},W),FA=(W,X)=>UA({addChatLabel:{labelId:X}},W),Kt=(W,X)=>UA({removeChatLabel:{labelId:X}},W),st=(W,X,re)=>UA({addMessageLabel:{messageId:X,labelId:re}},W),Dr=(W,X,re)=>UA({removeMessageLabel:{messageId:X,labelId:re}},W),rr=W=>UA({quickReply:W},""),Qo=W=>UA({quickReply:{timestamp:W,deleted:!0}},""),$i=async()=>{await Promise.all([Er(),iA(),$()])},Ae=g.createBufferedFunction(async(W,X)=>{if(g.emit("messages.upsert",{messages:[W],type:X}),W.pushName){let Ce=W.key.fromMe?I.creds.me.id:W.key.participant||W.key.remoteJid;Ce=uA(Ce),W.key.fromMe||g.emit("contacts.update",[{id:Ce,notify:W.pushName,verifiedName:W.verifiedBizName}]),W.key.fromMe&&W.pushName&&I.creds.me?.name!==W.pushName&&g.emit("creds.update",{me:{...I.creds.me,name:W.pushName}})}let re=mb(W.message),ne=re?A(re)&&qf.includes(re.syncType):!1;if(re&&ne){let Ce=re.syncType;Ce===oe.HistorySync.HistorySyncType.INITIAL_BOOTSTRAP&&!V.initialBootstrapComplete&&(V.initialBootstrapComplete=!0,g.emit("messaging-history.status",{syncType:Ce,status:"complete",explicit:!0})),Ce===oe.HistorySync.HistorySyncType.RECENT&&re.progress===100&&!V.recentSyncComplete&&(V.recentSyncComplete=!0,clearTimeout(F),F=void 0,g.emit("messaging-history.status",{syncType:Ce,status:"complete",explicit:!0})),Ce===oe.HistorySync.HistorySyncType.RECENT&&!V.recentSyncComplete&&(clearTimeout(F),F=setTimeout(()=>{V.recentSyncComplete||(V.recentSyncComplete=!0,g.emit("messaging-history.status",{syncType:oe.HistorySync.HistorySyncType.RECENT,status:"paused",explicit:!1})),F=void 0},yce))}re&&L===ga.AwaitingInitialSync&&(G&&(clearTimeout(G),G=void 0),ne?(L=ga.Syncing,t.info("Transitioned to Syncing state")):(L=ga.Online,t.info("History sync skipped, transitioning to Online state and flushing buffer"),g.flush()));let we=async()=>{if(L===ga.Syncing){N.clear(),t.info("Doing app state sync"),await Ue(t7,!0),L=ga.Online,t.info("App state sync complete, transitioning to Online state and flushing buffer"),g.flush();let Ce=(I.creds.accountSyncCounter||0)+1;g.emit("creds.update",{accountSyncCounter:Ce})}};await Promise.all([(async()=>{ne&&await we()})(),Xne(W,{signalRepository:Q,shouldProcessHistoryMsg:ne,placeholderResendCache:k,ev:g,creds:I.creds,keyStore:I.keys,logger:t,options:n.options,getMessage:r})]),W.message?.protocolMessage?.appStateSyncKeyShare&&L===ga.Syncing&&(t.info("App state sync key arrived, triggering app state sync"),await we())});return c.on("CB:presence",wA),c.on("CB:chatstate",wA),c.on("CB:ib,,dirty",async W=>{let{attrs:X}=le(W,"dirty");switch(X.type){case"account_sync":if(X.timestamp){let{lastAccountSyncTimestamp:ne}=I.creds;ne&&await Be("account_sync",ne),ne=+X.timestamp,g.emit("creds.update",{lastAccountSyncTimestamp:ne})}break;case"groups":break;default:t.info({node:W},"received unknown sync");break}}),g.on("connection.update",({connection:W,receivedPendingNotifications:X})=>{if(W==="close"&&(N.clear(),clearTimeout(F),F=void 0),W==="open"&&(i&&$i().catch(ne=>y(ne,"init queries")),_A(o?"available":"unavailable").catch(ne=>y(ne,"presence update requests"))),!X||L!==ga.Connecting)return;if(V.initialBootstrapComplete=!1,V.recentSyncComplete=!1,clearTimeout(F),F=void 0,L=ga.AwaitingInitialSync,t.info("Connection is now AwaitingInitialSync, buffering events"),g.buffer(),!A(oe.Message.HistorySyncNotification.create({syncType:oe.HistorySync.HistorySyncType.RECENT}))){t.info("History sync is disabled by config, not waiting for notification. Transitioning to Online."),L=ga.Online,setTimeout(()=>g.flush(),0);return}if(I.creds.accountSyncCounter>0){t.info("Reconnection with existing sync data, skipping history sync wait. Transitioning to Online."),L=ga.Online,setTimeout(()=>g.flush(),0);return}t.info("First connection, awaiting history sync notification with a 20s timeout."),G&&clearTimeout(G),G=setTimeout(()=>{if(L===ga.AwaitingInitialSync){t.warn("Timeout in AwaitingInitialSync, forcing state to Online and flushing buffer"),L=ga.Online,g.flush();let ne=(I.creds.accountSyncCounter||0)+1;g.emit("creds.update",{accountSyncCounter:ne})}},2e4)}),g.on("creds.update",({myAppStateKeyId:W})=>{if(!W||N.size===0)return;if(L===ga.Syncing){N.clear();return}let X=[...N];N.clear(),t.info({collections:X},"app state sync key arrived, re-syncing blocked collections"),Ue(X,!1).catch(re=>y(re,"blocked collections resync"))}),g.on("lid-mapping.update",async({lid:W,pn:X})=>{try{await Q.lidMapping.storeLIDPNMappings([{lid:W,pn:X}])}catch(re){t.warn({lid:W,pn:X,error:re},"Failed to store LID-PN mapping")}}),_(()=>{G&&(clearTimeout(G),G=void 0),!n.placeholderResendCache&&k.close&&k.close(),L=ga.Connecting,R=void 0}),{...s,serverProps:K,createCallLink:Ke,getBotListV2:fe,messageMutex:U,receiptMutex:z,appStatePatchMutex:q,notificationMutex:x,fetchPrivacySettings:$,upsertMessage:Ae,appPatch:lt,sendPresenceUpdate:_A,presenceSubscribe:at,profilePictureUrl:MA,fetchBlocklist:iA,fetchStatus:Ie,fetchDisappearingDuration:Xe,updateProfilePicture:je,removeProfilePicture:Oe,updateProfileStatus:EA,updateProfileName:hA,updateBlockStatus:Ze,updateDisableLinkPreviewsPrivacy:de,updateCallPrivacy:se,updateMessagesPrivacy:pe,updateLastSeenPrivacy:Te,updateOnlinePrivacy:Qe,updateProfilePicturePrivacy:ke,updateStatusPrivacy:Ne,updateReadReceiptsPrivacy:We,updateGroupsAddPrivacy:ve,updateDefaultDisappearingMode:aA,getBusinessProfile:bA,resyncAppState:Ue,chatModify:UA,cleanDirtyBits:Be,addOrEditContact:be,removeContact:oA,placeholderResendCache:k,addLabel:pA,addChatLabel:FA,removeChatLabel:Kt,addMessageLabel:st,removeMessageLabel:Dr,star:ye,addOrEditQuickReply:rr,removeQuickReply:Qo}};var xce=n=>{let t=Kce(n),{authState:o,ev:i,query:e,upsertMessage:a}=t,A=async(g,c,I)=>e({tag:"iq",attrs:{type:c,xmlns:"w:g2",to:g},content:I}),r=async g=>{let c=await A(g,"get",[{tag:"query",attrs:{request:"interactive"}}]);return OE(c)},s=async()=>{let g=await e({tag:"iq",attrs:{to:"@g.us",xmlns:"w:g2",type:"get"},content:[{tag:"participating",attrs:{},content:[{tag:"participants",attrs:{}},{tag:"description",attrs:{}}]}]}),c={},I=le(g,"groups");if(I){let d=PA(I,"group");for(let B of d){let f=OE({tag:"result",attrs:{},content:[B]});c[f.id]=f}}return t.ev.emit("groups.update",Object.values(c)),c};return t.ws.on("CB:ib,,dirty",async g=>{let{attrs:c}=le(g,"dirty");c.type==="groups"&&(await s(),await t.cleanDirtyBits("groups"))}),{...t,groupMetadata:r,groupCreate:async(g,c)=>{let I=jr(),d=await A("@g.us","set",[{tag:"create",attrs:{subject:g,key:I},content:c.map(B=>({tag:"participant",attrs:{jid:B}}))}]);return OE(d)},groupLeave:async g=>{await A("@g.us","set",[{tag:"leave",attrs:{},content:[{tag:"group",attrs:{id:g}}]}])},groupUpdateSubject:async(g,c)=>{await A(g,"set",[{tag:"subject",attrs:{},content:Buffer.from(c,"utf-8")}])},groupRequestParticipantsList:async g=>{let c=await A(g,"get",[{tag:"membership_approval_requests",attrs:{}}]),I=le(c,"membership_approval_requests");return PA(I,"membership_approval_request").map(B=>B.attrs)},groupRequestParticipantsUpdate:async(g,c,I)=>{let d=await A(g,"set",[{tag:"membership_requests_action",attrs:{},content:[{tag:I,attrs:{},content:c.map(y=>({tag:"participant",attrs:{jid:y}}))}]}]),B=le(d,"membership_requests_action"),f=le(B,I);return PA(f,"participant").map(y=>({status:y.attrs.error||"200",jid:y.attrs.jid}))},groupParticipantsUpdate:async(g,c,I)=>{let d=await A(g,"set",[{tag:I,attrs:{},content:c.map(Q=>({tag:"participant",attrs:{jid:Q}}))}]),B=le(d,I);return PA(B,"participant").map(Q=>({status:Q.attrs.error||"200",jid:Q.attrs.jid,content:Q}))},groupUpdateDescription:async(g,c)=>{let d=(await r(g)).descId??null;await A(g,"set",[{tag:"description",attrs:{...c?{id:jr()}:{delete:"true"},...d?{prev:d}:{}},content:c?[{tag:"body",attrs:{},content:Buffer.from(c,"utf-8")}]:void 0}])},groupInviteCode:async g=>{let c=await A(g,"get",[{tag:"invite",attrs:{}}]);return le(c,"invite")?.attrs.code},groupRevokeInvite:async g=>{let c=await A(g,"set",[{tag:"invite",attrs:{}}]);return le(c,"invite")?.attrs.code},groupAcceptInvite:async g=>{let c=await A("@g.us","set",[{tag:"invite",attrs:{code:g}}]);return le(c,"group")?.attrs.jid},groupRevokeInviteV4:async(g,c)=>!!await A(g,"set",[{tag:"revoke",attrs:{},content:[{tag:"participant",attrs:{jid:c}}]}]),groupAcceptInviteV4:i.createBufferedFunction(async(g,c)=>{g=typeof g=="string"?{remoteJid:g}:g;let I=await A(c.groupJid,"set",[{tag:"accept",attrs:{code:c.inviteCode,expiration:c.inviteExpiration.toString(),admin:g.remoteJid}}]);return g.id&&(c=oe.Message.GroupInviteMessage.fromObject(c),c.inviteExpiration=0,c.inviteCode="",i.emit("messages.update",[{key:g,update:{message:{groupInviteMessage:c}}}])),await a({key:{remoteJid:c.groupJid,id:jr(t.user?.id),fromMe:!1,participant:g.remoteJid},messageStubType:RA.GROUP_PARTICIPANT_ADD,messageStubParameters:[JSON.stringify(o.creds.me)],participant:g.remoteJid,messageTimestamp:ba()},"notify"),I.attrs.from}),groupGetInviteInfo:async g=>{let c=await A("@g.us","get",[{tag:"invite",attrs:{code:g}}]);return OE(c)},groupToggleEphemeral:async(g,c)=>{let I=c?{tag:"ephemeral",attrs:{expiration:c.toString()}}:{tag:"not_ephemeral",attrs:{}};await A(g,"set",[I])},groupSettingUpdate:async(g,c)=>{await A(g,"set",[{tag:c,attrs:{}}])},groupMemberAddMode:async(g,c)=>{await A(g,"set",[{tag:"member_add_mode",attrs:{},content:c}])},groupJoinApprovalMode:async(g,c)=>{await A(g,"set",[{tag:"membership_approval_mode",attrs:{},content:[{tag:"group_join",attrs:{state:c}}]}])},groupFetchAllParticipating:s}},OE=n=>{let t=le(n,"group");if(!t){let B=le(n,"error");if(B){let f=B.attrs.code?+B.attrs.code:500,Q=B.attrs.text||"group metadata query failed";throw new CM.Boom(Q,{statusCode:f,data:B})}throw new CM.Boom("Invalid group metadata response: missing node",{data:n})}if(!t.attrs.id)throw new CM.Boom("Invalid group metadata response: missing group id",{data:t});let o=le(t,"description"),i,e,a,A,r,s;o&&(i=jA(o,"body"),a=o.attrs.participant?uA(o.attrs.participant):void 0,A=o.attrs.participant_pn?uA(o.attrs.participant_pn):void 0,r=o.attrs.participant_username||void 0,s=+o.attrs.t,e=o.attrs.id);let g=t.attrs.id.includes("@")?t.attrs.id:yr(t.attrs.id,"g.us"),c=le(t,"ephemeral")?.attrs.expiration,I=jA(t,"member_add_mode")==="all_member_add";return{id:g,notify:t.attrs.notify,addressingMode:t.attrs.addressing_mode==="lid"?yB.LID:yB.PN,subject:t.attrs.subject,subjectOwner:t.attrs.s_o,subjectOwnerPn:t.attrs.s_o_pn,subjectOwnerUsername:t.attrs.s_o_username,subjectTime:+t.attrs.s_t,size:t.attrs.size?+t.attrs.size:PA(t,"participant").length,creation:+t.attrs.creation,owner:t.attrs.creator?uA(t.attrs.creator):void 0,ownerPn:t.attrs.creator_pn?uA(t.attrs.creator_pn):void 0,ownerUsername:t.attrs.creator_username||void 0,owner_country_code:t.attrs.creator_country_code,desc:i,descId:e,descOwner:a,descOwnerPn:A,descOwnerUsername:r,descTime:s,linkedParent:le(t,"linked_parent")?.attrs.jid||void 0,restrict:!!le(t,"locked"),announce:!!le(t,"announcement"),isCommunity:!!le(t,"parent"),isCommunityAnnounce:!!le(t,"default_sub_group"),joinApprovalMode:!!le(t,"membership_approval_mode"),memberAddMode:I,participants:PA(t,"participant").map(({attrs:B})=>({id:B.jid,phoneNumber:qA(B.jid)&&_t(B.phone_number)?B.phone_number:void 0,lid:_t(B.jid)&&qA(B.lid)?B.lid:void 0,username:B.participant_username||B.username||void 0,admin:B.type||null})),ephemeralDuration:c?+c:void 0}};var bE=qe(Kr(),1);var nZe=n=>{let{id:t,thread_metadata:o,viewer_metadata:i}=n;return{id:t,owner:void 0,name:o.name.text,creation_time:parseInt(o.creation_time,10),description:o.description.text,invite:o.invite,subscribers:parseInt(o.subscribers_count,10),verification:o.verification,picture:{id:o.picture.id,directPath:o.picture.direct_path},mute_state:i.mute}},sZe=n=>typeof n!="object"||n===null?null:"id"in n&&typeof n.id=="string"?n:"result"in n&&typeof n.result=="object"&&n.result!==null&&"id"in n.result?n.result:null,Yce=n=>{let t=xce(n),{query:o,generateMessageTag:i}=t,e=(A,r,s)=>Wf(A,r,s,o,i),a=async(A,r)=>{let s={newsletter_id:A,updates:{...r,settings:null}};return e(s,ca.UPDATE_METADATA,"xwa2_newsletter_update")};return{...t,newsletterCreate:async(A,r)=>{let g=await e({input:{name:A,description:r??null}},ca.CREATE,Da.xwa2_newsletter_create);return nZe(g)},newsletterUpdate:a,newsletterSubscribers:async A=>e({newsletter_id:A},ca.SUBSCRIBERS,Da.xwa2_newsletter_subscribers),newsletterMetadata:async(A,r)=>{let s={fetch_creation_time:!0,fetch_full_image:!0,fetch_viewer_metadata:!0,input:{key:r,type:A.toUpperCase()}},g=await e(s,ca.METADATA,Da.xwa2_newsletter_metadata);return sZe(g)},newsletterFollow:A=>e({newsletter_id:A},ca.FOLLOW,Da.xwa2_newsletter_join_v2),newsletterUnfollow:A=>e({newsletter_id:A},ca.UNFOLLOW,Da.xwa2_newsletter_leave_v2),newsletterMute:A=>e({newsletter_id:A},ca.MUTE,Da.xwa2_newsletter_mute_v2),newsletterUnmute:A=>e({newsletter_id:A},ca.UNMUTE,Da.xwa2_newsletter_unmute_v2),newsletterUpdateName:async(A,r)=>await a(A,{name:r}),newsletterUpdateDescription:async(A,r)=>await a(A,{description:r}),newsletterUpdatePicture:async(A,r)=>{let{img:s}=await ub(r);return await a(A,{picture:s.toString("base64")})},newsletterRemovePicture:async A=>await a(A,{picture:""}),newsletterReactMessage:async(A,r,s)=>{await o({tag:"message",attrs:{to:A,...s?{}:{edit:"7"},type:"reaction",server_id:r,id:i()},content:[{tag:"reaction",attrs:s?{code:s}:{}}]})},newsletterFetchMessages:async(A,r,s,g)=>{let c={count:r.toString()};return typeof s=="number"&&(c.since=s.toString()),g&&(c.after=g.toString()),await o({tag:"iq",attrs:{id:i(),type:"get",xmlns:"newsletter",to:A},content:[{tag:"message_updates",attrs:c}]})},subscribeNewsletterUpdates:async A=>{let r=await o({tag:"iq",attrs:{id:i(),type:"set",xmlns:"newsletter",to:A},content:[{tag:"live_updates",attrs:{},content:[]}]}),g=le(r,"live_updates")?.attrs?.duration;return g?{duration:g}:null},newsletterAdminCount:async A=>(await e({newsletter_id:A},ca.ADMIN_COUNT,Da.xwa2_newsletter_admin_count)).admin_count,newsletterChangeOwner:async(A,r)=>{await e({newsletter_id:A,user_id:r},ca.CHANGE_OWNER,Da.xwa2_newsletter_change_owner)},newsletterDemote:async(A,r)=>{await e({newsletter_id:A,user_id:r},ca.DEMOTE,Da.xwa2_newsletter_demote)},newsletterDelete:async A=>{await e({newsletter_id:A},ca.DELETE,Da.xwa2_newsletter_delete_v2)}}};var jce=n=>{let{logger:t,linkPreviewImageThumbnailWidth:o,generateHighQualityLinkPreview:i,options:e,patchMessageBeforeSending:a,cachedGroupMetadata:A,enableRecentMessageCache:r,maxMsgRetryCount:s}=n,g=Yce(n),{ev:c,authState:I,messageMutex:d,signalRepository:B,upsertMessage:f,query:Q,fetchPrivacySettings:y,sendNode:m,groupMetadata:_,groupToggleEphemeral:T,registerSocketEndHandler:R}=g,K=B.lidMapping.getLIDForPN.bind(B.lidMapping),L=new Set,U=n.userDevicesCache||new $g({stdTTL:mI.USER_DEVICES,useClones:!1}),z=ac(),q=r?new Nb(t,s):null,x=Lce(),G,V=cU,F=async(fe=!1)=>{let Ie=await G;return(!Ie||fe||new Date().getTime()-Ie.fetchDate.getTime()>Ie.ttl*1e3)&&(G=(async()=>{let Xe=await Q({tag:"iq",attrs:{type:"set",xmlns:"w:m",to:OA},content:[{tag:"media_conn",attrs:{}}]}),je=le(Xe,"media_conn"),Oe={hosts:PA(je,"host").map(({attrs:EA})=>({hostname:EA.hostname,maxContentLengthBytes:+EA.maxContentLengthBytes})),auth:je.attrs.auth,ttl:+je.attrs.ttl,fetchDate:new Date};return t.debug("fetched media conn"),Oe.hosts[0]&&(V=Oe.hosts[0].hostname),Oe})()),G},N=async(fe,Ie,Xe,je)=>{if(!Xe||Xe.length===0)throw new bE.Boom("missing ids in receipt");let Oe={tag:"receipt",attrs:{id:Xe[0]}};(je==="read"||je==="read-self")&&(Oe.attrs.t=ba().toString()),je==="sender"&&(_t(fe)||qA(fe))?(Oe.attrs.recipient=fe,Oe.attrs.to=Ie):(Oe.attrs.to=fe,Ie&&(Oe.attrs.participant=Ie)),je&&(Oe.attrs.type=je);let hA=Xe.slice(1);hA.length&&(Oe.content=[{tag:"list",attrs:{},content:hA.map(iA=>({tag:"item",attrs:{id:iA}}))}]),t.debug({attrs:Oe.attrs,messageIds:Xe},"sending receipt for messages"),await m(Oe)},k=async(fe,Ie)=>{let Xe=Zoe(fe);for(let{jid:je,participant:Oe,messageIds:EA}of Xe)await N(je,Oe,EA,Ie)},J=async fe=>{let Xe=(await y()).readreceipts==="all"?"read":"read-self";await k(fe,Xe)},$=async(fe,Ie,Xe)=>{let je=[];Ie||t.debug("not using cache for devices");let Oe=[],EA=fe.map(Be=>{let Re=fA(Be),Ue=Re?.user,MA=Re?.device;return typeof MA=="number"&&MA>=0&&Ue?(je.push({user:Ue,device:MA,jid:Be}),null):(Be=uA(Be),{jid:Be,user:Ue})}).filter(Be=>Be!==null),hA;if(Ie&&U.mget){let Be=EA.map(Re=>Re?.user).filter(Boolean);hA=await U.mget(Be)}for(let{jid:Be,user:Re}of EA)if(Ie){let Ue=hA?.[Re]||(U.mget?void 0:await U.get(Re));if(Ue){let MA=Ue.map(Ke=>({...Ke,jid:yr(Ke.user,Ke.server,Ke.device)}));je.push(...MA),t.trace({user:Re},"using cache for devices")}else Oe.push(Be)}else Oe.push(Be);if(!Oe.length)return je;let iA=new Set;for(let Be of Oe)if(qA(Be)||Ia(Be)){let Re=fA(Be)?.user;Re&&iA.add(Re)}let Ze=new rg().withContext("message").withDeviceProtocol().withLIDProtocol();for(let Be of Oe)Ze.withUser(new tg().withId(Be));let bA=await g.executeUSyncQuery(Ze);if(bA){let Be=bA.list.filter(Ke=>!!Ke.lid);if(Be.length>0){t.trace("Storing LID maps from device call"),await B.lidMapping.storeLIDPNMappings(Be.map(Ke=>({lid:Ke.lid,pn:Ke.id})));try{let Ke=Be.map(_A=>_A.lid);Ke.length&&await pe(Ke,!0)}catch(Ke){t.warn({e:Ke,count:Be.length},"failed to assert sessions for newly mapped LIDs")}}let Re=one(bA?.list,I.creds.me.id,I.creds.me.lid,Xe),Ue={};for(let Ke of Re)Ue[Ke.user]=Ue[Ke.user]||[],Ue[Ke.user]?.push(Ke);for(let[Ke,_A]of Object.entries(Ue)){let at=iA.has(Ke);for(let wA of _A){let lt=at?yr(Ke,wA.server,wA.device):yr(wA.user,wA.server,wA.device);je.push({...wA,jid:lt}),t.debug({user:wA.user,device:wA.device,finalJid:lt,usedLid:at},"Processed device with LID priority")}}await z.mutex(async()=>{if(U.mset)await U.mset(Object.entries(Ue).map(([Ke,_A])=>({key:Ke,value:_A})));else for(let Ke in Ue)Ue[Ke]&&await U.set(Ke,Ue[Ke])});let MA={};for(let[Ke,_A]of Object.entries(Ue))_A&&_A.length>0&&(MA[Ke]=_A.map(at=>at.device?.toString()||"0"));if(Object.keys(MA).length>0)try{await I.keys.set({"device-list":MA}),t.debug({userCount:Object.keys(MA).length},"stored user device lists for bulk migration")}catch(Ke){t.warn({error:Ke},"failed to store user device lists")}}return je},ie=(fe,Ie)=>Qe(fe,{protocolMessage:{type:oe.Message.ProtocolMessage.Type.GROUP_MEMBER_LABEL_CHANGE,memberLabel:{label:Ie?.slice(0,30),labelTimestamp:ba()}}},{additionalNodes:[{tag:"meta",attrs:{tag_reason:"user_update",appdata:"member_tag"},content:void 0}]}),pe=async(fe,Ie)=>{let Xe=!1,je=[...new Set(fe)],Oe=[];t.debug({jids:fe},"assertSessions call with jids");for(let EA of je)!Ie&&(await B.validateSession(EA)).exists||Oe.push(EA);if(Oe.length){let EA=[...Oe.filter(iA=>!!qA(iA)||!!Ia(iA)),...(await B.lidMapping.getLIDsForPNs(Oe.filter(iA=>!!_t(iA)||!!mr(iA)))||[]).map(iA=>iA.lid)];t.debug({jidsRequiringFetch:Oe,wireJids:EA},"fetching sessions");let hA=await Q({tag:"iq",attrs:{xmlns:"encrypt",type:"get",to:OA},content:[{tag:"key",attrs:{},content:EA.map(iA=>{let Ze={jid:iA};return Ie&&(Ze.reason="identity"),{tag:"user",attrs:Ze}})}]});await ine(hA,B),Xe=!0}return Xe},se=async fe=>{if(!I.creds.me?.id)throw new bE.Boom("Not authenticated");let Ie={protocolMessage:{peerDataOperationRequestMessage:fe,type:oe.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_MESSAGE}},Xe=uA(I.creds.me.id);return await Qe(Xe,Ie,{additionalAttributes:{category:"peer",push_priority:"high_force"},additionalNodes:[{tag:"meta",attrs:{appdata:"default"}}]})},Te=async(fe,Ie,Xe,je)=>{if(!fe.length)return{nodes:[],shouldIncludeDeviceIdentity:!1};let Oe=await a(Ie,fe),EA=Array.isArray(Oe)?Oe:fe.map(Ue=>({recipientJid:Ue,message:Oe})),hA=!1,iA=I.creds.me.id,Ze=I.creds.me?.lid,bA=Ze?fA(Ze)?.user:null,Be=EA.map(async({recipientJid:Ue,message:MA})=>{try{if(!Ue)return null;let Ke=MA;if(je){let{user:lt}=fA(Ue),{user:Er}=fA(iA),UA=bA;(lt===Er||UA&<===UA)&&!(Ue===iA||Ze&&Ue===Ze)&&(Ke=je,t.debug({jid:Ue,targetUser:lt},"Using DSM for own device"))}let _A=fh(Ke),at=Ue;return await x.mutex(at,async()=>{let{type:lt,ciphertext:Er}=await B.encryptMessage({jid:Ue,data:_A});return lt==="pkmsg"&&(hA=!0),{tag:"to",attrs:{jid:Ue},content:[{tag:"enc",attrs:{v:"2",type:lt,...Xe||{}},content:Er}]}})}catch(Ke){return t.error({jid:Ue,err:Ke},"Failed to encrypt for recipient"),null}}),Re=(await Promise.all(Be)).filter(Ue=>Ue!==null);if(fe.length>0&&Re.length===0)throw new bE.Boom("All encryptions failed",{statusCode:500});return{nodes:Re,shouldIncludeDeviceIdentity:hA}},Qe=async(fe,Ie,{messageId:Xe,participant:je,additionalAttributes:Oe,additionalNodes:EA,useUserDevicesCache:hA,useCachedGroupMetadata:iA,statusJidList:Ze})=>{let bA=jne(I.creds),Be=I.creds.me?.lid,Re=!!je?.jid,Ue=Re,MA="status@broadcast",{user:Ke,server:_A}=fA(fe),at=_A==="g.us",wA=fe===MA,lt=_A==="lid",Er=_A==="newsletter",UA=at||wA,de=fe;Xe=Xe||jr(bA),hA=hA!==!1,iA=iA!==!1&&!wA;let ye=[],be=wA?MA:de,oA=[],pA=[],FA,Kt={deviceSentMessage:{destinationJid:be,message:Ie},messageContextInfo:Ie.messageContextInfo},st={};if(je){!at&&!wA&&(Oe={...Oe,device_fanout:"false"});let{user:Dr,device:rr}=fA(je.jid);pA.push({user:Dr,device:rr,jid:je.jid})}return await I.keys.transaction(async()=>{let Dr=Ne(Ie);if(Dr&&(st.mediatype=Dr),Er){let Ce=a?await a(Ie,[]):Ie,Ee=e$(Ce);oA.push({tag:"plaintext",attrs:{},content:Ee});let me={tag:"message",attrs:{to:fe,id:Xe,type:ke(Ie),...Oe||{}},content:oA};t.debug({msgId:Xe},`sending newsletter message to ${fe}`),await m(me);return}if((Ra(Ie)?.pinInChatMessage||Ra(Ie)?.reactionMessage)&&(st["decrypt-fail"]="hide"),UA&&!Re){let[Ce,Ee]=await Promise.all([(async()=>{let tA=iA&&A?await A(fe):void 0;return tA&&Array.isArray(tA?.participants)?t.trace({jid:fe,participants:tA.participants.length},"using cached group metadata"):wA||(tA=await _(fe)),tA})(),(async()=>!je&&!wA?(await I.keys.get("sender-key-memory",[fe]))[fe]||{}:{})()]),me=Ce?Ce.participants.map(tA=>tA.id):[];Ce?.ephemeralDuration&&Ce.ephemeralDuration>0&&(Oe={...Oe,expiration:Ce.ephemeralDuration.toString()}),wA&&Ze&&me.push(...Ze);let Je=await $(me,!!hA,!1);pA.push(...Je),at&&(Oe={...Oe,addressing_mode:Ce?.addressingMode||"lid"});let IA=await a(Ie);if(Array.isArray(IA))throw new bE.Boom("Per-jid patching is not supported in groups");let yA=fh(IA);FA=IA;let vA=(Oe?.addressing_mode||Ce?.addressingMode||"lid")==="lid"&&Be?Be:bA,{ciphertext:YA,senderKeyDistributionMessage:$A}=await B.encryptGroupMessage({group:be,data:yA,meId:vA}),Ge=[];for(let tA of pA){let et=tA.jid;(!!!Ee[et]||je)&&!Ia(et)&&!mr(et)&&tA.device!==99&&(Ge.push(et),Ee[et]=!0)}if(Ge.length){t.debug({senderKeyJids:Ge},"sending new sender key");let tA={senderKeyDistributionMessage:{axolotlSenderKeyDistributionMessage:$A,groupId:be}};await pe(Ge);let Zr=await Te(Ge,tA,st);Ue=Ue||Zr.shouldIncludeDeviceIdentity,ye.push(...Zr.nodes)}oA.push({tag:"enc",attrs:{v:"2",type:"skmsg",...st},content:YA}),await I.keys.set({"sender-key-memory":{[fe]:Ee}})}else{let Ce=bA;lt&&Be?(Ce=Be,t.debug({to:fe,ownId:Ce},"Using LID identity for @lid conversation")):t.debug({to:fe,ownId:Ce},"Using PN identity for @s.whatsapp.net conversation");let{user:Ee}=fA(Ce);if(!je){let tA=await a(Ie,[fe]);FA=Array.isArray(tA)?tA.find(et=>et.recipientJid===fe)||tA[0]:tA}if(!Re){let tA=lt?"lid":"s.whatsapp.net";if(pA.push({user:Ke,device:0,jid:yr(Ke,tA,0)}),Ke!==Ee){let et=lt?"lid":"s.whatsapp.net",Zr=lt&&Be?fA(Be).user:fA(bA).user;pA.push({user:Zr,device:0,jid:yr(Zr,et,0)})}if(Oe?.category!=="peer"){pA.length=0;let et=lt&&Be?yr(fA(Be)?.user,"lid",void 0):yr(fA(bA)?.user,"s.whatsapp.net",void 0),Zr=await $([et,fe],!0,!1);pA.push(...Zr),t.debug({deviceCount:pA.length,devices:pA.map(ar=>`${ar.user}:${ar.device}@${fA(ar.jid)?.server}`)},"Device enumeration complete with unified addressing")}}let me=[],Je=[],IA=[],{user:yA}=fA(bA),{user:XA}=Be?fA(Be):{user:null};for(let{user:tA,jid:et}of pA){if(et===bA||Be&&et===Be){t.debug({jid:et,meId:bA,meLid:Be},"Skipping exact sender device (whatsmeow pattern)");continue}tA===yA||tA===XA?Je.push(et):IA.push(et),me.push(et)}await pe(me);let[{nodes:vA,shouldIncludeDeviceIdentity:YA},{nodes:$A,shouldIncludeDeviceIdentity:Ge}]=await Promise.all([Te(Je,Kt||Ie,st),Te(IA,Ie,st,Kt)]);ye.push(...vA),ye.push(...$A),(Je.length>0||IA.length>0)&&(st.phash=Y7([...Je,...IA])),Ue=Ue||YA||Ge}if(Re){let Ce=qA(je.jid),Ee=Rt(je.jid,Ce?Be:bA),me=Ie;if(UA){let XA;if(Be&&await B.hasSenderKey({group:be,meId:Be})?XA=Be:await B.hasSenderKey({group:be,meId:bA})&&(XA=bA),XA)try{let vA=await B.getSenderKeyDistributionMessage({group:be,meId:XA});me={...Ie,senderKeyDistributionMessage:{groupId:be,axolotlSenderKeyDistributionMessage:vA}}}catch(vA){t.warn({err:vA,jid:be},"failed to build SKDM for retry, sending without it")}}let Je=Ee?fh({deviceSentMessage:{destinationJid:be,message:me}}):fh(me),{type:IA,ciphertext:yA}=await B.encryptMessage({data:Je,jid:je.jid});oA.push({tag:"enc",attrs:{v:"2",type:IA,count:je.count.toString()},content:yA})}if(ye.length)if(Oe?.category==="peer"){let Ce=ye[0]?.content?.[0];Ce&&oA.push(Ce)}else oA.push({tag:"participants",attrs:{},content:ye});let rr={tag:"message",attrs:{id:Xe,to:be,type:ke(Ie),...Oe||{}},content:oA};if(je?xr(be)?(rr.attrs.to=be,rr.attrs.participant=je.jid):Rt(je.jid,bA)?(rr.attrs.to=je.jid,rr.attrs.recipient=be):rr.attrs.to=je.jid:rr.attrs.to=be,Ue&&(rr.content.push({tag:"device-identity",attrs:{},content:kf(I.creds.account,!0)}),t.debug({jid:fe},"adding device identity")),!Er&&!Re&&FA?.messageContextInfo?.messageSecret&&Qb(FA))try{let Ce=fh(FA),Ee={id:Xe,fromMe:!0,remoteJid:be,participant:je?.jid},me=await Joe(Ce,FA,Ee);me&&(rr.content.push(me),t.trace({jid:fe},"added reporting token to message"))}catch(Ce){t.warn({jid:fe,trace:Ce?.stack},"failed to attach reporting token")}let Qo=Oe?.category==="peer",$i=!at&&!Re&&!wA&&!Er&&!Qo,Ae=$i?await Xs(be,K):be,X=($i?await I.keys.get("tctoken",[Ae]):{})[Ae],re=X?.token;if(re?.length&&gp(X?.timestamp)){t.debug({jid:be,timestamp:X?.timestamp},"tctoken expired, clearing"),re=void 0;let Ce=X?.senderTimestamp!==void 0?{token:Buffer.alloc(0),senderTimestamp:X.senderTimestamp}:null;try{await I.keys.set({tctoken:{[Ae]:Ce}})}catch(Ee){t.debug({jid:be,err:Ee?.message},"failed to persist tctoken expiry cleanup")}}re?.length&&g.serverProps.privacyTokenOn1to1&&rr.content.push({tag:"tctoken",attrs:{},content:re}),EA&&EA.length>0&&rr.content.push(...EA),t.debug({msgId:Xe},`sending message to ${ye.length} devices`),await m(rr);let ne=!!Ra(Ie)?.protocolMessage,we=be===s7||c7(be)||ph(be);if($i&&!ne&&!we&&Wne(X?.senderTimestamp)&&!L.has(Ae)){L.add(Ae);let Ce=ba(),Ee=B.lidMapping.getPNForLID.bind(B.lidMapping);Lf(be,g.serverProps.lidTrustedTokenIssueToLid,K,Ee).then(me=>We([me],Ce)).then(async me=>{await hE({result:me,fallbackJid:Ae,keys:I.keys,getLIDForPN:K});let IA=(await I.keys.get("tctoken",[Ae]))[Ae],yA=await dE(I.keys,[Ae]);await I.keys.set({tctoken:{[Ae]:{token:Buffer.alloc(0),...IA,senderTimestamp:Ce},...yA}})}).catch(me=>{t.debug({jid:be,err:me?.message},"fire-and-forget tctoken issuance failed")}).finally(()=>{L.delete(Ae)})}q&&!je&&q.addRecentMessage(be,Xe,Ie)},bA),Xe},ke=fe=>{let Ie=Ra(fe);return Ie?Ie.reactionMessage||Ie.encReactionMessage?"reaction":Ie.pollCreationMessage||Ie.pollCreationMessageV2||Ie.pollCreationMessageV3||Ie.pollUpdateMessage?"poll":Ie.eventMessage?"event":Ne(Ie)!==""?"media":"text":"text"},Ne=fe=>fe.imageMessage?"image":fe.videoMessage?fe.videoMessage.gifPlayback?"gif":"video":fe.audioMessage?fe.audioMessage.ptt?"ptt":"audio":fe.contactMessage?"vcard":fe.documentMessage?"document":fe.contactsArrayMessage?"contact_array":fe.liveLocationMessage?"livelocation":fe.stickerMessage?"sticker":fe.listMessage?"list":fe.listResponseMessage?"list_response":fe.buttonsResponseMessage?"buttons_response":fe.orderMessage?"order":fe.productMessage?"product":fe.interactiveResponseMessage?"native_flow_response":fe.groupInviteMessage?"url":"",We=async(fe,Ie)=>{let Xe=(Ie??ba()).toString();return await Q({tag:"iq",attrs:{to:OA,type:"set",xmlns:"privacy"},content:[{tag:"tokens",attrs:{},content:fe.map(Oe=>({tag:"token",attrs:{jid:uA(Oe),t:Xe,type:"trusted_contact"}}))}]})},ve=Goe(n,F),aA=XF(c,"messages.media-update");return R(()=>{!n.userDevicesCache&&U.close&&U.close(),G=void 0,q&&q.clear()}),{...g,userDevicesCache:U,devicesMutex:z,issuePrivacyTokens:We,assertSessions:pe,relayMessage:Qe,sendReceipt:N,sendReceipts:k,readMessages:J,refreshMediaConn:F,getMediaHost:()=>V,waUploadToServer:ve,fetchPrivacySettings:y,sendPeerDataOperationMessage:se,createParticipantNodes:Te,getUSyncDevices:$,messageRetryManager:q,updateMemberLabel:ie,updateMediaMessage:async fe=>{let Ie=Xoe(fe.message),Xe=Ie.mediaKey,je=I.creds.me.id,Oe=Loe(fe.key,Xe,je),EA;if(await Promise.all([m(Oe),aA(async hA=>{let iA=hA.find(Ze=>Ze.key.id===fe.key.id);if(iA){if(iA.error)EA=iA.error;else try{let Ze=Hoe(iA.media,Xe,iA.key.id);if(Ze.result!==oe.MediaRetryNotification.ResultType.SUCCESS){let bA=oe.MediaRetryNotification.ResultType[Ze.result];throw new bE.Boom(`Media re-upload failed by device (${bA})`,{data:Ze,statusCode:IU(Ze.result)||404})}Ie.directPath=Ze.directPath,Ie.url=bf(Ie.directPath,V),t.debug({directPath:Ze.directPath,key:iA.key},"media update successful")}catch(Ze){EA=Ze}return!0}})]),EA)throw EA;return c.emit("messages.update",[{key:fe.key,update:{message:fe.message}}]),fe},sendMessage:async(fe,Ie,Xe={})=>{let je=I.creds.me.id;if(typeof Ie=="object"&&"disappearingMessagesInChat"in Ie&&typeof Ie.disappearingMessagesInChat<"u"&&xr(fe)){let{disappearingMessagesInChat:Oe}=Ie;await T(fe,typeof Oe=="boolean"?Oe?Nf:0:Oe)}else{let Oe=await Voe(fe,Ie,{logger:t,userJid:je,getUrlInfo:Ue=>Vne(Ue,{thumbnailWidth:o,fetchOpts:{timeout:3e3,...e||{}},logger:t,uploadImage:i?ve:void 0}),getProfilePicUrl:g.profilePictureUrl,getCallLink:g.createCallLink,upload:ve,mediaCache:n.mediaCache,options:n.options,messageId:jr(g.user?.id),...Xe}),EA="event"in Ie&&!!Ie.event,hA="delete"in Ie&&!!Ie.delete,iA="edit"in Ie&&!!Ie.edit,Ze="pin"in Ie&&!!Ie.pin,bA="poll"in Ie&&!!Ie.poll,Be={},Re=[];return hA?xr(Ie.delete?.remoteJid)&&!Ie.delete?.fromMe?Be.edit="8":Be.edit="7":iA?Be.edit="1":Ze?Be.edit="2":bA?Re.push({tag:"meta",attrs:{polltype:"creation"}}):EA&&Re.push({tag:"meta",attrs:{event_type:"creation"}}),await Qe(fe,Oe.message,{messageId:Oe.key.id,useCachedGroupMetadata:Xe.useCachedGroupMetadata,additionalAttributes:Be,statusJidList:Xe.statusJidList,additionalNodes:Re}),n.emitOwnEvents&&process.nextTick(async()=>{await d.mutex(()=>f(Oe,"append"))}),Oe}}}};var gZe=new Set(Object.values(Vc));function cZe(n){return typeof n=="string"&&gZe.has(n)}var Jce=n=>{let{logger:t,retryRequestDelayMs:o,maxMsgRetryCount:i,getMessage:e,shouldIgnoreJid:a,enableAutoSessionRecreation:A}=n,r=jce(n),{userDevicesCache:s,devicesMutex:g,ev:c,authState:I,ws:d,messageMutex:B,notificationMutex:f,receiptMutex:Q,signalRepository:y,query:m,upsertMessage:_,resyncAppState:T,onUnexpectedError:R,assertSessions:K,sendNode:L,relayMessage:U,sendReceipt:z,uploadPreKeys:q,sendPeerDataOperationMessage:x,messageRetryManager:G,registerSocketEndHandler:V,issuePrivacyTokens:F,fetchAccountReachoutTimelock:N,placeholderResendCache:k}=r,J=y.lidMapping.getLIDForPN.bind(y.lidMapping),$=ac(),ie=n.msgRetryCounterCache||new $g({stdTTL:mI.MSG_RETRY,useClones:!1}),pe=n.callOfferCache||new $g({stdTTL:mI.CALL_OFFER,useClones:!1}),se=new $g({stdTTL:5,useClones:!1}),Te=!1,Qe=async(Ae,W,X)=>{if(!I.creds.me?.id)throw new Zf.Boom("Not authenticated");let re={historySyncOnDemandRequest:{chatJid:W.remoteJid,oldestMsgFromMe:W.fromMe,oldestMsgId:W.id,oldestMsgTimestampMs:X,onDemandMsgCount:Ae},peerDataOperationRequestType:oe.Message.PeerDataOperationRequestType.HISTORY_SYNC_ON_DEMAND};return x(re)},ke=async(Ae,W)=>{if(!I.creds.me?.id)throw new Zf.Boom("Not authenticated");if(await k.get(Ae?.id)){t.debug({messageKey:Ae},"already requested resend");return}else await k.set(Ae?.id,W||!0);if(await kB(2e3),!await k.get(Ae?.id))return t.debug({messageKey:Ae},"message received while resend requested"),"RESOLVED";let X={placeholderMessageResendRequest:[{messageKey:Ae}],peerDataOperationRequestType:oe.Message.PeerDataOperationRequestType.PLACEHOLDER_MESSAGE_RESEND};return setTimeout(async()=>{await k.get(Ae?.id)&&(t.debug({messageKey:Ae},"PDO message without response after 8 seconds. Phone possibly offline"),await k.del(Ae?.id))},8e3),x(X)},Ne=async Ae=>{let W=le(Ae,"update");if(W){let X=W.attrs?.op_name;if(!X){t.warn({node:Gn(Ae)},"mex notification missing op_name, fallback to legacy"),await aA(Ae);return}let re;try{re=JSON.parse(W.content.toString())}catch(we){t.error({err:we,opName:X},"failed to parse mex notification JSON");return}if(re.errors?.length){t.warn({errors:re.errors,opName:X},"mex notification has GQL errors");return}let ne=re.data;if(!ne){t.warn({opName:X},"mex notification has null data");return}switch(t.debug({opName:X},"processing mex notification"),X){case"NotificationUserReachoutTimelockUpdate":We(ne);break;case"MessageCappingInfoNotification":ve(ne);break;case"NotificationNewsletterUpdate":case"NotificationLinkedProfilesUpdates":case"NotificationNewsletterAdminPromote":case"NotificationNewsletterAdminDemote":case"NotificationNewsletterUserSettingChange":case"NotificationNewsletterJoin":case"NotificationNewsletterLeave":case"NotificationNewsletterStateChange":case"NotificationNewsletterAdminMetadataUpdate":case"NotificationNewsletterOwnerUpdate":case"NotificationNewsletterAdminInviteRevoke":case"NotificationNewsletterWamoSubStatusChange":case"NotificationNewsletterBlockUser":case"NotificationNewsletterPaidPartnership":case"NotificationNewsletterMilestone":case"NewsletterResponseStateUpdate":await aA(Ae);break;default:t.debug({opName:X},"unhandled mex notification");break}return}await aA(Ae)},We=Ae=>{let W=Ae.xwa2_notify_account_reachout_timelock;if(!W){t.warn("reachout timelock notification missing payload");return}if(!W.is_active){t.info("reachout timelock restriction lifted"),c.emit("connection.update",{reachoutTimeLock:{isActive:!1,enforcementType:Vc.DEFAULT}});return}let X=W.time_enforcement_ends?new Date(parseInt(W.time_enforcement_ends,10)*1e3):new Date(Date.now()+6e4),re=cZe(W.enforcement_type)?W.enforcement_type:Vc.DEFAULT;t.info({enforcementType:re,timeEnforcementEnds:X},"reachout timelock restriction set"),c.emit("connection.update",{reachoutTimeLock:{isActive:!0,timeEnforcementEnds:X,enforcementType:re}})},ve=Ae=>{let W=Ae.xwa2_notify_new_chat_messages_capping_info_update;if(!W){t.warn("message capping notification missing payload");return}t.info({payload:W},"received message capping update"),c.emit("message-capping.update",W)},aA=async Ae=>{let W=le(Ae,"mex"),X=W?.content?null:le(Ae,"update")||_s(Ae)[0],re=W?.content?W:X;if(!re?.content){t.warn({node:Gn(Ae)},"invalid mex newsletter notification");return}let ne;try{let Ee=re.content;if(Array.isArray(Ee)){t.warn({payloadNode:re},"invalid mex newsletter notification payload format");return}let me=typeof Ee=="string"?Buffer.from(Ee,"binary"):Buffer.from(Ee);ne=JSON.parse(me.toString())}catch(Ee){t.error({err:Ee,node:Gn(Ae)},"failed to parse mex newsletter notification");return}let we=ne?.operation??re?.attrs?.op_name,Ce=ne?.updates;if(!Ce){let Ee=ne?.data?.xwa2_notify_linked_profiles;Ee&&(Ce=[Ee])}if(!Ce||!we){t.warn({data:ne},"invalid mex newsletter notification content");return}switch(t.info({operation:we,updates:Ce},"got mex newsletter notification"),we){case"NotificationNewsletterUpdate":for(let Ee of Ce)Ee.jid&&Ee.settings&&Object.keys(Ee.settings).length>0&&c.emit("newsletter-settings.update",{id:Ee.jid,update:Ee.settings});break;case"NotificationNewsletterAdminPromote":for(let Ee of Ce)Ee.jid&&Ee.user&&c.emit("newsletter-participants.update",{id:Ee.jid,author:Ae.attrs.from,user:Ee.user,new_role:"ADMIN",action:"promote"});break;case"NotificationLinkedProfilesUpdates":for(let Ee of Ce){let me=Ee?.jid,Je=Array.isArray(Ee?.added_profiles)?Ee.added_profiles:[],IA=[];for(let yA of Je){let XA=typeof yA=="string"?yA:yA?.pn??yA?.jid??null;if(me&&XA){let vA={lid:me,pn:XA};c.emit("lid-mapping.update",vA),IA.push(vA)}}await y.lidMapping.storeLIDPNMappings(IA)}break;default:t.info({operation:we,data:ne},"unhandled mex newsletter notification");break}},fe=async Ae=>{let W=Ae.attrs.from,X=_s(Ae),re=Ae.attrs.participant;for(let ne of X)switch(t.debug({from:W,child:ne},"got newsletter notification"),ne.tag){case"reaction":{let we={id:W,server_id:ne.attrs.message_id,reaction:{code:jA(ne,"reaction"),count:1}};c.emit("newsletter.reaction",we);break}case"view":{let we={id:W,server_id:ne.attrs.message_id,count:parseInt(ne.content?.toString()||"0",10)};c.emit("newsletter.view",we);break}case"participant":{let we={id:W,author:re,user:ne.attrs.jid,action:ne.attrs.action,new_role:ne.attrs.role};c.emit("newsletter-participants.update",we);break}case"update":{let we=le(ne,"settings");if(we){let Ce={},Ee=le(we,"name");Ee?.content&&(Ce.name=Ee.content.toString());let me=le(we,"description");me?.content&&(Ce.description=me.content.toString()),c.emit("newsletter-settings.update",{id:W,update:Ce})}break}case"message":{let we=le(ne,"plaintext");if(we?.content)try{let Ce=typeof we.content=="string"?Buffer.from(we.content,"binary"):Buffer.from(we.content),Ee=oe.Message.decode(Ce).toJSON(),me=oe.WebMessageInfo.fromObject({key:{remoteJid:W,id:ne.attrs.message_id||ne.attrs.server_id,fromMe:!1},message:Ee,messageTimestamp:+ne.attrs.t}).toJSON();await _(me,"append"),t.debug("Processed plaintext newsletter message")}catch(Ce){t.error({error:Ce},"Failed to decode plaintext newsletter message")}break}default:t.warn({node:Ae,child:ne},"Unknown newsletter notification child");break}},Ie=async(Ae,W)=>{let X=ase(Ae,W,I.creds.me.id);t.debug({recv:{tag:Ae.tag,attrs:Ae.attrs},sent:X.attrs},"sent ack"),await L(X)},Xe=async(Ae,W)=>{let X={tag:"call",attrs:{from:I.creds.me.id,to:W},content:[{tag:"reject",attrs:{"call-id":Ae,"call-creator":W,count:"0"},content:void 0}]};await m(X)},je=async(Ae,W=!1)=>{let{fullMessage:X}=eL(Ae,I.creds.me.id,I.creds.me.lid||""),{key:re}=X,ne=re.id;if(G){if(G.hasExceededMaxRetries(ne)){t.debug({msgId:ne},"reached retry limit with new retry manager, clearing"),G.markRetryFailed(ne);return}let YA=G.incrementRetryCount(ne),$A=`${ne}:${re?.participant}`;await ie.set($A,YA)}else{let YA=`${ne}:${re?.participant}`,$A=await ie.get(YA)||0;if($A>=i){t.debug({retryCount:$A,msgId:ne},"reached retry limit, clearing"),await ie.del(YA);return}$A+=1,await ie.set(YA,$A)}let we=`${ne}:${re?.participant}`,Ce=await ie.get(we)||1,{account:Ee,signedPreKey:me,signedIdentityKey:Je}=I.creds,IA=Ae.attrs.from,yA=!1,XA="";if(A&&G&&Ce>1)try{let YA=y.jidToSignalProtocolAddress(IA),$A=await y.validateSession(IA),Ge=G.shouldRecreateSession(IA,$A.exists);yA=Ge.recreate,XA=Ge.reason,yA&&(t.debug({fromJid:IA,retryCount:Ce,reason:XA},"recreating session for retry"),await I.keys.set({session:{[YA]:null}}),W=!0)}catch(YA){t.warn({error:YA,fromJid:IA},"failed to check session recreation")}if(Ce<=2)if(G)G.schedulePhoneRequest(ne,async()=>{try{let YA=await ke(re);t.debug(`sendRetryRequest: requested placeholder resend (${YA}) for message ${ne} (scheduled)`)}catch(YA){t.warn({error:YA,msgId:ne},"failed to send scheduled phone request")}});else{let YA=await ke(re);t.debug(`sendRetryRequest: requested placeholder resend for message ${YA}`)}let vA=kf(Ee,!0);await I.keys.transaction(async()=>{let YA={tag:"receipt",attrs:{id:ne,type:"retry",to:Ae.attrs.from},content:[{tag:"retry",attrs:{count:Ce.toString(),id:Ae.attrs.id,t:Ae.attrs.t,v:"1",error:"0"}},{tag:"registration",attrs:{},content:Kg(I.creds.registrationId)}]};if(Ae.attrs.recipient&&(YA.attrs.recipient=Ae.attrs.recipient),Ae.attrs.participant&&(YA.attrs.participant=Ae.attrs.participant),Ce>1||W||yA){let{update:$A,preKeys:Ge}=await QU(I,1),[tA]=Object.keys(Ge),et=Ge[+tA];YA.content.push({tag:"keys",attrs:{},content:[{tag:"type",attrs:{},content:Buffer.from(Hg)},{tag:"identity",attrs:{},content:Je.public},fU(et,+tA),Rf(me),{tag:"device-identity",attrs:{},content:vA}]}),c.emit("creds.update",$A)}await L(YA),t.info({msgAttrs:Ae.attrs,retryCount:Ce},"sent retry receipt")},I?.creds?.me?.id||"sendRetryRequest")},Oe=new Set,EA=Ae=>{(async()=>{let W=uA(Ae),X=await Xs(W,J),ne=(await I.keys.get("tctoken",[X]))?.[X]?.senderTimestamp;if(ne==null||gp(ne))return;t.debug({jid:W,senderTimestamp:ne},"identity changed, re-issuing tctoken");let we=y.lidMapping.getPNForLID.bind(y.lidMapping),Ce=await Lf(W,r.serverProps.lidTrustedTokenIssueToLid,J,we),Ee=await F([Ce],ne);await hE({result:Ee,fallbackJid:X,keys:I.keys,getLIDForPN:J,onNewJidStored:_A})})().catch(W=>{t.debug({jid:Ae,err:W?.message},"failed to re-issue tctoken after identity change")})},hA=async Ae=>{if(Ae.attrs.from===OA){let X=Ae.attrs.id;if(X&&Oe.has(X))return;let ne=+le(Ae,"count").attrs.value,we=ne{let re=Ae.attrs.participant,ne=Ae.attrs.participant_pn,we=Ae.attrs.participant_username,Ce=le(W,"participant")?.attrs?.jid||re,Ee=le(W,"participant")?.attrs?.phone_number||ne;switch(W?.tag){case"create":let me=OE(W);X.messageStubType=RA.GROUP_CREATE,X.messageStubParameters=[me.subject],X.key={participant:me.owner,participantAlt:me.ownerPn},c.emit("chats.upsert",[{id:me.id,name:me.subject,conversationTimestamp:me.creation}]),c.emit("groups.upsert",[{...me,author:re,authorPn:ne,authorUsername:we}]);break;case"ephemeral":case"not_ephemeral":X.message={protocolMessage:{type:oe.Message.ProtocolMessage.Type.EPHEMERAL_SETTING,ephemeralExpiration:+(W.attrs.expiration||0)}};break;case"modify":let Je=PA(W,"participant").map(Ge=>Ge.attrs.jid);X.messageStubParameters=Je||[],X.messageStubType=RA.GROUP_PARTICIPANT_CHANGE_NUMBER;break;case"promote":case"demote":case"remove":case"add":case"leave":let IA=`GROUP_PARTICIPANT_${W.tag.toUpperCase()}`;X.messageStubType=RA[IA];let yA=PA(W,"participant").map(({attrs:Ge})=>({id:Ge.jid,phoneNumber:qA(Ge.jid)&&_t(Ge.phone_number)?Ge.phone_number:void 0,lid:_t(Ge.jid)&&qA(Ge.lid)?Ge.lid:void 0,username:Ge.participant_username||Ge.username||void 0,admin:Ge.type||null}));yA.length===1&&(Rt(yA[0].id,re)||Rt(yA[0].id,ne))&&W.tag==="remove"&&(X.messageStubType=RA.GROUP_PARTICIPANT_LEAVE),X.messageStubParameters=yA.map(Ge=>JSON.stringify(Ge));break;case"subject":X.messageStubType=RA.GROUP_CHANGE_SUBJECT,X.messageStubParameters=[W.attrs.subject];break;case"description":let XA=le(W,"body")?.content?.toString();X.messageStubType=RA.GROUP_CHANGE_DESCRIPTION,X.messageStubParameters=XA?[XA]:void 0;break;case"announcement":case"not_announcement":X.messageStubType=RA.GROUP_CHANGE_ANNOUNCE,X.messageStubParameters=[W.tag==="announcement"?"on":"off"];break;case"locked":case"unlocked":X.messageStubType=RA.GROUP_CHANGE_RESTRICT,X.messageStubParameters=[W.tag==="locked"?"on":"off"];break;case"invite":X.messageStubType=RA.GROUP_CHANGE_INVITE_LINK,X.messageStubParameters=[W.attrs.code];break;case"member_add_mode":let vA=W.content;vA&&(X.messageStubType=RA.GROUP_MEMBER_ADD_MODE,X.messageStubParameters=[vA.toString()]);break;case"membership_approval_mode":let YA=le(W,"group_join");YA&&(X.messageStubType=RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE,X.messageStubParameters=[YA.attrs.state]);break;case"created_membership_requests":X.messageStubType=RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD,X.messageStubParameters=[JSON.stringify({lid:Ce,pn:Ee}),"created",W.attrs.request_method];break;case"revoked_membership_requests":let $A=Rt(Ce,re);X.messageStubType=RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD,X.messageStubParameters=[JSON.stringify({lid:Ce,pn:Ee}),$A?"revoked":"rejected"];break}},Ze=async Ae=>{let[W]=_s(Ae),X=uA(Ae.attrs.from);if(!W){t.debug({from:X},"devices notification missing child, skipping");return}let re=W.tag,ne=W.attrs.device_hash,we=PA(W,"device");if(Rt(X,I.creds.me.id)||Rt(X,I.creds.me.lid)){let Ee=we.map(me=>me.attrs.jid);t.info({deviceJids:Ee},"got my own devices")}if(!we.length){t.debug({from:X,tag:re},"no devices in notification, skipping");return}let Ce=[];for(let Ee of we){let me=Ee.attrs.jid;if(!me)continue;let Je=fA(me);if(!Je){t.debug({jid:me},"failed to decode device jid, skipping");continue}Ce.push({jid:me,user:Je.user,server:Je.server,device:Je.device})}Ce.length&&await g.mutex(async()=>{let Ee=new Map;for(let me of Ce){let Je=Ee.get(me.user)||[];Je.push(me),Ee.set(me.user,Je)}for(let[me,Je]of Ee){if(re==="update"){t.debug({user:me},`${me}'s device list updated, dropping cached devices`),await s?.del(me);continue}re==="remove"&&await y.deleteSession(Je.map(vA=>vA.jid));let IA=await s?.get(me)||[];if(!IA.length){t.debug({user:me,tag:re},"device list not cached, deferring to USync refresh");continue}let yA=new Set(Je.map(vA=>vA.device)),XA;switch(re){case"add":t.info({deviceHash:ne,count:Je.length},"devices added"),XA=[...IA.filter(vA=>!yA.has(vA.device)),...Je.map(vA=>({user:vA.user,server:vA.server,device:vA.device}))];break;case"remove":t.info({deviceHash:ne,count:Je.length},"devices removed"),XA=IA.filter(vA=>!yA.has(vA.device));break;default:t.debug({tag:re},"Unknown device list change tag");continue}XA.length===0?await s?.del(me):await s?.set(me,XA)}})},bA=async Ae=>{let W={},[X]=_s(Ae),re=Ae.attrs.type,ne=uA(Ae.attrs.from);switch(re){case"newsletter":await fe(Ae);break;case"mex":await Ne(Ae);break;case"w:gp2":iA(Ae,X,W);break;case"mediaretry":let we=Uoe(Ae);c.emit("messages.media-update",[we]);break;case"encrypt":await hA(Ae);break;case"devices":try{await Ze(Ae)}catch(mo){t.error({error:mo,node:Ae},"failed to handle devices notification")}break;case"server_sync":let Ce=le(Ae,"collection");if(Ce){let mo=Ce.attrs.name;await T([mo],!1)}break;case"picture":let Ee=le(Ae,"set"),me=le(Ae,"delete");if(c.emit("contacts.update",[{id:uA(Ae?.attrs?.from)||(Ee||me)?.attrs?.hash||"",imgUrl:Ee?"changed":"removed"}]),xr(ne)){let mo=Ee||me;W.messageStubType=RA.GROUP_CHANGE_ICON,Ee&&(W.messageStubParameters=[Ee.attrs.id]),W.participant=mo?.attrs.author,W.key={...W.key||{},participant:Ee?.attrs.author}}break;case"account_sync":if(X.tag==="disappearing_mode"){let mo=+X.attrs.duration,yp=+X.attrs.t;t.info({newDuration:mo},"updated account disappearing mode"),c.emit("creds.update",{accountSettings:{...I.creds.accountSettings,defaultDisappearingMode:{ephemeralExpiration:mo,ephemeralSettingTimestamp:yp}}})}else if(X.tag==="blocklist"){let mo=PA(X,"item");for(let{attrs:yp}of mo){let bM=[yp.jid],MM=yp.action==="block"?"add":"remove";c.emit("blocklist.update",{blocklist:bM,type:MM})}}break;case"link_code_companion_reg":let Je=le(Ae,"link_code_companion_reg"),IA=lt(Oa(Je,"link_code_pairing_ref")),yA=lt(Oa(Je,"primary_identity_pub")),XA=lt(Oa(Je,"link_code_pairing_wrapped_primary_ephemeral_pub")),vA=await wA(XA),YA=Sr.sharedKey(I.creds.pairingEphemeralKeyPair.private,vA),$A=XH(32),Ge=XH(32),tA=Un(YA,32,{salt:Ge,info:"link_code_pairing_key_bundle_encryption_key"}),et=Buffer.concat([Buffer.from(I.creds.signedIdentityKey.public),yA,$A]),Zr=XH(12),ar=Pl(et,tA,Zr,Buffer.alloc(0)),yo=Buffer.concat([Ge,Zr,ar]),DM=Sr.sharedKey(I.creds.signedIdentityKey.private,yA),OM=Buffer.concat([YA,DM,$A]);I.creds.advSecretKey=Buffer.from(Un(OM,32,{info:"adv_secret"})).toString("base64"),await m({tag:"iq",attrs:{to:OA,type:"set",id:r.generateMessageTag(),xmlns:"md"},content:[{tag:"link_code_companion_reg",attrs:{jid:I.creds.me.id,stage:"companion_finish"},content:[{tag:"link_code_pairing_wrapped_key_bundle",attrs:{},content:yo},{tag:"companion_identity_public",attrs:{},content:I.creds.signedIdentityKey.public},{tag:"link_code_pairing_ref",attrs:{},content:IA}]}]}),I.creds.registered=!0,c.emit("creds.update",I.creds);break;case"privacy_token":await at(Ae);break}if(Object.keys(W).length)return W},Be=new Set,Re=(async()=>{try{let Ae=await _b(I.keys);for(let W of Ae)Be.add(W);t.debug({count:Be.size},"loaded tctoken index")}catch(Ae){t.warn({err:Ae?.message},"failed to load tctoken index")}})(),Ue;async function MA(){Ue&&(clearTimeout(Ue),Ue=void 0);let Ae=await dE(I.keys,Be);return I.keys.set({tctoken:Ae})}function Ke(){Ue&&clearTimeout(Ue),Ue=setTimeout(()=>{Ue=void 0,MA().catch(Ae=>{t.warn({err:Ae?.message},"failed to save tctoken index")})},5e3)}function _A(Ae){Ae&&Ae!==SI&&!Be.has(Ae)&&(Be.add(Ae),Ke())}let at=async Ae=>{if(!le(Ae,"tokens"))return;let X=uA(Ae.attrs.from),ne=(Ae.attrs.sender_lid&&qA(uA(Ae.attrs.sender_lid))?uA(Ae.attrs.sender_lid):void 0)??await Xs(X,J);t.debug({from:X,storageJid:ne},"processing privacy token notification"),await hE({result:Ae,fallbackJid:ne,keys:I.keys,getLIDForPN:J,onNewJidStored:_A})};async function wA(Ae){let W=lt(Ae),X=W.slice(0,32),re=await hD(I.creds.pairingCode,X),ne=W.slice(32,48),we=W.slice(48,80);return G7(we,re,ne)}function lt(Ae){if(Ae===void 0)throw new Zf.Boom("Invalid buffer",{statusCode:400});return Ae instanceof Buffer?Ae:Buffer.from(Ae)}let Er=async(Ae,W)=>{let X=`${Ae}:${W}`;return(await ie.get(X)||0){let X=`${Ae}:${W}`,re=(await ie.get(X)||0)+1;await ie.set(X,re)},de=async(Ae,W,X,re)=>{let ne=Ae.remoteJid,we=Ae.participant||ne,Ce=+X.attrs.count||1,Ee=W[0],me=[];for(let Ge of W){let tA;if(G){let et=G.getRecentMessage(ne,Ge);et&&(tA=et.message,t.debug({jid:ne,id:Ge},"found message in retry cache"),G.markRetrySuccess(Ge))}tA||(tA=await e({...Ae,id:Ge}),tA&&(t.debug({jid:ne,id:Ge},"found message via getMessage"),G&&G.markRetrySuccess(Ge))),me.push(tA)}let Je=!fA(we)?.device,IA=y.jidToSignalProtocolAddress(we),yA=!1,XA=ane(re);if(XA)try{await y.injectE2ESession({jid:we,session:XA}),yA=!0,t.debug({participant:we,retryCount:Ce},"injected session from retry receipt key bundle")}catch(Ge){t.warn({error:Ge,participant:we},"failed to inject session from retry receipt")}if(!yA){let Ge=Zc(re,"registration",4);if(typeof Ge=="number"&&Number.isInteger(Ge)){let tA=await y.getSessionInfo(we);tA&&tA.registrationId!==0&&tA.registrationId!==Ge&&(t.info({participant:we,stored:tA.registrationId,received:Ge},"reg id mismatch on retry without bundle, deleting session"),await I.keys.set({session:{[IA]:null}}))}}let vA=2;if(Ee&&G){let Ge=await y.getSessionInfo(we);Ge&&(Ce===vA?G.saveBaseKey(IA,Ee,Ge.baseKey):Ce>vA&&(G.hasSameBaseKey(IA,Ee,Ge.baseKey)&&(t.warn({participant:we,retryCount:Ce},"base key collision on retry, forcing fresh session"),await I.keys.set({session:{[IA]:null}})),G.deleteBaseKey(IA,Ee)))}let YA=!1,$A="";if(A&&G&&Ce>1&&!yA)try{let Ge=await y.validateSession(we),tA=G.shouldRecreateSession(we,Ge.exists);YA=tA.recreate,$A=tA.reason,YA&&(t.debug({participant:we,retryCount:Ce,reason:$A},"recreating session for outgoing retry"),await I.keys.set({session:{[IA]:null}}))}catch(Ge){t.warn({error:Ge,participant:we},"failed to check session recreation for outgoing retry")}yA||await K([we],!0),xr(ne)&&await I.keys.set({"sender-key-memory":{[ne]:null}}),t.debug({participant:we,sendToAll:Je,shouldRecreateSession:YA,recreateReason:$A,injectedFromBundle:yA},"prepared session for retry resend");for(let[Ge,tA]of me.entries())if(W[Ge])if(tA&&await Er(W[Ge],we)){await UA(W[Ge],we);let et={messageId:W[Ge]};Je?et.useUserDevicesCache=!1:et.participant={jid:we,count:+X.attrs.count},await U(Ae.remoteJid,tA,et)}else t.debug({jid:Ae.remoteJid,id:W[Ge]},"recv retry request, but message not available")},ye=async Ae=>{let{attrs:W,content:X}=Ae,re=W.from.includes("lid"),ne=Rt(W.participant||W.from,re?I.creds.me?.lid:I.creds.me?.id),we=!ne||xr(W.from)?W.from:W.recipient,Ce=!W.recipient||(W.type==="retry"||W.type==="sender")&&ne,Ee={remoteJid:we,id:"",fromMe:Ce,participant:W.participant},me=[W.id];if(Array.isArray(X)){let Je=PA(X[0],"item");me.push(...Je.map(IA=>IA.attrs.id))}try{await Promise.all([Q.mutex(async()=>{let Je=V7(W.type);if(typeof Je<"u"&&(Je>=oe.WebMessageInfo.Status.SERVER_ACK||!ne))if(xr(we)||Lg(we)){if(W.participant){let IA=Je===oe.WebMessageInfo.Status.DELIVERY_ACK?"receiptTimestamp":"readTimestamp";c.emit("message-receipt.update",me.map(yA=>({key:{...Ee,id:yA},receipt:{userJid:uA(W.participant),[IA]:+W.t}})))}}else c.emit("messages.update",me.map(IA=>({key:{...Ee,id:IA},update:{status:Je,messageTimestamp:Yr(+(W.t??0))}})));if(W.type==="retry"){Ee.participant=Ee.participant||W.from;let IA=le(Ae,"retry");if(me[0]&&Ee.participant&&await Er(me[0],Ee.participant))if(Ee.fromMe)try{await UA(me[0],Ee.participant),t.debug({attrs:W,key:Ee},"recv retry request"),await de(Ee,me,IA,Ae)}catch(yA){t.error({key:Ee,ids:me,trace:yA instanceof Error?yA.stack:"Unknown error"},"error in sending message again")}else t.info({attrs:W,key:Ee},"recv retry for not fromMe message");else t.info({attrs:W,key:Ee},"will not send message again, as sent too many times")}})])}finally{await Ie(Ae).catch(Je=>t.error({ackErr:Je},"failed to ack receipt"))}},be=async Ae=>{let W=Ae.attrs.from;try{await Promise.all([f.mutex(async()=>{let X=await bA(Ae);if(X){let re=Rt(Ae.attrs.participant||W,I.creds.me.id),{senderAlt:ne,addressingMode:we}=BD(Ae);X.key={remoteJid:W,fromMe:re,participant:Ae.attrs.participant,participantAlt:ne,participantUsername:Ae.attrs.participant_username,addressingMode:we,id:Ae.attrs.id,...X.key||{}},X.participant??(X.participant=Ae.attrs.participant),X.messageTimestamp=+Ae.attrs.t;let Ce=oe.WebMessageInfo.fromObject(X);await _(Ce,"append")}})])}finally{await Ie(Ae).catch(X=>t.error({ackErr:X},"failed to ack notification"))}},oA=async Ae=>{if(le(Ae,"enc")?.attrs.type==="msmsg"){t.debug({key:Ae.attrs.key},"ignored msmsg"),await Ie(Ae,Ll.MissingMessageSecret);return}let X=!1;try{let{fullMessage:re,category:ne,author:we,decrypt:Ce}=r$(Ae,I.creds.me.id,I.creds.me.lid||"",y,t),Ee=re.key.participantAlt||re.key.remoteJidAlt;if(Ee){let me=fA(Ee)?.server,Je=re.key.participant||re.key.remoteJid;me==="lid"?await y.lidMapping.getPNForLID(Ee)||(await y.lidMapping.storeLIDPNMappings([{lid:Ee,pn:Je}]),await y.migrateSession(Je,Ee)):(await y.lidMapping.storeLIDPNMappings([{lid:Je,pn:Ee}]),await y.migrateSession(Ee,Je))}await B.mutex(async()=>{if(await Ce(),re.key?.remoteJid&&re.key?.id&&re.message&&G&&G.addRecentMessage(re.key.remoteJid,re.key.id,re.message),re.messageStubType===oe.WebMessageInfo.StubType.CIPHERTEXT&&re.category!=="peer"){if(re?.messageStubParameters?.[0]===A$)return X=!0,Ie(Ae,Ll.ParsingError);if(re.messageStubParameters?.[0]===uD){let Je=le(Ae,"unavailable")?.attrs?.type;if(Je==="bot_unavailable_fanout"||Je==="hosted_unavailable_fanout"||Je==="view_once_unavailable_fanout")return t.debug({msgId:re.key.id,unavailableType:Je},"skipping placeholder resend for excluded unavailable type"),X=!0,Ie(Ae);let IA=ba()-Yr(re.messageTimestamp);if(IA>Bce)return t.debug({msgId:re.key.id,messageAge:IA},"skipping placeholder resend for old message"),X=!0,Ie(Ae);let yA={remoteJid:re.key.remoteJid,fromMe:re.key.fromMe,id:re.key.id,participant:re.key.participant},XA={key:re.key,messageTimestamp:re.messageTimestamp,pushName:re.pushName,participant:re.participant,verifiedBizName:re.verifiedBizName};ke(yA,XA).then(vA=>{vA&&vA!=="RESOLVED"&&(t.debug({msgId:re.key.id,requestId:vA},"requested placeholder resend for unavailable message"),c.emit("messages.update",[{key:re.key,update:{messageStubParameters:[uD,vA]}}]))}).catch(vA=>{t.warn({err:vA,msgId:re.key.id},"failed to request placeholder resend for unavailable message")}),X=!0,await Ie(Ae)}else{if(Lg(re.key.remoteJid)){let me=ba()-Yr(re.messageTimestamp);if(me>uce)return t.debug({msgId:re.key.id,messageAge:me,remoteJid:re.key.remoteJid},"skipping retry for expired status message"),X=!0,Ie(Ae)}t.debug("[handleMessage] Attempting retry request for failed decryption"),await $.mutex(async()=>{try{if(!d.isOpen){t.debug({node:Ae},"Connection closed, skipping retry");return}let me=le(Ae,"enc");await je(Ae,!me),o&&await kB(o)}catch(me){t.error({err:me},"Failed to send retry")}X=!0,await Ie(Ae,Ll.UnhandledError)})}}else if(G&&re.key.id&&G.cancelPendingPhoneRequest(re.key.id),Wc(re.key.remoteJid))X=!0,await Ie(Ae),t.debug({key:re.key},"processed newsletter message without receipts");else{let Je,IA=re.key.participant;if(ne==="peer"?Je="peer_msg":re.key.fromMe?(Je="sender",(qA(re.key.remoteJid)||qA(re.key.remoteJidAlt))&&(IA=we)):Te||(Je="inactive"),X=!0,await z(re.key.remoteJid,IA,[re.key.id],Je),mb(re.message)){let XA=uA(re.key.remoteJid);await z(XA,void 0,[re.key.id],"hist_sync")}}Zne(re,I.creds.me.id,I.creds.me.lid),await _(re,Ae.attrs.offline?"append":"notify")})}catch(re){t.error({error:re,node:Gn(Ae)},"error in handling message"),X||await Ie(Ae,Ll.UnhandledError).catch(ne=>t.error({ackErr:ne},"failed to ack message after error"))}},pA=async Ae=>{try{let{attrs:W}=Ae,[X]=_s(Ae);if(!X)throw new Zf.Boom("Missing call info in call node");let re=Z7(X),ne=X.attrs["call-id"],we=X.attrs.from||X.attrs["call-creator"],Ce={chatId:W.from,from:we,callerPn:X.attrs.caller_pn,id:ne,date:new Date(+W.t*1e3),offline:!!W.offline,status:re};if(re==="relaylatency"){let me=X.attrs.latency||X.attrs.latency_ms||X.attrs["latency-ms"],Je=me?Number(me):void 0;Number.isFinite(Je)&&(Ce.latencyMs=Je)}re==="offer"&&(Ce.isVideo=!!le(X,"video"),Ce.isGroup=X.attrs.type==="group"||!!X.attrs["group-jid"],Ce.groupJid=X.attrs["group-jid"],await pe.set(Ce.id,Ce));let Ee=await pe.get(Ce.id);Ee&&(Ce.isVideo=Ee.isVideo,Ce.isGroup=Ee.isGroup,Ce.callerPn=Ce.callerPn||Ee.callerPn),(re==="reject"||re==="accept"||re==="timeout"||re==="terminate")&&await pe.del(Ce.id),c.emit("call",[Ce])}catch(W){t.error({error:W,node:Gn(Ae)},"error in handling call")}finally{await Ie(Ae).catch(W=>t.error({ackErr:W},"failed to ack call"))}},FA=async({attrs:Ae})=>{let W={remoteJid:Ae.from,fromMe:!0,id:Ae.id};if(Ae.error){let X=Ae.error===String(Ll.SenderReachoutTimelocked);if(Ae.error===$F.MessageAccountRestriction){t.warn({msgId:Ae.id,from:Ae.from},"error 463: account restricted or missing tctoken for contact");let re=Ae.from;re&&!Qo.has(re)&&(Qo.add(re),(async()=>{try{let ne=y.lidMapping.getPNForLID.bind(y.lidMapping),we=await Xs(re,J),Ce=await Lf(re,r.serverProps.lidTrustedTokenIssueToLid,J,ne),Ee=await F([Ce],ba());await hE({result:Ee,fallbackJid:we,keys:I.keys,getLIDForPN:J,onNewJidStored:_A}),t.debug({from:re},"completed 463 token recovery issuance")}catch(ne){t.debug({from:re,err:ne?.message},"failed 463 token recovery issuance")}finally{Qo.delete(re)}})())}else Ae.error===$F.SmaxInvalid?t.warn({msgId:Ae.id,from:Ae.from},"smax-invalid (479): stanza rejected by server \u2014 likely stale device session or malformed addressing"):X?(await N().catch(re=>t.warn({err:re},"failed to fetch reachout timelock")),t.warn({attrs:Ae},"received error in ack")):t.warn({attrs:Ae},"received error in ack");c.emit("messages.update",[{key:W,update:{status:lh.ERROR,messageStubParameters:X?[Ae.error,t$]:[Ae.error]}}])}},Kt=async(Ae,W,X)=>{c.buffer(),await re(),c.flush();function re(){return X(Ae,!1).catch(ne=>R(ne,W))}},st=Uce(new Map([["message",oA],["call",pA],["receipt",ye],["notification",be]]),{isWsOpen:()=>d.isOpen,onUnexpectedError:R,yieldToEventLoop:()=>new Promise(Ae=>setImmediate(Ae))}),Dr=async(Ae,W,X,re)=>{let ne=W.attrs.from,we=ne;if(Ae==="receipt"&&ne){let Ee=W.attrs,me=Ee.from.includes("lid");we=!Rt(Ee.participant||Ee.from,me?I.creds.me?.lid:I.creds.me?.id)||xr(Ee.from)?Ee.from:Ee.recipient}if(we&&we!==OA&&a(we)){await Ie(W,Ae==="message"?Ll.UnhandledError:void 0);return}!!W.attrs.offline?st.enqueue(Ae,W):await Kt(W,X,re)};d.on("CB:message",async Ae=>{await Dr("message",Ae,"processing message",oA)}),d.on("CB:call",async Ae=>{await Dr("call",Ae,"handling call",pA)}),d.on("CB:receipt",async Ae=>{await Dr("receipt",Ae,"handling receipt",ye)}),d.on("CB:notification",async Ae=>{await Dr("notification",Ae,"handling notification",be)}),d.on("CB:ack,class:message",Ae=>{FA(Ae).catch(W=>R(W,"handling bad ack"))}),c.on("call",async([Ae])=>{if(Ae&&(Ae.status==="timeout"||Ae.status==="offer"&&Ae.isGroup)){let W={key:{remoteJid:Ae.chatId,id:Ae.id,fromMe:!1},messageTimestamp:ba(Ae.date)};Ae.status==="timeout"?Ae.isGroup?W.messageStubType=Ae.isVideo?RA.CALL_MISSED_GROUP_VIDEO:RA.CALL_MISSED_GROUP_VOICE:W.messageStubType=Ae.isVideo?RA.CALL_MISSED_VIDEO:RA.CALL_MISSED_VOICE:W.message={call:{callKey:Buffer.from(Ae.id)}};let X=oe.WebMessageInfo.fromObject(W);await _(X,Ae.offline?"append":"notify")}});let rr=0,Qo=new Set;c.on("connection.update",({isOnline:Ae,connection:W})=>{if(typeof Ae<"u"&&(Te=Ae,t.trace(`sendActiveReceipts set to "${Te}"`)),W==="close"&&Ue){clearTimeout(Ue),Ue=void 0;try{Promise.resolve(MA()).catch(()=>{})}catch{}}if(Ae){let X=Date.now(),re=1440*60*1e3;X-rr>=re&&(rr=X,$i())}}),V(()=>{!n.msgRetryCounterCache&&ie.close&&ie.close(),!n.callOfferCache&&pe.close&&pe.close(),se.close(),Te=!1});async function $i(){try{await Re;let Ae=await _b(I.keys),W=new Set(Be);for(let Ee of Ae)W.add(Ee);if(!W.size)return;let X=[...W],re=await I.keys.get("tctoken",X),ne={},we=new Set,Ce=0;for(let Ee of X){let me=re[Ee];if(!me){Ce++;continue}let Je=!!me.token?.length,IA=Je&&gp(me.timestamp),yA=me.senderTimestamp!==void 0,XA=yA&&gp(me.senderTimestamp),vA=Je&&!IA,YA=yA&&!XA;!vA&&!YA?(ne[Ee]=null,Ce++):IA&&YA?(ne[Ee]={token:Buffer.alloc(0),senderTimestamp:me.senderTimestamp},we.add(Ee),Ce++):we.add(Ee)}if(Ce===0)return;await I.keys.set({tctoken:{...ne,[SI]:{token:Buffer.from(JSON.stringify([...we]))}}}),Be.clear();for(let Ee of we)Be.add(Ee);t.debug({mutated:Ce,remaining:we.size},"pruned expired tctokens")}catch(Ae){t.warn({err:Ae?.message},"failed to prune expired tctokens")}}return{...r,sendMessageAck:Ie,sendRetryRequest:je,rejectCall:Xe,fetchMessageHistory:Qe,requestPlaceholderResend:ke,messageRetryManager:G}};var qce=n=>{let t=Jce(n),{authState:o,query:i,waUploadToServer:e}=t,a=async f=>{let Q=[],y=["address","email","description"];return Q.push(...y.filter(_=>f[_]!==void 0&&f[_]!==null).map(_=>({tag:_,attrs:{},content:f[_]}))),f.websites!==void 0&&Q.push(...f.websites.map(_=>({tag:"website",attrs:{},content:_}))),f.hours!==void 0&&Q.push({tag:"business_hours",attrs:{timezone:f.hours.timezone},content:f.hours.days.map(_=>{let T={tag:"business_hours_config",attrs:{day_of_week:_.day,mode:_.mode}};return _.mode==="specific_hours"?{...T,attrs:{...T.attrs,open_time:_.openTimeInMinutes,close_time:_.closeTimeInMinutes}}:T})}),await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz"},content:[{tag:"business_profile",attrs:{v:"3",mutation_type:"delta"},content:Q}]})},A=async f=>{let{fileSha256:Q,filePath:y}=await Cb(f,"biz-cover-photo"),m=Q.toString("base64"),{meta_hmac:_,fbid:T,ts:R}=await e(y,{fileEncSha256B64:m,mediaType:"biz-cover-photo"});return await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz"},content:[{tag:"business_profile",attrs:{v:"3",mutation_type:"delta"},content:[{tag:"cover_photo",attrs:{id:String(T),op:"update",token:_,ts:String(R)}}]}]}),T},r=async f=>await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz"},content:[{tag:"business_profile",attrs:{v:"3",mutation_type:"delta"},content:[{tag:"cover_photo",attrs:{op:"delete",id:f}}]}]}),s=async({jid:f,limit:Q,cursor:y})=>{f=f||o.creds.me?.id,f=uA(f);let m=[{tag:"limit",attrs:{},content:Buffer.from((Q||10).toString())},{tag:"width",attrs:{},content:Buffer.from("100")},{tag:"height",attrs:{},content:Buffer.from("100")}];y&&m.push({tag:"after",attrs:{},content:y});let _=await i({tag:"iq",attrs:{to:OA,type:"get",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog",attrs:{jid:f,allow_shop_source:"true"},content:m}]});return Dce(_)},g=async(f,Q=51)=>{f=f||o.creds.me?.id,f=uA(f);let y=await i({tag:"iq",attrs:{to:OA,type:"get",xmlns:"w:biz:catalog",smax_id:"35"},content:[{tag:"collections",attrs:{biz_jid:f},content:[{tag:"collection_limit",attrs:{},content:Buffer.from(Q.toString())},{tag:"item_limit",attrs:{},content:Buffer.from(Q.toString())},{tag:"width",attrs:{},content:Buffer.from("100")},{tag:"height",attrs:{},content:Buffer.from("100")}]}]});return Oce(y)},c=async(f,Q)=>{let y=await i({tag:"iq",attrs:{to:OA,type:"get",xmlns:"fb:thrift_iq",smax_id:"5"},content:[{tag:"order",attrs:{op:"get",id:f},content:[{tag:"image_dimensions",attrs:{},content:[{tag:"width",attrs:{},content:Buffer.from("100")},{tag:"height",attrs:{},content:Buffer.from("100")}]},{tag:"token",attrs:{},content:Buffer.from(Q)}]}]});return bce(y)},I=async(f,Q)=>{Q=await JH(Q,e);let y=jH(f,Q),m=await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog_edit",attrs:{v:"1"},content:[y,{tag:"width",attrs:{},content:"100"},{tag:"height",attrs:{},content:"100"}]}]}),_=le(m,"product_catalog_edit"),T=le(_,"product");return Vf(T)},d=async f=>{f.isHidden=!!f.isHidden,f=await JH(f,e);let Q=jH(void 0,f),y=await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog_add",attrs:{v:"1"},content:[Q,{tag:"width",attrs:{},content:"100"},{tag:"height",attrs:{},content:"100"}]}]}),m=le(y,"product_catalog_add"),_=le(m,"product");return Vf(_)},B=async f=>{let Q=await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog_delete",attrs:{v:"1"},content:f.map(m=>({tag:"product",attrs:{},content:[{tag:"id",attrs:{},content:Buffer.from(m)}]}))}]});return{deleted:+(le(Q,"product_catalog_delete")?.attrs.deleted_count||0)}};return{...t,logger:n.logger,getOrderDetails:c,getCatalog:s,getCollections:g,productCreate:d,productDelete:B,productUpdate:I,updateBussinesProfile:a,updateCoverPhoto:A,removeCoverPhoto:r}};var zce=n=>{let t=qce(n),{authState:o,ev:i,query:e,upsertMessage:a}=t,A=async(I,d,B)=>e({tag:"iq",attrs:{type:d,xmlns:"w:g2",to:I},content:B}),r=async I=>{let d=await A(I,"get",[{tag:"query",attrs:{request:"interactive"}}]);return $H(d)},s=async()=>{let I=await e({tag:"iq",attrs:{to:"@g.us",xmlns:"w:g2",type:"get"},content:[{tag:"participating",attrs:{},content:[{tag:"participants",attrs:{}},{tag:"description",attrs:{}}]}]}),d={},B=le(I,"communities");if(B){let f=PA(B,"community");for(let Q of f){let y=$H({tag:"result",attrs:{},content:[Q]});d[y.id]=y}}return t.ev.emit("groups.update",Object.values(d)),d};async function g(I){Jf.info({node:I},"parseGroupResult");let d=le(I,"group");if(d)try{Jf.info({groupNode:d},"groupNode");let B=await t.groupMetadata(`${d.attrs.id}@g.us`);return B||c.empty()}catch(B){return console.error("Error parsing group metadata:",B),c.empty()}return c.empty()}let c={empty:()=>null,of:I=>I!==null?{value:I}:null};return t.ws.on("CB:ib,,dirty",async I=>{let{attrs:d}=le(I,"dirty");d.type==="communities"&&(await s(),await t.cleanDirtyBits("groups"))}),{...t,communityMetadata:r,communityCreate:async(I,d)=>{let B=ZF().substring(0,12),f=await A("@g.us","set",[{tag:"create",attrs:{subject:I},content:[{tag:"description",attrs:{id:B},content:[{tag:"body",attrs:{},content:Buffer.from(d||"","utf-8")}]},{tag:"parent",attrs:{default_membership_approval_mode:"request_required"}},{tag:"allow_non_admin_sub_group_creation",attrs:{}},{tag:"create_general_chat",attrs:{}}]}]);return await g(f)},communityCreateGroup:async(I,d,B)=>{let f=jr(),Q=await A("@g.us","set",[{tag:"create",attrs:{subject:I,key:f},content:[...d.map(y=>({tag:"participant",attrs:{jid:y}})),{tag:"linked_parent",attrs:{jid:B}}]}]);return await g(Q)},communityLeave:async I=>{await A("@g.us","set",[{tag:"leave",attrs:{},content:[{tag:"community",attrs:{id:I}}]}])},communityUpdateSubject:async(I,d)=>{await A(I,"set",[{tag:"subject",attrs:{},content:Buffer.from(d,"utf-8")}])},communityLinkGroup:async(I,d)=>{await A(d,"set",[{tag:"links",attrs:{},content:[{tag:"link",attrs:{link_type:"sub_group"},content:[{tag:"group",attrs:{jid:I}}]}]}])},communityUnlinkGroup:async(I,d)=>{await A(d,"set",[{tag:"unlink",attrs:{unlink_type:"sub_group"},content:[{tag:"group",attrs:{jid:I}}]}])},communityFetchLinkedGroups:async I=>{let d=I,B=!1,f=await t.groupMetadata(I);f.linkedParent?d=f.linkedParent:B=!0;let Q=await A(d,"get",[{tag:"sub_groups",attrs:{}}]),y=[],m=le(Q,"sub_groups");if(m){let _=PA(m,"group");for(let T of _)y.push({id:T.attrs.id?yr(T.attrs.id,"g.us"):void 0,subject:T.attrs.subject||"",creation:T.attrs.creation?Number(T.attrs.creation):void 0,owner:T.attrs.creator?uA(T.attrs.creator):void 0,size:T.attrs.size?Number(T.attrs.size):void 0})}return{communityJid:d,isCommunity:B,linkedGroups:y}},communityRequestParticipantsList:async I=>{let d=await A(I,"get",[{tag:"membership_approval_requests",attrs:{}}]),B=le(d,"membership_approval_requests");return PA(B,"membership_approval_request").map(Q=>Q.attrs)},communityRequestParticipantsUpdate:async(I,d,B)=>{let f=await A(I,"set",[{tag:"membership_requests_action",attrs:{},content:[{tag:B,attrs:{},content:d.map(_=>({tag:"participant",attrs:{jid:_}}))}]}]),Q=le(f,"membership_requests_action"),y=le(Q,B);return PA(y,"participant").map(_=>({status:_.attrs.error||"200",jid:_.attrs.jid}))},communityParticipantsUpdate:async(I,d,B)=>{let f=await A(I,"set",[{tag:B,attrs:B==="remove"?{linked_groups:"true"}:{},content:d.map(m=>({tag:"participant",attrs:{jid:m}}))}]),Q=le(f,B);return PA(Q,"participant").map(m=>({status:m.attrs.error||"200",jid:m.attrs.jid,content:m}))},communityUpdateDescription:async(I,d)=>{let f=(await r(I)).descId??null;await A(I,"set",[{tag:"description",attrs:{...d?{id:ZF()}:{delete:"true"},...f?{prev:f}:{}},content:d?[{tag:"body",attrs:{},content:Buffer.from(d,"utf-8")}]:void 0}])},communityInviteCode:async I=>{let d=await A(I,"get",[{tag:"invite",attrs:{}}]);return le(d,"invite")?.attrs.code},communityRevokeInvite:async I=>{let d=await A(I,"set",[{tag:"invite",attrs:{}}]);return le(d,"invite")?.attrs.code},communityAcceptInvite:async I=>{let d=await A("@g.us","set",[{tag:"invite",attrs:{code:I}}]);return le(d,"community")?.attrs.jid},communityRevokeInviteV4:async(I,d)=>!!await A(I,"set",[{tag:"revoke",attrs:{},content:[{tag:"participant",attrs:{jid:d}}]}]),communityAcceptInviteV4:i.createBufferedFunction(async(I,d)=>{I=typeof I=="string"?{remoteJid:I}:I;let B=await A(d.groupJid,"set",[{tag:"accept",attrs:{code:d.inviteCode,expiration:d.inviteExpiration.toString(),admin:I.remoteJid}}]);return I.id&&(d=oe.Message.GroupInviteMessage.fromObject(d),d.inviteExpiration=0,d.inviteCode="",i.emit("messages.update",[{key:I,update:{message:{groupInviteMessage:d}}}])),await a({key:{remoteJid:d.groupJid,id:jr(t.user?.id),fromMe:!1,participant:I.remoteJid},messageStubType:RA.GROUP_PARTICIPANT_ADD,messageStubParameters:[JSON.stringify(o.creds.me)],participant:I.remoteJid,messageTimestamp:ba()},"notify"),B.attrs.from}),communityGetInviteInfo:async I=>{let d=await A("@g.us","get",[{tag:"invite",attrs:{code:I}}]);return $H(d)},communityToggleEphemeral:async(I,d)=>{let B=d?{tag:"ephemeral",attrs:{expiration:d.toString()}}:{tag:"not_ephemeral",attrs:{}};await A(I,"set",[B])},communitySettingUpdate:async(I,d)=>{await A(I,"set",[{tag:d,attrs:{}}])},communityMemberAddMode:async(I,d)=>{await A(I,"set",[{tag:"member_add_mode",attrs:{},content:d}])},communityJoinApprovalMode:async(I,d)=>{await A(I,"set",[{tag:"membership_approval_mode",attrs:{},content:[{tag:"community_join",attrs:{state:d}}]}])},communityFetchAllParticipating:s}},$H=n=>{let t=le(n,"community"),o=le(t,"description"),i,e;o&&(i=jA(o,"body"),e=o.attrs.id);let a=t.attrs.id?.includes("@")?t.attrs.id:yr(t.attrs.id||"","g.us"),A=le(t,"ephemeral")?.attrs.expiration,r=jA(t,"member_add_mode")==="all_member_add";return{id:a,subject:t.attrs.subject||"",subjectOwner:t.attrs.s_o,subjectTime:Number(t.attrs.s_t||0),size:PA(t,"participant").length,creation:Number(t.attrs.creation||0),owner:t.attrs.creator?uA(t.attrs.creator):void 0,desc:i,descId:e,linkedParent:le(t,"linked_parent")?.attrs.jid||void 0,restrict:!!le(t,"locked"),announce:!!le(t,"announcement"),isCommunity:!!le(t,"parent"),isCommunityAnnounce:!!le(t,"default_sub_community"),joinApprovalMode:!!le(t,"membership_approval_mode"),memberAddMode:r,participants:PA(t,"participant").map(({attrs:g})=>({id:g.jid,admin:g.type||null})),ephemeralDuration:A?+A:void 0,addressingMode:jA(t,"addressing_mode")}};var IZe=n=>{let t={...Qce,...n};return zce(t)},Vce=IZe;var Wce=Vce;var lZe=Object.freeze({key:"whatsapp",label:"WhatsApp",get connectionLabel(){return w(" Web \u5173\u8054\u8BBE\u5907")},reactions:Object.freeze({processing:"\u{1F440}",success:"\u2705",error:"\u274C"})}),uM=class extends ns{constructor(t){super({...t,descriptor:lZe})}};import{chmod as Zce,mkdir as pZe,readdir as dZe}from"node:fs/promises";var hZe=Object.freeze({level:"silent",trace(){},debug(){},info(){},warn(){},error(){},fatal(){},child(){return this}}),EZe=6e4;function Xce(){return Object.assign(new Error("WhatsApp connection was cancelled"),{name:"AbortError"})}function CZe(n){return n?.output?.statusCode??n?.data?.statusCode??n?.statusCode??null}function uZe(n){let t=n;if(typeof t=="string"){if(!/^\d+$/.test(t))return null;t=Number(t)}else typeof t=="bigint"?t=Number(t):t&&typeof t=="object"&&(t=Number(t.valueOf()));return Number.isFinite(t)&&t>=0?t*1e3:null}async function eK(n){await pZe(n,{recursive:!0,mode:448}),await Zce(n,448);let t=await dZe(n,{withFileTypes:!0}).catch(()=>[]);await Promise.all(t.filter(o=>o.isFile()).map(o=>Zce(`${n}/${o.name}`,384).catch(()=>{})))}function BZe(n,t){let o=n.user??t.creds.me,i=uA(o?.id);if(!/^\d{5,32}@(s\.whatsapp\.net|lid)$/.test(i??""))throw new Error("WhatsApp did not return a valid linked account");return{accountJid:i,name:typeof o?.name=="string"&&o.name.trim()?o.name.trim().slice(0,100):w("WhatsApp\u673A\u5668\u4EBA")}}async function BM({authDir:n,onQr:t,onMessage:o,onDisconnect:i,signal:e,logger:a=console,makeSocket:A=Wce,loadAuthState:r=zne}={}){if(!n||typeof t!="function")throw new TypeError("WhatsApp Web session requires an auth directory and QR callback");await eK(n);let s=Date.now(),{state:g,saveCreds:c}=await r(n),I=g.keys.set.bind(g.keys);g.keys.set=async q=>{await I(q),await eK(n)};let d=!1,B=!1,f,Q,y=Promise.resolve(),m=null,_=0,T=null,R=new Promise((q,x)=>{f=q,Q=x}),K=q=>{B||(B=!0,Q(q))},L=async()=>{d||(d=!0,_+=1,K(Xce()),await T?.catch(()=>{}),await y.catch(()=>{}),await m?.end(void 0).catch(()=>{}))},U=async()=>{d||(d=!0,_+=1,K(Xce()),await T?.catch(()=>{}),await y.catch(()=>{}),await m?.logout("Removed from DeepSeek Harness").catch(()=>{}))},z=()=>{let q=++_,x=!1,G=A({auth:g,browser:Rb.macOS("DeepSeek Harness"),logger:hZe,markOnlineOnConnect:!1,syncFullHistory:!1,shouldSyncHistoryMessage:()=>!1,getMessage:async()=>{},generateHighQualityLinkPreview:!1});m=G;let V=()=>{!x||!g.creds.me||B||y.then(()=>{d||B||q!==_||!x||!g.creds.me||(B=!0,f(BZe(G,g)))}).catch(F=>K(F))};G.ev.on("creds.update",()=>{d||q!==_||(y=y.then(async()=>{await c(),await eK(n)}),y.catch(()=>a.error?.("[dsh-im:whatsapp] failed to persist linked-device state")),V())}),G.ev.on("connection.update",F=>{if(!(d||q!==_)&&(typeof F.qr=="string"&&F.qr&&t(F.qr),F.connection==="open"&&(x=!0,V()),F.connection==="close")){let N=CZe(F.lastDisconnect?.error);if(N===$t.restartRequired){T??=y.then(async()=>{d||q!==_||(await G.end(void 0).catch(()=>{}),!(d||q!==_)&&z())}).catch($=>K($)).finally(()=>{T=null});return}let k=N===$t.loggedOut,J=Object.assign(new Error(k?"WhatsApp linked device was removed from the phone":"WhatsApp Web connection closed"),{code:k?"logged-out":"connection-closed"});B?i?.({error:J,loggedOut:k}):K(J)}}),G.ev.on("messages.upsert",({messages:F,type:N})=>{if(!(d||q!==_||N!=="notify"&&N!=="append"||typeof o!="function"))for(let k of Array.isArray(F)?F:[]){if(N==="append"){let J=uZe(k?.messageTimestamp);if(J===null||J{a.error?.("[dsh-im:whatsapp] failed to process an inbound WhatsApp message")})}})};return z(),e&&(e.aborted?await L():e.addEventListener("abort",()=>void L(),{once:!0})),Object.freeze({get socket(){return m},ready:R,close:L,logout:U})}var tK=new Set(["image/jpeg","image/png","image/webp","image/gif"]),QZe=5*1024*1024,AK=15e3,rK=12e4,yZe=["ephemeralMessage","viewOnceMessage","documentWithCaptionMessage","viewOnceMessageV2","viewOnceMessageV2Extension","editedMessage","associatedChildMessage","groupStatusMessage","groupStatusMessageV2"],mZe=new Set(["viewOnceMessage","viewOnceMessageV2","viewOnceMessageV2Extension"]),SZe=new Set(["s.whatsapp.net","c.us","lid","hosted","hosted.lid"]);function eIe(n){if(typeof n!="string")return null;let t=n.trim();if(/^\+?\d+$/.test(t))return`${t.replace(/^\+/,"")}@s.whatsapp.net`;let o=fA(t);return!o||!/^\d+$/.test(o.user)||!SZe.has(o.server)?null:t}function oK(n,t){let o=eIe(n),i=eIe(t);if(!o||!i)return!1;try{return Rt(o,i)===!0}catch{return!1}}function wZe(n){let t=n;for(let o=0;o<5&&t&&typeof t=="object";o+=1){let i=yZe.find(e=>t[e]?.message);if(!i)return!1;if(mZe.has(i))return!0;t=t[i].message}return!1}function DZe(n){return n?.extendedTextMessage?.contextInfo??n?.imageMessage?.contextInfo??n?.videoMessage?.contextInfo??n?.documentMessage?.contextInfo??null}function OZe(n){return n?.conversation??n?.extendedTextMessage?.text??n?.imageMessage?.caption??n?.videoMessage?.caption??n?.documentMessage?.caption??""}function tIe(n){if(Number.isSafeInteger(n)&&n>=0)return n;let t;try{t=Number(n?.toString?.())}catch{return}return Number.isSafeInteger(t)&&t>=0?t:void 0}async function bZe(n,t,{signal:o,maxBytes:i=QZe}={}){o?.throwIfAborted();let e=AbortSignal.timeout(AK),a=o?AbortSignal.any([o,e]):e,A=Promise.resolve().then(()=>t(n,"stream",{options:{signal:a}})),r=await new Promise((I,d)=>{let B=!1,f=(y,m)=>B?!1:(B=!0,a.removeEventListener("abort",Q),y(m),!0),Q=()=>f(d,a.reason);a.addEventListener("abort",Q,{once:!0}),A.then(y=>{f(I,y)||y?.destroy?.()},y=>f(d,y)),a.aborted&&Q()}).catch(I=>{throw o?.aborted?o.reason??I:e.aborted?new ut("image-download-failed",`WhatsApp image download timed out after ${AK} ms`,w("\u56FE\u7247\u4E0B\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001\u540E\u518D\u8BD5\u3002")):I}),s=[],g=0,c=()=>r?.destroy?.(a.reason);a.addEventListener("abort",c,{once:!0});try{for await(let I of r){a.throwIfAborted();let d=Buffer.from(I);if(g+=d.length,g>i)throw r.destroy?.(),new ut("image-too-large",`WhatsApp image exceeded ${i} bytes`,w("\u56FE\u7247\u8D85\u8FC7 5 MB\uFF0C\u8BF7\u538B\u7F29\u540E\u91CD\u8BD5\u3002"));s.push(d)}}catch(I){throw o?.aborted?o.reason??I:e.aborted?new ut("image-download-failed",`WhatsApp image stream timed out after ${AK} ms`,w("\u56FE\u7247\u4E0B\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001\u540E\u518D\u8BD5\u3002")):I}finally{a.removeEventListener("abort",c)}return Buffer.concat(s,g)}function MZe(n,t,o,{viewOnce:i=!1}={}){let e,a;if(!i&&t?.imageMessage&&t.imageMessage.viewOnce!==!0)e=t.imageMessage;else if(t?.documentMessage){let r=typeof t.documentMessage.mimetype=="string"?t.documentMessage.mimetype.toLowerCase():"";if(!tK.has(r))return null;e=t.documentMessage,a=typeof e.fileName=="string"?e.fileName:void 0}if(!e)return null;let A=typeof e.mimetype=="string"?e.mimetype.toLowerCase():"";return tK.has(A)?{name:a,mediaType:A,size:tIe(e.fileLength),load:r=>bZe(n,o,r)}:null}function _Ze(n,t,o){let i=t?.documentMessage;if(!i)return null;let e=typeof i.mimetype=="string"&&i.mimetype?i.mimetype.toLowerCase():void 0;return tK.has(e)?null:{name:typeof i.fileName=="string"&&i.fileName?i.fileName:"whatsapp-file",...e?{mediaType:e}:{},size:tIe(i.fileLength),async load({signal:a}={}){a?.throwIfAborted();let A=await o(n,"stream",{options:{signal:a}});return a?.throwIfAborted(),{stream:A}}}}function TZe({socket:n,logger:t=console,download:o=uU}={}){if(typeof o!="function")throw new TypeError("WhatsApp media downloader is required");return typeof n?.updateMediaMessage!="function"?o:(i,e,a)=>o(i,e,a,{logger:t,reuploadRequest:A=>n.updateMediaMessage(A)})}function NZe(n,t,{download:o=uU}={}){let i=typeof n?.key?.remoteJid=="string"?n.key.remoteJid:"",e=typeof n?.key?.remoteJidAlt=="string"?n.key.remoteJidAlt:"",a=typeof n?.key?.id=="string"?n.key.id:"";if(!i||!a||i==="status@broadcast"||i.endsWith("@newsletter"))return null;let A=i.endsWith("@g.us"),r=n.key.fromMe===!0,s=r&&!A&&[i,e].some(_=>_&&Rt(_,t));if(r&&!s&&!A)return null;let g=r?t:A?n.key.participant:i,c=A&&!r?n.key.participantAlt:e;if(typeof g!="string"||!g)return null;let I=wZe(n.message),d=Ra(n.message),B=DZe(d),f=Array.isArray(B?.mentionedJid)&&B.mentionedJid.some(_=>Rt(_,t)),Q=typeof B?.participant=="string"&&Rt(B.participant,t),y=MZe(n,d,o,{viewOnce:I}),m=_Ze(n,d,o);return{messageId:`${i}:${a}`,providerMessageId:a,senderId:g,contextSource:()=>({senderName:n.pushName}),senderAlternateId:typeof c=="string"?c:"",senderIsBot:!1,kind:A?"group":"direct",conversationId:i,content:OZe(d),plainText:typeof d?.conversation=="string"||typeof d?.extendedTextMessage?.text=="string",images:y?[y]:[],files:m?[m]:[],addressed:!A||r||f||Q,selfChat:s,replyTarget:{jid:i,quoted:n,selfChat:s},reactionTarget:{jid:i,key:n.key}}}var aK=class{#e=new Map;has(t){return this.#t(),this.#e.has(t)}remember(t){this.#A(t)}reserve(t){this.#A(t)}#A(t){if(!(typeof t!="string"||!t))for(this.#t(),this.#e.set(t,Date.now()+5*6e4);this.#e.size>256;)this.#e.delete(this.#e.keys().next().value)}#t(){let t=Date.now();for(let[o,i]of this.#e)i>t||this.#e.delete(o)}};function rIe(n){return n?.reason??new DOMException("The operation was aborted.","AbortError")}function AIe(n,t){return t?(t.throwIfAborted(),new Promise((o,i)=>{let e=!1,a=(r,s)=>{e||(e=!0,t.removeEventListener("abort",A),r(s))},A=()=>a(i,rIe(t));t.addEventListener("abort",A,{once:!0}),Promise.resolve(n).then(r=>a(o,r),r=>a(i,r)),t.aborted&&A()})):n}function RZe(n){if(n?.code==="artifact-delivery-uncertain")return n;let t=new Error("WhatsApp could not confirm artifact delivery.");return t.code="artifact-delivery-uncertain",t.cause=n,t}function kZe(n){if(n?.code?.startsWith?.("artifact-"))return n;let t=n?.output?.statusCode??n?.data?.statusCode??n?.statusCode,o;if(t===401||t===403?o="artifact-permission-required":t===413?o="artifact-too-large":t===429?o="artifact-rate-limited":[400,404,405,406,410,415,422].includes(t)&&(o="artifact-provider-rejected"),!o)return RZe(n);let i=new Error("WhatsApp rejected artifact delivery.");return i.code=o,i.cause=n,i}var iK=class{#e;#A;#t;#r;#l=new Map;constructor(t,o,{signal:i,mediaUploadTimeoutMs:e=rK}={}){this.#e=t,this.#A=o,this.#t=i,this.#r=e}async sendText(t,o){await this.#a(t.jid);let i=[];for(let[e,a]of ss(o,4e3).entries()){let A=$ce(10).toString("hex").toUpperCase(),r={...e===0&&t.quoted?{quoted:t.quoted}:{},messageId:A};typeof this.#A.reserve=="function"?this.#A.reserve(A):this.#A.remember(A);let s=await this.#e.sendMessage(t.jid,{text:a},r);this.#A.remember(s?.key?.id),typeof s?.key?.id=="string"&&s.key.id&&i.push(s.key.id)}return{providerMessageIds:i}}async sendFile(t,o){return this.#i(t,o,{document:o.bytes,mimetype:o.mediaType??"application/octet-stream",fileName:o.fileName},"file")}async sendImage(t,o){return this.#i(t,o,{image:o.bytes,mimetype:o.mediaType??"image/jpeg"},"image")}async addReaction(t,o,{signal:i}={}){if(typeof o!="string"||!o.trim())throw new TypeError("A WhatsApp reaction emoji is required");let e=o.trim();return await this.#o(t,e,i),e}removeReaction(t,o,{signal:i}={}){return this.#o(t,"",i)}async#o(t,o,i){if(typeof t?.jid!="string"||!t.jid||!t.key?.id)throw new TypeError("A WhatsApp reaction target is required");let e=i??this.#t;e?.throwIfAborted();let a=$ce(10).toString("hex").toUpperCase();typeof this.#A.reserve=="function"?this.#A.reserve(a):this.#A.remember(a);let A=this.#e.sendMessage(t.jid,{react:{text:o,key:t.key}},{messageId:a}),r=await AIe(A,e);return this.#A.remember(r?.key?.id),r}async#i(t,o,i,e){this.#t?.throwIfAborted(),await this.#a(t.jid),this.#t?.throwIfAborted();let a=typeof o.deliveryKey=="string"&&o.deliveryKey?o.deliveryKey:o.artifactId,A=e==="image"?`${a}:image`:a,r=typeof A=="string"&&A?fZe("sha256").update(A).digest("hex").slice(0,20).toUpperCase():void 0,s={...t.quoted?{quoted:t.quoted}:{},...r?{messageId:r}:{},mediaUploadTimeoutMs:this.#r};this.#A.remember(r);let g;try{let c=this.#e.sendMessage(t.jid,i,s);Bn(o,c);let I=AbortSignal.timeout(this.#r),d=this.#t?AbortSignal.any([this.#t,I]):I;g=await AIe(c,d)}catch(c){throw this.#t?.aborted?rIe(this.#t):kZe(c)}return this.#t?.throwIfAborted(),this.#A.remember(g?.key?.id),g}async sendTyping(t){!t.selfChat&&t.quoted?.key&&await this.#e.readMessages([t.quoted.key]).catch(()=>{}),await this.#e.sendPresenceUpdate("composing",t.jid),await this.#a(t.jid,!1);let o=setInterval(()=>{this.#e.sendPresenceUpdate("composing",t.jid).catch(()=>{this.#a(t.jid)})},2e4);o.unref?.(),this.#l.set(t.jid,o)}async close(){let t=[...this.#l.keys()];await Promise.allSettled(t.map(o=>this.#a(o)))}async#a(t,o=!0){let i=this.#l.get(t);i&&clearInterval(i),this.#l.delete(t),o&&await this.#e.sendPresenceUpdate("paused",t).catch(()=>{})}};function vZe(){return{startedAt:null,ready:!1,connectionState:"idle",harnessReachable:!1,lastCheckedAt:null,lastConnectedAt:null,lastError:null,...io()}}var Xf=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c=vZe();#g=null;#I=null;#d=null;#h=null;#C=null;constructor({config:t,authDir:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,logger:r=console,replyTimeoutMs:s=6e5,connectTimeoutMs:g=3e4,mediaUploadTimeoutMs:c=rK,createSession:I=BM}){if(!t||!o||!i||!e||typeof I!="function")throw new TypeError("WhatsappRuntime requires config, auth directory, Harness, state, and session factory");if(this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,!Number.isSafeInteger(c)||c<=0)throw new TypeError("mediaUploadTimeoutMs must be a positive safe integer");this.#s=Math.min(c,rK),this.#p=I}get status(){return structuredClone(this.#c)}async start(){return this.#c.ready&&this.#I?this.status:this.#C?this.#C:(this.#C=this.#u().finally(()=>{this.#C=null}),this.#C)}async#u(){await this.stop(),this.#c.startedAt=new Date().toISOString(),this.#c.connectionState="connecting",this.#c.lastError=null,await this.#t.ensureRunning(),this.#c.harnessReachable=!0;let t=new AbortController;this.#g=t;let o=new aK,i,e=new Promise((a,A)=>{i=A});e.catch(()=>{});try{let a=await this.#p({authDir:this.#A,signal:t.signal,logger:this.#i,onQr:()=>i(Object.assign(new Error("WhatsApp linked-device session must be scanned again"),{code:"relink-required"})),onMessage:async(c,I)=>{let d=NZe(c,this.#e.accountJid,{download:TZe({socket:I?.socket,logger:this.#i})});!d||o.has(d.providerMessageId)||!this.#h||(this.#c.lastCheckedAt=Date.now(),await this.#h.accept(d))},onDisconnect:({error:c})=>{t.signal.aborted||(this.#c.ready=!1,this.#c.connectionState="failed",this.#c.lastError=c?.message??"WhatsApp Web connection closed")}});this.#I=a;let A,r=await Promise.race([a.ready,e,new Promise((c,I)=>{A=setTimeout(()=>I(new Error("WhatsApp Web did not connect in time")),this.#n)})]).finally(()=>clearTimeout(A));if(!Rt(r.accountJid,this.#e.accountJid))throw new Error("WhatsApp linked account does not match the saved bot");let s=new iK(a.socket,o,{signal:t.signal,mediaUploadTimeoutMs:this.#s});this.#d=s,this.#h=new uM({bot:s,harness:this.#t,state:this.#r,contextEnhancement:this.#l,accessPolicy:this.#o?{botId:this.#o.botId,getSettings:(...c)=>this.#o.getSettings(...c),...typeof this.#o.isPrivileged=="function"?{isPrivileged:(...c)=>this.#o.isPrivileged(...c)}:{},equals:oK}:void 0,status:this.#c,logger:this.#i,replyTimeoutMs:this.#a,signal:t.signal});let g=Date.now();return this.#c.ready=!0,this.#c.connectionState="connected",this.#c.lastCheckedAt=g,this.#c.lastConnectedAt=g,this.status}catch(a){throw this.#c.ready=!1,this.#c.connectionState="failed",this.#c.lastError=a?.message??String(a),await this.stop(),a}}async logout(){return await this.#I?.logout().catch(()=>{}),this.stop()}async sendConnectionTest(t){if(!this.#c.ready||!this.#d){let o=new Error(w("WhatsApp\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5"));throw o.code="test-target-unavailable",o}if(typeof t!="string"||!t.trim())throw new TypeError("WhatsApp connection test text is required");return await this.#d.sendText({jid:this.#e.accountJid,selfChat:!0},t),{sent:!0}}async sendProactiveText(t,o,{signal:i}={}){let e=typeof t?.route?.jid=="string"?t.route.jid.trim():"",a=t?.kind==="user"&&/^[^@\s]+@(s\.whatsapp\.net|lid)$/.test(e),A=t?.kind==="group"&&/^[^@\s]+@g\.us$/.test(e);if(!a&&!A){let r=new TypeError("Invalid WhatsApp proactive delivery target");throw r.code="invalid-target",r}if(!this.#c.ready||!this.#d){let r=new Error(w("WhatsApp\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5"));throw r.code="bot-not-connected",r}return i?.throwIfAborted(),this.#d.sendText({jid:e},o)}async stop(){let t=this.#I,o=this.#d,i=this.#h;return this.#g?.abort(),this.#g=null,this.#I=null,this.#d=null,this.#h=null,await o?.close().catch(()=>{}),await t?.close().catch(()=>{}),await Promise.race([i?.waitForIdle()??Promise.resolve(),new Promise(e=>setTimeout(e,2e3))]),this.#c.ready=!1,this.#c.connectionState="idle",this.status}};var LZe=/^[a-f0-9-]{36}$/;function UZe(n){let t=ic(n.dshHome??process.env.DSH_HOME??ME(FZe(),".dsh")),o=ic(n.dataDir??ME(t,"integrations","dsh-whatsapp")),i=ic(n.authDir??ME(o,"auth")),e=a=>{if(!LZe.test(a??""))throw new TypeError("Invalid WhatsApp auth directory");return ic(i,a)};return{config:ic(n.configPath??ME(o,"config.json")),bots:ic(n.botsDir??ME(o,"bots")),workspaces:ic(n.workspacesPath??ME(o,"workspaces.json")),authPath:e}}async function nK(n,t={},o={}){let i=aa(n,t),e=typeof n.logger=="function"?n.logger("dsh-im:whatsapp"):n.logger??console,a=()=>La(n),A=o.ConfigStore??Rw,r=o.StateStore??Pw,s=o.HarnessClient??vw,g=o.Controller??dB,c=o.Runtime??Xf,I=o.createSession??BM,d=o.createConnectionSupervisor??jp,B=UZe(t),f=await new A(B.config).load(),Q=ic(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=f.list();await m.reconcile(_.map(k=>k.botId)),await Promise.all(_.map(k=>m.ensure(k.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("whatsapp",k)})));let T=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,R=new Map,K=k=>ic(B.bots,k,"state.json"),L=async k=>{let J=R.get(k);return J||(J=await new r(K(k)).load(),R.set(k,J)),J},U=ja(n,o.commandExecutor),{controlExecutor:z,sessionMaintenanceExecutor:q,fileIngressExecutor:x}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),G=new s({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...U?{commandExecutor:U}:{},...z?{controlExecutor:z}:{},...q?{sessionMaintenanceExecutor:q}:{},...x?{fileIngressExecutor:x}:{}}),V=new g({configStore:T,authPath:B.authPath,createSession:I,logger:e,createRuntime:async({botId:k,config:J,authDir:$})=>{let ie=await L(k);await m.ensure(k,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("whatsapp",J)});let pe=Ka(G,{botId:k,workspaces:m,state:ie,agentPresetCatalog:a});return new c({config:J,authDir:$,harness:pe.harness,state:pe.state,contextEnhancement:{botId:k,getSettings:()=>m.contextEnhancementFor(k)},accessPolicy:qa(m,k,{channel:"whatsapp",config:J,equals:oK}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??3e4,createSession:I,logger:{error:(...se)=>e.error?.(`[${k}]`,...se),warn:(...se)=>e.warn?.(`[${k}]`,...se),info:(...se)=>e.info?.(`[${k}]`,...se),debug:(...se)=>e.debug?.(`[${k}]`,...se)}})},deleteAuth:k=>PZe(B.authPath(k),{recursive:!0,force:!0}),deleteState:async({botId:k})=>{let J=R.get(k);if(R.delete(k),J&&typeof J.remove=="function")await J.remove();else try{await GZe(K(k))}catch($){if($?.code!=="ENOENT")throw $}}}),F=xa(V,{workspaces:m,stateFor:L,agentPresetCatalog:a}),N=d({channel:"whatsapp",controller:F,harness:G,logger:e,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:F,deliveryAdapter:Ya({channel:"whatsapp",workspaces:m,coreController:V,stateFor:L}),ready:N.ready,async close(){await N.close(),await F.close(),G.stopManagedProcess()}}}import HZe from"qrcode";var aIe="/whatsapp",Mr=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setAccessPolicy:Va,setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki}),iIe=Object.freeze(Object.values(Mr)),KZe=new Set(["qrValue","accountJid","authDirectory"]);function cK(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function fM(n,t){return cK(n)&&Object.keys(n).every(o=>t.includes(o))}function sK(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function xZe(n,t){return cK(t)?[Mr.status,Mr.beginProvisioning].includes(n)?fM(t,[])?null:`${n} does not accept fields.`:[Mr.pollProvisioning,Mr.cancelProvisioning].includes(n)?fM(t,["attemptId"])&&sK(t.attemptId)?null:`${n} requires an attemptId.`:n===Mr.reconnectBot?fM(t,["botId","sendTest"])&&sK(t.botId)&&(t.sendTest===void 0||typeof t.sendTest=="boolean")?null:"bot.reconnect requires a botId and optional sendTest flag.":n===Mr.deleteBot?fM(t,["botId","confirm"])&&sK(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Mr.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":n===Mr.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Mr.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Mr.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":"Unknown WhatsApp endpoint.":"Payload must be an object."}function _E(n){if(Array.isArray(n))return n.map(_E);if(!cK(n))return n;let t={};for(let[o,i]of Object.entries(n))KZe.has(o)||(t[o]=_E(i));return t}async function YZe(n){return HZe.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function gK(n,t){return!n||typeof n.qrValue!="string"?_E(n):_E({...n,qrCodeDataUrl:await t(n.qrValue)})}async function Bp(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await gK(o.provisioning,t)),_E(o)}function oIe(n,{encodeQr:t=YZe}={}){for(let e of["status","startProvisioning","registrationStatus","cancelProvisioning","reconnectBot","deleteBot"])if(typeof n?.[e]!="function")throw new TypeError(`A complete WhatsApp controller is required (${e})`);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!iIe.includes(e))return{ok:!1,error:{code:"bad-request",message:"Unknown WhatsApp endpoint."}};let r=xZe(e,a);if(r)return{ok:!1,error:{code:"bad-request",message:r}};try{let s;if(e===Mr.status)s=await Bp(await n.status(),i);else if(e===Mr.beginProvisioning)s=await gK(await n.startProvisioning(),i);else if(e===Mr.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return{ok:!1,error:{code:"bad-request",message:"The provisioning attempt no longer exists."}};s=await gK(g,i)}else if(e===Mr.cancelProvisioning)s=_E(await n.cancelProvisioning(a.attemptId));else if(e===Mr.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(s=await Bp(g,i),a.sendTest===!0){let c=null;if(!(g?.bots?.some(d=>d?.botId===a.botId&&d.connected===!0)===!0))c=new Error("WhatsApp bot is not connected"),c.code="test-target-unavailable";else try{if(typeof n.sendConnectionTest!="function"){let d=new Error("Connection test is unavailable");throw d.code="test-target-unavailable",d}await n.sendConnectionTest(a.botId)}catch(d){c=d}s={...s,testMessage:or(c)}}}else if(e===Mr.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await Bp(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===Mr.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>Bp(g,i))}else if(e===Mr.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await Bp(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else if(e===Mr.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>Bp(g,i))}else s=await Bp(await n.deleteBot(a.botId),i);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:g??{code:"whatsapp-operation-failed",message:"WhatsApp \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}}}function QM(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(aIe,oIe(t,o),{authority:fr(i)})}async function nIe(n,t={}){if(t?.controller)return QM(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await nK(n,t,t.internals??{}),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=QM(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close WhatsApp Web connections"),e}var jZe="/dsh-im-delivery",JZe="DSH-IM \u4E3B\u52A8\u6295\u9012\u6D4B\u8BD5\u6210\u529F\u3002",yi=Object.freeze({send:"message.send",listTargets:"target.list",listSuggestions:"target.suggestion.list",createTarget:"target.create",updateTarget:"target.update",deleteTarget:"target.delete",testTarget:"target.test"}),qZe=new Set(Object.values(yi)),zZe=new Set(["bad-request","unknown-bot","unknown-target","target-conflict","invalid-target","bot-not-connected","target-rejected","delivery-failed","cancelled"]);function eQ(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function OI(n,t){return eQ(n)&&Object.keys(n).length===t.length&&Object.keys(n).every(o=>t.includes(o))}function fp(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function $f(n){return typeof n=="string"&&/^[A-Za-z0-9._:@-]{1,128}$/.test(n)}function sIe(n,{targetId:t}){let o=t?["targetId","name","kind","route"]:["name","kind","route"];return!eQ(n)||Object.keys(n).some(i=>!o.includes(i))||t&&!$f(n.targetId)||n.name!==void 0&&(typeof n.name!="string"||!n.name.trim()||n.name.trim().length>80)?!1:typeof n.kind=="string"&&/^[a-z][a-z0-9-]{0,31}$/.test(n.kind)&&eQ(n.route)}function VZe(n){return OI(n,["kind","route"])&&typeof n.kind=="string"&&/^[a-z][a-z0-9-]{0,31}$/.test(n.kind)&&eQ(n.route)}function WZe(n,t){return!qZe.has(n)||!eQ(t)?!1:n===yi.send?OI(t,["botId","targetId","text"])&&fp(t.botId)&&$f(t.targetId)&&typeof t.text=="string"&&!!t.text.trim():n===yi.listTargets||n===yi.listSuggestions?OI(t,["botId"])&&fp(t.botId):n===yi.createTarget?OI(t,["botId","target"])&&fp(t.botId)&&sIe(t.target,{targetId:!0}):n===yi.updateTarget?OI(t,["botId","targetId","target"])&&fp(t.botId)&&$f(t.targetId)&&sIe(t.target,{targetId:!1}):n===yi.testTarget?OI(t,["botId","targetId"])&&fp(t.botId)&&$f(t.targetId)||OI(t,["botId","target"])&&fp(t.botId)&&VZe(t.target):OI(t,["botId","targetId"])&&fp(t.botId)&&$f(t.targetId)}function ZZe(n){let t=zZe.has(n?.code)?n.code:"delivery-failed";return{code:t,message:t,details:{}}}function IK(n){for(let t of["send","listTargets","listSuggestions","createTarget","updateTarget","deleteTarget"])if(typeof n?.[t]!="function")throw new TypeError(`A complete delivery service is required (${t})`);return async(t,o,i)=>{if(!WZe(t,o))return{ok:!1,error:{code:"bad-request",message:"Invalid delivery request.",details:{}}};if(i?.aborted)return{ok:!1,error:{code:"cancelled",message:"cancelled",details:{}}};try{let e;return t===yi.send?e=await n.send(o.botId,o.targetId,o.text,{signal:i}):t===yi.listTargets?e=await n.listTargets(o.botId):t===yi.listSuggestions?e=await n.listSuggestions(o.botId):t===yi.createTarget?e=await n.createTarget(o.botId,o.target):t===yi.updateTarget?e=await n.updateTarget(o.botId,o.targetId,o.target):t===yi.deleteTarget?e=await n.deleteTarget(o.botId,o.targetId):e=await n.send(o.botId,Object.hasOwn(o,"target")?o.target:o.targetId,JZe,{signal:i}),{ok:!0,value:e}}catch(e){return{ok:!1,error:ZZe(e)}}}}function gIe(n,t,{authority:o}={}){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(jZe,IK(t),{authority:fr(o)})}var cIe="/api/dsh-im/delivery/messages",IIe=1024*1024,XZe=Object.freeze({"bad-request":400,"unknown-bot":404,"unknown-target":404,"target-conflict":409,"invalid-target":422,"bot-not-connected":503,"target-rejected":422,"delivery-failed":502,cancelled:408}),NE=class extends Error{constructor(t,o){super(o),this.status=t,this.code=o}};function TE(n,t,o,i={}){if(n.destroyed||n.writableEnded)return;let e=JSON.stringify(o);n.writeHead(t,{"cache-control":"no-store","content-type":"application/json; charset=utf-8","content-length":String(Buffer.byteLength(e)),...i}),n.end(e)}function $Ze(n){return typeof n=="string"&&n.split(";",1)[0].trim().toLowerCase()==="application/json"}async function e9e(n){let t=Number(n.headers["content-length"]);if(Number.isFinite(t)&&t>IIe)throw new NE(413,"payload-too-large");let o=[],i=0;for await(let e of n){let a=Buffer.isBuffer(e)?e:Buffer.from(e);if(i+=a.length,i>IIe)throw new NE(413,"payload-too-large");o.push(a)}try{return JSON.parse(Buffer.concat(o,i).toString("utf8"))}catch{throw new NE(400,"bad-request")}}function A9e(n){let t=IK(n);return async(o,i)=>{if(o.method!=="POST"){TE(i,405,{error:{code:"method-not-allowed",message:"method-not-allowed",details:{}}},{allow:"POST"});return}if(!$Ze(o.headers["content-type"])){TE(i,415,{error:{code:"unsupported-media-type",message:"unsupported-media-type",details:{}}});return}let e=new AbortController,a=()=>e.abort(),A=()=>{i.writableEnded||a()};o.once("aborted",a),i.once("close",A);try{let r=await e9e(o),s=await t(yi.send,r,e.signal);if(s.ok){TE(i,200,s.value);return}TE(i,XZe[s.error.code]??500,{error:s.error})}catch(r){if(r instanceof NE){TE(i,r.status,{error:{code:r.code,message:r.code,details:{}}});return}TE(i,500,{error:{code:"delivery-failed",message:"delivery-failed",details:{}}})}finally{o.off("aborted",a),i.off("close",A)}}}function lIe(n,t){if(!n?.webServer||typeof n.webServer.register!="function"||typeof n.effect!="function")throw new TypeError("DSH Host WebServer is required");let o={kind:"exact",path:cIe,handler:A9e(t)};return n.effect(()=>n.webServer.register(o),`dsh-im: ${cIe}`)}var t9e=/^[A-Za-z0-9_-]{1,128}$/,r9e=/^[A-Za-z0-9._:@-]{1,128}$/,a9e=/^[a-z][a-z0-9-]{0,31}$/,i9e="__test__",o9e=Object.freeze(["ownsBot","listTargets","listSuggestions","createTarget","updateTarget","deleteTarget","sendText"]),n9e=new Set(["bad-request","unknown-bot","unknown-target","target-conflict","invalid-target","bot-not-connected","target-rejected","delivery-failed","cancelled"]);function dn(n,t=n,o){let i=new Error(t,o);return i.code=n,i}function RE(n){if(typeof n!="string"||!t9e.test(n))throw dn("bad-request","Invalid bot id");return n}function yM(n){if(typeof n!="string"||!r9e.test(n))throw dn("bad-request","Invalid target id");return n}function lK(n,{includesTargetId:t}={}){if(!n||typeof n!="object"||Array.isArray(n))throw dn("bad-request","Invalid target");if(t)yM(n.targetId);else if(Object.hasOwn(n,"targetId"))throw dn("bad-request","A target id cannot be changed");return n}function s9e(n){lK(n);let t=Object.keys(n);if(t.length!==2||!t.includes("kind")||!t.includes("route"))throw dn("bad-request","Invalid draft target");return n}function pIe(n){if(n?.aborted)throw dn("cancelled","Request cancelled")}function Qp(n,t="delivery-failed"){return n?.code==="workspace-bot-not-found"?dn("unknown-bot","Unknown bot",{cause:n}):n9e.has(n?.code)?n:dn(t,t,{cause:n})}function g9e(n){if(!n||typeof n!="object"||typeof n.channel!="string"||!a9e.test(n.channel))throw new TypeError("A delivery adapter with a valid channel is required");for(let t of o9e)if(typeof n[t]!="function")throw new TypeError(`A complete delivery adapter is required (${t})`);return n}var pK=class{#e=new Map;registerAdapter(t){let o=g9e(t),i=Object.freeze({adapter:o});return this.#e.set(o.channel,i),()=>this.#e.get(o.channel)!==i?!1:(this.#e.delete(o.channel),!0)}async listTargets(t){let o=RE(t),i=await this.#A(o);try{let e=await i.listTargets(o);if(!Array.isArray(e))throw new TypeError("Adapter returned invalid targets");return{botId:o,channel:i.channel,targets:e}}catch(e){throw Qp(e)}}async listSuggestions(t){let o=RE(t),i=await this.#A(o);try{let e=await i.listSuggestions(o);if(!Array.isArray(e))throw new TypeError("Adapter returned invalid suggestions");return{botId:o,channel:i.channel,suggestions:e.map(a=>Up(i.channel,a,{targetIdRequired:!1}))}}catch(e){throw Qp(e)}}async createTarget(t,o){let i=RE(t);lK(o,{includesTargetId:!0});let e=await this.#A(i);try{return await e.createTarget(i,o)}catch(a){throw Qp(a)}}async updateTarget(t,o,i){let e=RE(t),a=yM(o);lK(i);let A=await this.#A(e);try{return await A.updateTarget(e,a,i)}catch(r){throw Qp(r)}}async deleteTarget(t,o){let i=RE(t),e=yM(o),a=await this.#A(i);try{return await a.deleteTarget(i,e),{deleted:!0}}catch(A){throw Qp(A)}}async send(t,o,i,{signal:e}={}){let a=RE(t),A=typeof o=="string"?yM(o):null,r=A===null?s9e(o):null;if(typeof i!="string"||!i.trim())throw dn("bad-request","Message text is required");pIe(e);let s=await this.#A(a);try{let g;if(r)g={targetId:i9e,...r};else{let c=await s.listTargets(a);if(!Array.isArray(c))throw new TypeError("Adapter returned invalid targets");if(g=c.find(I=>I?.targetId===A),!g)throw dn("unknown-target","Unknown target")}return pIe(e),await s.sendText(a,g,i,{signal:e}),{sent:!0}}catch(g){throw e?.aborted||g?.name==="AbortError"||g?.code==="ABORT_ERR"?dn("cancelled","Request cancelled",{cause:g}):Qp(g)}}async#A(t){for(let{adapter:o}of this.#e.values()){let i;try{i=await o.ownsBot(t)}catch(e){throw Qp(e)}if(i)return o}throw dn("unknown-bot","Unknown bot")}};function dIe(){return new pK}var AQ=qe(PD(),1);import{createHash as c9e}from"node:crypto";import{readFile as CIe,realpath as Vn,stat as I9e}from"node:fs/promises";import{homedir as l9e}from"node:os";import{basename as p9e,dirname as hK,isAbsolute as uK,join as oc,relative as d9e,resolve as SM,sep as h9e}from"node:path";import{fileURLToPath as E9e}from"node:url";var bI="@xmanrui/dsh-im",tQ="https://registry.npmjs.org/",C9e=15*6e4,u9e=1e4,hIe=16*1024;function Wn(n,t={}){return Object.assign(new Error(n),{code:n,...t})}function mM(n,t){return typeof n?.get=="function"?n.get(t):n?.[t]}function EK(n,t){let o=d9e(n,t);return o!==".."&&!o.startsWith(`..${h9e}`)&&!uK(o)}async function B9e(n){try{return await CIe(n,"utf8")}catch(t){if(t.code==="ENOENT")return"";throw t}}async function CK(n){let t=await CIe(oc(n,"package.json"),"utf8");return{directory:await Vn(n),manifest:JSON.parse(t),contents:t}}async function dK(n,t){let o=hK(await Vn(n));for(;;){try{let e=await CK(o);return e.manifest?.name===t?e:null}catch(e){if(e.code!=="ENOENT")throw e}let i=hK(o);if(i===o)return null;o=i}}function f9e(n){return typeof n=="string"&&n.length>0&&Buffer.byteLength(n)<=255&&!n.startsWith("-")&&![".","..","node_modules"].includes(n)&&!/[\\/\x00-\x1f\x7f<>:"|?*]/u.test(n)}function Q9e(n){if(n[0]==="web")return"web";let t;for(let o=0;o0&&(AQ.default.validRange(n)!==null||/^[A-Za-z][A-Za-z0-9._-]*$/u.test(n))}async function S9e(n){if(n.manifest?.name!==bI||AQ.default.valid(n.manifest.version)===null)return!1;let t=[n.manifest.main,n.manifest.exports?.["./client"],n.manifest.dsh?.bundle?.patch];for(let o of t){if(typeof o!="string"||!o||uK(o)||o.includes("\0"))return!1;let i=SM(n.directory,o);if(!EK(n.directory,i)||!EK(n.directory,await Vn(i))||!(await I9e(i)).isFile())return!1}return!0}function w9e(n){if(n==null||n==="")return!0;if(typeof n!="string")return!1;try{return new URL(n).href===tQ}catch{return!1}}async function EIe(n,{signal:t,timeoutMs:o,errorCode:i,capture:e=!1}){if(t?.aborted)throw Wn("install-interrupted");let a=new AbortController,A,r,s=B=>{A??=B,a.abort(),r?.cancel?.()},g=()=>s("install-interrupted");t?.addEventListener("abort",g,{once:!0});let c=setTimeout(()=>s("install-timeout"),o),I="",d="";try{r=n(a.signal),r.stdout?.on("data",f=>{e&&(I=(I+f.toString()).slice(-hIe))}),r.stderr?.on("data",f=>{d=(d+f.toString()).slice(-hIe)}),r.stdout?.on("error",()=>s(i)),r.stderr?.on("error",()=>s(i));let B=await r.done;if(A)throw Wn(A);if(B.exitCode!==0||B.signal)throw Wn(i,{exitCode:B.exitCode,diagnosticCode:d.match(/\bERR_PNPM_[A-Z0-9_]+\b/u)?.[0]});return{exitCode:0,signal:null,...e?{stdout:I}:{}}}catch(B){throw A?Wn(A):B.code===i?B:Wn(i)}finally{clearTimeout(c),t?.removeEventListener("abort",g)}}function uIe(n={}){let t=n.ctx,o=n.env??process.env,i=n.argv??process.argv,e=n.execArgv??process.execArgv,a=n.execPath??process.execPath,A=n.cwd??process.cwd(),r=n.platform??process.platform,s=n.osHome??l9e(),g=n.electron??process.versions.electron,c=n.moduleUrl??import.meta.url,I=dK(E9e(c),bI).catch(()=>null),d;async function B(){let _=mM(t,"desktopProfiles"),T=mM(t,"desktopPnpm"),R=mM(t,"desktopPnpmBootstrap"),K=!!(g||_||T||R),L=_?.current,U=K?L?.name:Q9e(i.slice(2)),z=K&&R?.homeDir?SM(R.homeDir):y9e(o,s),q={environmentKind:K?"desktop":"cli",homeDir:z,profileName:U};if(!f9e(U))return{...q,blockedReason:"unknown-profile"};let x=await Vn(oc(z,"profiles",U)),G=await Vn(z),V={...q,homeDir:G,profileDir:x};if(K)try{if(typeof T?.runPlugin!="function"||typeof T?.run!="function"||!R||!L?.dir||R.activeProfileName!==U||await Vn(L.dir)!==x||await Vn(R.activeProfileDir)!==x||await Vn(R.appExecutable)!==await Vn(a))return{...V,blockedReason:"executor-unavailable"};let N=await dK(R.dshBootstrapPath,"dsh-plugin-desktop");return!N||p9e(R.dshBootstrapPath)!=="desktop-cli.js"||hK(await Vn(R.dshBootstrapPath))!==oc(N.directory,"lib")?{...V,blockedReason:"executor-unavailable"}:{...V,desktop:T,executable:a,cliEntry:R.dshBootstrapPath}}catch{return{...V,blockedReason:"executor-unavailable"}}let F=mM(t,"subprocess");if(typeof F?.spawn!="function"||typeof i[1]!="string"||!uK(i[1])||r==="win32")return{...V,blockedReason:"executor-unavailable"};try{let N=await dK(i[1],"@deepseek-ai/dsh");if(!N)return{...V,blockedReason:"executor-unavailable"};let k=await Vn(i[1]),J=typeof N.manifest.bin=="string"?N.manifest.bin:N.manifest.bin?.dsh,$=typeof J=="string"?SM(N.directory,J):"";return k!==$&&k!==oc(N.directory,"src","bin.ts")?{...V,blockedReason:"executor-unavailable"}:{...V,subprocess:F,executable:a,cliEntry:k}}catch{return{...V,blockedReason:"executor-unavailable"}}}function f(_,T,R,K=!1){let L=_.subprocess.spawn({argv:K?["pnpm",...T]:[a,...e,_.cliEntry,...T],cwd:K?_.profileDir:A,env:{DSH_HOME:_.homeDir,CI:"true"},stdio:{stdin:"ignore",stdout:"pipe",stderr:"pipe"},graceMs:3e3,signal:R});return{stdout:L.stdout,stderr:L.stderr,cancel:()=>L.terminate(),done:(async()=>{try{return await L.done}finally{await L.waitForExit()}})()}}async function Q(_,T){let R=["config","get","@xmanrui:registry","--json"],L=(await EIe(z=>_.desktop?_.desktop.run(R,z):f(_,R,z,!0),{signal:T,timeoutMs:n.configTimeoutMs??u9e,errorCode:"registry-check-failed",capture:!0})).stdout.trim(),U;try{U=L===""||L==="undefined"?void 0:JSON.parse(L)}catch{throw Wn("registry-check-failed")}if(!w9e(U))throw Wn("registry-conflict")}async function y({preflight:_=!1}={}){let T,R={installedVersion:null,packageValid:!1,eligible:!1,installationKey:null};try{T=await B();for(let G of["homeDir","profileDir","profileName","environmentKind","executable","cliEntry"])R[G]=T[G]??null;if(!T.profileDir)return{...R,blockedReason:T.blockedReason??"unknown-profile"};let K=await CK(T.profileDir),L=await CK(oc(T.profileDir,"node_modules",bI));R.sourceInstall=!m9e(K.manifest.dependencies?.[bI])||!EK(oc(T.profileDir,"node_modules"),L.directory),R.installedVersion=typeof L.manifest.version=="string"?L.manifest.version:null,R.packageValid=await S9e(L);let U=await I,z=`${T.homeDir}\0${T.profileDir}\0${T.profileName}`,q=U?.directory===L.directory&&U?.manifest.version===L.manifest.version;d===void 0&&q&&R.packageValid&&(d=z);let x=await Promise.all(["pnpm-lock.yaml","pnpm-workspace.yaml","package-lock.json"].map(G=>B9e(oc(T.profileDir,G))));return R.installationKey=c9e("sha256").update(JSON.stringify([z,K.contents,L.directory,L.contents,T.cliEntry,T.executable,...x])).digest("hex"),d!==void 0&&d!==z||!q&&d===void 0?R.blockedReason="installation-changed":R.packageValid?R.sourceInstall?R.blockedReason="source-install":T.blockedReason?R.blockedReason=T.blockedReason:q?_&&await Q(T):R.blockedReason="pending-restart":R.blockedReason="invalid-installation",R.eligible=!R.blockedReason,{...R,blockedReason:R.blockedReason??null}}catch(K){return{...R,blockedReason:["registry-conflict","registry-check-failed","install-timeout","install-interrupted"].includes(K.code)?K.code:T?.profileDir?"invalid-installation":"unknown-profile"}}}async function m(_,{signal:T,expectedInstallationKey:R}={}){if(AQ.default.valid(_)!==_||AQ.default.prerelease(_))throw Wn("invalid-version");let K=await y();if(R!==void 0&&K.installationKey!==R)throw Wn("installation-changed");if(!K.eligible)throw Wn(K.blockedReason);let L=await B();await Q(L,T);let U=await y();if(!U.eligible||U.installationKey!==K.installationKey)throw Wn("installation-changed");let z=["add","-w","--save-exact",`${bI}@${_}`,`--registry=${tQ}`];return EIe(q=>L.desktop?L.desktop.runPlugin(z,L.profileDir,q):f(L,["plugin","--profile",L.profileName,...z],q),{signal:T,timeoutMs:n.installTimeoutMs??C9e,errorCode:"install-failed"})}return Object.freeze({inspect:y,install:m})}var MI=qe(PD(),1);import{createHash as D9e,randomUUID as fK}from"node:crypto";import{mkdir as O9e,open as b9e,readFile as mIe,rename as M9e,stat as SIe,unlink as wIe,writeFile as _9e}from"node:fs/promises";import{isAbsolute as BIe,join as aQ}from"node:path";var iQ=new Set(["installing","verifying"]),T9e=new Set([...iQ,"restart-required","completed","failed","interrupted"]),fIe=256*1024,N9e=["package.json","pnpm-lock.yaml","pnpm-workspace.yaml"],wM=Symbol("no update lock");function bt(n){return Object.assign(new Error(n),{code:n})}async function QIe(n=globalThis.fetch,t=1e4){let o;try{if(o=await n(`${tQ}${encodeURIComponent(bI)}/latest`,{headers:{accept:"application/json"},redirect:"error",signal:AbortSignal.timeout(t)}),!o.ok)throw bt("check-failed");if(Number(o.headers.get("content-length"))>fIe)throw bt("invalid-release");let i=[],e=0;for await(let c of o.body){if(e+=c.byteLength,e>fIe)throw bt("invalid-release");i.push(Buffer.from(c))}let a=JSON.parse(Buffer.concat(i).toString("utf8")),A=a.version;if(a.name!==bI||typeof A!="string"||MI.default.valid(A)!==A||MI.default.prerelease(A))throw bt("invalid-release");let r=a.engines?.node;if(r!==void 0&&(typeof r!="string"||!MI.default.validRange(r)))throw bt("invalid-release");let s=new URL(a.dist?.tarball),g=a.dist?.integrity;if(s.origin!==new URL(tQ).origin||s.username||s.password||s.search||s.hash||s.pathname!==`/@xmanrui/dsh-im/-/dsh-im-${A}.tgz`||typeof g!="string"||!/^sha512-[A-Za-z0-9+/]{86}==$/.test(g))throw bt("invalid-release");return{version:A,nodeRange:r??"*",integrity:g,tarball:s.href}}catch(i){throw i?.code==="invalid-release"||i instanceof SyntaxError||i instanceof TypeError&&o?.ok?bt("invalid-release"):bt("check-failed")}}function yIe(n){if(!BIe(n.homeDir??"")||!BIe(n.profileDir??""))return null;let t=D9e("sha256").update(n.profileDir).digest("hex").slice(0,24),o=aQ(n.homeDir,"updates","dsh-im",t);return{directory:o,state:aQ(o,"state.json"),lock:aQ(o,"install.lock"),backup:aQ(o,"before.json")}}async function BK(n,t=null){try{if((await SIe(n)).size>10*1024*1024)throw bt("state-unavailable");return JSON.parse(await mIe(n,"utf8"))}catch(o){if(o.code==="ENOENT")return t;throw bt("state-unavailable")}}async function rQ(n,t){let o=`${n}.${fK()}.tmp`;try{await _9e(o,`${JSON.stringify(t,null,2)} -`,{mode:384,flag:"wx"}),await M9e(o,n)}catch{throw bt("state-unavailable")}finally{await wIe(o).catch(i=>{if(i.code!=="ENOENT")throw bt("state-unavailable")})}}function R9e(n){if(!Number.isSafeInteger(n)||n<=0)return!1;try{return process.kill(n,0),!0}catch(t){return t.code!=="ESRCH"}}function k9e(n){if(!n)return null;let{id:t,state:o,targetVersion:i,message:e}=n;return{id:t,state:o,targetVersion:i,message:e}}function DIe({runtime:n,runningVersion:t=QQ.version,nodeVersion:o=process.versions.node,fetchImpl:i=globalThis.fetch,now:e=Date.now,checkTimeoutMs:a=1e4,confirmationTtlMs:A=10*6e4,installTimeoutMs:r=15*6e4}={}){let s={},g=null,c=null,I=-1/0,d=null,B=null,f=null,Q=null,y=!1;function m(){if(y)throw bt("disposed")}async function _(V){let F=yIe(V);if(!F)return null;if(Q?.statePath===F.state)return Q.job;let N=await BK(F.state),k=await BK(F.lock,wM);if(!N)return k!==wM?{id:"locked",state:"interrupted",message:"recovery-required",targetVersion:null}:null;if(!T9e.has(N.state)||typeof N.id!="string"||!MI.default.valid(N.targetVersion))throw bt("state-unavailable");if(iQ.has(N.state)&&N.id!==d?.id&&(k===wM||k?.id!==N.id||!R9e(k?.pid))&&(N={...N,state:"interrupted",message:"recovery-required"}),N.id!==d?.id&&!iQ.has(N.state)){if(k!==wM)return{...N,state:"interrupted",message:"recovery-required"};if(["failed","interrupted"].includes(N.state)&&V.packageValid===!0&&V.installedVersion===t&&!V.blockedReason)return N.targetVersion===t?{...N,state:"completed",message:"recovered"}:{...N,recoverable:!0}}return N.state==="restart-required"||N.state==="completed"?V.installedVersion!==N.targetVersion||V.packageValid!==!0?{...N,state:"interrupted",message:"installation-changed"}:{...N,state:t===N.targetVersion?"completed":"restart-required"}:N}function T(V,F){let N=V.blockedReason??g?.blockedReason??null;F?.state==="interrupted"&&!F.recoverable||F?.state==="failed"&&V.installedVersion!==t?N="recovery-required":(F?.state==="restart-required"||V.installedVersion&&V.installedVersion!==t)&&(N="pending-restart");let k=iQ.has(F?.state),J=!!(V.eligible&&!N&&!k&&g?.checkId&&e(){try{let V=await n.inspect({preflight:!0}),F=await QIe(i,a);return m(),g={release:F,checkId:fK(),checkedAt:e(),expiresAt:e()+A,installationKey:V.installationKey,profileDir:V.profileDir,blockedReason:V.blockedReason??(MI.default.satisfies(o,F.nodeRange)?null:"incompatible-node")},T(V,await _(V))}catch(V){throw g&&(g={...g,checkId:null,expiresAt:0}),V}finally{c=null}})(),c))}async function L(V,F){(await BK(V.lock))?.id===F&&await wIe(V.lock)}async function U(V,F,N){let k={};for(let J of N9e)try{let $=aQ(V.profileDir,J);if((await SIe($)).size>3*1024*1024)throw bt("state-unavailable");k[J]=await mIe($,"utf8")}catch($){if($.code!=="ENOENT")throw bt("state-unavailable")}await rQ(F.backup,{jobId:N.id,previousVersion:N.previousVersion,files:k})}function z(V){d={...d,state:"interrupted",message:"state-unavailable"},Q={statePath:V.state,job:d}}async function q(V,F,N){let k=AbortSignal.timeout(r);try{if(await n.install(F.targetVersion,{signal:AbortSignal.any([f.signal,k]),expectedInstallationKey:N.installationKey}),y)throw bt("interrupted");d={...d,state:"verifying",updatedAt:e()},await rQ(V.state,d);let J=await n.inspect();if(J.homeDir!==N.homeDir||J.profileDir!==N.profileDir||J.profileName!==N.profileName||J.blockedReason==="installation-changed")throw bt("installation-changed");if(J.installedVersion!==F.targetVersion||J.packageValid!==!0||J.blockedReason&&J.blockedReason!=="pending-restart")throw bt("verify-failed");d={...d,state:"restart-required",message:null,updatedAt:e()},await rQ(V.state,d)}catch(J){let $=k.aborted||J.code==="install-timeout",ie=y||f.signal.aborted||!$&&["interrupted","install-interrupted"].includes(J.code);d={...d,state:ie?"interrupted":"failed",message:ie?"interrupted":$?"install-timeout":["verify-failed","state-unavailable","installation-changed","registry-conflict"].includes(J.code)?J.code:"install-failed",updatedAt:e()};try{await rQ(V.state,d)}catch{z(V);return}}await L(V,F.id)}function x({checkId:V,requestId:F}){return ag(s,"install",async()=>{m();let N=await n.inspect({preflight:!0}),k=await _(N);if(k?.requestId===F)return T(N,k);if(iQ.has(k?.state)||k?.state==="restart-required")throw bt("update-busy");let J=g;if(!J||!V||J.checkId!==V||e()>=J.expiresAt)throw bt("check-expired");if(N.profileDir!==J.profileDir||N.installationKey!==J.installationKey)throw bt("installation-changed");if(!T(N,k).canInstall)throw bt(N.blockedReason??"update-busy");let $=yIe(N);if(!$)throw bt("state-unavailable");let ie={id:fK(),requestId:F,state:"installing",message:null,targetVersion:J.release.version,previousVersion:N.installedVersion,startedAt:e(),updatedAt:e()},pe=!1;try{await O9e($.directory,{recursive:!0,mode:448});let se=await b9e($.lock,"wx",384);pe=!0;try{await se.writeFile(JSON.stringify({id:ie.id,pid:process.pid,startedAt:e()}))}finally{await se.close()}let Te=await QIe(i,a);if(JSON.stringify(Te)!==JSON.stringify(J.release))throw bt("check-expired");if(N=await n.inspect({preflight:!0}),N.profileDir!==J.profileDir||N.installationKey!==J.installationKey)throw bt("installation-changed");if(!N.eligible||N.blockedReason)throw bt(N.blockedReason??"update-busy");m(),await U(N,$,ie),await rQ($.state,ie),m()}catch(se){throw pe&&await L($,ie.id),se.code==="EEXIST"?bt("update-busy"):se.code?.startsWith("E")?bt("state-unavailable"):se}return d=ie,f=new AbortController,B=q($,ie,N).catch(()=>{z($)}),T(N,ie)})}async function G(){y=!0,f?.abort(),B&&await B}return Object.freeze({status:R,check:K,install:x,close:G})}var v9e="/dsh-im",P9e=Object.freeze(["update.status","update.check","update.install"]);function G9e(n,t){if(t===null||typeof t!="object"||Array.isArray(t))return!1;let o=Object.keys(t);return n!=="update.install"?o.length===0:o.length===2&&o.every(i=>i==="checkId"||i==="requestId")&&["checkId","requestId"].every(i=>typeof t[i]=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(t[i]))}var F9e=new Set(["check-failed","invalid-release","check-expired","installation-changed","update-busy","install-failed","verify-failed","state-unavailable","interrupted","disposed","source-install","unknown-profile","unsupported-runtime","registry-conflict","incompatible-node","pending-restart","recovery-required","executor-unavailable","invalid-installation","registry-check-failed","install-timeout","install-interrupted","invalid-version"]);function L9e(n){return async(t,o,i)=>{if(!P9e.includes(t)||!G9e(t,o))return{ok:!1,error:{code:"bad-request",message:"Invalid update request."}};if(i?.aborted)return{ok:!1,error:{code:"cancelled",message:"Request cancelled."}};try{return{ok:!0,value:t==="update.install"?await n.install(o):t==="update.check"?await n.check():await n.status()}}catch(e){let a=F9e.has(e?.code)?e.code:"update-failed";return{ok:!1,error:{code:a,message:a}}}}}function OIe(n,t={}){let o=t.runtime??uIe({ctx:n,moduleUrl:import.meta.url}),i=t.service??DIe({runtime:o}),e=n.connection.rpc.handle(v9e,L9e(i),{authority:"loopback"});return n.effect(()=>()=>i.close(),"dsh-im: close update installer"),e}var bIe="dsh-im-host",U9e=["connection","credentials","typertGateway"];function H9e(n,t,o){let i=n[t]??{},e=n.rpcAuthority===void 0?i:{...i,rpcAuthority:n.rpcAuthority};return t==="office"?e:{...e,deliveryService:o}}function K9e(n={}){let t=n.installUpdateRpc??OIe,o=n.installDeliveryRpc??gIe,i=n.installDeliveryHttp??lIe,e=n.createDeliveryService??dIe,a=n.applyFeishu??S5,A=n.applyWeixin??E9,r=n.applyDingtalk??P1,s=n.applyWecom??UZ,g=n.applyQq??x5,c=n.applySlack??oZ,I=n.applyTelegram??SZ,d=n.applyDiscord??s3,B=n.applyOffice??d3,f=n.applyWhatsapp??nIe,Q=[["feishu",a],["weixin",A],["dingtalk",r],["wecom",s],["qq",g],["slack",c],["telegram",I],["discord",d],["whatsapp",f],["office",B]];return Object.freeze({name:bIe,inject:U9e,async apply(m,_={}){let T=e();typeof m?.provide=="function"&&m.provide("dshIm",Object.freeze({send:(K,L,U,z)=>T.send(K,L,U,z),listTargets:async K=>(await T.listTargets(K)).targets}));let R=async K=>{await y(K,_,T)};if(typeof m?.inject=="function"){let K=typeof m?.typertGateway?.stream=="function";await m.inject(K?["sessionController","workspaceController"]:["apiProxy"],R),m.inject(["webServer"],L=>{i(L,T)});return}await R(m),m?.webServer?.register&&typeof m?.effect=="function"&&i(m,T)}});async function y(m,_,T){ox(_.language??process.env.DSH_IM_LANGUAGE),typeof m?.inject=="function"?m.inject(["tools","systemPrompt"],L=>{m_(L)}):m_(m);let R=typeof m?.logger=="function"?m.logger(bIe):m?.logger??console;if(m?.connection?.rpc){try{t(m)}catch(L){R.error?.("[dsh-im] failed to activate update management; continuing with channels",L)}try{o(m,T,{authority:_.rpcAuthority})}catch(L){R.error?.("[dsh-im] failed to activate delivery management; continuing with channels",L)}}let K=[];for(let[L,U]of Q)try{await U(m,H9e(_,L,T))}catch(z){K.push(z),R.error?.(`[dsh-im] failed to activate ${L}; continuing with the remaining channels`,z)}if(K.length===Q.length)throw new AggregateError(K,"dsh-im failed to activate every channel")}}async function h2A(n,t={}){return K9e().apply(n,t)}export{h2A as apply,K9e as createImHostPlugin,U9e as inject,bIe as name}; +${n.stack}`:i}function aHe(n){n<1028||(Ug[n]=OB,OB=n)}function wB(n,t){return n=n>>>0,dh().subarray(n/1,n/1+t)}var vl=null;function eA(){return(vl===null||vl.buffer.detached===!0||vl.buffer.detached===void 0&&vl.buffer!==ae.memory.buffer)&&(vl=new DataView(ae.memory.buffer)),vl}function kr(n,t){return n=n>>>0,nHe(n,t)}var DB=null;function dh(){return(DB===null||DB.byteLength===0)&&(DB=new Uint8Array(ae.memory.buffer)),DB}function Fe(n){return Ug[n]}function Rr(n,t){try{return n.apply(this,t)}catch(o){ae.__wbindgen_export3(rA(o))}}var Ug=new Array(1024).fill(void 0);Ug.push(void 0,null,!0,!1);var OB=Ug.length;function Fn(n){return n==null}function iHe(n,t,o,i){let e={a:n,b:t,cnt:1,dtor:o},a=(...A)=>{e.cnt++;let r=e.a;e.a=0;try{return i(r,e.b,...A)}finally{e.a=r,a._wbg_cb_unref()}};return a._wbg_cb_unref=()=>{--e.cnt===0&&(e.dtor(e.a,e.b),e.a=0,M7.unregister(e))},M7.register(a,e,e),a}function kt(n,t){let o=t(n.length*1,1)>>>0;return dh().set(n,o/1),KA=n.length,o}function _7(n,t){let o=t(n.length*4,4)>>>0,i=eA();for(let e=0;e>>0;return dh().subarray(s,s+r.length).set(r),KA=r.length,s}let i=n.length,e=t(i,1)>>>0,a=dh(),A=0;for(;A127)break;a[e+A]=r}if(A!==i){A!==0&&(n=n.slice(A)),e=o(e,i,i=A+n.length*3,1)>>>0;let r=dh().subarray(e+A,e+i),s=bB.encodeInto(n,r);A+=s.written,e=o(e,i,A,1)>>>0}return KA=A,e}function mA(n){let t=Fe(n);return aHe(n),t}var oD=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});oD.decode();var oHe=2146435072,qF=0;function nHe(n,t){return qF+=t,qF>=oHe&&(oD=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),oD.decode(),qF=t),oD.decode(dh().subarray(n,n+t))}var bB=new TextEncoder;"encodeInto"in bB||(bB.encodeInto=function(n,t){let o=bB.encode(n);return t.set(o),{read:n.length,written:o.length}});var KA=0,sHe,ae;function gHe(n,t){return ae=n.exports,sHe=t,vl=null,DB=null,ae}function N7(n){if(ae!==void 0)return ae;n!==void 0&&(Object.getPrototypeOf(n)===Object.prototype?{module:n}=n:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let t=AHe();n instanceof WebAssembly.Module||(n=new WebAssembly.Module(n));let o=new WebAssembly.Instance(n,t);return gHe(o,n)}var cHe=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]);function R7(n){let t=atob(n),o=new Uint8Array(t.length);for(let i=0;in.length===33?n:Buffer.concat([Hg,n]),Sr={generateKeyPair:()=>{let{pubKey:n,privKey:t}=eI.generateKeyPair();return{private:Buffer.from(t),public:Buffer.from(n.slice(1))}},sharedKey:(n,t)=>{let o=eI.calculateAgreement(Wo(t),n);return Buffer.from(o)},sign:(n,t)=>eI.calculateSignature(n,t),verify:(n,t,o)=>{try{return eI.verifySignature(Wo(n),t,o),!0}catch{return!1}}},dD=(n,t)=>{let o=Sr.generateKeyPair(),i=Wo(o.public),e=Sr.sign(n.private,i);return{keyPair:o,signature:e,keyId:t}},v7=16;function Pl(n,t,o,i){let e=VF("aes-256-gcm",t,o);return e.setAAD(i),Buffer.concat([e.update(n),e.final(),e.getAuthTag()])}function Gl(n,t,o,i){let e=WF("aes-256-gcm",t,o),a=n.slice(0,n.length-v7),A=n.slice(n.length-v7);return e.setAAD(i),e.setAuthTag(A),Buffer.concat([e.update(a),e.final()])}function P7(n,t,o){let i=VF("aes-256-ctr",t,o);return Buffer.concat([i.update(n),i.final()])}function G7(n,t,o){let i=WF("aes-256-ctr",t,o);return Buffer.concat([i.update(n),i.final()])}function F7(n,t){return uHe(n.subarray(16),t,n.subarray(0,16))}function uHe(n,t,o){let i=WF("aes-256-cbc",t,o);return Buffer.concat([i.update(n),i.final()])}function L7(n,t){let o=CHe(16),i=VF("aes-256-cbc",t,o);return Buffer.concat([o,i.update(n),i.final()])}function Hn(n,t,o="sha256"){return EHe(o,t).update(n).digest()}function uh(n){return hHe("sha256").update(n).digest()}async function hD(n,t){let i=new TextEncoder().encode(n),e=new Uint8Array(t instanceof Uint8Array?t:new Uint8Array(t)),a=await k7.importKey("raw",i,{name:"PBKDF2"},!1,["deriveBits"]),A=await k7.deriveBits({name:"PBKDF2",salt:e,iterations:2<<16,hash:"SHA-256"},a,256);return Buffer.from(A)}var RB={replacer:(n,t)=>Buffer.isBuffer(t)||t instanceof Uint8Array||t?.type==="Buffer"?{type:"Buffer",data:Buffer.from(t?.data||t).toString("base64")}:t,reviver:(n,t)=>{if(typeof t=="object"&&t!==null&&t.type==="Buffer"&&typeof t.data=="string")return Buffer.from(t.data,"base64");if(typeof t=="object"&&t!==null&&!Array.isArray(t)){let o=Object.keys(t);if(o.length>0&&o.every(i=>!isNaN(parseInt(i,10)))){let i=Object.values(t);if(i.every(e=>typeof e=="number"))return Buffer.from(i)}}return t}},Bh=(n,t="me")=>(n?.fromMe?t:n?.participantAlt||n?.remoteJidAlt||n?.participant||n?.remoteJid)||"",K7=n=>n==null||n==="",fHe=n=>{let o=(NB(1)[0]&15)+1;return Buffer.concat([n,Buffer.alloc(o,o)])},x7=n=>{let t=new Uint8Array(n);if(t.length===0)throw new Error("unpadPkcs7 given empty bytes");var o=t[t.length-1];if(o>t.length)throw new Error(`unpad given ${t.length} bytes, but pad is ${o}`);return new Uint8Array(t.buffer,t.byteOffset,t.length-o)},Y7=n=>(n.sort(),"2:"+uh(Buffer.from(n.join(""))).toString("base64").slice(0,6)),fh=n=>fHe(oe.Message.encode(n).finish()),j7=()=>Uint16Array.from(NB(2))[0]&16383,Kg=(n,t=4)=>{let o=n,i=new Uint8Array(t);for(let e=t-1;e>=0;e--)i[e]=255&o,o>>>=8;return i},Yr=n=>typeof n=="object"&&n?"toNumber"in n?n.toNumber():n.low:n||0,ba=(n=new Date)=>Math.floor(n.getTime()/1e3);var kB=n=>J7(n).delay,J7=n=>{let t=new Error().stack,o,i;return{delay:new Promise((A,r)=>{o=setTimeout(A,n),i=r}),cancel:()=>{clearTimeout(o),i(new ED.Boom("Cancelled",{statusCode:500,data:{stack:t}}))}}};async function Qh(n,t){if(!n)return new Promise(t);let o=new Error().stack,{delay:i,cancel:e}=J7(n);return new Promise((A,r)=>{i.then(()=>r(new ED.Boom("Timed Out",{statusCode:$t.timedOut,data:{stack:o}}))).catch(s=>r(s)),t(A,r)}).finally(e)}var jr=n=>{let t=Buffer.alloc(44);if(t.writeBigUInt64BE(BigInt(Math.floor(Date.now()/1e3))),n){let e=fA(n);e?.user&&(t.write(e.user,8),t.write("@c.us",8+e.user.length))}return NB(16).copy(t,28),"3EB0"+BHe("sha256").update(t).digest().toString("hex").toUpperCase().substring(0,18)},ZF=()=>"3EB0"+NB(18).toString("hex").toUpperCase();function XF(n,t){return async(o,i)=>{let e,a;await Qh(i,(A,r)=>{a=({connection:s,lastDisconnect:g})=>{s==="close"&&r(g?.error||new ED.Boom("Connection Closed",{statusCode:$t.connectionClosed}))},n.on("connection.update",a),e=async s=>{await o(s)&&A()},n.on(t,e)}).finally(()=>{n.off(t,e),n.off("connection.update",a)})}}var q7=n=>XF(n,"connection.update");var z7=()=>{let n=NB(4);return`${n.readUInt16BE()}.${n.readUInt16BE(2)}-`},QHe={sender:oe.WebMessageInfo.Status.SERVER_ACK,played:oe.WebMessageInfo.Status.PLAYED,read:oe.WebMessageInfo.Status.READ,"read-self":oe.WebMessageInfo.Status.READ},V7=n=>{let t=QHe[n];return typeof n>"u"?oe.WebMessageInfo.Status.DELIVERY_ACK:t},yHe={conflict:$t.connectionReplaced},W7=n=>{let[t]=_s(n),o=t?.tag||"unknown",i=+(n.attrs.code||yHe[o]||$t.badSession);return i===$t.restartRequired&&(o="restart required"),{reason:o,statusCode:i}},Z7=({tag:n,attrs:t})=>{let o;switch(n){case"offer":case"offer_notice":o="offer";break;case"terminate":t.reason==="timeout"?o="timeout":o="terminate";break;case"preaccept":o="preaccept";break;case"transport":o="transport";break;case"relaylatency":o="relaylatency";break;case"reject":o="reject";break;case"accept":o="accept";break;default:o="ringing";break}return o},U7="Unexpected server response: ",X7=n=>{let t=500;if(n?.message?.includes(U7)){let o=+n?.message.slice(U7.length);!Number.isNaN(o)&&o>=400&&(t=o)}else(n?.code?.startsWith("E")||n?.message?.includes("timed out"))&&(t=408);return t};function CD(n){for(let t in n)typeof n[t]>"u"&&delete n[t];return n}var H7="123456789ABCDEFGHJKLMNPQRSTVWXYZ";function $7(n){let t=0,o=0,i=[];for(let e of n)for(t=t<<8|e&255,o+=8;o>=5;)i.push(H7.charAt(t>>>o-5&31)),o-=5;return o>0&&i.push(H7.charAt(t<<5-o&31)),i.join("")}function e$(n){return oe.Message.encode(n).finish()}var Fl=qe(Kr(),1);var mHe=async(n,t)=>qA(n)||Ia(n)?n:await t.lidMapping.getLIDForPN(n)||n,SHe=async(n,t,o,i,e)=>{let{senderAlt:a}=BD(n);if(a&&qA(a)&&_t(t)&&i===t)try{await o.lidMapping.storeLIDPNMappings([{lid:a,pn:t}]),await o.migrateSession(t,a),e.debug({sender:t,senderAlt:a},"Stored LID mapping from envelope")}catch(A){e.warn({sender:t,senderAlt:a,error:A},"Failed to store LID mapping")}},uD="Message absent from node",A$="Key used already or never filled",t$="Your account has been restricted",wHe={maxRetries:3,baseDelayMs:100,sessionRecordErrors:["No session record","SessionError: No session record"]},Ll={SenderReachoutTimelocked:463,ParsingError:487,UnrecognizedStanza:488,UnrecognizedStanzaClass:489,UnrecognizedStanzaType:490,InvalidProtobuf:491,InvalidHostedCompanionStanza:493,MissingMessageSecret:495,SignalErrorOldCounter:496,MessageDeletedOnPeer:499,UnhandledError:500,UnsupportedAdminRevoke:550,UnsupportedLIDGroup:551,DBOperationFailed:552},$F={MessageAccountRestriction:"463",SmaxInvalid:"479"},BD=n=>{let t,o,i=n.attrs.participant||n.attrs.from,e=n.attrs.addressing_mode||(i?.endsWith("lid")?"lid":"pn");return e==="lid"?(t=n.attrs.participant_pn||n.attrs.sender_pn||n.attrs.peer_recipient_pn,o=n.attrs.recipient_pn):(t=n.attrs.participant_lid||n.attrs.sender_lid||n.attrs.peer_recipient_lid,o=n.attrs.recipient_lid),{addressingMode:e,senderAlt:t,recipientAlt:o}};function eL(n,t,o){let i,e,a,A=!1,r=n.attrs.id,s=n.attrs.from,g=n.attrs.participant,c=n.attrs.recipient;if(!r)throw new Fl.Boom("Invalid message stanza: missing id attribute",{data:n});if(!s)throw new Fl.Boom("Invalid message stanza: missing from attribute",{data:n});let I=BD(n),d=m=>Rt(m,t),B=m=>Rt(m,o);if(_t(s)||qA(s)||Ia(s)||mr(s)){if(c&&!ph(c)){if(!d(s)&&!B(s))throw new Fl.Boom("receipient present, but msg not from me",{data:n});(d(s)||B(s))&&(A=!0),e=c}else(d(s)||B(s))&&(A=!0),e=s;i="chat",a=s}else if(xr(s)){if(!g)throw new Fl.Boom("No participant in group message");(d(g)||B(g))&&(A=!0),i="group",a=g,e=s}else if(SB(s)){if(!g)throw new Fl.Boom("No participant in group message");let m=d(g);Lg(s)?i=m?"direct_peer_status":"other_status":i=m?"peer_broadcast":"other_broadcast",A=m,e=s,a=g}else if(Wc(s))i="newsletter",e=s,a=s,(d(s)||B(s))&&(A=!0);else throw new Fl.Boom("Unknown message type",{data:n});let f=n?.attrs?.notify,Q={remoteJid:e,remoteJidAlt:xr(e)?void 0:I.senderAlt,remoteJidUsername:xr(e)?void 0:n.attrs.peer_recipient_username||n.attrs.recipient_username,fromMe:A,id:r,participant:g,participantAlt:xr(e)?I.senderAlt:void 0,participantUsername:n.attrs.participant?n.attrs.participant_username:void 0,addressingMode:I.addressingMode,...i==="newsletter"&&n.attrs.server_id?{server_id:n.attrs.server_id}:{}},y={key:Q,category:n.attrs.category,messageTimestamp:+n.attrs.t,pushName:f,broadcast:SB(s)};return Q.fromMe&&(y.status=oe.WebMessageInfo.Status.SERVER_ACK),{fullMessage:y,author:a,sender:i==="chat"?a:e}}var r$=(n,t,o,i,e)=>{let{fullMessage:a,author:A,sender:r}=eL(n,t,o);return{fullMessage:a,category:n.attrs.category,author:A,async decrypt(){let s=0;if(Array.isArray(n.content))for(let{tag:g,attrs:c,content:I}of n.content){if(g==="verified_name"&&I instanceof Uint8Array){let f=oe.VerifiedNameCertificate.decode(I),Q=oe.VerifiedNameCertificate.Details.decode(f.details);a.verifiedBizName=Q.verifiedName}if(g==="unavailable"&&c.type==="view_once"&&(a.key.isViewOnce=!0),c.count&&g==="enc"&&(a.retryCount=Number(c.count)),g!=="enc"&&g!=="plaintext"||!(I instanceof Uint8Array))continue;s+=1;let d,B=await mHe(A,i);g!=="plaintext"&&await SHe(n,A,i,B,e);try{let f=g==="plaintext"?"plaintext":c.type;switch(f){case"skmsg":d=await i.decryptGroupMessage({group:r,authorJid:A,msg:I});break;case"pkmsg":case"msg":d=await i.decryptMessage({jid:B,type:f,ciphertext:I});break;case"plaintext":d=I;break;default:throw new Error(`Unknown e2e type: ${f}`)}let Q=oe.Message.decode(f!=="plaintext"?x7(d):d);if(Q=Q.deviceSentMessage?.message||Q,Q.senderKeyDistributionMessage)try{await i.processSenderKeyDistributionMessage({authorJid:A,item:Q.senderKeyDistributionMessage})}catch(y){e.error({key:a.key,err:y},"failed to process sender key distribution message")}a.message?Object.assign(a.message,Q):a.message=Q}catch(f){let Q={key:a.key,err:f,messageType:g==="plaintext"?"plaintext":c.type,sender:r,author:A,isSessionRecordError:DHe(f)};e.error(Q,"failed to decrypt message"),a.messageStubType=oe.WebMessageInfo.StubType.CIPHERTEXT,a.messageStubParameters=[f.message.toString()]}}!s&&!a.key?.isViewOnce&&(a.messageStubType=oe.WebMessageInfo.StubType.CIPHERTEXT,a.messageStubParameters=[uD])}}};function DHe(n){let t=n?.message||n?.toString()||"";return wHe.sessionRecordErrors.some(o=>t.includes(o))}var Xg=qe(Kr(),1);import{randomBytes as dU}from"crypto";import{promises as hU}from"fs";var xn=qe(Kr(),1);import{exec as D4e}from"child_process";import*as fo from"crypto";import{once as sE}from"events";import{createReadStream as Eb,createWriteStream as oU,promises as cE}from"fs";import{tmpdir as Moe}from"os";import{join as db}from"path";import{Readable as Df,Transform as O4e}from"stream";import{URL as nU}from"url";var sU=()=>Moe(),_oe=async()=>{let[n,t]=await Promise.all([import("jimp").catch(()=>{}),Promise.resolve().then(()=>(dte(),pte)).catch(()=>{})]);if(t)return{sharp:t};if(n)return{jimp:n};throw new xn.Boom("No image processing library available")},b4e=n=>`WhatsApp ${Koe[n]} Keys`,Cb=async(n,t,o)=>{let{stream:i}=await Of(n);o?.debug("got stream for raw upload");let e=fo.createHash("sha256"),a=db(Moe(),t+jr()),A=oU(a),r=0;try{for await(let g of i)r+=g.length,e.update(g),A.write(g)||await sE(A,"drain");A.end(),await sE(A,"finish"),i.destroy();let s=e.digest();return o?.debug("hashed data for raw upload"),{filePath:a,fileSha256:s,fileLength:r}}catch(s){A.destroy(),i.destroy();try{await cE.unlink(a)}catch{}throw s}};async function Toe(n,t){if(!n)throw new xn.Boom("Cannot derive from empty media key");typeof n=="string"&&(n=Buffer.from(n.replace("data:;base64,",""),"base64"));let o=Un(n,112,{info:b4e(t)});return{iv:o.slice(0,16),cipherKey:o.slice(16,48),macKey:o.slice(48,80)}}var M4e=async(n,t,o,i)=>new Promise((e,a)=>{let A=`ffmpeg -ss ${o} -i ${n} -y -vf scale=${i.width}:-1 -vframes 1 -f image2 ${t}`;D4e(A,r=>{r?a(r):e()})}),gU=async(n,t=32)=>{n instanceof Df&&(n=await hb(n));let o=await _oe();if("sharp"in o&&typeof o.sharp?.default=="function"){let i=o.sharp.default(n),e=await i.metadata();return{buffer:await i.resize(t).jpeg({quality:50}).toBuffer(),original:{width:e.width,height:e.height}}}else if("jimp"in o&&typeof o.jimp?.Jimp=="object"){let i=await o.jimp.Jimp.read(n),e={width:i.width,height:i.height};return{buffer:await i.resize({w:t,mode:o.jimp.ResizeStrategy.BILINEAR}).getBuffer("image/jpeg",{quality:50}),original:e}}else throw new xn.Boom("No image processing library available")},_4e=n=>encodeURIComponent(n.replace(/\+/g,"-").replace(/\//g,"_").replace(/\=+$/,"")),ub=async(n,t)=>{let o,{width:i=640,height:e=640}=t||{};if(Buffer.isBuffer(n))o=n;else{let{stream:r}=await Of(n);o=await hb(r)}let a=await _oe(),A;if("sharp"in a&&typeof a.sharp?.default=="function")A=a.sharp.default(o).resize(i,e).jpeg({quality:50}).toBuffer();else if("jimp"in a&&typeof a.jimp?.Jimp=="function"){let r=await a.jimp.Jimp.read(o),s=Math.min(r.width,r.height);A=r.crop({x:0,y:0,w:s,h:s}).resize({w:i,h:e,mode:a.jimp.ResizeStrategy.BILINEAR}).getBuffer("image/jpeg",{quality:50})}else throw new xn.Boom("No image processing library available");return{img:await A}};async function Noe(n){let t=await Promise.resolve().then(()=>(Ooe(),Doe)),o,i={duration:!0};return Buffer.isBuffer(n)?o=await t.parseBuffer(n,void 0,i):typeof n=="string"?o=await t.parseFile(n,i):o=await t.parseStream(n,void 0,i),o.format.duration}async function Roe(n,t){try{let{default:o}=await import("audio-decode"),i;if(Buffer.isBuffer(n))i=n;else if(typeof n=="string"){let d=Eb(n);i=await hb(d)}else i=await hb(n);let a=(await o(i)).getChannelData(0),A=64,r=Math.floor(a.length/A),s=[];for(let d=0;dd*g);return new Uint8Array(c.map(d=>Math.floor(100*d)))}catch(o){t?.debug("Failed to generate waveform: "+o)}}var boe=n=>{let t=new Df({read:()=>{}});return t.push(n),t.push(null),t},hb=async n=>{let t=[];for await(let o of n)t.push(o);return n.destroy(),Buffer.concat(t)},Of=async(n,t)=>{if(Buffer.isBuffer(n))return{stream:boe(n),type:"buffer"};if("stream"in n)return{stream:n.stream,type:"readable"};let o=n.url.toString();if(o.startsWith("data:")){let i=Buffer.from(o.split(",")[1],"base64");return{stream:boe(i),type:"buffer"}}return o.startsWith("http://")||o.startsWith("https://")?{stream:await Bb(n.url,t),type:"remote"}:{stream:Eb(n.url),type:"file"}};async function koe(n,t,o){let i,e;if(t==="image"){let{buffer:a,original:A}=await gU(n);i=a.toString("base64"),A.width&&A.height&&(e={width:A.width,height:A.height})}else if(t==="video"){let a=db(sU(),jr()+".jpg");try{await M4e(n,a,"00:00:00",{width:32,height:32}),i=(await cE.readFile(a)).toString("base64"),await cE.unlink(a)}catch(A){o.logger?.debug("could not generate video thumb: "+A)}}return{thumbnail:i,originalImageDimensions:e}}var Bb=async(n,t={})=>{let o=await fetch(n.toString(),{dispatcher:t.dispatcher,method:"GET",headers:t.headers});if(!o.ok)throw new xn.Boom(`Failed to fetch stream from ${n}`,{statusCode:o.status,data:{url:n}});return o.body instanceof Df?o.body:Df.fromWeb(o.body)},voe=async(n,t,{logger:o,saveOriginalFileIfRequired:i,opts:e}={})=>{let{stream:a,type:A}=await Of(n,e);o?.debug("fetched media stream");let r=fo.randomBytes(32),{cipherKey:s,iv:g,macKey:c}=await Toe(r,t),I=db(sU(),t+jr()+"-enc"),d=oU(I),B,f;i&&(f=db(sU(),t+jr()+"-original"),B=oU(f));let Q=0,y=fo.createCipheriv("aes-256-cbc",s,g),m=fo.createHmac("sha256",c).update(g),_=fo.createHash("sha256"),T=fo.createHash("sha256"),R=async K=>{T.update(K),m.update(K),d.write(K)||await sE(d,"drain")};try{for await(let x of a){if(Q+=x.length,A==="remote"&&e?.maxContentLength&&Q+x.length>e.maxContentLength)throw new xn.Boom(`content length exceeded when encrypting "${A}"`,{data:{media:n,type:A}});B&&(B.write(x)||await sE(B,"drain")),_.update(x),await R(y.update(x))}await R(y.final());let K=m.digest().slice(0,10);T.update(K);let L=_.digest(),U=T.digest();d.write(K);let z=sE(d,"finish"),q=B?sE(B,"finish"):Promise.resolve();return d.end(),B?.end?.(),a.destroy(),await z,await q,o?.debug("encrypted data successfully"),{mediaKey:r,originalFilePath:f,encFilePath:I,mac:K,fileEncSha256:U,fileSha256:L,fileLength:Q}}catch(K){d.destroy(),B?.destroy?.(),y.destroy(),m.destroy(),_.destroy(),T.destroy(),a.destroy();try{await cE.unlink(I),f&&await cE.unlink(f)}catch(L){o?.error({err:L},"failed deleting tmp files")}throw K}},cU="mmg.whatsapp.net",gE=16,iU=n=>Math.floor(n/gE)*gE,bf=(n,t=cU)=>`https://${t}${n}`,T4e=n=>{if(n)try{return new nU(n).host}catch{return}},IE=async({mediaKey:n,directPath:t,url:o},i,e={})=>{let a=e.host??T4e(o),A=t?bf(t,a):o;if(!A)throw new xn.Boom("No valid media URL or directPath present in message",{statusCode:400});let r=await Toe(n,i);return N4e(A,r,e)},N4e=async(n,{cipherKey:t,iv:o},{startByte:i,endByte:e,options:a}={})=>{let A=0,r=0,s=!1;if(i){let m=iU(i||0);m&&(r=m-gE,A=m,s=!0)}let g=e?iU(e||0)+gE:void 0,c=a?.headers?a.headers:void 0,I={...c?Array.isArray(c)?Object.fromEntries(c):c:{},Origin:Mf};(r||g)&&(I.Range=`bytes=${r}-`,g&&(I.Range+=g));let d=await Bb(n,{...a||{},headers:I}),B=Buffer.from([]),f,Q=(m,_)=>{if(i||e){let T=A>=i?void 0:Math.max(i-A,0),R=A+m.lengththis.push(L)),T()}catch(L){T(L)}},final(m){try{Q(f.final(),_=>this.push(_)),m()}catch(_){m(_)}}});return d.pipe(y,{end:!0})};var R4e=()=>typeof process<"u"&&process.versions?.node!==null&&typeof process.versions.bun>"u"&&typeof globalThis.Deno>"u",Poe=async({url:n,filePath:t,headers:o,timeoutMs:i,agent:e},a=0)=>{if(a>5)throw new Error("Too many redirects");let A=new nU(n),r=A.protocol==="https:"?await import("https"):await import("http"),g=(await cE.stat(t)).size;return new Promise((c,I)=>{let d=r.request({hostname:A.hostname,port:A.port||(A.protocol==="https:"?443:80),path:A.pathname+A.search,method:"POST",headers:{...o,"Content-Length":g},agent:e,timeout:i},f=>{if(f.statusCode&&f.statusCode>=300&&f.statusCode<400&&f.headers.location){f.resume();let y=new nU(f.headers.location,n).toString();c(Poe({url:y,filePath:t,headers:o,timeoutMs:i,agent:e},a+1));return}let Q="";f.on("data",y=>Q+=y),f.on("end",()=>{try{c(JSON.parse(Q))}catch{c(void 0)}})});d.on("error",I),d.on("timeout",()=>{d.destroy(),I(new Error("Upload timeout"))});let B=Eb(t);B.pipe(d),B.on("error",f=>{d.destroy(),I(f)})})},k4e=async({url:n,filePath:t,headers:o,timeoutMs:i,agent:e})=>{let a=Eb(t),A=Df.toWeb(a),r=typeof e?.dispatch=="function"?e:void 0,s=await fetch(n,{...r?{dispatcher:r}:{},method:"POST",body:A,headers:o,duplex:"half",signal:i?AbortSignal.timeout(i):void 0});try{return await s.json()}catch{return}},v4e=async(n,t)=>R4e()?(t?.debug("Using Node.js https module for upload (avoids undici buffering bug)"),Poe(n)):(t?.debug("Using web-standard Fetch API for upload"),k4e(n)),Goe=({customUploadHosts:n,fetchAgent:t,logger:o,options:i},e)=>async(a,{mediaType:A,fileEncSha256B64:r,timeoutMs:s})=>{let g=await e(!1),c,I=[...n,...g.hosts];r=_4e(r);let B={...(()=>{let f=i?.headers;return f?Array.isArray(f)?Object.fromEntries(f):f:{}})(),"Content-Type":"application/octet-stream",Origin:Mf};for(let{hostname:f}of I){o.debug(`uploading to "${f}"`);let Q=encodeURIComponent(g.auth),y=`https://${f}${lU[A]}/${r}?auth=${Q}&token=${r}`,m;try{if(m=await v4e({url:y,filePath:a,headers:B,timeoutMs:s,agent:t},o),m?.url||m?.direct_path){c={mediaUrl:m.url,directPath:m.direct_path,meta_hmac:m.meta_hmac,fbid:m.fbid,ts:m.ts};break}else throw g=await e(!0),new Error(`upload failed, reason: ${JSON.stringify(m)}`)}catch(_){let T=f===I[g.hosts.length-1]?.hostname;o.warn({trace:_?.stack,uploadResult:m},`Error in uploading to ${f} ${T?"":", retrying..."}`)}}if(!c)throw new xn.Boom("Media upload failed on all hosts",{statusCode:500});return c},Foe=n=>Un(n,32,{info:"WhatsApp Media Retry Notification"}),Loe=(n,t,o)=>{let i={stanzaId:n.id},e=oe.ServerErrorReceipt.encode(i).finish(),a=fo.randomBytes(12),A=Foe(t),r=Pl(e,A,a,Buffer.from(n.id));return{tag:"receipt",attrs:{id:n.id,to:uA(o),type:"server-error"},content:[{tag:"encrypt",attrs:{},content:[{tag:"enc_p",attrs:{},content:r},{tag:"enc_iv",attrs:{},content:a}]},{tag:"rmr",attrs:{jid:n.remoteJid,from_me:(!!n.fromMe).toString(),participant:n.participant||void 0}}]}},Uoe=n=>{let t=le(n,"rmr"),o={key:{id:n.attrs.id,remoteJid:t.attrs.jid,fromMe:t.attrs.from_me==="true",participant:t.attrs.participant}},i=le(n,"error");if(i){let e=+i.attrs.code;o.error=new xn.Boom(`Failed to re-upload media (${e})`,{data:i.attrs,statusCode:IU(e)})}else{let e=le(n,"encrypt"),a=Oa(e,"enc_p"),A=Oa(e,"enc_iv");a&&A?o.media={ciphertext:a,iv:A}:o.error=new xn.Boom("Failed to re-upload media (missing ciphertext)",{statusCode:404})}return o},Hoe=({ciphertext:n,iv:t},o,i)=>{let e=Foe(o),a=Gl(n,e,t,Buffer.from(i));return oe.MediaRetryNotification.decode(a)},IU=n=>P4e[n],P4e={[oe.MediaRetryNotification.ResultType.SUCCESS]:200,[oe.MediaRetryNotification.ResultType.DECRYPTION_ERROR]:412,[oe.MediaRetryNotification.ResultType.NOT_FOUND]:404,[oe.MediaRetryNotification.ResultType.GENERAL_ERROR]:418};import{createHmac as G4e}from"crypto";var F4e=[{f:1},{f:3,s:[{f:2},{f:3},{f:8},{f:11},{f:17,s:[{f:21},{f:22}]},{f:25}]},{f:4,s:[{f:1},{f:16},{f:17,s:[{f:21},{f:22}]}]},{f:5,s:[{f:3},{f:4},{f:5},{f:16},{f:17,s:[{f:21},{f:22}]}]},{f:6,s:[{f:1},{f:17,s:[{f:21},{f:22}]},{f:30}]},{f:7,s:[{f:2},{f:7},{f:10},{f:17,s:[{f:21},{f:22}]},{f:20}]},{f:8,s:[{f:2},{f:7},{f:9},{f:17,s:[{f:21},{f:22}]},{f:21}]},{f:9,s:[{f:2},{f:6},{f:7},{f:13},{f:17,s:[{f:21},{f:22}]},{f:20}]},{f:12,s:[{f:1},{f:2},{f:14,m:!0},{f:15}]},{f:18,s:[{f:6},{f:16},{f:17,s:[{f:21},{f:22}]}]},{f:26,s:[{f:4},{f:5},{f:8},{f:13},{f:17,s:[{f:21},{f:22}]}]},{f:28,s:[{f:1},{f:2},{f:4},{f:5},{f:6},{f:7,s:[{f:21},{f:22}]}]},{f:37,s:[{f:1,m:!0}]},{f:49,s:[{f:2},{f:3,s:[{f:1},{f:2}]},{f:5,s:[{f:21},{f:22}]},{f:8,s:[{f:1},{f:2}]}]},{f:53,s:[{f:1,m:!0}]},{f:55,s:[{f:1,m:!0}]},{f:58,s:[{f:1,m:!0}]},{f:59,s:[{f:1,m:!0}]},{f:60,s:[{f:2},{f:3,s:[{f:1},{f:2}]},{f:5,s:[{f:21},{f:22}]},{f:8,s:[{f:1},{f:2}]}]},{f:64,s:[{f:2},{f:3,s:[{f:1},{f:2}]},{f:5,s:[{f:21},{f:22}]},{f:8,s:[{f:1},{f:2}]}]},{f:66,s:[{f:2},{f:6},{f:7},{f:13},{f:17,s:[{f:21},{f:22}]},{f:20}]},{f:74,s:[{f:1,m:!0}]},{f:87,s:[{f:1,m:!0}]},{f:88,s:[{f:1},{f:2,s:[{f:1}]},{f:3,s:[{f:21},{f:22}]}]},{f:92,s:[{f:1,m:!0}]},{f:93,s:[{f:1,m:!0}]},{f:94,s:[{f:1,m:!0}]}],Yoe=n=>{let t=new Map;for(let o of n)t.set(o.f,{m:o.m,children:o.s?Yoe(o.s):void 0});return t},L4e=Yoe(F4e),U4e=new Map,H4e="Report Token",fb={VARINT:0,FIXED64:1,BYTES:2,FIXED32:5},Qb=n=>!n.reactionMessage&&!n.encReactionMessage&&!n.encEventResponseMessage&&!n.pollUpdateMessage,K4e=(n,t,o,i,e)=>{let a=Buffer.concat([Buffer.from(t,"utf8"),Buffer.from(o,"utf8"),Buffer.from(i,"utf8"),Buffer.from(n,"utf8")]);return Un(e,32,{info:a.toString("latin1")})},joe=(n,t)=>{let o=[],i=0;for(;i>3,A=e.value&7,r=i;i+=e.bytes;let s=t.get(a),g=I=>I>n.length?!1:(o.push({num:a,bytes:n.subarray(r,I)}),i=I,!0),c=I=>I>n.length?!1:(i=I,!0);if(A===fb.VARINT){let I=pU(n,i);if(!I.ok)return null;let d=i+I.bytes;if(!s){if(!c(d))return null;continue}if(!g(d))return null;continue}if(A===fb.FIXED64){let I=i+8;if(!s){if(!c(I))return null;continue}if(!g(I))return null;continue}if(A===fb.FIXED32){let I=i+4;if(!s){if(!c(I))return null;continue}if(!g(I))return null;continue}if(A===fb.BYTES){let I=pU(n,i);if(!I.ok)return null;let d=i+I.bytes,B=d+I.value;if(B>n.length)return null;if(!s){i=B;continue}if(s.m||s.children){let f=joe(n.subarray(d,B),s.children??U4e);if(f===null)return null;if(f.length>0){let Q=xoe(e.value),y=xoe(f.length);o.push({num:a,bytes:Buffer.concat([Q,y,f])})}i=B;continue}o.push({num:a,bytes:n.subarray(r,B)}),i=B;continue}return null}return o.length===0?Buffer.alloc(0):(o.sort((e,a)=>e.num-a.num),Buffer.concat(o.map(e=>e.bytes)))},pU=(n,t)=>{let o=0,i=0,e=0;for(;t+i35)return{value:0,bytes:0,ok:!1}}return{value:0,bytes:0,ok:!1}},xoe=n=>{let t=[],o=n>>>0;for(;o>127;)t.push(o&127|128),o>>>=7;return t.push(o),Buffer.from(t)},Joe=async(n,t,o)=>{let i=t.messageContextInfo?.messageSecret;if(!i||!o.id)return null;let e=o.fromMe?o.remoteJid:o.participant||o.remoteJid,a=o.fromMe&&o.participant||o.remoteJid,A=K4e(H4e,o.id,e,a,i),r=joe(n,L4e);if(!r||r.length===0)return null;let s=G4e("sha256",A).update(r).digest().subarray(0,16);return{tag:"reporting",attrs:{},content:[{tag:"reporting_token",attrs:{v:"2"},content:s}]}};var x4e={image:"image/jpeg",video:"video/mp4",document:"application/pdf",audio:"audio/ogg; codecs=opus",sticker:"image/webp","product-catalog-image":"image/jpeg"},qoe={image:oe.Message.ImageMessage,video:oe.Message.VideoMessage,audio:oe.Message.AudioMessage,sticker:oe.Message.StickerMessage,document:oe.Message.DocumentMessage},Y4e=n=>n.match(Ane)?.[0],j4e=async(n,t,o)=>{let i=Y4e(n);if(t&&i)try{return await t(i)}catch(e){o?.warn({trace:e.stack},"url generation failed")}},zoe=async n=>{let t;if(typeof n=="number")t=n>0?n:4294967295+Number(n)+1;else{let o=n.trim().replace("#","");return o.length<=6&&(o="FF"+o.padStart(6,"0")),t=parseInt(o,16),t}},_f=async(n,t)=>{let o=t.logger,i;for(let L of tne)L in n&&(i=L);if(!i)throw new Xg.Boom("Invalid media type",{statusCode:400});let e={...n,media:n[i]};delete e[i];let a=typeof e.media=="object"&&"url"in e.media&&!!e.media.url&&!!t.mediaCache&&i+":"+e.media.url.toString();if(i==="document"&&!e.fileName&&(e.fileName="file"),e.mimetype||(e.mimetype=x4e[i]),a){let L=await t.mediaCache.get(a);if(L){o?.debug({cacheableKey:a},"got media cache hit");let U=oe.Message.decode(L),z=`${i}Message`;return Object.assign(U[z],{...e,media:void 0}),U}}if(!!t.jid&&Wc(t.jid)){o?.info({key:a},"Preparing raw media for newsletter");let{filePath:L,fileSha256:U,fileLength:z}=await Cb(e.media,t.mediaTypeOverride||i,o),q=U.toString("base64"),{mediaUrl:x,directPath:G}=await t.upload(L,{fileEncSha256B64:q,mediaType:i,timeoutMs:t.mediaUploadTimeoutMs});await hU.unlink(L);let V=oe.Message.fromObject({[`${i}Message`]:qoe[i].fromObject({url:x,directPath:G,fileSha256:U,fileLength:z,...e,media:void 0})});return e.ptv&&(V.ptvMessage=V.videoMessage,delete V.videoMessage),V.stickerMessage&&(V.stickerMessage.stickerSentTs=Date.now()),a&&(o?.debug({cacheableKey:a},"set cache"),await t.mediaCache.set(a,oe.Message.encode(V).finish())),V}let r=i==="audio"&&typeof e.seconds>"u",s=(i==="image"||i==="video")&&typeof e.jpegThumbnail>"u",g=i==="audio"&&e.ptt===!0&&typeof e.waveform>"u",c=t.backgroundColor&&i==="audio"&&e.ptt===!0,I=r||s,{mediaKey:d,encFilePath:B,originalFilePath:f,fileEncSha256:Q,fileSha256:y,fileLength:m}=await voe(e.media,t.mediaTypeOverride||i,{logger:o,saveOriginalFileIfRequired:I,opts:t.options}),_=Q.toString("base64"),[{mediaUrl:T,directPath:R}]=await Promise.all([(async()=>{let L=await t.upload(B,{fileEncSha256B64:_,mediaType:i,timeoutMs:t.mediaUploadTimeoutMs});return o?.debug({mediaType:i,cacheableKey:a},"uploaded media"),L})(),(async()=>{try{if(s){let{thumbnail:L,originalImageDimensions:U}=await koe(f,i,t);e.jpegThumbnail=L,!e.width&&U&&(e.width=U.width,e.height=U.height,o?.debug("set dimensions")),o?.debug("generated thumbnail")}r&&(e.seconds=await Noe(f),o?.debug("computed audio duration")),g&&(e.waveform=await Roe(f,o),o?.debug("processed waveform")),c&&(e.backgroundArgb=await zoe(t.backgroundColor),o?.debug("computed backgroundColor audio status"))}catch(L){o?.warn({trace:L.stack},"failed to obtain extra info")}})()]).finally(async()=>{try{await hU.unlink(B),f&&await hU.unlink(f),o?.debug("removed tmp files")}catch{o?.warn("failed to remove tmp file")}}),K=oe.Message.fromObject({[`${i}Message`]:qoe[i].fromObject({url:T,directPath:R,mediaKey:d,fileEncSha256:Q,fileSha256:y,fileLength:m,mediaKeyTimestamp:ba(),...e,media:void 0})});return e.ptv&&(K.ptvMessage=K.videoMessage,delete K.videoMessage),a&&(o?.debug({cacheableKey:a},"set cache"),await t.mediaCache.set(a,oe.Message.encode(K).finish())),K},J4e=n=>{n=n||0;let t={ephemeralMessage:{message:{protocolMessage:{type:oe.Message.ProtocolMessage.Type.EPHEMERAL_SETTING,ephemeralExpiration:n}}}};return oe.Message.fromObject(t)},q4e=(n,t)=>{let o=n.message;if(!o)throw new Xg.Boom("no content in message",{statusCode:400});o=Ra(o),o=oe.Message.decode(oe.Message.encode(o).finish());let i=Object.keys(o)[0],e=o?.[i]?.contextInfo?.forwardingScore||0;e+=n.key.fromMe&&!t?0:1,i==="conversation"&&(o.extendedTextMessage={text:o[i]},delete o.conversation,i="extendedTextMessage");let a=o?.[i];return e>0?a.contextInfo={forwardingScore:e,isForwarded:!0}:a.contextInfo={},o},Ea=(n,t)=>typeof n=="object"&&n!==null&&t in n&&n[t]!==null&&n[t]!==void 0;function op(n,t){return typeof n=="object"&&n!==null&&t in n&&n[t]!==null}var z4e=async(n,t)=>{var o,i;let e={};if(Ea(n,"text")){let a={text:n.text},A=n.linkPreview;if(typeof A>"u"&&(A=await j4e(n.text,t.getUrlInfo,t.logger)),A){a.matchedText=A["matched-text"],a.jpegThumbnail=A.jpegThumbnail,a.description=A.description,a.title=A.title,a.previewType=0;let r=A.highQualityThumbnail;r&&(a.thumbnailDirectPath=r.directPath,a.mediaKey=r.mediaKey,a.mediaKeyTimestamp=r.mediaKeyTimestamp,a.thumbnailWidth=r.width,a.thumbnailHeight=r.height,a.thumbnailSha256=r.fileSha256,a.thumbnailEncSha256=r.fileEncSha256)}t.backgroundColor&&(a.backgroundArgb=await zoe(t.backgroundColor)),t.font&&(a.font=t.font),e.extendedTextMessage=a}else if(Ea(n,"contacts")){let a=n.contacts.contacts.length;if(!a)throw new Xg.Boom("require atleast 1 contact",{statusCode:400});a===1?e.contactMessage=oe.Message.ContactMessage.create(n.contacts.contacts[0]):e.contactsArrayMessage=oe.Message.ContactsArrayMessage.create(n.contacts)}else if(Ea(n,"location"))e.locationMessage=oe.Message.LocationMessage.create(n.location);else if(Ea(n,"react"))n.react.senderTimestampMs||(n.react.senderTimestampMs=Date.now()),e.reactionMessage=oe.Message.ReactionMessage.create(n.react);else if(Ea(n,"delete"))e.protocolMessage={key:n.delete,type:oe.Message.ProtocolMessage.Type.REVOKE};else if(Ea(n,"forward"))e=q4e(n.forward,n.force);else if(Ea(n,"disappearingMessagesInChat")){let a=typeof n.disappearingMessagesInChat=="boolean"?n.disappearingMessagesInChat?Nf:0:n.disappearingMessagesInChat;e=J4e(a)}else if(Ea(n,"groupInvite")){if(e.groupInviteMessage={},e.groupInviteMessage.inviteCode=n.groupInvite.inviteCode,e.groupInviteMessage.inviteExpiration=n.groupInvite.inviteExpiration,e.groupInviteMessage.caption=n.groupInvite.text,e.groupInviteMessage.groupJid=n.groupInvite.jid,e.groupInviteMessage.groupName=n.groupInvite.subject,t.getProfilePicUrl){let a=await t.getProfilePicUrl(n.groupInvite.jid,"preview");if(a){let A=await fetch(a,{method:"GET",dispatcher:t?.options?.dispatcher});if(A.ok){let r=Buffer.from(await A.arrayBuffer());e.groupInviteMessage.jpegThumbnail=r}}}}else if(Ea(n,"pin"))e.pinInChatMessage={},e.messageContextInfo={},e.pinInChatMessage.key=n.pin,e.pinInChatMessage.type=n.type,e.pinInChatMessage.senderTimestampMs=Date.now(),e.messageContextInfo.messageAddOnDurationInSecs=n.type===1?n.time||86400:0;else if(Ea(n,"buttonReply"))switch(n.type){case"template":e.templateButtonReplyMessage={selectedDisplayText:n.buttonReply.displayText,selectedId:n.buttonReply.id,selectedIndex:n.buttonReply.index};break;case"plain":e.buttonsResponseMessage={selectedButtonId:n.buttonReply.id,selectedDisplayText:n.buttonReply.displayText,type:oe.Message.ButtonsResponseMessage.Type.DISPLAY_TEXT};break}else if(op(n,"ptv")&&n.ptv){let{videoMessage:a}=await _f({video:n.video},t);e.ptvMessage=a}else if(Ea(n,"product")){let{imageMessage:a}=await _f({image:n.product.productImage},t);e.productMessage=oe.Message.ProductMessage.create({...n,product:{...n.product,productImage:a}})}else if(Ea(n,"listReply"))e.listResponseMessage={...n.listReply};else if(Ea(n,"event")){e.eventMessage={};let a=Math.floor(n.event.startDate.getTime()/1e3);if(n.event.call&&t.getCallLink){let A=await t.getCallLink(n.event.call,{startTime:a});e.eventMessage.joinLink=(n.event.call==="audio"?ene:$oe)+A}e.messageContextInfo={messageSecret:n.event.messageSecret||dU(32)},e.eventMessage.name=n.event.name,e.eventMessage.description=n.event.description,e.eventMessage.startTime=a,e.eventMessage.endTime=n.event.endDate?n.event.endDate.getTime()/1e3:void 0,e.eventMessage.isCanceled=n.event.isCancelled??!1,e.eventMessage.extraGuestsAllowed=n.event.extraGuestsAllowed,e.eventMessage.isScheduleCall=n.event.isScheduleCall??!1,e.eventMessage.location=n.event.location}else if(Ea(n,"poll")){if((o=n.poll).selectableCount||(o.selectableCount=0),(i=n.poll).toAnnouncementGroup||(i.toAnnouncementGroup=!1),!Array.isArray(n.poll.values))throw new Xg.Boom("Invalid poll values",{statusCode:400});if(n.poll.selectableCount<0||n.poll.selectableCount>n.poll.values.length)throw new Xg.Boom(`poll.selectableCount in poll should be >= 0 and <= ${n.poll.values.length}`,{statusCode:400});e.messageContextInfo={messageSecret:n.poll.messageSecret||dU(32)};let a={name:n.poll.name,selectableOptionsCount:n.poll.selectableCount,options:n.poll.values.map(A=>({optionName:A}))};n.poll.toAnnouncementGroup?e.pollCreationMessageV2=a:n.poll.selectableCount===1?e.pollCreationMessageV3=a:e.pollCreationMessage=a}else Ea(n,"album")?e.albumMessage={expectedImageCount:n.album.expectedImageCount,expectedVideoCount:n.album.expectedVideoCount}:Ea(n,"sharePhoneNumber")?e.protocolMessage={type:oe.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER}:Ea(n,"requestPhoneNumber")?e.requestPhoneNumberMessage={}:Ea(n,"limitSharing")?e.protocolMessage={type:oe.Message.ProtocolMessage.Type.LIMIT_SHARING,limitSharing:{sharingLimited:n.limitSharing===!0,trigger:1,limitSharingSettingTimestamp:Date.now(),initiatedByMe:!0}}:e=await _f(n,t);if(op(n,"viewOnce")&&n.viewOnce&&(e={viewOnceMessage:{message:e}}),op(n,"mentions")&&n.mentions?.length||op(n,"mentionAll")&&n.mentionAll){let a=Object.keys(e)[0],A=e[a];A&&"contextInfo"in A?(A.contextInfo=A.contextInfo||{},n.mentions?.length&&(A.contextInfo.mentionedJid=n.mentions),n.mentionAll&&(A.contextInfo.nonJidMentions=1)):A&&(A.contextInfo={mentionedJid:n.mentions,nonJidMentions:n.mentionAll?1:0})}if(op(n,"edit")&&(e={protocolMessage:{key:n.edit,editedMessage:e,timestampMs:Date.now(),type:oe.Message.ProtocolMessage.Type.MESSAGE_EDIT}}),op(n,"contextInfo")&&n.contextInfo){let a=Object.keys(e)[0],A=e[a];"contextInfo"in A&&A.contextInfo?A.contextInfo={...A.contextInfo,...n.contextInfo}:A&&(A.contextInfo=n.contextInfo)}return op(n,"albumParentKey")&&n.albumParentKey&&(e.messageContextInfo={...e.messageContextInfo,messageAssociation:{associationType:oe.MessageAssociation.AssociationType.MEDIA_ALBUM,parentMessageKey:n.albumParentKey}}),Qb(e)&&(e.messageContextInfo=e.messageContextInfo||{},e.messageContextInfo.messageSecret||(e.messageContextInfo.messageSecret=dU(32))),oe.Message.create(e)},V4e=(n,t,o)=>{o.timestamp||(o.timestamp=new Date);let i=Ra(t),e=Tf(i),a=ba(o.timestamp),{quoted:A,userJid:r}=o;if(A&&!Wc(n)){let g=A.key.fromMe?r:A.participant||A.key.participant||A.key.remoteJid,c=Ra(A.message),I=Tf(c);c=oe.Message.create({[I]:c[I]});let d=c[I];typeof d=="object"&&d&&"contextInfo"in d&&delete d.contextInfo;let B="contextInfo"in i[e]&&i[e]?.contextInfo||{};B.participant=uA(g),B.stanzaId=A.key.id,B.quotedMessage=c,n!==A.key.remoteJid&&(B.remoteJid=A.key.remoteJid),B&&i[e]&&(i[e].contextInfo=B)}o?.ephemeralExpiration&&e!=="protocolMessage"&&e!=="ephemeralMessage"&&!Wc(n)&&(i[e].contextInfo={...i[e].contextInfo||{},expiration:o.ephemeralExpiration||Nf}),t=oe.Message.create(t);let s={key:{remoteJid:n,fromMe:!0,id:o?.messageId||jr()},message:t,messageTimestamp:a,messageStubParameters:[],participant:xr(n)||Lg(n)?r:void 0,status:lh.PENDING};return oe.WebMessageInfo.fromObject(s)},Voe=async(n,t,o)=>(o.logger=o?.logger?.child({msgId:o.messageId}),V4e(n,await z4e(t,{...o,jid:n}),o)),Tf=n=>{if(n)return Object.keys(n).find(i=>(i==="conversation"||i.includes("Message"))&&i!=="senderKeyDistributionMessage")},Ra=n=>{if(!n)return;for(let o=0;o<5;o++){let i=t(n);if(!i)break;n=i.message}return n;function t(o){return o?.ephemeralMessage||o?.viewOnceMessage||o?.documentWithCaptionMessage||o?.viewOnceMessageV2||o?.viewOnceMessageV2Extension||o?.editedMessage||o?.associatedChildMessage||o?.groupStatusMessage||o?.groupStatusMessageV2}},Woe=n=>{let t=o=>o.imageMessage?{imageMessage:o.imageMessage}:o.documentMessage?{documentMessage:o.documentMessage}:o.videoMessage?{videoMessage:o.videoMessage}:o.locationMessage?{locationMessage:o.locationMessage}:{conversation:"contentText"in o?o.contentText:"hydratedContentText"in o?o.hydratedContentText:""};return n=Ra(n),n?.buttonsMessage?t(n.buttonsMessage):n?.templateMessage?.hydratedFourRowTemplate?t(n?.templateMessage?.hydratedFourRowTemplate):n?.templateMessage?.hydratedTemplate?t(n?.templateMessage?.hydratedTemplate):n?.templateMessage?.fourRowTemplate?t(n?.templateMessage?.fourRowTemplate):n};var EU=(n,t)=>{n.userReceipt=n.userReceipt||[];let o=n.userReceipt.find(i=>i.userJid===t.userJid);o?Object.assign(o,t):n.userReceipt.push(t)},CU=(n,t)=>{let o=Bh(t.key),i=(n.reactions||[]).filter(e=>Bh(e.key)!==o);t.text=t.text||"",i.push(t),n.reactions=i};var Zoe=n=>{let t={};for(let{remoteJid:o,id:i,participant:e,fromMe:a}of n)if(!a){let A=`${o}:${e||""}`;t[A]||(t[A]={jid:o,participant:e,messageIds:[]}),t[A].messageIds.push(i)}return Object.values(t)},W4e=[410,404],uU=async(n,t,o,i)=>{return await a().catch(async A=>{if(i&&typeof A?.status=="number"&&W4e.includes(A.status))return i.logger.info({key:n.key},"sending reupload media request..."),n=await i.reuploadRequest(n),await a();throw A});async function a(){let A=Woe(n.message);if(!A)throw new Xg.Boom("No message present",{statusCode:400,data:n});let r=Tf(A),s=r?.replace("Message",""),g=A[r];if(!g||typeof g!="object"||!("url"in g)&&!("thumbnailDirectPath"in g))throw new Xg.Boom(`"${r}" message is not a media message`);let c;"thumbnailDirectPath"in g&&!("url"in g)?(c={directPath:g.thumbnailDirectPath,mediaKey:g.mediaKey},s="thumbnail-link"):c=g;let I=await IE(c,s,o);if(t==="buffer"){let d=[];for await(let B of I)d.push(B);return Buffer.concat(d)}return I}},Xoe=n=>{n=Woe(n);let t=n?.documentMessage||n?.imageMessage||n?.videoMessage||n?.audioMessage||n?.stickerMessage;if(!t)throw new Xg.Boom("given message is not a media message",{statusCode:400,data:n});return t};var yb=qe(Kr(),1);import{createHash as e8e}from"crypto";function Z4e(n,t){let o=[];for(let i=0;i({identifier:{name:n,deviceId:0},identifierKey:Wo(t)}),X4e=async({get:n},t,o)=>{let i=[];for(let e=t;e{let o=n.nextPreKeyId-n.firstUnuploadedPreKeyId,i=t-o,e=n.nextPreKeyId+i-1,a={};if(i>0)for(let A=n.nextPreKeyId;A<=e;A++)a[A]=Sr.generateKeyPair();return{newPreKeys:a,lastPreKeyId:e,preKeysRange:[n.firstUnuploadedPreKeyId,t]}},Rf=n=>({tag:"skey",attrs:{},content:[{tag:"id",attrs:{},content:Kg(n.keyId,3)},{tag:"value",attrs:{},content:n.keyPair.public},{tag:"signature",attrs:{},content:n.signature}]}),fU=(n,t)=>({tag:"key",attrs:{},content:[{tag:"id",attrs:{},content:Kg(t,3)},{tag:"value",attrs:{},content:n.public}]}),BU=n=>typeof n=="number"&&Number.isInteger(n),ane=n=>{let t=le(n,"keys");if(!t)return null;let o=Oa(t,"type");if(!o||o.length!==1||o[0]!==Hg[0])return null;let i=Oa(t,"identity"),e=le(t,"skey");if(!i||i.length!==32||!e)return null;let a=Zc(n,"registration",4);if(!BU(a))return null;let A=Oa(e,"value"),r=Oa(e,"signature"),s=Zc(e,"id",3);if(!A||A.length!==32||!r||!BU(s))return null;let g=le(t,"key"),c;if(g){let I=Oa(g,"value"),d=Zc(g,"id",3);if(!I||I.length!==32||!BU(d))return null;c={keyId:d,publicKey:Wo(I)}}return{registrationId:a,identityKey:Wo(i),signedPreKey:{keyId:s,publicKey:Wo(A),signature:r},preKey:c}},ine=async(n,t)=>{let o=A=>A?{keyId:Zc(A,"id",3),publicKey:Wo(Oa(A,"value")),signature:Oa(A,"signature")}:void 0,i=PA(le(n,"list"),"user");for(let A of i)Ji(A);let a=Z4e(i,100);for(let A of a)for(let r of A){let s=le(r,"skey"),g=le(r,"key"),c=Oa(r,"identity"),I=r.attrs.jid,d=Zc(r,"registration",4);await t.injectE2ESession({jid:I,session:{registrationId:d,identityKey:Wo(c),signedPreKey:o(s),preKey:o(g)}})}},one=(n,t,o,i)=>{let{user:e,device:a}=fA(t),A=[];for(let r of n){let{devices:s,id:g}=r,c=fA(g),{user:I,server:d}=c,{domainType:B}=c,f=s?.deviceList;if(Array.isArray(f))for(let{id:Q,keyIndex:y,isHosted:m}of f)(!i||Q!==0)&&(e!==I&&o!==I||a!==Q)&&(Q===0||y)&&(m&&(B=B===Jt.LID?Jt.HOSTED_LID:Jt.HOSTED),A.push({user:I,device:Q,domainType:B,server:g7(d,B)}))}return A},QU=async({creds:n,keys:t},o)=>{let{newPreKeys:i,lastPreKeyId:e,preKeysRange:a}=$4e(n,o),A={nextPreKeyId:Math.max(e+1,n.nextPreKeyId),firstUnuploadedPreKeyId:Math.max(n.firstUnuploadedPreKeyId,e+1)};await t.set({"pre-key":i});let r=await X4e(t,a[0],a[0]+a[1]);return{update:A,preKeys:r}},nne=async(n,t)=>{let{creds:o}=n,{update:i,preKeys:e}=await QU(n,t),a={tag:"iq",attrs:{xmlns:"encrypt",type:"set",to:OA},content:[{tag:"registration",attrs:{},content:Kg(o.registrationId)},{tag:"type",attrs:{},content:Hg},{tag:"identity",attrs:{},content:o.signedIdentityKey.public},{tag:"list",attrs:{},content:Object.keys(e).map(A=>fU(e[+A],+A))},Rf(o.signedPreKey)]};return{update:i,node:a}};var A8e=n=>({appVersion:{primary:n.version[0],secondary:n.version[1],tertiary:n.version[2]},platform:n.browser[1].toLocaleLowerCase().includes("android")?oe.ClientPayload.UserAgent.Platform.ANDROID:oe.ClientPayload.UserAgent.Platform.WEB,releaseChannel:oe.ClientPayload.UserAgent.ReleaseChannel.RELEASE,osVersion:"0.1",device:"Desktop",osBuildNumber:"0.1",localeLanguageIso6391:"en",mnc:"000",mcc:"000",localeCountryIso31661Alpha2:n.countryCode}),sne={"Mac OS":oe.ClientPayload.WebInfo.WebSubPlatform.DARWIN,Windows:oe.ClientPayload.WebInfo.WebSubPlatform.WIN32},t8e=n=>{let t=oe.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;return n.syncFullHistory&&sne[n.browser[0]]&&n.browser[1]==="Desktop"&&(t=sne[n.browser[0]]),{webSubPlatform:t}},gne=n=>{let t={connectType:oe.ClientPayload.ConnectType.WIFI_UNKNOWN,connectReason:oe.ClientPayload.ConnectReason.USER_ACTIVATED,userAgent:A8e(n)};return n.browser[1].toLocaleLowerCase().includes("android")||(t.webInfo=t8e(n)),n.pushName&&(t.pushName=n.pushName),t},cne=(n,t)=>{let{user:o,device:i}=fA(n),e={...gne(t),passive:!0,pull:!0,username:+o,device:i,lidDbMigrated:!1};return oe.ClientPayload.fromObject(e)},r8e=n=>{let t=n.toUpperCase();return t==="ANDROID"?oe.DeviceProps.PlatformType.ANDROID_PHONE:oe.DeviceProps.PlatformType[t]||oe.DeviceProps.PlatformType.CHROME},Ine=({registrationId:n,signedPreKey:t,signedIdentityKey:o},i)=>{let e=e8e("md5").update(i.version.join(".")).digest(),a={os:i.browser[0],platformType:r8e(i.browser[1]),requireFullSync:i.syncFullHistory,historySyncConfig:{storageQuotaMb:10240,inlineInitialPayloadInE2EeMsg:!0,recentSyncDaysLimit:void 0,supportCallLogHistory:!1,supportBotUserAgentChatHistory:!0,supportCagReactionsAndPolls:!0,supportBizHostedMsg:!0,supportRecentSyncChunkMessageCountTuning:!0,supportHostedGroupMsg:!0,supportFbidBotChatHistory:!0,supportAddOnHistorySyncMigration:void 0,supportMessageAssociation:!0,supportGroupHistory:!1,onDemandReady:void 0,supportGuestChat:void 0},version:{primary:10,secondary:15,tertiary:7}},A=oe.DeviceProps.encode(a).finish(),r={...gne(i),passive:!1,pull:!1,devicePairingData:{buildHash:e,deviceProps:A,eRegid:Kg(n),eKeytype:Hg,eIdent:o.public,eSkeyId:Kg(t.keyId,3),eSkeyVal:t.keyPair.public,eSkeySig:t.signature}};return oe.ClientPayload.fromObject(r)},lne=(n,{advSecretKey:t,signedIdentityKey:o,signalIdentities:i})=>{let e=n.attrs.id,a=le(n,"pair-success"),A=le(a,"device-identity"),r=le(a,"platform"),s=le(a,"device"),g=le(a,"biz");if(!A||!s)throw new yb.Boom("Missing device-identity or device in pair success node",{data:n});let c=g?.attrs.name,I=s.attrs.jid,d=s.attrs.lid,{details:B,hmac:f,accountType:Q}=oe.ADVSignedDeviceIdentityHMAC.decode(A.content),y=Buffer.from([]);Q!==void 0&&Q===oe.ADVEncryptionType.HOSTED&&(y=yU);let m=Hn(Buffer.concat([y,B]),Buffer.from(t,"base64"));if(Buffer.compare(f,m)!==0)throw new yb.Boom("Invalid account signature");let _=oe.ADVSignedDeviceIdentity.decode(B),{accountSignatureKey:T,accountSignature:R,details:K}=_,L=oe.ADVDeviceIdentity.decode(K),U=L.deviceType===oe.ADVEncryptionType.HOSTED?yU:pne,z=Buffer.concat([U,K,o.public]);if(!Sr.verify(T,z,R))throw new yb.Boom("Failed to verify account signature");let q=Buffer.concat([dne,K,o.public,T]);_.deviceSignature=Sr.sign(o.private,q);let x=rne(d,T),G=kf(_,!1),V={tag:"iq",attrs:{to:OA,type:"result",id:e},content:[{tag:"pair-device-sign",attrs:{},content:[{tag:"device-identity",attrs:{"key-index":L.keyIndex.toString()},content:G}]}]};return{creds:{account:_,me:{id:I,name:c,lid:d},signalIdentities:[...i||[],x],platform:r?.attrs.name},reply:V}},kf=(n,t)=>(n={...n},(!t||!n.accountSignatureKey?.length)&&(n.accountSignatureKey=null),oe.ADVSignedDeviceIdentity.encode(n).finish());var lE=qe(Kr(),1);var Cne=12,hne=Buffer.alloc(0),Ene=n=>{let t=new ArrayBuffer(Cne);return new DataView(t).setUint32(8,n),new Uint8Array(t)},mU=class{constructor(t,o){this.encKey=t,this.decKey=o,this.readCounter=0,this.writeCounter=0,this.iv=new Uint8Array(Cne)}encrypt(t){let o=this.writeCounter++;return this.iv[8]=o>>>24&255,this.iv[9]=o>>>16&255,this.iv[10]=o>>>8&255,this.iv[11]=o&255,Pl(t,this.encKey,this.iv,hne)}decrypt(t){let o=this.readCounter++;return this.iv[8]=o>>>24&255,this.iv[9]=o>>>16&255,this.iv[10]=o>>>8&255,this.iv[11]=o&255,Gl(t,this.decKey,this.iv,hne)}},une=({keyPair:{private:n,public:t},NOISE_HEADER:o,logger:i,routingInfo:e})=>{i=i.child({class:"ns"});let a=Buffer.from(Bne),A=a.byteLength===32?a:uh(a),r=A,s=A,g=A,c=0,I=!1,d=Buffer.alloc(0),B=null,f=!1,Q=null,y;e?(y=Buffer.alloc(7+e.byteLength+o.length),y.write("ED",0,"utf8"),y.writeUint8(0,2),y.writeUint8(1,3),y.writeUint8(e.byteLength>>16,4),y.writeUint16BE(e.byteLength&65535,5),y.set(e,7),y.set(o,7+e.byteLength)):y=Buffer.from(o);let m=z=>{B||(A=uh(Buffer.concat([A,z])))},_=z=>{if(B)return B.encrypt(z);let q=Pl(z,s,Ene(c++),A);return m(q),q},T=z=>{if(B)return B.decrypt(z);let q=Gl(z,g,Ene(c++),A);return m(z),q},R=z=>{let q=Un(Buffer.from(z),64,{salt:r,info:""});return[q.subarray(0,32),q.subarray(32)]},K=z=>{let[q,x]=R(z);r=q,s=x,g=x,c=0},L=async()=>{f=!0;let[z,q]=R(new Uint8Array(0));B=new mU(z,q),f=!1,i.trace("Noise handler transitioned to Transport state"),Q&&(i.trace({length:d.length},"Flushing buffered frames after transport ready"),await U(Q),Q=null)},U=async z=>{let q;for(;;){if(d.length<3||(q=d[0]<<16|d[1]<<8|d[2],d.length{m(z.ephemeral),K(Sr.sharedKey(n,z.ephemeral));let x=T(z.static);K(Sr.sharedKey(n,x));let G=T(z.payload),{intermediate:V,leaf:F}=oe.CertChain.decode(G);if(!F?.details||!F?.signature)throw new lE.Boom("invalid noise leaf certificate",{statusCode:400});if(!V?.details||!V?.signature)throw new lE.Boom("invalid noise intermediate certificate",{statusCode:400});let N=oe.CertChain.NoiseCertificate.Details.decode(V.details),{issuerSerial:k}=N,J=Sr.verify(N.key,F.details,F.signature),$=Sr.verify(SU.PUBLIC_KEY,V.details,V.signature);if(!J)throw new lE.Boom("noise certificate signature invalid",{statusCode:400});if(!$)throw new lE.Boom("noise intermediate certificate signature invalid",{statusCode:400});if(k!==SU.SERIAL)throw new lE.Boom("certification match failed",{statusCode:400});let ie=_(q.public);return K(Sr.sharedKey(q.private,z.ephemeral)),ie},encodeFrame:z=>{B&&(z=B.encrypt(z));let q=z.byteLength,x=I?0:y.length,G=Buffer.allocUnsafe(x+3+q);return I||(G.set(y),I=!0),G[x]=q>>>16&255,G[x+1]=q>>>8&255,G[x+2]=q&255,G.set(z,x+3),G},decodeFrame:async(z,q)=>{if(f){d=Buffer.concat([d,z]),Q=q;return}d.length===0?d=Buffer.from(z):d=Buffer.concat([d,z]),await U(q)}}};import{pipeline as a8e}from"stream/promises";import{promisify as i8e}from"util";import{createInflate as o8e,inflate as n8e}from"zlib";var s8e=i8e(n8e),g8e=n=>{for(let t of n){let o=t.message;if(!o?.key?.fromMe||!o.userReceipt?.length)continue;let i=o.userReceipt[0]?.userJid;if(i&&(_t(i)||mr(i)))return i}},c8e=async(n,t)=>{let o=await IE(n,"md-msg-hist",{options:t}),i=o8e(),e=[];i.on("data",r=>e.push(r)),await a8e(o,i);let a=Buffer.concat(e);return oe.HistorySync.decode(a)},I8e=(n,t)=>{let o=[],i=[],e=[],a=[];t?.trace({progress:n.progress},"processing history of type "+n.syncType?.toString());for(let A of n.phoneNumberToLidMappings||[])A.lidJid&&A.pnJid&&a.push({lid:A.lidJid,pn:A.pnJid});switch(n.syncType){case oe.HistorySync.HistorySyncType.INITIAL_BOOTSTRAP:case oe.HistorySync.HistorySyncType.RECENT:case oe.HistorySync.HistorySyncType.FULL:case oe.HistorySync.HistorySyncType.ON_DEMAND:for(let A of n.conversations){i.push({id:A.id,name:A.displayName||A.name||A.username||void 0,username:A.username||void 0,lid:A.lidJid||A.accountLid||void 0,phoneNumber:A.pnJid||void 0});let r=A.id,s=qA(r)||Ia(r),g=_t(r)||mr(r);if(s&&A.pnJid)a.push({lid:r,pn:A.pnJid});else if(g&&A.lidJid)a.push({lid:A.lidJid,pn:r});else if(s&&!A.pnJid){let I=g8e(A.messages||[]);I&&a.push({lid:r,pn:I})}let c=A.messages||[];delete A.messages;for(let I of c){let d=I.message;o.push(d),A.messages?.length||(A.messages=[{message:d}]),!d.key.fromMe&&!A.lastMessageRecvTimestamp&&(A.lastMessageRecvTimestamp=Yr(d.messageTimestamp)),(d.messageStubType===RA.BIZ_PRIVACY_MODE_TO_BSP||d.messageStubType===RA.BIZ_PRIVACY_MODE_TO_FB)&&d.messageStubParameters?.[0]&&i.push({id:d.key.participant||d.key.remoteJid,verifiedName:d.messageStubParameters?.[0]})}e.push(A)}break;case oe.HistorySync.HistorySyncType.PUSH_NAME:for(let A of n.pushnames)i.push({id:A.id,notify:A.pushname});break}return{chats:e,contacts:i,messages:o,lidPnMappings:a,pastParticipants:n.pastParticipants,syncType:n.syncType,progress:n.progress}},fne=async(n,t,o)=>{let i;return n.initialHistBootstrapInlinePayload?i=oe.HistorySync.decode(await s8e(n.initialHistBootstrapInlinePayload)):i=await c8e(n,t),I8e(i,o)},mb=n=>(n?Ra(n):void 0)?.protocolMessage?.historySyncNotification;var sn=qe(Kr(),1);var Zs;(function(n){n.Chat="label_jid",n.Message="label_message"})(Zs||(Zs={}));var Qne=new hh;var yne=(n,t,o)=>{let i=[];if(!t)return o?.warn({hasFullName:!!n.fullName,hasLidJid:!!n.lidJid,hasPnJid:!!n.pnJid},"contactAction sync: missing id in index"),i;let e=n.lidJid,a=_t(t),A=a?t:n.pnJid||void 0;return i.push({event:"contacts.upsert",data:[{id:t,name:n.fullName||n.firstName||n.username||void 0,username:n.username||void 0,lid:e||void 0,phoneNumber:A}]}),e&&qA(e)&&a&&i.push({event:"lid-mapping.update",data:{lid:e,pn:t}}),i},mne=(n,t)=>{for(let o of t)o.event==="contacts.upsert"?n.emit("contacts.upsert",o.data):n.emit("lid-mapping.update",o.data)};var vf=n=>{let t=T7(n);return{indexKey:t.indexKey,valueEncryptionKey:t.valueEncryptionKey,valueMacKey:t.valueMacKey,snapshotMacKey:t.snapshotMacKey,patchMacKey:t.patchMacKey}},Sne=(n,t,o,i)=>{let e=n===oe.SyncdMutation.SyncdOperation.SET?1:2,a=typeof o=="string"?Buffer.from(o,"base64"):o,A=new Uint8Array(1+a.length);A[0]=e,A.set(a,1);let r=new Uint8Array(8);r[7]=A.length;let s=new Uint8Array(A.length+t.length+r.length);return s.set(A,0),s.set(t,A.length),s.set(r,A.length+t.length),Hn(s,i,"sha512").subarray(0,32)},wne=n=>{let t=Buffer.alloc(8);return t.writeUint32BE(n,4),t},Dne=({indexValueMap:n,hash:t})=>{n={...n};let o=[],i=[];return{mix:({indexMac:e,valueMac:a,operation:A})=>{let r=Buffer.from(e).toString("base64"),s=n[r];if(A===oe.SyncdMutation.SyncdOperation.REMOVE){if(!s)return;delete n[r]}else o.push(a),n[r]={valueMac:a};s&&i.push(s.valueMac)},finish:()=>{let e=Qne.subtractThenAdd(t,i,o);return{hash:Buffer.from(e),indexValueMap:n}}}},wU=(n,t,o,i)=>{let e=Buffer.concat([n,wne(t),Buffer.from(o,"utf-8")]);return Hn(e,i,"sha256")},One=(n,t,o,i,e)=>{let a=Buffer.concat([n,...t,wne(o),Buffer.from(i,"utf-8")]);return Hn(a,e)},Sb=()=>({version:0,hash:Buffer.alloc(128),indexValueMap:{}}),DU=n=>((typeof n.version!="number"||isNaN(n.version))&&(n.version=0),n),OU=2,Pf=n=>n?.data?.isMissingKey===!0,bne=(n,t)=>t>=OU||n?.name==="TypeError",Mne=async({type:n,index:t,syncAction:o,apiVersion:i,operation:e},a,A,r)=>{let s=a?await r(a):void 0;if(!s)throw new sn.Boom(`myAppStateKey ("${a}") not present`,{data:{isMissingKey:!0}});let g=Buffer.from(a,"base64");A={...A,indexValueMap:{...A.indexValueMap}};let c=Buffer.from(JSON.stringify(t)),I=oe.SyncActionData.fromObject({index:c,value:o,padding:new Uint8Array(0),version:i}),d=oe.SyncActionData.encode(I).finish(),B=vf(s.keyData),f=L7(d,B.valueEncryptionKey),Q=Sne(e,f,g,B.valueMacKey),y=Hn(c,B.indexKey),m=Dne(A);m.mix({indexMac:y,valueMac:Q,operation:e}),Object.assign(A,m.finish()),A.version+=1;let _=wU(A.hash,A.version,n,B.snapshotMacKey),T={patchMac:One(_,[Q],A.version,n,B.patchMacKey),snapshotMac:_,keyId:{id:g},mutations:[{operation:e,record:{index:{blob:y},value:{blob:Buffer.concat([f,Q])},keyId:{id:g}}}]},R=y.toString("base64");return A.indexValueMap[R]={valueMac:Q},{patch:T,state:A}},_ne=async(n,t,o,i,e)=>{let a=Dne(t),A=new Map;for(let s of n){let g="operation"in s?s.operation:oe.SyncdMutation.SyncdOperation.SET,c="record"in s&&s.record?s.record:s,I;try{I=await r(c.keyId.id)}catch(_){if(Pf(_))throw _;continue}let d=c.value.blob,B=d.subarray(0,-32),f=d.subarray(-32);if(e){let _=Sne(g,B,c.keyId.id,I.valueMacKey);if(Buffer.compare(_,f)!==0)continue}let Q;try{Q=F7(B,I.valueEncryptionKey)}catch{continue}let y=oe.SyncActionData.decode(Q);if(e){let _=Hn(y.index,I.indexKey);if(Buffer.compare(_,c.index.blob)!==0)throw new sn.Boom("HMAC index verification failed")}let m=Buffer.from(y.index).toString();i({syncAction:y,index:JSON.parse(m)}),a.mix({indexMac:c.index.blob,valueMac:f,operation:g})}return a.finish();async function r(s){let g=Buffer.from(s).toString("base64"),c=A.get(g);if(c)return c;let I=await o(g);if(!I)throw new sn.Boom(`failed to find key "${g}" to decode mutation`,{data:{isMissingKey:!0,msgMutations:n}});let d=vf(I.keyData);return A.set(g,d),d}},l8e=async(n,t,o,i,e,a)=>{if(a){let r=Buffer.from(n.keyId.id).toString("base64"),s=await i(r);if(!s)throw new sn.Boom(`failed to find key "${r}" to decode patch`,{data:{isMissingKey:!0,msg:n}});let g=vf(s.keyData),c=n.mutations.map(d=>d.record.value.blob.slice(-32)),I=One(n.snapshotMac,c,Yr(n.version.version),t,g.patchMacKey);if(Buffer.compare(I,n.patchMac)!==0)throw new sn.Boom("Invalid patch mac")}return await _ne(n.mutations,o,i,e,a)},Tne=async(n,t)=>{let o=le(n,"sync"),i=PA(o,"collection"),e={};return await Promise.all(i.map(async a=>{let A=le(a,"patches"),r=PA(A||a,"patch"),s=le(a,"snapshot"),g=[],c=a.attrs.name,I=a.attrs.has_more_patches==="true",d;if(s&&s.content){Buffer.isBuffer(s)||(s.content=Buffer.from(Object.values(s.content)));let B=oe.ExternalBlobReference.decode(s.content),f=await Nne(B,t);d=oe.SyncdSnapshot.decode(f)}for(let{content:B}of r)if(B){Buffer.isBuffer(B)||(B=Buffer.from(Object.values(B)));let f=oe.SyncdPatch.decode(B);f.version||(f.version={version:+a.attrs.version+1}),g.push(f)}e[c]={patches:g,hasMorePatches:I,snapshot:d}})),e},Nne=async(n,t)=>{let o=await IE(n,"md-app-state",{options:t}),i=[];for await(let e of o)i.push(e);return Buffer.concat(i)},p8e=async(n,t)=>{let o=await Nne(n,t);return oe.SyncdMutations.decode(o)},Rne=async(n,t,o,i,e=!0,a)=>{let A=Sb();A.version=Yr(t.version.version);let r={},s=typeof i>"u"||A.version>i,{hash:g,indexValueMap:c}=await _ne(t.records,A,o,s?I=>{let d=I.syncAction.index?.toString();r[d]=I}:()=>{},e);if(A.hash=g,A.indexValueMap=c,e){let I=Buffer.from(t.keyId.id).toString("base64"),d=await o(I);if(!d)throw new sn.Boom(`failed to find key "${I}" to decode mutation`,{data:{isMissingKey:!0}});let B=vf(d.keyData),f=wU(A.hash,A.version,n,B.snapshotMacKey);Buffer.compare(t.mac,f)!==0&&a?.warn({name:n,version:A.version},"LTHash verification failed on snapshot, continuing with partial state")}return{state:A,mutationMap:r}},bU=async(n,t,o,i,e,a,A,r=!0)=>{let s={...o,indexValueMap:{...o.indexValueMap}},g={};for(let c of t){let{version:I,keyId:d,snapshotMac:B}=c;if(c.externalMutations){A?.trace({name:n,version:I},"downloading external patch");let m=await p8e(c.externalMutations,e);A?.debug({name:n,version:I,mutations:m.mutations.length},"downloaded external patch"),c.mutations?.push(...m.mutations)}let f=Yr(I.version);s.version=f;let Q=typeof a>"u"||f>a,y;try{y=await l8e(c,n,s,i,Q?m=>{let _=m.syncAction.index?.toString();g[_]=m}:()=>{},r)}catch(m){if(Pf(m))throw m;A?.warn({name:n,version:f,error:m.message},"failed to decode patch, skipping");continue}if(s.hash=y.hash,s.indexValueMap=y.indexValueMap,r){let m=Buffer.from(d.id).toString("base64"),_=await i(m);if(!_)throw new sn.Boom(`failed to find key "${m}" to decode mutation`,{data:{isMissingKey:!0}});let T=vf(_.keyData),R=wU(s.hash,s.version,n,T.snapshotMacKey);if(Buffer.compare(B,R)!==0){A?.warn({name:n,version:s.version},"LTHash verification failed, skipping remaining patches");break}}c.mutations=[]}return{state:s,mutationMap:g}},kne=(n,t)=>{let o=oe.SyncdMutation.SyncdOperation,i=a=>{let A;return Array.isArray(a)?A={lastMessageTimestamp:a[a.length-1]?.messageTimestamp,messages:a?.length?a.map(s=>{if(!s.key?.id||!s.key?.remoteJid)throw new sn.Boom("Incomplete key",{statusCode:400,data:s});if(xr(s.key.remoteJid)&&!s.key.fromMe&&!s.key.participant)throw new sn.Boom("Expected not from me message to have participant",{statusCode:400,data:s});if(!s.messageTimestamp||!Yr(s.messageTimestamp))throw new sn.Boom("Missing timestamp in last message list",{statusCode:400,data:s});return s.key.participant&&(s.key.participant=uA(s.key.participant)),s}):void 0}:A=a,A},e;if("mute"in n)e={syncAction:{muteAction:{muted:!!n.mute,muteEndTimestamp:n.mute||void 0}},index:["mute",t],type:"regular_high",apiVersion:2,operation:o.SET};else if("archive"in n)e={syncAction:{archiveChatAction:{archived:!!n.archive,messageRange:i(n.lastMessages)}},index:["archive",t],type:"regular_low",apiVersion:3,operation:o.SET};else if("markRead"in n)e={syncAction:{markChatAsReadAction:{read:n.markRead,messageRange:i(n.lastMessages)}},index:["markChatAsRead",t],type:"regular_low",apiVersion:3,operation:o.SET};else if("deleteForMe"in n){let{timestamp:a,key:A,deleteMedia:r}=n.deleteForMe;e={syncAction:{deleteMessageForMeAction:{deleteMedia:r,messageTimestamp:a}},index:["deleteMessageForMe",t,A.id,A.fromMe?"1":"0","0"],type:"regular_high",apiVersion:3,operation:o.SET}}else if("clear"in n)e={syncAction:{clearChatAction:{messageRange:i(n.lastMessages)}},index:["clearChat",t,"1","0"],type:"regular_high",apiVersion:6,operation:o.SET};else if("pin"in n)e={syncAction:{pinAction:{pinned:!!n.pin}},index:["pin_v1",t],type:"regular_low",apiVersion:5,operation:o.SET};else if("contact"in n)e={syncAction:{contactAction:n.contact||{}},index:["contact",t],type:"critical_unblock_low",apiVersion:2,operation:n.contact?o.SET:o.REMOVE};else if("disableLinkPreviews"in n)e={syncAction:{privacySettingDisableLinkPreviewsAction:n.disableLinkPreviews||{}},index:["setting_disableLinkPreviews"],type:"regular",apiVersion:8,operation:o.SET};else if("star"in n){let a=n.star.messages[0];e={syncAction:{starAction:{starred:!!n.star.star}},index:["star",t,a.id,a.fromMe?"1":"0","0"],type:"regular_low",apiVersion:2,operation:o.SET}}else if("delete"in n)e={syncAction:{deleteChatAction:{messageRange:i(n.lastMessages)}},index:["deleteChat",t,"1"],type:"regular_high",apiVersion:6,operation:o.SET};else if("pushNameSetting"in n)e={syncAction:{pushNameSetting:{name:n.pushNameSetting}},index:["setting_pushName"],type:"critical_block",apiVersion:1,operation:o.SET};else if("quickReply"in n)e={syncAction:{quickReplyAction:{count:0,deleted:n.quickReply.deleted||!1,keywords:[],message:n.quickReply.message||"",shortcut:n.quickReply.shortcut||""}},index:["quick_reply",n.quickReply.timestamp||String(Math.floor(Date.now()/1e3))],type:"regular",apiVersion:2,operation:o.SET};else if("addLabel"in n)e={syncAction:{labelEditAction:{name:n.addLabel.name,color:n.addLabel.color,predefinedId:n.addLabel.predefinedId,deleted:n.addLabel.deleted}},index:["label_edit",n.addLabel.id],type:"regular",apiVersion:3,operation:o.SET};else if("addChatLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!0}},index:[Zs.Chat,n.addChatLabel.labelId,t],type:"regular",apiVersion:3,operation:o.SET};else if("removeChatLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!1}},index:[Zs.Chat,n.removeChatLabel.labelId,t],type:"regular",apiVersion:3,operation:o.SET};else if("addMessageLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!0}},index:[Zs.Message,n.addMessageLabel.labelId,t,n.addMessageLabel.messageId,"0","0"],type:"regular",apiVersion:3,operation:o.SET};else if("removeMessageLabel"in n)e={syncAction:{labelAssociationAction:{labeled:!1}},index:[Zs.Message,n.removeMessageLabel.labelId,t,n.removeMessageLabel.messageId,"0","0"],type:"regular",apiVersion:3,operation:o.SET};else throw new sn.Boom("not supported");return e.syncAction.timestamp=Date.now(),e},vne=(n,t,o,i,e)=>{let a=!!i,A=i?.accountSettings;e?.trace({syncAction:n,initialSync:!!i},"processing sync action");let{syncAction:{value:r},index:[s,g,c,I]}=n;if(r?.muteAction)t.emit("chats.update",[{id:g,muteEndTime:r.muteAction?.muted?Yr(r.muteAction.muteEndTimestamp):null,conditional:d(g,void 0)}]);else if(r?.archiveChatAction||s==="archive"||s==="unarchive"){let f=r?.archiveChatAction,Q=f?f.archived:s==="archive",y=A?.unarchiveChats?f?.messageRange:void 0;t.emit("chats.update",[{id:g,archived:Q,conditional:d(g,y)}])}else if(r?.markChatAsReadAction){let f=r.markChatAsReadAction,Q=a&&f.read;t.emit("chats.update",[{id:g,unreadCount:Q?null:f?.read?0:-1,conditional:d(g,f?.messageRange)}])}else if(r?.deleteMessageForMeAction||s==="deleteMessageForMe")t.emit("messages.delete",{keys:[{remoteJid:g,id:c,fromMe:I==="1"}]});else if(r?.contactAction){let f=yne(r.contactAction,g,e);mne(t,f)}else if(r?.pushNameSetting){let f=r?.pushNameSetting?.name;f&&o?.name!==f&&t.emit("creds.update",{me:{...o,name:f}})}else if(r?.pinAction)t.emit("chats.update",[{id:g,pinned:r.pinAction?.pinned?Yr(r.timestamp):null,conditional:d(g,void 0)}]);else if(r?.unarchiveChatsSetting){let f=!!r.unarchiveChatsSetting.unarchiveChats;t.emit("creds.update",{accountSettings:{unarchiveChats:f}}),e?.info(`archive setting updated => '${r.unarchiveChatsSetting.unarchiveChats}'`),A&&(A.unarchiveChats=f)}else if(r?.starAction||s==="star"){let f=r?.starAction?.starred;typeof f!="boolean"&&(f=n.index[n.index.length-1]==="1"),t.emit("messages.update",[{key:{remoteJid:g,id:c,fromMe:I==="1"},update:{starred:f}}])}else if(r?.deleteChatAction||s==="deleteChat")a||t.emit("chats.delete",[g]);else if(r?.labelEditAction){let{name:f,color:Q,deleted:y,predefinedId:m}=r.labelEditAction;t.emit("labels.edit",{id:g,name:f,color:Q,deleted:y,predefinedId:m?String(m):void 0})}else r?.labelAssociationAction?t.emit("labels.association",{type:r.labelAssociationAction.labeled?"add":"remove",association:s===Zs.Chat?{type:Zs.Chat,chatId:n.index[2],labelId:n.index[1]}:{type:Zs.Message,chatId:n.index[2],messageId:n.index[3],labelId:n.index[1]}}):r?.localeSetting?.locale?t.emit("settings.update",{setting:"locale",value:r.localeSetting.locale}):r?.timeFormatAction?t.emit("settings.update",{setting:"timeFormat",value:r.timeFormatAction}):r?.pnForLidChatAction?r.pnForLidChatAction.pnJid&&t.emit("lid-mapping.update",{lid:g,pn:r.pnForLidChatAction.pnJid}):r?.privacySettingRelayAllCalls?t.emit("settings.update",{setting:"privacySettingRelayAllCalls",value:r.privacySettingRelayAllCalls}):r?.statusPrivacy?t.emit("settings.update",{setting:"statusPrivacy",value:r.statusPrivacy}):r?.lockChatAction?t.emit("chats.lock",{id:g,locked:!!r.lockChatAction.locked}):r?.privacySettingDisableLinkPreviewsAction?t.emit("settings.update",{setting:"disableLinkPreviews",value:r.privacySettingDisableLinkPreviewsAction}):r?.notificationActivitySettingAction?.notificationActivitySetting?t.emit("settings.update",{setting:"notificationActivitySetting",value:r.notificationActivitySettingAction.notificationActivitySetting}):r?.lidContactAction?t.emit("contacts.upsert",[{id:g,name:r.lidContactAction.fullName||r.lidContactAction.firstName||r.lidContactAction.username||void 0,username:r.lidContactAction.username||void 0,lid:g,phoneNumber:void 0}]):r?.privacySettingChannelsPersonalisedRecommendationAction?t.emit("settings.update",{setting:"channelsPersonalisedRecommendation",value:r.privacySettingChannelsPersonalisedRecommendationAction}):e?.debug({syncAction:n,id:g},"unprocessable update");function d(f,Q){return a?y=>{let m=y.historySets.chats[f]||y.chatUpserts[f];if(m)return Q?B(m,Q):!0}:void 0}function B(f,Q){let y=Number(Q?.lastMessageTimestamp||Q?.lastSystemMessageTimestamp||0),m=Number(f?.lastMessageRecvTimestamp||0);return y>=m}};var d8e=class{_eventListeners;_maxListeners;_logger;_throwOnEmitError=!1;_throwOnEmptyListeners=!1;_errorEvent="error";constructor(n){this._eventListeners=new Map,this._maxListeners=100,this._logger=n?.logger,n?.throwOnEmitError!==void 0&&(this._throwOnEmitError=n.throwOnEmitError),n?.throwOnEmptyListeners!==void 0&&(this._throwOnEmptyListeners=n.throwOnEmptyListeners)}get logger(){return this._logger}set logger(n){this._logger=n}get throwOnEmitError(){return this._throwOnEmitError}set throwOnEmitError(n){this._throwOnEmitError=n}get throwOnEmptyListeners(){return this._throwOnEmptyListeners}set throwOnEmptyListeners(n){this._throwOnEmptyListeners=n}once(n,t){let o=(...i)=>{this.off(n,o),t(...i)};return this.on(n,o),this}listenerCount(n){if(n===void 0)return this.getAllListeners().length;let t=this._eventListeners.get(n);return t?t.length:0}eventNames(){return[...this._eventListeners.keys()]}rawListeners(n){return n===void 0?this.getAllListeners():this._eventListeners.get(n)??[]}prependListener(n,t){let o=this._eventListeners.get(n)??[];return o.unshift(t),this._eventListeners.set(n,o),this}prependOnceListener(n,t){let o=(...i)=>{this.off(n,o),t(...i)};return this.prependListener(n,o),this}maxListeners(){return this._maxListeners}addListener(n,t){return this.on(n,t),this}on(n,t){this._eventListeners.has(n)||this._eventListeners.set(n,[]);let o=this._eventListeners.get(n);return o&&(o.length>=this._maxListeners&&console.warn(`MaxListenersExceededWarning: Possible event memory leak detected. ${o.length+1} ${n} listeners added. Use setMaxListeners() to increase limit.`),o.push(t)),this}removeListener(n,t){return this.off(n,t),this}off(n,t){let o=this._eventListeners.get(n)??[],i=o.indexOf(t);return i!==-1&&o.splice(i,1),o.length===0&&this._eventListeners.delete(n),this}emit(n,...t){let o=!1,i=this._eventListeners.get(n);if(i&&i.length>0)for(let e of i)e(...t),o=!0;if(n===this._errorEvent){let e=t[0]instanceof Error?t[0]:new Error(`${t[0]}`);if(this._throwOnEmitError&&!o)throw e;if(this.listeners(this._errorEvent).length===0&&this._throwOnEmptyListeners===!0)throw e}return this.sendLog(n,t),o}listeners(n){return this._eventListeners.get(n)??[]}removeAllListeners(n){return n!==void 0?this._eventListeners.delete(n):this._eventListeners.clear(),this}setMaxListeners(n){this._maxListeners=n;for(let t of this._eventListeners.values())t.length>n&&t.splice(n)}getAllListeners(){let n=[];for(let t of this._eventListeners.values())n=[...n,...t];return n}sendLog(n,t){if(!this._logger)return;let o;switch(typeof t=="string"?o=t:Array.isArray(t)&&t.length>0&&t[0]instanceof Error?o=t[0].message:t instanceof Error?o=t.message:Array.isArray(t)&&t.length>0&&typeof t[0]?.message=="string"?o=t[0].message:o=JSON.stringify(t),n){case"error":{this._logger.error?.(o,{event:n,data:t});break}case"warn":{this._logger.warn?.(o,{event:n,data:t});break}case"trace":{this._logger.trace?.(o,{event:n,data:t});break}case"debug":{this._logger.debug?.(o,{event:n,data:t});break}case"fatal":{this._logger.fatal?.(o,{event:n,data:t});break}default:{this._logger.info?.(o,{event:n,data:t});break}}}},QI=class extends d8e{_hooks;_throwOnHookError=!1;_enforceBeforeAfter=!1;_deprecatedHooks;_allowDeprecated=!0;constructor(n){super({logger:n?.logger,throwOnEmitError:n?.throwOnEmitError,throwOnEmptyListeners:n?.throwOnEmptyListeners}),this._hooks=new Map,this._deprecatedHooks=n?.deprecatedHooks?new Map(n.deprecatedHooks):new Map,n?.throwOnHookError!==void 0?this._throwOnHookError=n.throwOnHookError:n?.throwHookErrors!==void 0&&(this._throwOnHookError=n.throwHookErrors),n?.enforceBeforeAfter!==void 0&&(this._enforceBeforeAfter=n.enforceBeforeAfter),n?.allowDeprecated!==void 0&&(this._allowDeprecated=n.allowDeprecated)}get hooks(){return this._hooks}get throwHookErrors(){return this._throwOnHookError}set throwHookErrors(n){this._throwOnHookError=n}get throwOnHookError(){return this._throwOnHookError}set throwOnHookError(n){this._throwOnHookError=n}get enforceBeforeAfter(){return this._enforceBeforeAfter}set enforceBeforeAfter(n){this._enforceBeforeAfter=n}get deprecatedHooks(){return this._deprecatedHooks}set deprecatedHooks(n){this._deprecatedHooks=n}get allowDeprecated(){return this._allowDeprecated}set allowDeprecated(n){this._allowDeprecated=n}validateHookName(n){if(this._enforceBeforeAfter){let t=n.trim().toLocaleLowerCase();if(!t.startsWith("before")&&!t.startsWith("after"))throw new Error(`Hook event "${n}" must start with "before" or "after" when enforceBeforeAfter is enabled`)}}checkDeprecatedHook(n){if(this._deprecatedHooks.has(n)){let t=this._deprecatedHooks.get(n),o=`Hook "${n}" is deprecated${t?`: ${t}`:""}`;return this.emit("warn",{hook:n,message:o}),this._allowDeprecated}return!0}onHook(n,t){this.onHookEntry({event:n,handler:t})}onHookEntry(n){if(this.validateHookName(n.event),!this.checkDeprecatedHook(n.event))return;let t=this._hooks.get(n.event);t?t.push(n.handler):this._hooks.set(n.event,[n.handler])}addHook(n,t){this.onHookEntry({event:n,handler:t})}onHooks(n){for(let t of n)this.onHook(t.event,t.handler)}prependHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);o?o.unshift(t):this._hooks.set(n,[t])}prependOnceHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=async(...i)=>(this.removeHook(n,o),t(...i));this.prependHook(n,o)}onceHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=async(...i)=>(this.removeHook(n,o),t(...i));this.onHook(n,o)}removeHook(n,t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);if(o){let i=o.indexOf(t);i!==-1&&o.splice(i,1)}}removeHooks(n){for(let t of n)this.removeHook(t.event,t.handler)}async hook(n,...t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);if(o)for(let i of o)try{await i(...t)}catch(e){let a=`${n}: ${e.message}`;if(this.emit("error",new Error(a)),this._throwOnHookError)throw new Error(a)}}hookSync(n,...t){if(this.validateHookName(n),!this.checkDeprecatedHook(n))return;let o=this._hooks.get(n);if(o){for(let i of o)if(i.constructor.name!=="AsyncFunction")try{i(...t)}catch(e){let a=`${n}: ${e.message}`;if(this.emit("error",new Error(a)),this._throwOnHookError)throw new Error(a)}}}async beforeHook(n,...t){await this.hook(`before:${n}`,...t)}async afterHook(n,...t){await this.hook(`after:${n}`,...t)}async callHook(n,...t){await this.hook(n,...t)}getHooks(n){if(this.validateHookName(n),!!this.checkDeprecatedHook(n))return this._hooks.get(n)}clearHooks(){this._hooks.clear()}};var h8e=class{_enabled=!0;_maxSize=4e3;_store=new Map;_keys=[];constructor(n){n?.enabled!==void 0&&(this._enabled=n.enabled),n?.maxSize!==void 0&&(this._maxSize=n.maxSize)}get enabled(){return this._enabled}set enabled(n){this._enabled=n}get maxSize(){return this._maxSize}set maxSize(n){this._maxSize=n}get store(){return this._store}get size(){return this._store.size}get(n){return this._store.get(n)}set(n,t){if(this._enabled){if(this._store.has(n)){this._store.set(n,t);return}if(this._store.size>=this._maxSize){let o=this._keys.shift();o&&this._store.delete(o)}this._keys.push(n),this._store.set(n,t)}}has(n){return this._store.has(n)}clear(){this._store.clear(),this._keys=[]}},E8e=class{get name(){return"crc32"}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let a=n;t=new Uint8Array(a.buffer,a.byteOffset,a.byteLength)}let o=3988292384,i=4294967295;for(let a=0;a>>1^o&-(i&1)}return i=(i^4294967295)>>>0,i.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}},wb=class{_algorithm="SHA-256";constructor(n){n?.algorithm&&(this._algorithm=n?.algorithm)}get name(){return this._algorithm}async toHash(n){let t=await crypto.subtle.digest(this._algorithm,n);return Array.from(new Uint8Array(t)).map(e=>e.toString(16).padStart(2,"0")).join("")}},C8e=class{get name(){return"djb2"}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let e=n;t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let o=5381;for(let e=0;e>>0;return o.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}},u8e=class{get name(){return"fnv1"}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let A=n;t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}let o=2166136261,i=16777619,e=o;for(let A=0;A>>0;return e.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}},B8e=class{_seed;constructor(n=0){this._seed=n>>>0}get name(){return"murmur"}get seed(){return this._seed}toHashSync(n){let t;if(n instanceof Uint8Array)t=n;else if(n instanceof ArrayBuffer)t=new Uint8Array(n);else if(n instanceof DataView)t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);else{let c=n;t=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}let o=3432918353,i=461845907,e=t.length,a=Math.floor(e/4),A=this._seed;for(let c=0;c>>16,A=this._imul(A,2246822507),A^=A>>>13,A=this._imul(A,3266489909),A^=A>>>16,A=A>>>0,A.toString(16).padStart(8,"0")}async toHash(n){return this.toHashSync(n)}_imul(n,t){if(Math.imul)return Math.imul(n,t);let o=n>>>16&65535,i=n&65535,e=t>>>16&65535,a=t&65535;return i*a+(o*a+i*e<<16>>>0)|0}_rotl32(n,t){return n<>>32-t}},f8e=class{_providers=new Map;_getFuzzy=!0;constructor(n){n?.providers&&this.loadProviders(n?.providers),n?.getFuzzy!==void 0&&(this._getFuzzy=!!n?.getFuzzy)}loadProviders(n){for(let t of n)this._providers.set(t.name,t)}get providers(){return this._providers}set providers(n){this._providers=n}get names(){return Array.from(this._providers.keys())}get(n,t){let o=t?.fuzzy??this._getFuzzy;n=n.trim();let i=this._providers.get(n);return i===void 0&&o===!0&&(n=n.toLowerCase(),i=this._providers.get(n)),i===void 0&&o===!0&&(n=n.replaceAll("-",""),i=this._providers.get(n)),i}add(n){this._providers.set(n.name,n)}remove(n){return this._providers.delete(n)}},MU=class extends QI{_parse=JSON.parse;_stringify=JSON.stringify;_providers=new f8e;_defaultAlgorithm="SHA-256";_defaultAlgorithmSync="djb2";_cache;constructor(n){super(n),n?.parse&&(this._parse=n.parse),n?.stringify&&(this._stringify=n.stringify),n?.defaultAlgorithm&&(this._defaultAlgorithm=n.defaultAlgorithm),n?.defaultAlgorithmSync&&(this._defaultAlgorithmSync=n.defaultAlgorithmSync),this._cache=new h8e(n?.cache),this.loadProviders(n?.providers,{includeBase:n?.includeBase??!0})}get parse(){return this._parse}set parse(n){this._parse=n}get stringify(){return this._stringify}set stringify(n){this._stringify=n}get providers(){return this._providers}set providers(n){this._providers=n}get names(){return this._providers.names}get defaultAlgorithm(){return this._defaultAlgorithm}set defaultAlgorithm(n){this._defaultAlgorithm=n}get defaultAlgorithmSync(){return this._defaultAlgorithmSync}set defaultAlgorithmSync(n){this._defaultAlgorithmSync=n}get cache(){return this._cache}async toHash(n,t){let o={data:n,algorithm:t?.algorithm??this._defaultAlgorithm,maxLength:t?.maxLength};await this.beforeHook("toHash",o);let i=this._stringify(o.data),e=`${o.algorithm}:${i}`;if(this._cache.enabled){let c=this._cache.get(e);if(c!==void 0){let I=c;t?.maxLength&&I.length>t.maxLength&&(I=I.substring(0,t.maxLength));let d={hash:I,data:o.data,algorithm:o.algorithm};return await this.afterHook("toHash",d),d.hash}}let A=new TextEncoder().encode(i),r=this._providers.get(o.algorithm);r||(this.emit("warn",`Invalid algorithm '${o.algorithm}' not found. Falling back to default algorithm '${this._defaultAlgorithm}'.`),r=new wb({algorithm:this._defaultAlgorithm}));let s=await r.toHash(A);this._cache.enabled&&this._cache.set(e,s),t?.maxLength&&s.length>t?.maxLength&&(s=s.substring(0,t.maxLength));let g={hash:s,data:o.data,algorithm:o.algorithm};return await this.afterHook("toHash",g),g.hash}async toNumber(n,t={}){let{min:o=0,max:i=100,algorithm:e=this._defaultAlgorithm,hashLength:a=16}=t;if(o>i)throw new Error("min cannot be greater than max");let A=await this.toHash(n,{algorithm:e,maxLength:a}),r=Number.parseInt(A,16),s=i-o+1;return o+r%s}toHashSync(n,t){let o={data:n,algorithm:t?.algorithm??this._defaultAlgorithmSync,maxLength:t?.maxLength};this.hookSync("before:toHashSync",o);let i=o.algorithm,e=this._stringify(o.data),a=`${i}:${e}`;if(this._cache.enabled){let I=this._cache.get(a);if(I!==void 0){let d=I;t?.maxLength&&d.length>t.maxLength&&(d=d.substring(0,t.maxLength));let B={hash:d,data:o.data,algorithm:i};return this.hookSync("after:toHashSync",B),B.hash}}let r=new TextEncoder().encode(e),s=this._providers.get(i);if(!s&&(this.emit("warn",`Invalid algorithm '${i}' not found. Falling back to default algorithm '${this._defaultAlgorithmSync}'.`),s=this._providers.get(this._defaultAlgorithmSync),!s))throw new Error(`Hash provider '${this._defaultAlgorithmSync}' (default) not found`);if(!s.toHashSync)throw new Error(`Hash provider '${i}' does not support synchronous hashing. Use toHash() instead or choose a different algorithm (djb2, fnv1, murmur, crc32).`);let g=s.toHashSync(r);this._cache.enabled&&this._cache.set(a,g),t?.maxLength&&g.length>t?.maxLength&&(g=g.substring(0,t.maxLength));let c={hash:g,data:o.data,algorithm:o.algorithm};return this.hookSync("after:toHashSync",c),c.hash}toNumberSync(n,t={}){let{min:o=0,max:i=100,algorithm:e=this._defaultAlgorithmSync,hashLength:a=16}=t;if(o>i)throw new Error("min cannot be greater than max");let A=this.toHashSync(n,{algorithm:e,maxLength:a}),r=Number.parseInt(A,16),s=i-o+1;return o+r%s}loadProviders(n,t={includeBase:!0}){if(n)for(let o of n)this._providers.add(o);t.includeBase&&(this.providers.add(new wb({algorithm:"SHA-256"})),this.providers.add(new wb({algorithm:"SHA-384"})),this.providers.add(new wb({algorithm:"SHA-512"})),this.providers.add(new E8e),this.providers.add(new C8e),this.providers.add(new u8e),this.providers.add(new B8e))}};var NU=n=>{let t;if(n!==void 0){if(typeof n=="number")t=n;else{if(typeof n!="string")return;if(n=n.trim(),Number.isNaN(Number(n))){let o=/^([\d.]+)\s*(ms|s|m|h|hr|d)$/i.exec(n);if(!o)throw new Error(`Unsupported time format: "${n}". Use 'ms', 's', 'm', 'h', 'hr', or 'd'.`);let[,i,e]=o,a=Number.parseFloat(i);switch(e.toLowerCase()){case"ms":t=a;break;case"s":t=a*1e3;break;case"m":t=a*1e3*60;break;case"h":t=a*1e3*60*60;break;case"hr":t=a*1e3*60*60;break;case"d":t=a*1e3*60*60*24;break;default:t=Number(n)}}else t=Number(n)}return t}},np=(n,t)=>{t??=new Date;let o=NU(n);return o===void 0?t.getTime():t.getTime()+o};var Gf=(function(n){return n.SHA256="SHA-256",n.SHA384="SHA-384",n.SHA512="SHA-512",n.DJB2="djb2",n.FNV1="fnv1",n.MURMER="murmer",n.CRC32="crc32",n})({});function _U(n,t={algorithm:"djb2",serialize:JSON.stringify}){let o=t?.algorithm??"djb2",i=(t?.serialize??JSON.stringify)(n);return new MU().toHashSync(i,{algorithm:o})}function Pne(n,t={min:0,max:10,algorithm:"djb2",serialize:JSON.stringify}){let o=t?.min??0,i=t?.max??10,e=t?.algorithm??"djb2",a=t?.serialize??JSON.stringify,A=t?.hashLength??16;if(o>=i)throw new Error(`Invalid range: min (${o}) must be less than max (${i})`);let r=a(n);return new MU().toNumberSync(r,{algorithm:e,min:o,max:i,hashLength:A})}function RU(n,t){let{ttl:o,keyPrefix:i,cache:e,serialize:a}=t;return(...A)=>{let r=Q8e(n,A,{keyPrefix:i,serialize:a});t.createKey&&(r=t.createKey(n,A,t));let s=e.get(r);if(s===void 0)try{s=n(...A),e.set(r,s,o)}catch(g){e.emit("error",g),t.cacheErrors&&e.set(r,g,o)}return s}}function kU(n,t,o){let i=typeof n=="function"?n(o):n,e;try{e=o.cache.get(i)}catch(a){if(o.cache.emit("error",a),o.throwErrors===!0||o.throwErrors==="store")throw a}if(e===void 0)try{try{e=t()}catch(a){throw new Db(a,"function")}try{o.cache.set(i,e,o.ttl)}catch(a){throw new Db(a,"store")}}catch(a){let A=a instanceof Db?a.context:void 0,r=a instanceof Db?a.error:a;if(o.cache.emit("error",r),o.cacheErrors&&A==="function")try{o.cache.set(i,r,o.ttl)}catch(s){o.cache.emit("error",s)}if(o.throwErrors===!0||o.throwErrors===A)throw r}return e}function Q8e(n,t,o){let{keyPrefix:i,serialize:e}=o||{};return i?`${i}::${n.name}::${_U(t,{serialize:e})}`:`${n.name}::${_U(t,{serialize:e})}`}var Db=class{error;context;constructor(n,t){this.error=n,this.context=t}};var yI=class{_counters={hits:0,misses:0,gets:0,sets:0,deletes:0,clears:0,count:0};_vsize=0;_ksize=0;_enabled=!1;_lastUpdated;_lastReset;_subscriptions=[];_trackedKeys=new Map;_trackKeys=!1;_maxTrackedKeys;constructor(n){n?.enabled&&(this._enabled=n.enabled),n?.trackKeys&&(this._trackKeys=n.trackKeys),n?.maxTrackedKeys!==void 0&&(this._maxTrackedKeys=n.maxTrackedKeys),n?.emitter&&n?.eventMap&&this.subscribe(n.emitter,n.eventMap)}get enabled(){return this._enabled}set enabled(n){this._enabled=n}get trackKeys(){return this._trackKeys}set trackKeys(n){this._trackKeys=n}get maxTrackedKeys(){return this._maxTrackedKeys}set maxTrackedKeys(n){this._maxTrackedKeys=n}get trackedKeys(){return this._trackedKeys}get hits(){return this._counters.hits}get misses(){return this._counters.misses}get gets(){return this._counters.gets}get sets(){return this._counters.sets}get deletes(){return this._counters.deletes}get clears(){return this._counters.clears}get vsize(){return this._vsize}get ksize(){return this._ksize}get count(){return this._counters.count}get hitRate(){let n=this._counters.hits+this._counters.misses;return n===0?0:this._counters.hits/n}get missRate(){let n=this._counters.hits+this._counters.misses;return n===0?0:this._counters.misses/n}get lastUpdated(){return this._lastUpdated}get lastReset(){return this._lastReset}increment(n,t=1){this._enabled&&(this._counters[n]+=t,this.touch())}decrement(n,t=1){this._enabled&&(this._counters[n]-=t,this.touch())}incrementHits(n=1){this.increment("hits",n)}incrementMisses(n=1){this.increment("misses",n)}incrementGets(n=1){this.increment("gets",n)}incrementSets(n=1){this.increment("sets",n)}incrementDeletes(n=1){this.increment("deletes",n)}incrementClears(n=1){this.increment("clears",n)}incrementVSize(n){this._enabled&&(this._vsize+=this.roughSizeOfObject(n),this.touch())}decreaseVSize(n){this._enabled&&(this._vsize=Math.max(0,this._vsize-this.roughSizeOfObject(n)),this.touch())}incrementKSize(n){this._enabled&&(this._ksize+=this.roughSizeOfString(n),this.touch())}decreaseKSize(n){this._enabled&&(this._ksize=Math.max(0,this._ksize-this.roughSizeOfString(n)),this.touch())}incrementCount(n=1){this.increment("count",n)}decreaseCount(n=1){this._enabled&&(this._counters.count=Math.max(0,this._counters.count-n),this.touch())}setCount(n){this._enabled&&(this._counters.count=n,this.touch())}roughSizeOfString(n){return n.length*2}roughSizeOfObject(n){let t=[],o=[n],i=0;for(;o.length>0;){let e=o.pop();if(typeof e=="boolean")i+=4;else if(typeof e=="string")i+=e.length*2;else if(typeof e=="number")i+=8;else{if(e==null){i+=4;continue}if(t.includes(e))continue;t.push(e);for(let a in e)i+=a.length*2,o.push(e[a])}}return i}enable(){this._enabled=!0}disable(){this._enabled=!1}clear(){this.reset()}reset(){this._counters={hits:0,misses:0,gets:0,sets:0,deletes:0,clears:0,count:0},this._vsize=0,this._ksize=0,this._trackedKeys.clear(),this._lastReset=Date.now(),this._lastUpdated=void 0}resetStoreValues(){this._vsize=0,this._ksize=0,this._counters.count=0}toJSON(){return{enabled:this._enabled,hits:this._counters.hits,misses:this._counters.misses,gets:this._counters.gets,sets:this._counters.sets,deletes:this._counters.deletes,clears:this._counters.clears,vsize:this._vsize,ksize:this._ksize,count:this._counters.count,hitRate:this.hitRate,missRate:this.missRate,trackedKeys:this._trackedKeys.size,lastUpdated:this._lastUpdated,lastReset:this._lastReset}}snapshot(){return this.toJSON()}recordKey(n,t,o=1){if(!this._enabled||!this._trackKeys)return;let i=this._trackedKeys.get(n);i||(i={hits:0,misses:0,gets:0,sets:0,deletes:0},this._trackedKeys.set(n,i),this.pruneTrackedKeys(n)),i[t]+=o,this.touch()}mostUsedKeys(n=100,t){return this.sortedKeyEntries(t,"desc").slice(0,n)}leastUsedKeys(n=100,t){return this.sortedKeyEntries(t,"asc").slice(0,n)}keyStats(n){let t=this._trackedKeys.get(n);return t?this.toKeyEntry(n,t):void 0}clearKeys(){this._trackedKeys.clear()}totalOf(n){return n.hits+n.misses+n.gets+n.sets+n.deletes}toKeyEntry(n,t){let o=t.hits+t.misses;return{key:n,count:this.totalOf(t),hits:t.hits,misses:t.misses,gets:t.gets,sets:t.sets,deletes:t.deletes,hitRate:o===0?0:t.hits/o}}sortedKeyEntries(n,t){let o=[];for(let[e,a]of this._trackedKeys)o.push(this.toKeyEntry(e,a));let i=t==="asc"?1:-1;return o.sort((e,a)=>{let A=n?e[n]:e.count,r=n?a[n]:a.count;return A!==r?(A-r)*i:e.keythis.totalOf(i[1])-this.totalOf(e[1]));for(let[i]of o){if(this._trackedKeys.size<=t)break;i!==n&&this._trackedKeys.delete(i)}}subscribe(n,t){for(let[o,i]of Object.entries(t)){let e=(...a)=>{this.applyEvent(i,a)};n.on(o,e),this._subscriptions.push({emitter:n,event:o,listener:e})}}unsubscribe(n){let t=[];for(let o of this._subscriptions){if(n&&o.emitter!==n){t.push(o);continue}(o.emitter.off??o.emitter.removeListener)?.call(o.emitter,o.event,o.listener)}this._subscriptions=t}applyEvent(n,t){if(this._enabled){if(typeof n=="function"){n(this,...t);return}if(Array.isArray(n)){for(let o of n)this.increment(o);return}this.increment(n)}}touch(){this._lastUpdated=Date.now()}};var y8e=class{value;prev=void 0;next=void 0;constructor(n){this.value=n}},vU=class{head=void 0;tail=void 0;nodesMap=new Map;addToFront(n){let t=new y8e(n);this.head?(t.next=this.head,this.head.prev=t,this.head=t):this.head=this.tail=t,this.nodesMap.set(n,t)}moveToFront(n){let t=this.nodesMap.get(n);if(!t||this.head===t)return;t.prev&&(t.prev.next=t.next);t.next&&(t.next.prev=t.prev);t===this.tail&&(this.tail=t.prev),t.prev=void 0,t.next=this.head;this.head&&(this.head.prev=t),this.head=t,this.tail??=t}getOldest(){return this.tail?this.tail.value:void 0}removeOldest(){if(!this.tail)return;let n=this.tail.value;return this.tail.prev?(this.tail=this.tail.prev,this.tail.next=void 0):this.head=this.tail=void 0,this.nodesMap.delete(n),n}remove(n){let t=this.nodesMap.get(n);return t?(t.prev?t.prev.next=t.next:(this.head=t.next,this.head&&(this.head.prev=void 0)),t.next?t.next.prev=t.prev:(this.tail=t.prev,this.tail&&(this.tail.next=void 0)),this.nodesMap.delete(n),!0):!1}get size(){return this.nodesMap.size}};var Gne=16777216,PU=class extends QI{_lru=new vU;_storeHashSize=16;_storeHashAlgorithm=Gf.DJB2;_store=Array.from({length:this._storeHashSize},()=>new Map);_ttl;_maxTtl;_useClone=!0;_lruSize=0;_checkInterval=0;_interval=0;_stats=new yI({enabled:!1});constructor(n){super(),n?.ttl&&this.setTtl(n.ttl),n?.maxTtl!==void 0&&this.setMaxTtl(n.maxTtl),n?.useClone!==void 0&&(this._useClone=n.useClone),n?.stats&&(this._stats.enabled=n.stats),n?.storeHashSize&&n.storeHashSize>0&&(this._storeHashSize=n.storeHashSize),n?.lruSize&&(n.lruSize>16777216?this.emit("error",new Error(`LRU size cannot be larger than ${Gne} due to Map limitations.`)):this._lruSize=n.lruSize),n?.checkInterval&&(this._checkInterval=n.checkInterval),n?.storeHashAlgorithm&&(this._storeHashAlgorithm=n.storeHashAlgorithm),this._store=Array.from({length:this._storeHashSize},()=>new Map),this.startIntervalCheck()}get ttl(){return this._ttl}set ttl(n){this.setTtl(n)}get maxTtl(){return this._maxTtl}set maxTtl(n){this.setMaxTtl(n)}get useClone(){return this._useClone}set useClone(n){this._useClone=n}get lruSize(){return this._lruSize}set lruSize(n){if(n>16777216){this.emit("error",new Error(`LRU size cannot be larger than ${Gne} due to Map limitations.`));return}if(this._lruSize=n,this._lruSize===0){this._lru=new vU;return}this.lruResize()}get checkInterval(){return this._checkInterval}set checkInterval(n){this._checkInterval=n}get size(){let n=0;for(let t of this._store)n+=t.size;return n}get stats(){return this._stats}get storeHashSize(){return this._storeHashSize}set storeHashSize(n){n!==this._storeHashSize&&(this._storeHashSize=n,this._store=Array.from({length:this._storeHashSize},()=>new Map),this._stats.enabled&&this._stats.resetStoreValues())}get storeHashAlgorithm(){return this._storeHashAlgorithm}set storeHashAlgorithm(n){this._storeHashAlgorithm=n}get keys(){let n=[];for(let t of this._store)for(let o of t.keys()){let i=t.get(o);if(i&&this.hasExpired(i)){this.recordExpiration(i),t.delete(o),this.lruRemove(o);continue}n.push(o)}return n.values()}get items(){let n=[];for(let t of this._store)for(let o of t.values()){if(this.hasExpired(o)){this.recordExpiration(o),t.delete(o.key),this.lruRemove(o.key);continue}n.push(o)}return n.values()}get store(){return this._store}get(n){this.hookSync("BEFORE_GET",n);let t=this.getStore(n),o=t.get(n);if(!o){this.recordRead(!1),this.hookSync("AFTER_GET",{key:n,result:void 0});return}if(o.expires&&Date.now()>o.expires){this.recordExpiration(o),t.delete(n),this.lruRemove(n),this.recordRead(!1),this.hookSync("AFTER_GET",{key:n,result:void 0});return}this.lruMoveToFront(n);let i;return this._useClone?i=this.clone(o.value):i=o.value,this.recordRead(!0),this.hookSync("AFTER_GET",{key:n,result:i}),i}getMany(n){this.hookSync("BEFORE_GET_MANY",n);let t=[];for(let o of n)t.push(this.get(o));return this.hookSync("AFTER_GET_MANY",{keys:n,result:t}),t}getRaw(n){let t=this.getStore(n),o=t.get(n);if(!o){this.recordRead(!1);return}if(o.expires&&Date.now()>o.expires){this.recordExpiration(o),t.delete(n),this.lruRemove(n),this.recordRead(!1);return}return this.lruMoveToFront(n),this.recordRead(!0),o}getManyRaw(n){let t=[];for(let o of n)t.push(this.getRaw(o));return t}set(n,t,o){let i={key:n,value:t,ttl:o};this.hookSync("BEFORE_SET",i);let e=this.getStore(i.key),a,A=i.ttl;if(A!==void 0||this._ttl!==void 0)if(typeof A=="object"){if(A.expire&&(a=typeof A.expire=="number"?A.expire:A.expire.getTime()),A.ttl){let s=np(A.ttl);s!==void 0&&(a=s)}}else{let s=np(A??this._ttl);s!==void 0&&(a=s)}if(this._maxTtl!==void 0){let s=np(this._maxTtl);(a===void 0||a>s)&&(a=s)}if(this._lruSize>0){if(e.has(i.key))this.lruMoveToFront(i.key);else if(this.lruAddToFront(i.key),this._lru.size>this._lruSize){let s=this._lru.getOldest();s&&(this._lru.removeOldest(),this.delete(s))}}if(this._stats.enabled){let s=e.get(i.key);s?this._stats.decreaseVSize(s.value):(this._stats.incrementKSize(i.key),this._stats.incrementCount()),this._stats.incrementVSize(i.value),this._stats.incrementSets()}let r={key:i.key,value:i.value,expires:a};e.set(i.key,r),this.hookSync("AFTER_SET",i)}setMany(n){this.hookSync("BEFORE_SET_MANY",n);for(let t of n)this.set(t.key,t.value,t.ttl);this.hookSync("AFTER_SET_MANY",n)}has(n){return!!this.get(n)}hasMany(n){let t=[];for(let o of n){let i=this.get(o);t.push(!!i)}return t}take(n){let t=this.get(n);if(t)return this.delete(n),t}takeMany(n){let t=[];for(let o of n)t.push(this.take(o));return t}delete(n){this.hookSync("BEFORE_DELETE",n);let t=this.getStore(n);if(this._stats.enabled){let o=t.get(n);o&&(this._stats.decreaseKSize(n),this._stats.decreaseVSize(o.value),this._stats.decreaseCount(),this._stats.incrementDeletes())}t.delete(n),this.lruRemove(n),this.hookSync("AFTER_DELETE",n)}deleteMany(n){this.hookSync("BEFORE_DELETE_MANY",n);for(let t of n)this.delete(t);this.hookSync("AFTER_DELETE_MANY",n)}clear(){this.hookSync("BEFORE_CLEAR"),this._store=Array.from({length:this._storeHashSize},()=>new Map),this._lru=new vU,this._stats.enabled&&(this._stats.resetStoreValues(),this._stats.incrementClears()),this.hookSync("AFTER_CLEAR")}getStore(n){let t=this.getKeyStoreHash(n);return this._store[t]||=new Map,this._store[t]}getKeyStoreHash(n){return this._store.length===1?0:typeof this._storeHashAlgorithm=="function"?this._storeHashAlgorithm(n,this._storeHashSize):Pne(n,{min:0,max:this._storeHashSize-1,algorithm:this._storeHashAlgorithm})}clone(n){return this.isPrimitive(n)?n:structuredClone(n)}lruAddToFront(n){this._lruSize!==0&&this._lru.addToFront(n)}lruMoveToFront(n){this._lruSize!==0&&this._lru.moveToFront(n)}lruRemove(n){this._lruSize!==0&&this._lru.remove(n)}lruResize(){for(;this._lru.size>this._lruSize;){let n=this._lru.getOldest();n&&(this._lru.removeOldest(),this.delete(n))}}checkExpiration(){for(let n of this._store)for(let t of n.values())t.expires&&Date.now()>t.expires&&(this.recordExpiration(t),n.delete(t.key),this.lruRemove(t.key))}startIntervalCheck(){if(this._checkInterval>0){this._interval&&clearInterval(this._interval),this._interval=setInterval(()=>{this.checkExpiration()},this._checkInterval).unref()}}stopIntervalCheck(){this._interval&&clearInterval(this._interval),this._interval=0,this._checkInterval=0}wrap(n,t){return RU(n,{ttl:t?.ttl??this._ttl,keyPrefix:t?.keyPrefix,createKey:t?.createKey,cache:this})}getOrSet(n,t,o){return kU(n,t,{cache:this,ttl:o?.ttl??this._ttl,cacheErrors:o?.cacheErrors,throwErrors:o?.throwErrors})}recordRead(n){this._stats.enabled&&(n?this._stats.incrementHits():this._stats.incrementMisses(),this._stats.incrementGets())}recordExpiration(n){this._stats.enabled&&(this._stats.decreaseKSize(n.key),this._stats.decreaseVSize(n.value),this._stats.decreaseCount())}isPrimitive(n){return n==null||typeof n=="string"||typeof n=="number"||typeof n=="boolean"}setTtl(n){typeof n=="string"||n===void 0?this._ttl=n:n>0?this._ttl=n:this._ttl=void 0}setMaxTtl(n){typeof n=="string"||n===void 0?this._maxTtl=n:n>0?this._maxTtl=n:this._maxTtl=void 0}hasExpired(n){return!!(n.expires&&Date.now()>n.expires)}};var M8e=class extends QI{options={stdTTL:0,checkperiod:600,useClones:!0,deleteOnExpire:!0,maxKeys:-1};store=new Map;_stats=new yI({enabled:!0});_cacheable=new PU;intervalId=0;constructor(n){super(),n&&(this.options={...this.options,...n}),this.startInterval()}set(n,t,o=0){if(typeof n!="string"&&typeof n!="number")throw this.createError("The key argument has to be of type `string` or `number`. Found: `__key`",n);if(o&&typeof o!="number"&&typeof o!="string")throw this.createError("The ttl argument has to be a number or a string for shorthand ttl.",this.formatKey(n));let i=this.formatKey(n),e=0;this.options.stdTTL&&(e=this.getExpirationTimestamp(this.options.stdTTL)),o&&(e=this.getExpirationTimestamp(o));let a=0;if(e&&e>0&&(a=e),this.options.maxKeys){let{maxKeys:A}=this.options;if(A>-1&&this.store.size>=A)throw this.createError("Cache max keys amount exceeded",this.formatKey(n))}return this.store.set(i,{key:i,value:t,ttl:a}),this.emit("set",i,t,e),this._stats.incrementKSize(i),this._stats.incrementVSize(t),this._stats.setCount(this.store.size),!0}mset(n){if(!Array.isArray(n))throw this.createError("The keys argument has to be an array.");for(let t of n)this.set(t.key,t.value,t.ttl);return!0}get(n){let t=this.store.get(this.formatKey(n));if(t){if(t.ttl>0){if(t.ttl0){let n=this.options.checkperiod*1e3;this.intervalId=setInterval(()=>{this.checkData()},n).unref();return}this.intervalId=0}stopInterval(){this.intervalId!==0&&(clearInterval(this.intervalId),this.intervalId=0)}formatKey(n){return n.toString()}getExpirationTimestamp(n){if(typeof n=="string")return np(n);let t=Date.now(),o=n*1e3;return t+o}checkData(){for(let[n,t]of this.store.entries())t.ttl>0&&t.ttl{let a={resolve:i,reject:e,weight:t,priority:o},A=Lne(this._queue,r=>o<=r.priority);A===-1&&t<=this._value?this._dispatchItem(a):this._queue.splice(A+1,0,a)})}runExclusive(t){return T8e(this,arguments,void 0,function*(o,i=1,e=0){let[a,A]=yield this.acquire(i,e);try{return yield o(a)}finally{A()}})}waitForUnlock(t=1,o=0){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return this._couldLockImmediately(t,o)?Promise.resolve():new Promise(i=>{this._weightedWaiters[t-1]||(this._weightedWaiters[t-1]=[]),N8e(this._weightedWaiters[t-1],{resolve:i,priority:o})})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(t){this._value=t,this._dispatchQueue()}release(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);this._value+=t,this._dispatchQueue()}cancel(){this._queue.forEach(t=>t.reject(this._cancelError)),this._queue=[]}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters()}_dispatchItem(t){let o=this._value;this._value-=t.weight,t.resolve([o,this._newReleaser(t.weight)])}_newReleaser(t){let o=!1;return()=>{o||(o=!0,this.release(t))}}_drainUnlockWaiters(){if(this._queue.length===0)for(let t=this._value;t>0;t--){let o=this._weightedWaiters[t-1];o&&(o.forEach(i=>i.resolve()),this._weightedWaiters[t-1]=[])}else{let t=this._queue[0].priority;for(let o=this._value;o>0;o--){let i=this._weightedWaiters[o-1];if(!i)continue;let e=i.findIndex(a=>a.priority<=t);(e===-1?i:i.splice(0,e)).forEach((a=>a.resolve()))}}}_couldLockImmediately(t,o){return(this._queue.length===0||this._queue[0].priorityt.priority<=i.priority);n.splice(o+1,0,t)}function Lne(n,t){for(let o=n.length-1;o>=0;o--)if(t(n[o]))return o;return-1}var R8e=function(n,t,o,i){function e(a){return a instanceof o?a:new o(function(A){A(a)})}return new(o||(o=Promise))(function(a,A){function r(c){try{g(i.next(c))}catch(I){A(I)}}function s(c){try{g(i.throw(c))}catch(I){A(I)}}function g(c){c.done?a(c.value):e(c.value).then(r,s)}g((i=i.apply(n,t||[])).next())})},ec=class{constructor(t){this._semaphore=new GU(1,t)}acquire(){return R8e(this,arguments,void 0,function*(t=0){let[,o]=yield this._semaphore.acquire(1,t);return o})}runExclusive(t,o=0){return this._semaphore.runExclusive(()=>t(),1,o)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(t=0){return this._semaphore.waitForUnlock(1,t)}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}};import{randomBytes as F8e}from"crypto";var LU=qe(Hne(),1);var UU=class n extends Error{name="TimeoutError";constructor(t,o){super(t,o),Error.captureStackTrace?.(this,n)}},Kne=n=>n.reason??new DOMException("This operation was aborted.","AbortError");function HU(n,t){let{milliseconds:o,fallback:i,message:e,customTimers:a={setTimeout,clearTimeout},signal:A}=t,r,s,c=new Promise((I,d)=>{if(typeof o!="number"||Math.sign(o)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${o}\``);if(A?.aborted){d(Kne(A));return}if(A&&(s=()=>{d(Kne(A))},A.addEventListener("abort",s,{once:!0})),n.then(I,d),o===Number.POSITIVE_INFINITY)return;let B=new UU;r=a.setTimeout.call(void 0,()=>{if(i){try{I(i())}catch(f){d(f)}return}typeof n.cancel=="function"&&n.cancel(),e===!1?I():e instanceof Error?d(e):(B.message=e??`Promise timed out after ${o} milliseconds`,d(B))},o)}).finally(()=>{c.clear(),s&&A&&A.removeEventListener("abort",s)});return c.clear=()=>{a.clearTimeout.call(void 0,r),r=void 0},c}function KU(n,t,o){let i=0,e=n.length;for(;e>0;){let a=Math.trunc(e/2),A=i+a;o(n[A],t)<=0?(i=++A,e-=a+1):e=a}return i}var P8e=100,pE=class{#e=[];#A=0;enqueue(t,o){let{priority:i=0,id:e}=o??{},{size:a}=this,A={priority:i,id:e,run:t};if(a===0){this.#e.length=0,this.#A=0,this.#e.push(A);return}if(this.#e.at(-1).priority>=i){this.#e.push(A);return}this.#t();let r=KU(this.#e,A,(s,g)=>g.priority-s.priority);this.#e.splice(r,0,A)}setPriority(t,o){let i=this.#e.findIndex((a,A)=>A>=this.#A&&a.id===t);if(i===-1)throw new ReferenceError(`No promise function with the id "${t}" exists in the queue.`);let[e]=this.#e.splice(i,1);this.enqueue(e.run,{priority:o,id:t})}remove(t){let o=this.#e.findIndex((i,e)=>eP8e&&this.#A>this.#e.length/2&&this.#t(),t?.run}filter(t){let o=[];for(let i=this.#A;i=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${t.intervalCap?.toString()??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${t.interval?.toString()??""}\` (${typeof t.interval})`);if(t.strict&&t.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(t.strict&&t.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=t.carryoverIntervalCount??t.carryoverConcurrencyCount??!1,this.#A=t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0,this.#r=t.intervalCap,this.#i=t.interval,this.#p=t.strict,this.#I=new t.queueClass,this.#d=t.queueClass,this.concurrency=t.concurrency,t.timeout!==void 0&&!(Number.isFinite(t.timeout)&&t.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${t.timeout}\` (${typeof t.timeout})`);this.timeout=t.timeout,this.#u=t.autoStart===!1,this.#L()}#S(t){for(;this.#g=this.#i)this.#g++;else break}(this.#g>100&&this.#g>this.#c.length/2||this.#g===this.#c.length)&&(this.#c=this.#c.slice(this.#g),this.#g=0)}#y(t){this.#p?this.#c.push(t):this.#t++}#m(){this.#p?this.#c.length>this.#g&&this.#c.pop():this.#t>0&&this.#t--}#D(){return this.#c.length-this.#g}get#E(){return this.#A?!0:this.#p?this.#D()=this.#r){let i=this.#c[this.#g],e=this.#i-(t-i);return this.#R(e),!0}return!1}if(this.#n===void 0){let o=this.#a-t;if(o<0)this.#t=this.#e?this.#h:0;else return this.#R(o),!0}return!1}#R(t){this.#s===void 0&&(this.#s=setTimeout(()=>{this.#O()},t))}#_(){this.#n&&(clearInterval(this.#n),this.#n=void 0)}#G(){this.#s&&(clearTimeout(this.#s),this.#s=void 0)}#k(){if(this.#I.size===0){if(this.#_(),this.emit("empty"),this.#h===0){if(this.#G(),this.#p&&this.#g>0){let o=Date.now();this.#S(o)}this.emit("idle")}return!1}let t=!1;if(!this.#u){let o=Date.now(),i=!this.#w(o);if(this.#E&&this.#N){let e=this.#I.dequeue();this.#A||(this.#y(o),this.#v()),i&&this.#F(),this.emit("active"),e(),t=!0}}return t}#F(){this.#A||this.#n!==void 0||this.#p||(this.#n=setInterval(()=>{this.#P()},this.#i),this.#a=Date.now()+this.#i)}#P(){this.#p||(this.#n!==void 0&&(this.#t===0&&this.#h===0?this.#_():this.#a=Date.now()+this.#i),this.#t=this.#e?this.#h:0),this.#H(),this.#v()}#H(){for(;this.#k(););}get concurrency(){return this.#C}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);this.#C=t,this.#H()}setPriority(t,o){if(typeof o!="number"||!Number.isFinite(o))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${o}\` (${typeof o})`);this.#I.setPriority(t,o)}async add(t,o={}){if(o={timeout:this.timeout,...o,id:o.id??(this.#B++).toString()},o.timeout!==void 0&&!(Number.isFinite(o.timeout)&&o.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${o.timeout}\` (${typeof o.timeout})`);return new Promise((i,e)=>{let a=Symbol(`task-${o.id}`),A=()=>{},r=async()=>{A(),this.#h++,this.#f.set(a,{id:o.id,priority:o.priority??0,startTime:Date.now(),timeout:o.timeout});let g;try{try{o.signal?.throwIfAborted()}catch(d){throw this.#K(),this.#f.delete(a),d}let c=t({signal:o.signal});if(o.timeout!==void 0&&(c=HU(Promise.resolve(c),{milliseconds:o.timeout,message:`Task timed out after ${o.timeout}ms (queue has ${this.#h} running, ${this.#I.size} waiting)`})),o.signal){let{signal:d}=o;c=Promise.race([c,new Promise((B,f)=>{g=()=>{f(d.reason)},d.addEventListener("abort",g,{once:!0})})])}let I=await c;i(I),this.emit("completed",I)}catch(c){e(c),this.emit("error",c)}finally{g&&o.signal?.removeEventListener("abort",g),this.#f.delete(a),queueMicrotask(()=>{this.#T()})}};this.#I.enqueue(r,o);let s=()=>{if(this.#I instanceof pE){this.#I.remove(r);return}this.#I.remove?.(o.id)};if(o.signal){let{signal:g}=o,c=()=>{A(),s(),e(g.reason),this.#k(),this.emit("next")};if(A=()=>{g.removeEventListener("abort",c),this.#Q.delete(A)},g.aborted){c();return}g.addEventListener("abort",c,{once:!0}),this.#Q.add(A)}this.emit("add"),this.#k()})}async addAll(t,o){return Promise.all(t.map(async i=>this.add(i,o)))}start(){return this.#u?(this.#u=!1,this.#H(),this):this}pause(){this.#u=!0}clear(){for(let t of this.#Q)t();this.#I=new this.#d,this.#_(),this.#q(),this.emit("empty"),this.#h===0&&(this.#G(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#I.size!==0&&await this.#U("empty")}async onSizeLessThan(t){this.#I.sizethis.#I.size{let i=e=>{this.off("error",i),o(e)};this.on("error",i)})}async#U(t,o){let i=Array.isArray(t)?t:[t];return new Promise(e=>{let a=()=>{if(!(o&&!o())){for(let A of i)this.off(A,a);e()}};for(let A of i)this.on(A,a)})}get size(){return this.#I.size}sizeBy(t){return this.#I.filter(t).length}get pending(){return this.#h}get isPaused(){return this.#u}#L(){this.#A||(this.on("add",()=>{this.#I.size>0&&this.#v()}),this.on("next",()=>{this.#v()}))}#v(){this.#A||this.#o||(this.#o=!0,queueMicrotask(()=>{this.#o=!1,this.#q()}))}#K(){this.#A||(this.#m(),this.#v())}#q(){let t=this.#l;if(this.#A||this.#I.size===0){t&&(this.#l=!1,this.emit("rateLimitCleared"));return}let o;if(this.#p){let e=Date.now();this.#S(e),o=this.#D()}else o=this.#t;let i=o>=this.#r;i!==t&&(this.#l=i,this.emit(i?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#l}get isSaturated(){return this.#h===this.#C&&this.#I.size>0||this.isRateLimited&&this.#I.size>0}get runningTasks(){return[...this.#f.values()].map(t=>({...t,timeoutRemaining:t.timeout?Math.max(0,t.startTime+t.timeout-Date.now()):void 0}))}};var bb=class{constructor(t,o){this.store=t,this.logger=o,this.queues=new Map}getQueue(t){return this.queues.has(t)||this.queues.set(t,new sp({concurrency:1})),this.queues.get(t)}async processOperations(t,o,i,e,a){let A=t[o];if(A)return this.getQueue(o).add(async()=>{i[o]=i[o]||{},e[o]=e[o]||{};let r=[],s={};for(let g in A)A[g]===null?r.push(g):s[g]=A[g];Object.keys(s).length>0&&(Object.assign(i[o],s),Object.assign(e[o],s)),r.length>0&&await this.processDeletions(o,r,i,e,a)})}async processDeletions(t,o,i,e,a){if(a)for(let A of o)i[t]?.[A]?(i[t][A]=null,e[t][A]=null):this.logger.warn(`Skipping deletion of non-existent ${t} in transaction: ${A}`);else{let A=await this.store.get(t,o);for(let r of o)A[r]?(i[t][r]=null,e[t][r]=null):this.logger.warn(`Skipping deletion of non-existent ${t}: ${r}`)}}async validateDeletions(t,o){let i=t[o];if(i)return this.getQueue(o).add(async()=>{let e=Object.keys(i).filter(A=>i[A]===null);if(e.length===0)return;let a=await this.store.get(o,e);for(let A of e)a[A]||(this.logger.warn(`Skipping deletion of non-existent ${o}: ${A}`),delete t[o][A])})}};var Yne=(n,t,{maxCommitRetries:o,delayBetweenTriesMs:i})=>{let e=new G8e,a=new Map,A=new Map,r=new Map,s=new bb(n,t);function g(Q){return a.has(Q)||a.set(Q,new sp({concurrency:1})),a.get(Q)}function c(Q){return A.has(Q)||(A.set(Q,new ec),r.set(Q,0)),A.get(Q)}function I(Q){let y=r.get(Q)??0;r.set(Q,y+1)}function d(Q){let y=(r.get(Q)??1)-1;if(r.set(Q,y),y<=0){let m=A.get(Q);m&&!m.isLocked()&&(A.delete(Q),r.delete(Q))}}function B(){return!!e.getStore()}async function f(Q){if(Object.keys(Q).length===0){t.trace("no mutations in transaction");return}t.trace("committing transaction");for(let y=0;y{let m=e.getStore();if(!m)return n.get(Q,y);let _=m.cache[Q]||{},T=y.filter(K=>!(K in _));if(T.length>0){m.dbQueries++,t.trace({type:Q,count:T.length},"fetching missing keys in transaction");let K=await c(Q).runExclusive(()=>n.get(Q,T));m.cache[Q]=m.cache[Q]||{},Object.assign(m.cache[Q],K)}let R={};for(let K of y){let L=m.cache[Q]?.[K];L!=null&&(R[K]=L)}return R},set:async Q=>{let y=e.getStore();if(!y){let m=Object.keys(Q);for(let _ of m){let T=_;T==="pre-key"&&await s.validateDeletions(Q,T)}await Promise.all(m.map(_=>g(_).add(async()=>{let T={[_]:Q[_]};await n.set(T)})));return}t.trace({types:Object.keys(Q)},"caching in transaction");for(let m in Q){let _=m;y.cache[_]=y.cache[_]||{},y.mutations[_]=y.mutations[_]||{},_==="pre-key"?await s.processOperations(Q,_,y.cache,y.mutations,!0):(Object.assign(y.cache[_],Q[_]),Object.assign(y.mutations[_],Q[_]))}},isInTransaction:B,transaction:async(Q,y)=>{if(e.getStore())return t.trace("reusing existing transaction context"),Q();let _=c(y);I(y);try{return await _.runExclusive(async()=>{let T={cache:{},mutations:{},dbQueries:0};t.trace("entering transaction");try{let R=await e.run(T,Q);return await f(T.mutations),t.trace({dbQueries:T.dbQueries},"transaction completed"),R}catch(R){throw t.error({error:R},"transaction failed, rolling back"),R}})}finally{d(y)}}}},jne=n=>{let t=n.me?.id;if(!t)throw new xne.Boom("Cannot proceed: socket is not authenticated yet (creds.me.id is missing)",{statusCode:401});return t},Jne=()=>{let n=Sr.generateKeyPair();return{noiseKey:Sr.generateKeyPair(),pairingEphemeralKeyPair:Sr.generateKeyPair(),signedIdentityKey:n,signedPreKey:dD(n,1),registrationId:j7(),advSecretKey:F8e(32).toString("base64"),processedHistoryMessages:[],nextPreKeyId:1,firstUnuploadedPreKeyId:1,accountSyncCounter:0,accountSettings:{unarchiveChats:!1},registered:!1,pairingCode:void 0,lastPropHash:void 0,routingInfo:void 0,additionalData:void 0}};import{mkdir as L8e,readFile as U8e,stat as H8e,unlink as K8e,writeFile as x8e}from"fs/promises";import{join as xU}from"path";var qne=new Map,YU=n=>{let t=qne.get(n);return t||(t=new ec,qne.set(n,t)),t},zne=async n=>{let t=async(r,s)=>{let g=xU(n,a(s));return YU(g).acquire().then(async I=>{try{await x8e(g,JSON.stringify(r,RB.replacer))}finally{I()}})},o=async r=>{try{let s=xU(n,a(r));return await YU(s).acquire().then(async c=>{try{let I=await U8e(s,{encoding:"utf-8"});return JSON.parse(I,RB.reviver)}finally{c()}})}catch{return null}},i=async r=>{try{let s=xU(n,a(r));return YU(s).acquire().then(async c=>{try{await K8e(s)}catch{}finally{c()}})}catch{}},e=await H8e(n).catch(()=>{});if(e){if(!e.isDirectory())throw new Error(`found something that is not a directory at ${n}, either delete it or specify a different location`)}else await L8e(n,{recursive:!0});let a=r=>r?.replace(/\//g,"__")?.replace(/:/g,"-"),A=await o("creds.json")||Jne();return{state:{creds:A,keys:{get:async(r,s)=>{let g={};return await Promise.all(s.map(async c=>{let I=await o(`${r}-${c}.json`);r==="app-state-sync-key"&&I&&(I=oe.Message.AppStateSyncKeyData.fromObject(I)),g[c]=I})),g},set:async r=>{let s=[];for(let g in r)for(let c in r[g]){let I=r[g][c],d=`${g}-${c}.json`;s.push(I?t(I,d):i(d))}await Promise.all(s)}}},saveCreds:async()=>t(A,"creds.json")}};var Y8e=192,j8e=async(n,{thumbnailWidth:t,fetchOpts:o})=>{let i=await Bb(n,o);return await gU(i,t)},Vne=async(n,t={thumbnailWidth:Y8e,fetchOpts:{timeout:3e3}})=>{try{let o=0,i=5,{getLinkPreview:e}=await import("link-preview-js"),a=n;!n.startsWith("https://")&&!n.startsWith("http://")&&(a="https://"+a);let A=await e(a,{...t.fetchOpts,followRedirects:"follow",handleRedirects:(r,s)=>{let g=new URL(r),c=new URL(s);return o>=i?!1:c.hostname===g.hostname||c.hostname==="www."+g.hostname||"www."+c.hostname===g.hostname?(o+=1,!0):!1},headers:t.fetchOpts?.headers});if(A&&"title"in A&&A.title){let[r]=A.images,s={"canonical-url":A.url,"matched-text":n,title:A.title,description:A.description,originalThumbnailUrl:r};if(t.uploadImage){let{imageMessage:g}=await _f({image:{url:r}},{upload:t.uploadImage,mediaTypeOverride:"thumbnail-link",options:t.fetchOpts});s.jpegThumbnail=g?.jpegThumbnail?Buffer.from(g.jpegThumbnail):void 0,s.highQualityThumbnail=g||void 0}else try{s.jpegThumbnail=r?(await j8e(r,t)).buffer:void 0}catch(g){t.logger?.debug({err:g.stack,url:a},"error in generating thumbnail")}return s}}catch(o){if(!o.message.includes("receive a valid"))throw o}};import Aze from"events";var JU=qe(Kr(),1);var J8e=/^1313555\d{4}$|^131655500\d{2}$/;function q8e(n){if(!n)return!1;let t=n.split("@")[0]??"";return t==="0"||J8e.test(t)||ph(n)?!1:!!(_t(n)||qA(n)||mr(n)||Ia(n)||n.endsWith("@c.us"))}var Mb=604800,z8e=4,SI="__index";async function _b(n){let o=(await n.get("tctoken",[SI]))[SI];if(!o?.token?.length)return[];try{let i=JSON.parse(Buffer.from(o.token).toString());return Array.isArray(i)?i.filter(e=>typeof e=="string"&&e.length>0&&e!==SI):[]}catch{return[]}}async function dE(n,t){let o=await _b(n),i=new Set(o);for(let e of t)e&&e!==SI&&i.add(e);return{[SI]:{token:Buffer.from(JSON.stringify([...i]))}}}function gp(n){if(n==null)return!0;let t=typeof n=="string"?parseInt(n):n;if(isNaN(t))return!0;let o=Math.floor(Date.now()/1e3),a=(Math.floor(o/Mb)-(z8e-1))*Mb;return ti}async function Xs(n,t){return qA(n)?n:await t(n)??n}async function Lf(n,t,o,i){return t?qA(n)?n:await o(n)??n:qA(n)&&i?await i(n)??n:n}async function jU({authState:n,jid:t,baseContent:o=[],getLIDForPN:i}){try{let e=await Xs(t,i),A=(await n.keys.get("tctoken",[e]))?.[e],r=A?.token,s=A?.timestamp;if(!r?.length||s===void 0||gp(s)){if(r){let g=A?.senderTimestamp!==void 0?{token:Buffer.alloc(0),senderTimestamp:A.senderTimestamp}:null;await n.keys.set({tctoken:{[e]:g}})}return o.length>0?o:void 0}return o.push({tag:"tctoken",attrs:{t:String(s)},content:r}),o}catch{return o.length>0?o:void 0}}async function hE({result:n,fallbackJid:t,keys:o,getLIDForPN:i,onNewJidStored:e}){let a=le(n,"tokens");if(!a)return;let A=PA(a,"token");for(let r of A){if(r.attrs.type!=="trusted_contact"||!(r.content instanceof Uint8Array))continue;let s=uA(t||r.attrs.jid);if(!q8e(s))continue;let g=await Xs(s,i),I=(await o.get("tctoken",[g]))[g],d=I?.timestamp?Number(I.timestamp):0,B=r.attrs.t?Number(r.attrs.t):0;B&&(d>0&&d>B||(await o.set({tctoken:{[g]:{...I,token:Buffer.from(r.content),timestamp:r.attrs.t}}}),e?.(g)))}}var V8e=new Set([RA.CALL_MISSED_GROUP_VIDEO,RA.CALL_MISSED_GROUP_VOICE,RA.CALL_MISSED_VIDEO,RA.CALL_MISSED_VOICE]),W8e=new Set([RA.GROUP_PARTICIPANT_ADD]);async function Z8e(n,t,o,i){let e=t.lidMapping.getLIDForPN.bind(t.lidMapping),a=[];for(let g of n){let c=g.tcTokenTimestamp?Yr(g.tcTokenTimestamp):0;if(g.tcToken?.length&&c>0){let I=uA(g.id),d=await Xs(I,e);a.push({storageJid:d,token:Buffer.from(g.tcToken),ts:c,senderTs:g.tcTokenSenderTimestamp?Yr(g.tcTokenSenderTimestamp):void 0})}}if(!a.length)return;let A=a.map(g=>g.storageJid),r=await o.get("tctoken",A),s={};for(let g of a){let c=r[g.storageJid],I=c?.timestamp?Number(c.timestamp):0;I>0&&I>=g.ts||(s[g.storageJid]={...c,token:g.token,timestamp:String(g.ts),...g.senderTs!==void 0?{senderTimestamp:g.senderTs}:{}})}if(Object.keys(s).length){i?.debug({count:Object.keys(s).length},"storing tctokens from history sync");try{let g=await dE(o,Object.keys(s));await o.set({tctoken:{...s,...g}})}catch(g){i?.warn({err:g},"failed to store tctokens from history sync")}}}var Zne=(n,t,o)=>{mr(n.key.remoteJid)||Ia(n.key.remoteJid)?n.key.remoteJid=yr(fA(n.key?.remoteJid)?.user,mr(n.key.remoteJid)?"s.whatsapp.net":"lid"):n.key.remoteJid=uA(n.key.remoteJid),mr(n.key.participant)||Ia(n.key.participant)?n.key.participant=yr(fA(n.key.participant)?.user,mr(n.key.participant)?"s.whatsapp.net":"lid"):n.key.participant=uA(n.key.participant);let i=Ra(n.message);i?.reactionMessage&&e(i.reactionMessage.key),i?.pollUpdateMessage&&e(i.pollUpdateMessage.pollCreationMessageKey);function e(a){n.key.fromMe||(a.fromMe=a.fromMe?!1:Rt(a.participant||a.remoteJid,t)||Rt(a.participant||a.remoteJid,o),a.remoteJid=n.key.remoteJid,a.participant=a.participant||n.key.participant)}},qU=n=>{let t=Ra(n.message),o=!!Tf(t);return(!!t||V8e.has(n.messageStubType)||W8e.has(n.messageStubType))&&o&&!t?.protocolMessage&&!t?.reactionMessage&&!t?.pollUpdateMessage},zU=n=>!n.key.fromMe&&!n.messageStubType,X8e=({remoteJid:n,participant:t,fromMe:o})=>{if(!n)throw new JU.Boom("Cannot derive chat id: message key is missing remoteJid",{data:{remoteJid:n,participant:t,fromMe:o}});if(SB(n)&&!Lg(n)&&!o){if(!t)throw new JU.Boom("Cannot derive chat id: broadcast message key is missing participant",{data:{remoteJid:n,fromMe:o}});return t}return n};function $8e({encPayload:n,encIv:t},{eventCreatorJid:o,eventMsgId:i,eventEncKey:e,responderJid:a}){let A=Buffer.concat([I(i),I(o),I(a),I("Event Response"),new Uint8Array([1])]),r=Hn(e,new Uint8Array(32),"sha256"),s=Hn(A,r,"sha256"),g=I(`${i}\0${a}`),c=Gl(n,s,t,g);return oe.Message.EventResponseMessage.decode(c);function I(d){return Buffer.from(d)}}var eze=async(n,{shouldProcessHistoryMsg:t,placeholderResendCache:o,ev:i,creds:e,signalRepository:a,keyStore:A,logger:r,options:s,getMessage:g})=>{let c=e.me.id,{accountSettings:I}=e,d={id:uA(X8e(n.key))},B=qU(n);B&&(d.messages=[{message:n}],d.conversationTimestamp=Yr(n.messageTimestamp),zU(n)&&(d.unreadCount=(d.unreadCount||0)+1));let f=Ra(n.message);(B||f?.reactionMessage?.key?.fromMe)&&I?.unarchiveChats&&(d.archived=!1,d.readOnly=!1);let Q=f?.protocolMessage;if(Q){let y=new Set([oe.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION,oe.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE,oe.Message.ProtocolMessage.Type.LID_MIGRATION_MAPPING_SYNC,oe.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE]);if(Q.type!==null&&Q.type!==void 0&&y.has(Q.type)&&!n.key.fromMe){r?.warn({msgId:n.key.id,type:Q.type,from:n.key.participant||n.key.remoteJid},"dropping spoofed self-only protocolMessage from non-self origin");return}switch(Q.type){case oe.Message.ProtocolMessage.Type.HISTORY_SYNC_NOTIFICATION:let m=Q.historySyncNotification,_=t,T=!e.processedHistoryMessages?.length;if(r?.info({histNotification:m,process:_,id:n.key.id,isLatest:T},"got history notification"),_){m.syncType!==oe.HistorySync.HistorySyncType.ON_DEMAND&&i.emit("creds.update",{processedHistoryMessages:[...e.processedHistoryMessages||[],{key:n.key,messageTimestamp:n.messageTimestamp}]});let G=await fne(m,s,r);G.lidPnMappings?.length&&(r?.debug({count:G.lidPnMappings.length},"processing LID-PN mappings from history sync"),await a.lidMapping.storeLIDPNMappings(G.lidPnMappings).catch(V=>r?.warn({err:V},"failed to store LID-PN mappings from history sync"))),await Z8e(G.chats,a,A,r),i.emit("messaging-history.set",{...G,isLatest:m.syncType!==oe.HistorySync.HistorySyncType.ON_DEMAND?T:void 0,chunkOrder:m.chunkOrder,peerDataRequestSessionId:m.peerDataRequestSessionId})}break;case oe.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE:let R=Q.appStateSyncKeyShare.keys;if(R?.length){let G="";await A.transaction(async()=>{let V=[];for(let{keyData:F,keyId:N}of R){let k=Buffer.from(N.keyId).toString("base64");V.push(k),await A.set({"app-state-sync-key":{[k]:F}}),G=k}r?.info({newAppStateSyncKeyId:G,newKeys:V},"injecting new app state sync keys")},c),i.emit("creds.update",{myAppStateKeyId:G})}else r?.info({protocolMsg:Q},"recv app state sync with 0 keys");break;case oe.Message.ProtocolMessage.Type.REVOKE:i.emit("messages.update",[{key:{...n.key,id:Q.key.id},update:{message:null,messageStubType:RA.REVOKE,key:n.key}}]);break;case oe.Message.ProtocolMessage.Type.EPHEMERAL_SETTING:Object.assign(d,{ephemeralSettingTimestamp:Yr(n.messageTimestamp),ephemeralExpiration:Q.ephemeralExpiration||null});break;case oe.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE:let K=Q.peerDataOperationRequestResponseMessage;if(K){let G=K.peerDataOperationResult||[];for(let V of G){let F=V?.placeholderMessageResendResponse;if(F?.webMessageInfoBytes)try{let N=oe.WebMessageInfo.decode(F.webMessageInfoBytes),k=N.key?.id,J=k?await o?.get(k):void 0;k&&await o?.del(k);let $;J&&typeof J=="object"?(J.message=N.message,N.messageTimestamp&&(J.messageTimestamp=N.messageTimestamp),$=J):$=N,r?.debug({msgId:k,requestId:K.stanzaId},"received placeholder resend"),i.emit("messages.upsert",{messages:[$],type:"notify",requestId:K.stanzaId})}catch(N){r?.warn({err:N,stanzaId:K.stanzaId},"failed to decode placeholder resend response")}}}break;case oe.Message.ProtocolMessage.Type.MESSAGE_EDIT:i.emit("messages.update",[{key:{...n.key,id:Q.key?.id},update:{message:{editedMessage:{message:Q.editedMessage}},messageTimestamp:Q.timestampMs?Math.floor(Yr(Q.timestampMs)/1e3):n.messageTimestamp}}]);break;case oe.Message.ProtocolMessage.Type.GROUP_MEMBER_LABEL_CHANGE:let L=Q.memberLabel;L?.label&&i.emit("group.member-tag.update",{groupId:d.id,label:L.label,participant:n.key.participant,participantAlt:n.key.participantAlt,messageTimestamp:Number(n.messageTimestamp)});break;case oe.Message.ProtocolMessage.Type.LID_MIGRATION_MAPPING_SYNC:let U=Q.lidMigrationMappingSyncMessage?.encodedMappingPayload,{pnToLidMappings:z,chatDbMigrationTimestamp:q}=oe.LIDMigrationMappingSyncPayload.decode(U);r?.debug({pnToLidMappings:z,chatDbMigrationTimestamp:q},"got lid mappings and chat db migration timestamp");let x=[];for(let{pn:G,latestLid:V,assignedLid:F}of z){let N=V||F;x.push({lid:`${N}@lid`,pn:`${G}@s.whatsapp.net`})}if(await a.lidMapping.storeLIDPNMappings(x),x.length)for(let{pn:G,lid:V}of x)await a.migrateSession(G,V)}}else if(f?.reactionMessage){let y={...f.reactionMessage,key:n.key};i.emit("messages.reaction",[{reaction:y,key:f.reactionMessage?.key}])}else if(f?.encEventResponseMessage){let y=f.encEventResponseMessage,m=y.eventCreationMessageKey,_=await g(m);if(_)try{let T=uA(c),R=m.participant||m.remoteJid,K=qA(R)?await a.lidMapping.getPNForLID(R):R,L=Bh({remoteJid:uA(K),fromMe:T===K},T),U=Bh(n.key,T),z=_?.messageContextInfo?.messageSecret;if(!z)r?.warn({creationMsgKey:m},"event response: missing messageSecret for decryption");else{let q=$8e(y,{eventEncKey:z,eventCreatorJid:L,eventMsgId:m.id,responderJid:U}),x={eventResponseMessageKey:n.key,senderTimestampMs:q.timestampMs,response:q};i.emit("messages.update",[{key:m,update:{eventResponses:[x]}}])}}catch(T){r?.warn({err:T,creationMsgKey:m},"failed to decrypt event response")}else r?.warn({creationMsgKey:m},"event creation message not found, cannot decrypt response")}else if(n.messageStubType){let y=n.key?.remoteJid,m,_=L=>i.emit("group-participants.update",{id:y,author:n.key.participant,authorPn:n.key.participantAlt,authorUsername:n.key.participantUsername,participants:m,action:L}),T=L=>{i.emit("groups.update",[{id:y,...L,author:n.key.participant??void 0,authorPn:n.key.participantAlt,authorUsername:n.key.participantUsername}])},R=(L,U,z)=>{i.emit("group.join-request",{id:y,author:n.key.participant,authorPn:n.key.participantAlt,authorUsername:n.key.participantUsername,participant:L.lid,participantPn:L.pn,action:U,method:z})},K=()=>m.find(L=>Rt(c,L.phoneNumber));switch(n.messageStubType){case RA.GROUP_PARTICIPANT_CHANGE_NUMBER:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("modify");break;case RA.GROUP_PARTICIPANT_LEAVE:case RA.GROUP_PARTICIPANT_REMOVE:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("remove"),K()&&(d.readOnly=!0);break;case RA.GROUP_PARTICIPANT_ADD:case RA.GROUP_PARTICIPANT_INVITE:case RA.GROUP_PARTICIPANT_ADD_REQUEST_JOIN:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],K()&&(d.readOnly=!1),_("add");break;case RA.GROUP_PARTICIPANT_DEMOTE:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("demote");break;case RA.GROUP_PARTICIPANT_PROMOTE:m=n.messageStubParameters.map(J=>JSON.parse(J))||[],_("promote");break;case RA.GROUP_CHANGE_ANNOUNCE:let L=n.messageStubParameters?.[0];T({announce:L==="true"||L==="on"});break;case RA.GROUP_CHANGE_RESTRICT:let U=n.messageStubParameters?.[0];T({restrict:U==="true"||U==="on"});break;case RA.GROUP_CHANGE_SUBJECT:let z=n.messageStubParameters?.[0];d.name=z,T({subject:z});break;case RA.GROUP_CHANGE_DESCRIPTION:let q=n.messageStubParameters?.[0];d.description=q,T({desc:q});break;case RA.GROUP_CHANGE_INVITE_LINK:let x=n.messageStubParameters?.[0];T({inviteCode:x});break;case RA.GROUP_MEMBER_ADD_MODE:let G=n.messageStubParameters?.[0];T({memberAddMode:G==="all_member_add"});break;case RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE:let V=n.messageStubParameters?.[0];T({joinApprovalMode:V==="on"});break;case RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD:let F=JSON.parse(n.messageStubParameters?.[0]),N=n.messageStubParameters?.[1],k=n.messageStubParameters?.[2];R(F,N,k);break}}Object.keys(d).length>1&&i.emit("chats.update",[d])},Xne=eze;var tze=["messaging-history.set","chats.upsert","chats.update","chats.delete","contacts.upsert","contacts.update","messages.upsert","messages.update","messages.delete","messages.reaction","message-receipt.update","groups.update"],rze=new Set(tze),$ne=n=>{let t=new Aze,o=new Set,i=VU(),e=!1,a=null,A=null,r=0,s=1e4,g=3e4;t.on("event",d=>{for(let B in d)t.emit(B,d[B])});function c(){e||(n.debug("Event buffer activated"),e=!0,r=0,a&&clearTimeout(a),a=setTimeout(()=>{e&&(n.warn("Buffer timeout reached, auto-flushing"),I())},g)),r++}function I(){if(!e)return!1;n.debug({bufferCount:r},"Flushing event buffer"),e=!1,r=0,a&&(clearTimeout(a),a=null),A&&(clearTimeout(A),A=null),o.size>s&&(n.debug({cacheSize:o.size},"Clearing history cache"),o.clear());let d=VU(),B=Object.values(i.chatUpdates),f=0;for(let y of B)y.conditional&&(f+=1,d.chatUpdates[y.id]=y,delete i.chatUpdates[y.id]);let Q=ize(i);return Object.keys(Q).length&&t.emit("event",Q),i=d,n.trace({conditionalChatUpdatesLeft:f},"released buffered events"),!0}return{process(d){let B=async f=>{await d(f)};return t.on("event",B),()=>{t.off("event",B)}},emit(d,B){if(d==="messages.upsert"){let{type:f}=B,Q=Object.values(i.messageUpserts);if(Q.length>0){let y=Q[0].type;y!==f&&(n.debug({bufferedType:y,newType:f},"messages.upsert type mismatch, emitting buffered messages"),t.emit("event",{"messages.upsert":{messages:Q.map(m=>m.message),type:y}}),i.messageUpserts={})}}return e&&rze.has(d)?(aze(i,o,d,B,n),!0):t.emit("event",{[d]:B})},isBuffering(){return e},buffer:c,flush:I,createBufferedFunction(d){return async(...B)=>{c();try{let f=await d(...B);return r===1&&setTimeout(()=>{e&&r===1&&I()},100),f}catch(f){throw f}finally{r=Math.max(0,r-1),r===0&&(A||(A=setTimeout(I,100)))}}},on:(...d)=>t.on(...d),off:(...d)=>t.off(...d),removeAllListeners:(...d)=>t.removeAllListeners(...d),destroy(){a&&(clearTimeout(a),a=null),A&&(clearTimeout(A),A=null),o.clear(),i=VU(),e=!1,r=0,t.removeAllListeners(),n.debug("Event buffer destroyed")}}},VU=()=>({historySets:{chats:{},messages:{},contacts:{},isLatest:!1,empty:!0},chatUpserts:{},chatUpdates:{},chatDeletes:new Set,contactUpserts:{},contactUpdates:{},messageUpserts:{},messageUpdates:{},messageReactions:{},messageDeletes:{},messageReceipts:{},groupUpdates:{}});function aze(n,t,o,i,e){switch(o){case"messaging-history.set":for(let Q of i.chats){let y=Q.id||"",m=n.historySets.chats[y];m&&(m.endOfHistoryTransferType=Q.endOfHistoryTransferType),!m&&!t.has(y)&&(n.historySets.chats[y]=Q,t.add(y),a(Q))}for(let Q of i.contacts){let y=n.historySets.contacts[Q.id];if(y)Object.assign(y,CD(Q));else{let m=`c:${Q.id}`,_=Q.notify||Q.name||Q.verifiedName;(!t.has(m)||_)&&(n.historySets.contacts[Q.id]=Q,t.add(m))}}for(let Q of i.messages){let y=EE(Q.key);!n.historySets.messages[y]&&!t.has(y)&&(n.historySets.messages[y]=Q,t.add(y))}if(n.historySets.empty=!1,n.historySets.syncType=i.syncType,i.pastParticipants?.length){let Q=new Map,y=_=>`${_.userJid||""}:${_.leaveTs||""}:${_.leaveReason||""}`,m=_=>{let T=_.groupJid??JSON.stringify(_),R=Q.get(T);if(!R){Q.set(T,{..._,pastParticipants:[..._.pastParticipants||[]]});return}let K=new Set((R.pastParticipants||[]).map(y));for(let L of _.pastParticipants||[]){let U=y(L);K.has(U)||(R.pastParticipants.push(L),K.add(U))}};for(let _ of n.historySets.pastParticipants||[])m(_);for(let _ of i.pastParticipants)m(_);n.historySets.pastParticipants=[...Q.values()]}n.historySets.progress=i.progress,n.historySets.chunkOrder=i.chunkOrder,n.historySets.peerDataRequestSessionId=i.peerDataRequestSessionId,n.historySets.isLatest=i.isLatest||n.historySets.isLatest;break;case"chats.upsert":for(let Q of i){let y=Q.id||"",m=n.chatUpserts[y];y&&!m&&(m=n.historySets.chats[y],m&&e.debug({chatId:y},"absorbed chat upsert in chat set")),m?m=Tb(m,Q):(m=Q,n.chatUpserts[y]=m),a(m),n.chatDeletes.has(y)&&n.chatDeletes.delete(y)}break;case"chats.update":for(let Q of i){let y=Q.id,m=Q.conditional?Q.conditional(n):!0;if(m){delete Q.conditional;let _=n.historySets.chats[y]||n.chatUpserts[y];if(_)Tb(_,Q);else{let T=n.chatUpdates[y]||{};n.chatUpdates[y]=Tb(T,Q)}}else m===void 0&&(n.chatUpdates[y]=Q);n.chatDeletes.has(y)&&n.chatDeletes.delete(y)}break;case"chats.delete":for(let Q of i)n.chatDeletes.has(Q)||n.chatDeletes.add(Q),n.chatUpdates[Q]&&delete n.chatUpdates[Q],n.chatUpserts[Q]&&delete n.chatUpserts[Q],n.historySets.chats[Q]&&delete n.historySets.chats[Q];break;case"contacts.upsert":for(let Q of i){let y=n.contactUpserts[Q.id];y||(y=n.historySets.contacts[Q.id],y&&e.debug({contactId:Q.id},"absorbed contact upsert in contact set")),y?y=Object.assign(y,CD(Q)):(y=Q,n.contactUpserts[Q.id]=y),n.contactUpdates[Q.id]&&(y=Object.assign(n.contactUpdates[Q.id],CD(Q)),delete n.contactUpdates[Q.id])}break;case"contacts.update":let r=i;for(let Q of r){let y=Q.id,m=n.historySets.contacts[y]||n.contactUpserts[y];if(m)Object.assign(m,Q);else{let _=n.contactUpdates[y]||{};n.contactUpdates[y]=Object.assign(_,Q)}}break;case"messages.upsert":let{messages:s,type:g}=i;for(let Q of s){let y=EE(Q.key),m=n.messageUpserts[y]?.message;m||(m=n.historySets.messages[y],m&&e.debug({messageId:y},"absorbed message upsert in message set")),m&&(Q.messageTimestamp=m.messageTimestamp),n.messageUpdates[y]&&(e.debug("absorbed prior message update in message upsert"),Object.assign(Q,n.messageUpdates[y].update),delete n.messageUpdates[y]),n.historySets.messages[y]?n.historySets.messages[y]=Q:n.messageUpserts[y]={message:Q,type:g==="notify"||n.messageUpserts[y]?.type==="notify"?"notify":g}}break;case"messages.update":let c=i;for(let{key:Q,update:y}of c){let m=EE(Q),_=n.historySets.messages[m]||n.messageUpserts[m]?.message;if(_)Object.assign(_,y),y.status===lh.READ&&!Q.fromMe&&A(_);else{let T=n.messageUpdates[m]||{key:Q,update:{}};Object.assign(T.update,y),n.messageUpdates[m]=T}}break;case"messages.delete":let I=i;if("keys"in I){let{keys:Q}=I;for(let y of Q){let m=EE(y);n.messageDeletes[m]||(n.messageDeletes[m]=y),n.messageUpserts[m]&&delete n.messageUpserts[m],n.messageUpdates[m]&&delete n.messageUpdates[m]}}break;case"messages.reaction":let d=i;for(let{key:Q,reaction:y}of d){let m=EE(Q),_=n.messageUpserts[m];_?CU(_.message,y):(n.messageReactions[m]=n.messageReactions[m]||{key:Q,reactions:[]},CU(n.messageReactions[m],y))}break;case"message-receipt.update":let B=i;for(let{key:Q,receipt:y}of B){let m=EE(Q),_=n.messageUpserts[m];_?EU(_.message,y):(n.messageReceipts[m]=n.messageReceipts[m]||{key:Q,userReceipt:[]},EU(n.messageReceipts[m],y))}break;case"groups.update":let f=i;for(let Q of f){let y=Q.id,m=n.groupUpdates[y]||{};n.groupUpdates[y]||(n.groupUpdates[y]=Object.assign(m,Q))}break;default:throw new Error(`"${o}" cannot be buffered`)}function a(r){let s=r.id||"",g=n.chatUpdates[s];if(g){let c=g.conditional?g.conditional(n):!0;c?(delete g.conditional,e.debug({chatId:s},"absorbed chat update in existing chat"),Object.assign(r,Tb(g,r)),delete n.chatUpdates[s]):c===!1&&(e.debug({chatId:s},"chat update condition fail, removing"),delete n.chatUpdates[s])}}function A(r){let s=r.key.remoteJid,g=n.chatUpdates[s]||n.chatUpserts[s];qU(r)&&zU(r)&&typeof g?.unreadCount=="number"&&g.unreadCount>0&&(e.debug({chatId:g.id},"decrementing chat counter"),g.unreadCount-=1,g.unreadCount===0&&delete g.unreadCount)}}function ize(n){let t={};n.historySets.empty||(t["messaging-history.set"]={chats:Object.values(n.historySets.chats),messages:Object.values(n.historySets.messages),contacts:Object.values(n.historySets.contacts),pastParticipants:n.historySets.pastParticipants,syncType:n.historySets.syncType,progress:n.historySets.progress,isLatest:n.historySets.isLatest,chunkOrder:n.historySets.chunkOrder,peerDataRequestSessionId:n.historySets.peerDataRequestSessionId});let o=Object.values(n.chatUpserts);o.length&&(t["chats.upsert"]=o);let i=Object.values(n.chatUpdates);i.length&&(t["chats.update"]=i);let e=Array.from(n.chatDeletes);e.length&&(t["chats.delete"]=e);let a=Object.values(n.messageUpserts);if(a.length){let B=a[0].type;t["messages.upsert"]={messages:a.map(f=>f.message),type:B}}let A=Object.values(n.messageUpdates);A.length&&(t["messages.update"]=A);let r=Object.values(n.messageDeletes);r.length&&(t["messages.delete"]={keys:r});let s=Object.values(n.messageReactions).flatMap(({key:B,reactions:f})=>f.flatMap(Q=>({key:B,reaction:Q})));s.length&&(t["messages.reaction"]=s);let g=Object.values(n.messageReceipts).flatMap(({key:B,userReceipt:f})=>f.flatMap(Q=>({key:B,receipt:Q})));g.length&&(t["message-receipt.update"]=g);let c=Object.values(n.contactUpserts);c.length&&(t["contacts.upsert"]=c);let I=Object.values(n.contactUpdates);I.length&&(t["contacts.update"]=I);let d=Object.values(n.groupUpdates);return d.length&&(t["groups.update"]=d),t}function Tb(n,t){return t.unreadCount===null&&n.unreadCount<0&&(n.unreadCount=void 0,t.unreadCount=void 0),typeof n.unreadCount=="number"&&typeof t.unreadCount=="number"&&(t={...t},t.unreadCount>=0&&(t.unreadCount=Math.max(t.unreadCount,0)+Math.max(n.unreadCount,0))),Object.assign(n,t)}var EE=n=>`${n.remoteJid},${n.id},${n.fromMe?"1":"0"}`;var oze=512,WU="\0",ese=3600*1e3,nze=3e3,Ac;(function(n){n[n.UnknownError=0]="UnknownError",n[n.SignalErrorNoSession=1]="SignalErrorNoSession",n[n.SignalErrorInvalidKey=2]="SignalErrorInvalidKey",n[n.SignalErrorInvalidKeyId=3]="SignalErrorInvalidKeyId",n[n.SignalErrorInvalidMessage=4]="SignalErrorInvalidMessage",n[n.SignalErrorInvalidSignature=5]="SignalErrorInvalidSignature",n[n.SignalErrorFutureMessage=6]="SignalErrorFutureMessage",n[n.SignalErrorBadMac=7]="SignalErrorBadMac",n[n.SignalErrorInvalidSession=8]="SignalErrorInvalidSession",n[n.SignalErrorInvalidMsgKey=9]="SignalErrorInvalidMsgKey",n[n.BadBroadcastEphemeralSetting=10]="BadBroadcastEphemeralSetting",n[n.UnknownCompanionNoPrekey=11]="UnknownCompanionNoPrekey",n[n.AdvFailure=12]="AdvFailure",n[n.StatusRevokeDelay=13]="StatusRevokeDelay"})(Ac||(Ac={}));var Ase=new Set([Ac.SignalErrorInvalidMessage,Ac.SignalErrorBadMac]),Nb=class{constructor(t,o){this.logger=t,this.recentMessagesMap=new Gg({max:oze,ttl:300*1e3,ttlAutopurge:!0,dispose:(i,e)=>{let a=e.lastIndexOf(WU);if(a>-1){let A=e.slice(a+WU.length);this.messageKeyIndex.delete(A)}}}),this.messageKeyIndex=new Map,this.sessionRecreateHistory=new Gg({ttl:ese*2,ttlAutopurge:!0}),this.retryCounters=new Gg({ttl:900*1e3,ttlAutopurge:!0,updateAgeOnGet:!0}),this.baseKeys=new Gg({max:1024,ttl:900*1e3,ttlAutopurge:!0}),this.pendingPhoneRequests={},this.maxMsgRetryCount=5,this.statistics={totalRetries:0,successfulRetries:0,failedRetries:0,mediaRetries:0,sessionRecreations:0,phoneRequests:0},this.maxMsgRetryCount=o}addRecentMessage(t,o,i){let e={to:t,id:o},a=this.keyToString(e);this.recentMessagesMap.set(a,{message:i,timestamp:Date.now()}),this.messageKeyIndex.set(o,a),this.logger.debug(`Added message to retry cache: ${t}/${o}`)}getRecentMessage(t,o){let i={to:t,id:o},e=this.keyToString(i);return this.recentMessagesMap.get(e)}shouldRecreateSession(t,o,i){if(!o)return this.sessionRecreateHistory.set(t,Date.now()),this.statistics.sessionRecreations++,{reason:"we don't have a Signal session with them",recreate:!0};if(i!==void 0&&Ase.has(i))return this.sessionRecreateHistory.set(t,Date.now()),this.statistics.sessionRecreations++,this.logger.warn({jid:t,errorCode:Ac[i]},"MAC error detected, forcing immediate session recreation"),{reason:`MAC error (code ${i}: ${Ac[i]}), immediate session recreation`,recreate:!0};let e=Date.now(),a=this.sessionRecreateHistory.get(t);return!a||e-a>ese?(this.sessionRecreateHistory.set(t,e),this.statistics.sessionRecreations++,{reason:"retry count > 1 and over an hour since last recreation",recreate:!0}):{reason:"",recreate:!1}}parseRetryErrorCode(t){if(t===void 0||t==="")return;let o=parseInt(t,10);if(!Number.isNaN(o))return o>=Ac.UnknownError&&o<=Ac.StatusRevokeDelay?o:Ac.UnknownError}isMacError(t){return t!==void 0&&Ase.has(t)}incrementRetryCount(t){return this.retryCounters.set(t,(this.retryCounters.get(t)||0)+1),this.statistics.totalRetries++,this.retryCounters.get(t)}getRetryCount(t){return this.retryCounters.get(t)||0}hasExceededMaxRetries(t){return this.getRetryCount(t)>=this.maxMsgRetryCount}markRetrySuccess(t){this.statistics.successfulRetries++,this.retryCounters.delete(t),this.cancelPendingPhoneRequest(t),this.removeRecentMessage(t)}markRetryFailed(t){this.statistics.failedRetries++,this.retryCounters.delete(t),this.cancelPendingPhoneRequest(t),this.removeRecentMessage(t)}schedulePhoneRequest(t,o,i=nze){this.cancelPendingPhoneRequest(t),this.pendingPhoneRequests[t]=setTimeout(()=>{delete this.pendingPhoneRequests[t],this.statistics.phoneRequests++,o()},i),this.logger.debug(`Scheduled phone request for message ${t} with ${i}ms delay`)}cancelPendingPhoneRequest(t){let o=this.pendingPhoneRequests[t];o&&(clearTimeout(o),delete this.pendingPhoneRequests[t],this.logger.debug(`Cancelled pending phone request for message ${t}`))}clear(){this.recentMessagesMap.clear(),this.messageKeyIndex.clear(),this.sessionRecreateHistory.clear(),this.retryCounters.clear(),this.baseKeys.clear();for(let t of Object.keys(this.pendingPhoneRequests))this.cancelPendingPhoneRequest(t);this.statistics={totalRetries:0,successfulRetries:0,failedRetries:0,mediaRetries:0,sessionRecreations:0,phoneRequests:0}}saveBaseKey(t,o,i){this.baseKeys.set(`${t}:${o}`,i)}hasSameBaseKey(t,o,i){let e=this.baseKeys.get(`${t}:${o}`);if(!e||e.length!==i.length)return!1;for(let a=0;a["Ubuntu",n,"22.04.4"],macOS:n=>["Mac OS",n,"14.4.1"],baileys:n=>["Baileys",n,"6.5.0"],windows:n=>["Windows",n,"10.0.22631"],android:n=>[n,"Android",""],appropriate:n=>[cze[sze()]||"Ubuntu",n,gze()]};var Yn;(function(n){n[n.UNKNOWN=0]="UNKNOWN",n[n.CHROME=1]="CHROME",n[n.EDGE=2]="EDGE",n[n.FIREFOX=3]="FIREFOX",n[n.IE=4]="IE",n[n.OPERA=5]="OPERA",n[n.SAFARI=6]="SAFARI",n[n.ELECTRON=7]="ELECTRON",n[n.UWP=8]="UWP",n[n.OTHER_WEB_CLIENT=9]="OTHER_WEB_CLIENT"})(Yn||(Yn={}));var Ize={Chrome:Yn.CHROME,Edge:Yn.EDGE,Firefox:Yn.FIREFOX,IE:Yn.IE,Opera:Yn.OPERA,Safari:Yn.SAFARI},lze=([n,t])=>t==="Desktop"?n==="Windows"?Yn.UWP:Yn.ELECTRON:Ize[t]||Yn.OTHER_WEB_CLIENT,ZU=n=>lze(n).toString(),tse=(n,t,o,i,e)=>"https://wa.me/settings/linked_devices#"+[n,t,o,i,ZU(e)].join(",");async function rse(n,t){let o=n.attrs.from;if(!o)return{action:"invalid_notification"};if(!le(n,"identity"))return{action:"no_identity_node"};t.logger.info({jid:o},"identity changed");let e=fA(o);if(e?.device&&e.device!==0)return t.logger.debug({jid:o,device:e.device},"ignoring identity change from companion device"),{action:"skipped_companion_device",device:e.device};if(t.meId&&(Rt(o,t.meId)||t.meLid&&Rt(o,t.meLid)))return t.logger.info({jid:o},"self primary identity changed"),{action:"skipped_self_primary"};if(t.debounceCache.get(o))return t.logger.debug({jid:o},"skipping identity assert (debounced)"),{action:"debounced"};t.debounceCache.set(o,!0);let A=!K7(n.attrs.offline);if(!(await t.validateSession(o)).exists)return t.logger.debug({jid:o},"no old session, skipping session refresh"),{action:"skipped_no_session"};if(t.logger.debug({jid:o},"old session exists, will refresh session"),A)return t.logger.debug({jid:o},"skipping session refresh during offline processing"),{action:"skipped_offline"};t.onBeforeSessionRefresh?.(o);try{return await t.assertSessions([o],!0),{action:"session_refreshed"}}catch(s){return t.logger.warn({error:s,jid:o},"failed to assert sessions after identity change"),{action:"session_refresh_failed",error:s}}}function ase(n,t,o){let{tag:i,attrs:e}=n,a={tag:"ack",attrs:{id:e.id,to:e.from,class:i}};return t&&(a.attrs.error=t.toString()),e.participant&&(a.attrs.participant=e.participant),e.recipient&&(a.attrs.recipient=e.recipient),e.type&&(a.attrs.type=e.type),i==="message"&&o&&(a.attrs.from=o),a}function pze(n){return n===null||n===""}function dze(n){return n>2147483647||n<-2147483648?n&4294967295:n}function ise(n){let t=0;if(!pze(n))for(let o=0;oo.iteration===t)}addSenderMessageKey(t){this.senderKeyStateStructure.senderMessageKeys.push({iteration:t.getIteration(),seed:t.getSeed()}),this.senderKeyStateStructure.senderMessageKeys.length>this.MAX_MESSAGE_KEYS&&this.senderKeyStateStructure.senderMessageKeys.shift()}removeSenderMessageKey(t){let o=this.senderKeyStateStructure.senderMessageKeys.findIndex(i=>i.iteration===t);if(o!==-1){let i=this.senderKeyStateStructure.senderMessageKeys[o];return this.senderKeyStateStructure.senderMessageKeys.splice(o,1),new cp(i.iteration,i.seed)}return null}getStructure(){return this.senderKeyStateStructure}};var tc=class n{constructor(t){if(this.MAX_STATES=5,this.senderKeyStates=[],t)for(let o of t)this.senderKeyStates.push(new Ip(null,null,null,null,null,null,o))}isEmpty(){return this.senderKeyStates.length===0}getSenderKeyState(t){return t===void 0&&this.senderKeyStates.length?this.senderKeyStates[this.senderKeyStates.length-1]:this.senderKeyStates.find(o=>o.getKeyId()===t)}addSenderKeyState(t,o,i,e){this.senderKeyStates.push(new Ip(t,o,i,null,e)),this.senderKeyStates.length>this.MAX_STATES&&this.senderKeyStates.shift()}setSenderKeyState(t,o,i,e){this.senderKeyStates.length=0,this.senderKeyStates.push(new Ip(t,o,i,e))}serialize(){return this.senderKeyStates.map(t=>t.getStructure())}static deserialize(t){let o=Buffer.from(t).toString("utf-8"),i=JSON.parse(o,RB.reviver);return new n(i)}};var sse=qe(xc(),1);import*as kb from"crypto";function gse(){return kb.randomBytes(32)}function cse(){return kb.randomInt(2147483647)}function Ise(n){return n||(n=(0,sse.generateKeyPair)()),{public:Buffer.from(n.pubKey),private:Buffer.from(n.privKey)}}var lp=class{constructor(){this.UNSUPPORTED_VERSION=1,this.CURRENT_VERSION=3,this.WHISPER_TYPE=2,this.PREKEY_TYPE=3,this.SENDERKEY_TYPE=4,this.SENDERKEY_DISTRIBUTION_TYPE=5,this.ENCRYPTED_MESSAGE_OVERHEAD=53}};var pp=class extends lp{constructor(t,o,i,e,a){if(super(),a)try{let A=a.slice(1),r=oe.SenderKeyDistributionMessage.decode(A).toJSON();this.serialized=a,this.id=r.id,this.iteration=r.iteration,this.chainKey=typeof r.chainKey=="string"?Buffer.from(r.chainKey,"base64"):r.chainKey,this.signatureKey=typeof r.signingKey=="string"?Buffer.from(r.signingKey,"base64"):r.signingKey}catch(A){throw new Error(String(A))}else{let A=this.intsToByteHighAndLow(this.CURRENT_VERSION,this.CURRENT_VERSION);this.id=t,this.iteration=o,this.chainKey=i,this.signatureKey=e;let r=oe.SenderKeyDistributionMessage.encode(oe.SenderKeyDistributionMessage.create({id:t,iteration:o,chainKey:i,signingKey:this.signatureKey})).finish();this.serialized=Buffer.concat([Buffer.from([A]),r])}}intsToByteHighAndLow(t,o){return((t<<4|o)&255)%256}serialize(){return this.serialized}getType(){return this.SENDERKEY_DISTRIBUTION_TYPE}getIteration(){return this.iteration}getChainKey(){return this.chainKey}getSignatureKey(){return this.signatureKey}getId(){return this.id}};var CE=class{constructor(t){this.senderKeyStore=t}async process(t,o){let i=await this.senderKeyStore.loadSenderKey(t);i.addSenderKeyState(o.getId(),o.getIteration(),o.getChainKey(),o.getSignatureKey()),await this.senderKeyStore.storeSenderKey(t,i)}async create(t){let o=await this.senderKeyStore.loadSenderKey(t);if(o.isEmpty()){let e=cse(),a=gse(),A=Ise();o.setSenderKeyState(e,0,a,A),await this.senderKeyStore.storeSenderKey(t,o)}let i=o.getSenderKeyState();if(!i)throw new Error("No session state available");return new pp(i.getKeyId(),i.getSenderChainKey().getIteration(),i.getSenderChainKey().getSeed(),i.getSigningKeyPublic())}};var Pb=qe(Nl(),1);var vb=qe(xc(),1);var uE=class extends lp{constructor(t,o,i,e,a){if(super(),this.SIGNATURE_LENGTH=64,a){let A=a[0],r=a.slice(1,a.length-this.SIGNATURE_LENGTH),s=a.slice(-1*this.SIGNATURE_LENGTH),g=oe.SenderKeyMessage.decode(r).toJSON();this.serialized=a,this.messageVersion=(A&255)>>4,this.keyId=g.id,this.iteration=g.iteration,this.ciphertext=typeof g.ciphertext=="string"?Buffer.from(g.ciphertext,"base64"):g.ciphertext,this.signature=s}else{let A=((this.CURRENT_VERSION<<4|this.CURRENT_VERSION)&255)%256,r=Buffer.from(i),s=oe.SenderKeyMessage.encode(oe.SenderKeyMessage.create({id:t,iteration:o,ciphertext:r})).finish(),g=this.getSignature(e,Buffer.concat([Buffer.from([A]),s]));this.serialized=Buffer.concat([Buffer.from([A]),s,Buffer.from(g)]),this.messageVersion=this.CURRENT_VERSION,this.keyId=t,this.iteration=o,this.ciphertext=r,this.signature=g}}getKeyId(){return this.keyId}getIteration(){return this.iteration}getCipherText(){return this.ciphertext}verifySignature(t){let o=this.serialized.slice(0,this.serialized.length-this.SIGNATURE_LENGTH),i=this.serialized.slice(-1*this.SIGNATURE_LENGTH);if(!(0,vb.verifySignature)(t,o,i))throw new Error("Invalid signature!")}getSignature(t,o){return Buffer.from((0,vb.calculateSignature)(t,o))}serialize(){return this.serialized}getType(){return 4}};var BE=class{constructor(t,o){this.senderKeyStore=t,this.senderKeyName=o}async encrypt(t){let o=await this.senderKeyStore.loadSenderKey(this.senderKeyName);if(!o)throw new Error("No SenderKeyRecord found for encryption");let i=o.getSenderKeyState();if(!i)throw new Error("No session to encrypt message");let e=i.getSenderChainKey().getIteration(),a=this.getSenderKey(i,e===0?0:e+1),A=await this.getCipherText(a.getIv(),a.getCipherKey(),t),r=new uE(i.getKeyId(),a.getIteration(),A,i.getSigningKeyPrivate());return await this.senderKeyStore.storeSenderKey(this.senderKeyName,o),r.serialize()}async decrypt(t){let o=await this.senderKeyStore.loadSenderKey(this.senderKeyName);if(!o)throw new Error("No SenderKeyRecord found for decryption");let i=new uE(null,null,null,null,t),e=o.getSenderKeyState(i.getKeyId());if(!e)throw new Error("No session found to decrypt message");i.verifySignature(e.getSigningKeyPublic());let a=this.getSenderKey(e,i.getIteration()),A=await this.getPlainText(a.getIv(),a.getCipherKey(),i.getCipherText());return await this.senderKeyStore.storeSenderKey(this.senderKeyName,o),A}getSenderKey(t,o){let i=t.getSenderChainKey();if(i.getIteration()>o){if(t.hasSenderMessageKey(o)){let e=t.removeSenderMessageKey(o);if(!e)throw new Error("No sender message key found for iteration");return e}throw new Error(`Received message with old counter: ${i.getIteration()}, ${o}`)}if(o-i.getIteration()>2e3)throw new Error("Over 2000 messages into the future!");for(;i.getIteration()0){let r=[...i];this.logger.trace(`Batch fetching ${r.length} LID mappings from database`);let s=await this.keys.get("lid-mapping",r);for(let g of r){let c=s[g];c&&(e.set(g,c),this.mappingCache.set(`pn:${g}`,c),this.mappingCache.set(`lid:${c}`,g))}}let a={};for(let{pnUser:r,lidUser:s}of o){if(e.get(r)===s){this.logger.debug({pnUser:r,lidUser:s},"LID mapping already exists, skipping");continue}a[r]=s}if(Object.keys(a).length===0)return;this.logger.trace({pairMap:a},`Storing ${Object.keys(a).length} pn mappings`);let A={};for(let[r,s]of Object.entries(a))A[r]=s,A[`${s}_reverse`]=r;await this.keys.transaction(async()=>{await this.keys.set({"lid-mapping":A})},"lid-mapping");for(let[r,s]of Object.entries(a))this.mappingCache.set(`pn:${r}`,s),this.mappingCache.set(`lid:${s}`,r)}async getLIDForPN(t){return(await this.getLIDsForPNs([t]))?.[0]?.lid||null}async getLIDsForPNs(t){if(t.length===0)return null;let o=[...new Set(t)].sort(),i=o.join(","),e=this.inflightLIDLookups.get(i);if(e)return this.logger.trace(`Coalescing getLIDsForPNs request for ${o.length} PNs`),e;let a=this._getLIDsForPNsImpl(t);this.inflightLIDLookups.set(i,a);try{return await a}finally{this.inflightLIDLookups.delete(i)}}async _getLIDsForPNsImpl(t){let o={},i={},e=[],a=(A,r,s)=>{let g=s.toString();if(!g)return this.logger.warn(`Invalid or empty LID user for PN ${A}: lidUser = "${s}"`),!1;let c=r.device!==void 0?r.device:0,I=`${g}${c?`:${c}`:""}@${r.server==="hosted"?"hosted.lid":"lid"}`;return this.logger.trace(`getLIDForPN: ${A} \u2192 ${I} (user mapping with device ${c})`),i[A]={lid:I,pn:A},!0};for(let A of t){if(!_t(A)&&!mr(A))continue;let r=fA(A);if(!r)continue;let s=r.user,g=this.mappingCache.get(`pn:${s}`);if(g&&typeof g=="string"){if(!a(A,r,g)){this.logger.warn(`Invalid entry for ${A} (pair not resolved)`);continue}continue}e.push({pn:A,pnUser:s,decoded:r})}if(e.length){let A=[...new Set(e.map(s=>s.pnUser))],r=await this.keys.get("lid-mapping",A);for(let s of A){let g=r[s];g&&typeof g=="string"&&(this.mappingCache.set(`pn:${s}`,g),this.mappingCache.set(`lid:${g}`,s))}for(let{pn:s,pnUser:g,decoded:c}of e){let I=this.mappingCache.get(`pn:${g}`);if(I&&typeof I=="string"){if(!a(s,c,I)){this.logger.warn(`Invalid entry for ${s} (pair not resolved)`);continue}}else{this.logger.trace(`No LID mapping found for PN user ${g}; batch getting from USync`);let d=c.device||0,B=uA(s);mr(B)&&(B=`${g}@s.whatsapp.net`),o[B]?o[B]?.push(d):o[B]=[d]}}}if(Object.keys(o).length>0){let A=await this.pnToLIDFunc?.(Object.keys(o));if(A&&A.length>0){await this.storeLIDPNMappings(A);for(let r of A){let g=fA(r.pn)?.user;if(!g)continue;let c=fA(r.lid)?.user;if(c)for(let I of o[r.pn]){let d=`${c}${I?`:${I}`:""}@${I===99?"hosted.lid":"lid"}`;this.logger.trace(`getLIDForPN: USYNC success for ${r.pn} \u2192 ${d} (user mapping with device ${I})`);let B=`${g}${I?`:${I}`:""}@${I===99?"hosted":"s.whatsapp.net"}`;i[B]={lid:d,pn:B}}}}else this.logger.warn("USync fetch yielded no results for pending PNs")}return Object.values(i).length>0?Object.values(i):null}async getPNForLID(t){return(await this.getPNsForLIDs([t]))?.[0]?.pn||null}async getPNsForLIDs(t){if(t.length===0)return null;let o=[...new Set(t)].sort(),i=o.join(","),e=this.inflightPNLookups.get(i);if(e)return this.logger.trace(`Coalescing getPNsForLIDs request for ${o.length} LIDs`),e;let a=this._getPNsForLIDsImpl(t);this.inflightPNLookups.set(i,a);try{return await a}finally{this.inflightPNLookups.delete(i)}}async _getPNsForLIDsImpl(t){let o={},i=[],e=(a,A,r)=>{if(!r||typeof r!="string")return!1;let s=A.device!==void 0?A.device:0,g=`${r}:${s}@${A.domainType===Jt.HOSTED_LID?"hosted":"s.whatsapp.net"}`;return this.logger.trace(`Found reverse mapping: ${a} \u2192 ${g}`),o[a]={lid:a,pn:g},!0};for(let a of t){if(!qA(a))continue;let A=fA(a);if(!A)continue;let r=A.user,s=this.mappingCache.get(`lid:${r}`);if(s&&typeof s=="string"){e(a,A,s);continue}i.push({lid:a,lidUser:r,decoded:A})}if(i.length){let a=[...new Set(i.map(r=>`${r.lidUser}_reverse`))],A=await this.keys.get("lid-mapping",a);for(let{lid:r,lidUser:s,decoded:g}of i){let c=this.mappingCache.get(`lid:${s}`);(!c||typeof c!="string")&&(c=A[`${s}_reverse`],c&&typeof c=="string"&&(this.mappingCache.set(`lid:${s}`,c),this.mappingCache.set(`pn:${c}`,s))),c&&typeof c=="string"?e(r,g,c):this.logger.trace(`No reverse mapping found for LID user: ${s}`)}}return Object.values(o).length?Object.values(o):null}close(){this.mappingCache.clear()}};function hze(n){try{if(!n||n.length<2||(n[0]&15)!==3)return;let o=pse.PreKeyWhisperMessage.decode(n.slice(1));return o.identityKey?.length===33?new Uint8Array(o.identityKey):void 0}catch{return}}function dse(n,t,o){let i=new Gb(n.keys,t,o),e=Eze(n,i),a=n.keys,A=new Gg({ttl:4320*60*1e3,ttlAutopurge:!0,updateAgeOnGet:!0}),r=async(g,c)=>{let I=Fb(g,c),d=I.toString(),{[d]:B}=await n.keys.get("sender-key",[d]);B||await e.storeSenderKey(I,new tc);let f=await new CE(e).create(I);return{senderName:I,skdm:f}};return{decryptGroupMessage({group:g,authorJid:c,msg:I}){let d=Fb(g,c),B=new BE(e,d);return a.transaction(async()=>B.decrypt(I),g)},async processSenderKeyDistributionMessage({item:g,authorJid:c}){let I=new CE(e);if(!g.groupId)throw new Error("Group ID is required for sender key distribution message");let d=Fb(g.groupId,c),B=new pp(null,null,null,null,g.axolotlSenderKeyDistributionMessage),f=d.toString(),{[f]:Q}=await n.keys.get("sender-key",[f]);return Q||await e.storeSenderKey(d,new tc),a.transaction(async()=>{let{[f]:y}=await n.keys.get("sender-key",[f]);y||await e.storeSenderKey(d,new tc),await I.process(d,B)},g.groupId)},async decryptMessage({jid:g,type:c,ciphertext:I}){let d=jn(g),B=new $s.SessionCipher(e,d);if(c==="pkmsg"){let Q=hze(I);if(Q){let y=d.toString();await e.saveIdentity(y,Q)&&t.info({jid:g,addr:y},"identity key changed or new contact, session will be re-established")}}async function f(){let Q;switch(c){case"pkmsg":Q=await B.decryptPreKeyWhisperMessage(I);break;case"msg":Q=await B.decryptWhisperMessage(I);break}return Q}return a.transaction(async()=>await f(),g)},async encryptMessage({jid:g,data:c}){let I=jn(g),d=new $s.SessionCipher(e,I);return a.transaction(async()=>{let{type:B,body:f}=await d.encrypt(c);return{type:B===3?"pkmsg":"msg",ciphertext:Buffer.from(f,"binary")}},g)},async encryptGroupMessage({group:g,meId:c,data:I}){return a.transaction(async()=>{let{senderName:d,skdm:B}=await r(g,c);return{ciphertext:await new BE(e,d).encrypt(I),senderKeyDistributionMessage:B.serialize()}},g)},async getSenderKeyDistributionMessage({group:g,meId:c}){return a.transaction(async()=>{let{skdm:I}=await r(g,c);return I.serialize()},g)},async hasSenderKey({group:g,meId:c}){let I=Fb(g,c).toString(),{[I]:d}=await n.keys.get("sender-key",[I]);return!!d},async getSessionInfo(g){let c=jn(g).toString(),I=await e.loadSession(c);if(!I)return null;let d=I.getOpenSession?.(),B=d?.indexInfo?.baseKey,f=d?.registrationId;return!B||typeof f!="number"?null:{baseKey:new Uint8Array(B),registrationId:f}},async injectE2ESession({jid:g,session:c}){t.trace({jid:g},"injecting E2EE session");let I=new $s.SessionBuilder(e,jn(g));return a.transaction(async()=>{await I.initOutgoing(c)},g)},jidToSignalProtocolAddress(g){return jn(g).toString()},lidMapping:i,async validateSession(g){try{let c=jn(g),I=await e.loadSession(c.toString());return I?I.haveOpenSession()?{exists:!0}:{exists:!1,reason:"no open session"}:{exists:!1,reason:"no session"}}catch{return{exists:!1,reason:"validation error"}}},async deleteSession(g){if(!g.length)return;let c={};return g.forEach(I=>{let d=jn(I);c[d.toString()]=null}),a.transaction(async()=>{await n.keys.set({session:c})},`delete-${g.length}-sessions`)},close(){A.clear(),i.close()},async migrateSession(g,c){if(!g||!qA(c)&&!Ia(c))return{migrated:0,skipped:0,total:0};if(!_t(g)&&!mr(g))return{migrated:0,skipped:0,total:1};let{user:I}=fA(g);t.debug({fromJid:g},"bulk device migration - loading all user devices");let{[I]:d}=await a.get("device-list",[I]);if(!d)return{migrated:0,skipped:0,total:0};let{device:B}=fA(g),f=B?.toString()||"0";d.includes(f)||d.push(f);let y=d.filter(T=>{let R=`${I}.${T}`;return!A.has(R)}).map(T=>`${I}.${T}`),m=await a.get("session",y),_=[];for(let[T,R]of Object.entries(m))if(R){let K=T.split(".")[1];if(!K)continue;let L=parseInt(K),U=L===0?`${I}@s.whatsapp.net`:`${I}:${L}@s.whatsapp.net`;L===99&&(U=`${I}:99@hosted`),_.push(U)}return t.debug({fromJid:g,totalDevices:d.length,devicesWithSessions:_.length,devices:_},"bulk device migration complete - all user devices processed"),a.transaction(async()=>{let T=_.map(x=>{let G=I7(x,c),V=fA(x),F=fA(G);return{fromJid:x,toJid:G,pnUser:V.user,lidUser:F.user,deviceId:V.device||0,fromAddr:jn(x),toAddr:jn(G)}}),R=T.length,K=0,L=Array.from(new Set(T.map(x=>x.fromAddr.toString()))),U=await a.get("session",L),z={};for(let x of T){let G=x.fromAddr.toString(),V=x.toAddr.toString(),F=U[G];if(F){let N=$s.SessionRecord.deserialize(F);N.haveOpenSession()&&(z[V]=N.serialize(),z[G]=null,K++)}}if(Object.keys(z).length>0){await a.set({session:z}),t.debug({migratedSessions:K},"bulk session migration complete");for(let x of T)if(z[x.toAddr.toString()]){let G=`${x.pnUser}.${x.deviceId}`;A.set(G,!0)}}let q=R-K;return{migrated:K,skipped:q,total:R}},`migrate-${_.length}-sessions-${fA(c)?.user}`)}}}var jn=n=>{let t=fA(n),{user:o,device:i,server:e,domainType:a}=t;if(!o)throw new Error(`JID decoded but user is empty: "${n}" -> user: "${o}", server: "${e}", device: ${i}`);let A=a!==Jt.WHATSAPP?`${o}_${a}`:o,r=i||0;if(i===99&&t.server!=="hosted"&&t.server!=="hosted.lid")throw new Error("Unexpected non-hosted device JID with device 99. This ID seems invalid. ID:"+n);return new $s.ProtocolAddress(A,r)},Fb=(n,t)=>new Uf(n,jn(t));function Eze({creds:n,keys:t},o){let i=async e=>{if(e.includes(".")){let[a,A]=e.split("."),[r,s]=a.split("_"),g=parseInt(s||"0");if(g===Jt.LID||g===Jt.HOSTED_LID)return e;let c=`${r}${A!=="0"?`:${A}`:""}@${g===Jt.HOSTED?"hosted":"s.whatsapp.net"}`,I=await o.getLIDForPN(c);if(I)return jn(I).toString()}return e};return{loadSession:async e=>{try{let a=await i(e),{[a]:A}=await t.get("session",[a]);if(A)return $s.SessionRecord.deserialize(A)}catch{return null}return null},storeSession:async(e,a)=>{let A=await i(e);await t.set({session:{[A]:a.serialize()}})},isTrustedIdentity:()=>!0,loadIdentityKey:async e=>{let a=await i(e),{[a]:A}=await t.get("identity-key",[a]);return A||void 0},saveIdentity:async(e,a)=>{let A=await i(e),{[A]:r}=await t.get("identity-key",[A]),s=r?.length===a.length&&r.every((g,c)=>g===a[c]);return r&&!s?(await t.set({session:{[A]:null},"identity-key":{[A]:a}}),!0):r?!1:(await t.set({"identity-key":{[A]:a}}),!0)},loadPreKey:async e=>{let a=e.toString(),{[a]:A}=await t.get("pre-key",[a]);if(A)return{privKey:Buffer.from(A.private),pubKey:Buffer.from(A.public)}},removePreKey:e=>t.set({"pre-key":{[e]:null}}),loadSignedPreKey:()=>{let e=n.signedPreKey;return{privKey:Buffer.from(e.keyPair.private),pubKey:Buffer.from(e.keyPair.public)}},loadSenderKey:async e=>{let a=e.toString(),{[a]:A}=await t.get("sender-key",[a]);return A?tc.deserialize(A):new tc},storeSenderKey:async(e,a)=>{let A=e.toString(),r=JSON.stringify(a.serialize());await t.set({"sender-key":{[A]:Buffer.from(r,"utf-8")}})},getOurRegistrationId:()=>n.registrationId,getOurIdentity:()=>{let{signedIdentityKey:e}=n;return{privKey:Buffer.from(e.private),pubKey:Buffer.from(Wo(e.public))}}}}var Ece=qe(hce(),1),Jf=(0,Ece.default)({timestamp:()=>`,"time":"${new Date().toJSON()}"`});var j5e=[2,3e3,1043857760];var Mf="https://web.whatsapp.com",$oe="https://call.whatsapp.com/video/",ene="https://call.whatsapp.com/voice/",SE="CB:",Cce="TAG:";var pne=Buffer.from([6,0]),dne=Buffer.from([6,1]),yU=Buffer.from([6,5]),DvA=Buffer.from([6,6]),Nf=10080*60,uce=1440*60,Bce=336*60*60,Bne="Noise_XX_25519_AESGCM_SHA256\0\0\0\0",J5e=3,Hg=Buffer.from([5]),fce=Buffer.from([87,65,6,J5e]),Ane=/https:\/\/(?![^:@\/\s]+:[^:@\/\s]+@)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?/g,SU={SERIAL:0,ISSUER:"WhatsAppLongTerm1",PUBLIC_KEY:Buffer.from("142375574d0a587166aae71ebe516437c4a28b73e3695c6ce1f7f9545da8ee6b","hex")},qf=[oe.HistorySync.HistorySyncType.INITIAL_BOOTSTRAP,oe.HistorySync.HistorySyncType.PUSH_NAME,oe.HistorySync.HistorySyncType.RECENT,oe.HistorySync.HistorySyncType.FULL,oe.HistorySync.HistorySyncType.ON_DEMAND,oe.HistorySync.HistorySyncType.NON_BLOCKING_DATA,oe.HistorySync.HistorySyncType.INITIAL_STATUS_V3],mI={SIGNAL_STORE:300,MSG_RETRY:3600,CALL_OFFER:300,USER_DEVICES:300},Qce={version:j5e,browser:Rb.macOS("Chrome"),waWebSocketUrl:"wss://web.whatsapp.com/ws/chat",connectTimeoutMs:2e4,keepAliveIntervalMs:3e4,logger:Jf.child({class:"baileys"}),emitOwnEvents:!0,defaultQueryTimeoutMs:6e4,customUploadHosts:[],retryRequestDelayMs:250,maxMsgRetryCount:5,fireInitQueries:!0,auth:void 0,markOnlineOnConnect:!0,syncFullHistory:!0,patchMessageBeforeSending:n=>n,shouldSyncHistoryMessage:({syncType:n})=>n!==oe.HistorySync.HistorySyncType.FULL,shouldIgnoreJid:()=>!1,linkPreviewImageThumbnailWidth:192,transactionOpts:{maxCommitRetries:10,delayBetweenTriesMs:3e3},generateHighQualityLinkPreview:!1,enableAutoSessionRecreation:!0,enableRecentMessageCache:!0,options:{},appStateMacVerification:{patch:!1,snapshot:!1},countryCode:"US",getMessage:async()=>{},cachedGroupMetadata:async()=>{},makeSignalRepository:dse},lU={image:"/mms/image",video:"/mms/video",document:"/mms/document",audio:"/mms/audio",sticker:"/mms/image","thumbnail-link":"/mms/image","product-catalog-image":"/product/image","md-app-state":"","md-msg-hist":"/mms/md-app-state","biz-cover-photo":"/pps/biz-cover-photo"},Koe={audio:"Audio",document:"Document",gif:"Video",image:"Image",ppic:"",product:"Image",ptt:"Audio",sticker:"Image",video:"Video","thumbnail-document":"Document Thumbnail","thumbnail-image":"Image Thumbnail","thumbnail-video":"Video Thumbnail","thumbnail-link":"Link Thumbnail","md-msg-hist":"History","md-app-state":"App State","product-catalog-image":"","payment-bg-image":"Payment Background",ptv:"Video","biz-cover-photo":"Image"},tne=Object.keys(lU),yce=12e4,zf=5,mce=812,Sce=3e4,YH={Minute:60*1e3,Hour:3600*1e3,Day:1440*60*1e3,Week:10080*60*1e3};var wce=qe(Kr(),1);import{createHash as q5e}from"crypto";import{createWriteStream as z5e,promises as V5e}from"fs";import{tmpdir as W5e}from"os";import{join as Z5e}from"path";var Dce=n=>{let t=le(n,"product_catalog"),o=PA(t,"product").map(Vf),i=le(t,"paging");return{products:o,nextPageCursor:i?jA(i,"after"):void 0}},Oce=n=>{let t=le(n,"collections");return{collections:PA(t,"collection").map(i=>{let e=jA(i,"id"),a=jA(i,"name"),A=PA(i,"product").map(Vf);return{id:e,name:a,products:A,status:eZe(i)}})}},bce=n=>{let t=le(n,"order"),o=PA(t,"product").map(a=>{let A=le(a,"image");return{id:jA(a,"id"),name:jA(a,"name"),imageUrl:jA(A,"url"),price:+jA(a,"price"),currency:jA(a,"currency"),quantity:+jA(a,"quantity")}}),i=le(t,"price");return{price:{total:+jA(i,"total"),currency:jA(i,"currency")},products:o}},jH=(n,t)=>{let o={},i=[];return typeof n<"u"&&i.push({tag:"id",attrs:{},content:Buffer.from(n)}),typeof t.name<"u"&&i.push({tag:"name",attrs:{},content:Buffer.from(t.name)}),typeof t.description<"u"&&i.push({tag:"description",attrs:{},content:Buffer.from(t.description)}),typeof t.retailerId<"u"&&i.push({tag:"retailer_id",attrs:{},content:Buffer.from(t.retailerId)}),t.images.length&&i.push({tag:"media",attrs:{},content:t.images.map(a=>{if(!("url"in a))throw new wce.Boom("Expected img for product to already be uploaded",{statusCode:400});return{tag:"image",attrs:{},content:[{tag:"url",attrs:{},content:Buffer.from(a.url.toString())}]}})}),typeof t.price<"u"&&i.push({tag:"price",attrs:{},content:Buffer.from(t.price.toString())}),typeof t.currency<"u"&&i.push({tag:"currency",attrs:{},content:Buffer.from(t.currency)}),"originCountryCode"in t&&(typeof t.originCountryCode>"u"?o.compliance_category="COUNTRY_ORIGIN_EXEMPT":i.push({tag:"compliance_info",attrs:{},content:[{tag:"country_code_origin",attrs:{},content:Buffer.from(t.originCountryCode)}]})),typeof t.isHidden<"u"&&(o.is_hidden=t.isHidden.toString()),{tag:"product",attrs:o,content:i}},Vf=n=>{let t=n.attrs.is_hidden==="true",o=jA(n,"id"),i=le(n,"media"),e=le(n,"status_info");return{id:o,imageUrls:$5e(i),reviewStatus:{whatsapp:jA(e,"status")},availability:"in stock",name:jA(n,"name"),retailerId:jA(n,"retailer_id"),url:jA(n,"url"),description:jA(n,"description"),price:+jA(n,"price"),currency:jA(n,"currency"),isHidden:t}};async function JH(n,t,o=3e4){return n={...n,images:n.images?await X5e(n.images,t,o):n.images},n}var X5e=async(n,t,o=3e4)=>await Promise.all(n.map(async e=>{if("url"in e){let I=e.url.toString();if(I.includes(".whatsapp.net"))return{url:I}}let{stream:a}=await Of(e),A=q5e("sha256"),r=Z5e(W5e(),"img"+jr()),s=z5e(r);for await(let I of a)A.update(I),s.write(I);let g=A.digest("base64"),{directPath:c}=await t(r,{mediaType:"product-catalog-image",fileEncSha256B64:g,timeoutMs:o});return await V5e.unlink(r).catch(I=>console.log("Error deleting temp file ",I)),{url:bf(c)}})),$5e=n=>{let t=le(n,"image");return{requested:jA(t,"request_image_url"),original:jA(t,"original_image_url")}},eZe=n=>{let t=le(n,"status_info");return{status:jA(t,"status"),canAppeal:jA(t,"can_appeal")==="true"}};var Zf=qe(Kr(),1);import{randomBytes as XH}from"crypto";var In=null;try{In=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}function Pt(n,t,o){this.low=n|0,this.high=t|0,this.unsigned=!!o}Pt.prototype.__isLong__;Object.defineProperty(Pt.prototype,"__isLong__",{value:!0});function oi(n){return(n&&n.__isLong__)===!0}function Mce(n){var t=Math.clz32(n&-n);return n?31-t:t}Pt.isLong=oi;var _ce={},Tce={};function up(n,t){var o,i,e;return t?(n>>>=0,(e=0<=n&&n<256)&&(i=Tce[n],i)?i:(o=yt(n,0,!0),e&&(Tce[n]=o),o)):(n|=0,(e=-128<=n&&n<128)&&(i=_ce[n],i)?i:(o=yt(n,n<0?-1:0,!1),e&&(_ce[n]=o),o))}Pt.fromInt=up;function ln(n,t){if(isNaN(n))return t?rc:zn;if(t){if(n<0)return rc;if(n>=vce)return Fce}else{if(n<=-Rce)return Xi;if(n+1>=Rce)return Gce}return n<0?ln(-n,t).neg():yt(n%DE|0,n/DE|0,t)}Pt.fromNumber=ln;function yt(n,t,o){return new Pt(n,t,o)}Pt.fromBits=yt;var oM=Math.pow;function zH(n,t,o){if(n.length===0)throw Error("empty string");if(typeof t=="number"?(o=t,t=!1):t=!!t,n==="NaN"||n==="Infinity"||n==="+Infinity"||n==="-Infinity")return t?rc:zn;if(o=o||10,o<2||360)throw Error("interior hyphen");if(i===0)return zH(n.substring(1),t,o).neg();for(var e=ln(oM(o,8)),a=zn,A=0;A>>0:this.low};He.toNumber=function(){return this.unsigned?(this.high>>>0)*DE+(this.low>>>0):this.high*DE+(this.low>>>0)};He.toString=function(t){if(t=t||10,t<2||36>>0,c=g.toString(t);if(A=s,A.isZero())return c+r;for(;c.length<6;)c="0"+c;r=""+c+r}};He.getHighBits=function(){return this.high};He.getHighBitsUnsigned=function(){return this.high>>>0};He.getLowBits=function(){return this.low};He.getLowBitsUnsigned=function(){return this.low>>>0};He.getNumBitsAbs=function(){if(this.isNegative())return this.eq(Xi)?64:this.neg().getNumBitsAbs();for(var t=this.high!=0?this.high:this.low,o=31;o>0&&(t&1<>21;return t?this.unsigned?!1:t===-1&&!(this.low===0&&this.high===-2097152):!0};He.isZero=function(){return this.high===0&&this.low===0};He.eqz=He.isZero;He.isNegative=function(){return!this.unsigned&&this.high<0};He.isPositive=function(){return this.unsigned||this.high>=0};He.isOdd=function(){return(this.low&1)===1};He.isEven=function(){return(this.low&1)===0};He.equals=function(t){return oi(t)||(t=pn(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low};He.eq=He.equals;He.notEquals=function(t){return!this.eq(t)};He.neq=He.notEquals;He.ne=He.notEquals;He.lessThan=function(t){return this.comp(t)<0};He.lt=He.lessThan;He.lessThanOrEqual=function(t){return this.comp(t)<=0};He.lte=He.lessThanOrEqual;He.le=He.lessThanOrEqual;He.greaterThan=function(t){return this.comp(t)>0};He.gt=He.greaterThan;He.greaterThanOrEqual=function(t){return this.comp(t)>=0};He.gte=He.greaterThanOrEqual;He.ge=He.greaterThanOrEqual;He.compare=function(t){if(oi(t)||(t=pn(t)),this.eq(t))return 0;var o=this.isNegative(),i=t.isNegative();return o&&!i?-1:!o&&i?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1};He.comp=He.compare;He.negate=function(){return!this.unsigned&&this.eq(Xi)?Xi:this.not().add(wE)};He.neg=He.negate;He.add=function(t){oi(t)||(t=pn(t));var o=this.high>>>16,i=this.high&65535,e=this.low>>>16,a=this.low&65535,A=t.high>>>16,r=t.high&65535,s=t.low>>>16,g=t.low&65535,c=0,I=0,d=0,B=0;return B+=a+g,d+=B>>>16,B&=65535,d+=e+s,I+=d>>>16,d&=65535,I+=i+r,c+=I>>>16,I&=65535,c+=o+A,c&=65535,yt(d<<16|B,c<<16|I,this.unsigned)};He.subtract=function(t){return oi(t)||(t=pn(t)),this.add(t.neg())};He.sub=He.subtract;He.multiply=function(t){if(this.isZero())return this;if(oi(t)||(t=pn(t)),In){var o=In.mul(this.low,this.high,t.low,t.high);return yt(o,In.get_high(),this.unsigned)}if(t.isZero())return this.unsigned?rc:zn;if(this.eq(Xi))return t.isOdd()?Xi:zn;if(t.eq(Xi))return this.isOdd()?Xi:zn;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(kce)&&t.lt(kce))return ln(this.toNumber()*t.toNumber(),this.unsigned);var i=this.high>>>16,e=this.high&65535,a=this.low>>>16,A=this.low&65535,r=t.high>>>16,s=t.high&65535,g=t.low>>>16,c=t.low&65535,I=0,d=0,B=0,f=0;return f+=A*c,B+=f>>>16,f&=65535,B+=a*c,d+=B>>>16,B&=65535,B+=A*g,d+=B>>>16,B&=65535,d+=e*c,I+=d>>>16,d&=65535,d+=a*g,I+=d>>>16,d&=65535,d+=A*s,I+=d>>>16,d&=65535,I+=i*c+e*g+a*s+A*r,I&=65535,yt(B<<16|f,I<<16|d,this.unsigned)};He.mul=He.multiply;He.divide=function(t){if(oi(t)||(t=pn(t)),t.isZero())throw Error("division by zero");if(In){if(!this.unsigned&&this.high===-2147483648&&t.low===-1&&t.high===-1)return this;var o=(this.unsigned?In.div_u:In.div_s)(this.low,this.high,t.low,t.high);return yt(o,In.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?rc:zn;var i,e,a;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return rc;if(t.gt(this.shru(1)))return Pce;a=rc}else{if(this.eq(Xi)){if(t.eq(wE)||t.eq(qH))return Xi;if(t.eq(Xi))return wE;var A=this.shr(1);return i=A.div(t).shl(1),i.eq(zn)?t.isNegative()?wE:qH:(e=this.sub(t.mul(i)),a=i.add(e.div(t)),a)}else if(t.eq(Xi))return this.unsigned?rc:zn;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();a=zn}for(e=this;e.gte(t);){i=Math.max(1,Math.floor(e.toNumber()/t.toNumber()));for(var r=Math.ceil(Math.log(i)/Math.LN2),s=r<=48?1:oM(2,r-48),g=ln(i),c=g.mul(t);c.isNegative()||c.gt(e);)i-=s,g=ln(i,this.unsigned),c=g.mul(t);g.isZero()&&(g=wE),a=a.add(g),e=e.sub(c)}return a};He.div=He.divide;He.modulo=function(t){if(oi(t)||(t=pn(t)),In){var o=(this.unsigned?In.rem_u:In.rem_s)(this.low,this.high,t.low,t.high);return yt(o,In.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))};He.mod=He.modulo;He.rem=He.modulo;He.not=function(){return yt(~this.low,~this.high,this.unsigned)};He.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32};He.clz=He.countLeadingZeros;He.countTrailingZeros=function(){return this.low?Mce(this.low):Mce(this.high)+32};He.ctz=He.countTrailingZeros;He.and=function(t){return oi(t)||(t=pn(t)),yt(this.low&t.low,this.high&t.high,this.unsigned)};He.or=function(t){return oi(t)||(t=pn(t)),yt(this.low|t.low,this.high|t.high,this.unsigned)};He.xor=function(t){return oi(t)||(t=pn(t)),yt(this.low^t.low,this.high^t.high,this.unsigned)};He.shiftLeft=function(t){return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?yt(this.low<>>32-t,this.unsigned):yt(0,this.low<>>t|this.high<<32-t,this.high>>t,this.unsigned):yt(this.high>>t-32,this.high>=0?0:-1,this.unsigned)};He.shr=He.shiftRight;He.shiftRightUnsigned=function(t){return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?yt(this.low>>>t|this.high<<32-t,this.high>>>t,this.unsigned):t===32?yt(this.high,0,this.unsigned):yt(this.high>>>t-32,0,this.unsigned)};He.shru=He.shiftRightUnsigned;He.shr_u=He.shiftRightUnsigned;He.rotateLeft=function(t){var o;return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?yt(this.high,this.low,this.unsigned):t<32?(o=32-t,yt(this.low<>>o,this.high<>>o,this.unsigned)):(t-=32,o=32-t,yt(this.high<>>o,this.low<>>o,this.unsigned))};He.rotl=He.rotateLeft;He.rotateRight=function(t){var o;return oi(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?yt(this.high,this.low,this.unsigned):t<32?(o=32-t,yt(this.high<>>t,this.low<>>t,this.unsigned)):(t-=32,o=32-t,yt(this.low<>>t,this.high<>>t,this.unsigned))};He.rotr=He.rotateRight;He.toSigned=function(){return this.unsigned?yt(this.low,this.high,!1):this};He.toUnsigned=function(){return this.unsigned?this:yt(this.low,this.high,!0)};He.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()};He.toBytesLE=function(){var t=this.high,o=this.low;return[o&255,o>>>8&255,o>>>16&255,o>>>24,t&255,t>>>8&255,t>>>16&255,t>>>24]};He.toBytesBE=function(){var t=this.high,o=this.low;return[t>>>24,t>>>16&255,t>>>8&255,t&255,o>>>24,o>>>16&255,o>>>8&255,o&255]};Pt.fromBytes=function(t,o,i){return i?Pt.fromBytesLE(t,o):Pt.fromBytesBE(t,o)};Pt.fromBytesLE=function(t,o){return new Pt(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,o)};Pt.fromBytesBE=function(t,o){return new Pt(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],o)};typeof BigInt=="function"&&(Pt.fromBigInt=function(t,o){var i=Number(BigInt.asIntN(32,t)),e=Number(BigInt.asIntN(32,t>>BigInt(32)));return yt(i,e,o)},Pt.fromValue=function(t,o){return typeof t=="bigint"?Pt.fromBigInt(t,o):pn(t,o)},He.toBigInt=function(){var t=BigInt(this.low>>>0),o=BigInt(this.unsigned?this.high>>>0:this.high);return o<{let n=new ec;return{mutex(t){return n.runExclusive(t)}}},Lce=()=>{let n=new Map;return{async mutex(t,o){let i=n.get(t);i||(i={mutex:new ec,refCount:0},n.set(t,i)),i.refCount++;try{return await i.mutex.runExclusive(o)}finally{i.refCount--,i.refCount===0&&n.get(t)===i&&n.delete(t)}}}};function Uce(n,t,o=10){let i=[],e=!1;return{enqueue:(A,r)=>{if(i.push({type:A,node:r}),e)return;e=!0,(async()=>{let g=0;for(;i.length&&t.isWsOpen();){let{type:c,node:I}=i.shift(),d=n.get(c);if(!d){t.onUnexpectedError(new Error(`unknown offline node type: ${c}`),"processing offline node");continue}await d(I).catch(B=>t.onUnexpectedError(B,`processing offline ${c}`)),g++,g>=o&&(g=0,await t.yieldToEventLoop())}e=!1})().catch(g=>t.onUnexpectedError(g,"processing offline nodes"))}}}var CM=qe(Kr(),1);var DI=qe(Kr(),1);var nM=class{constructor(){this.name="devices"}getQueryElement(){return{tag:"devices",attrs:{version:"2"}}}getUserElement(){return null}parser(t){let o=[],i;if(t.tag==="devices"){Ji(t);let e=le(t,"device-list"),a=le(t,"key-index-list");if(Array.isArray(e?.content))for(let{tag:A,attrs:r}of e.content){let s=+r.id,g=+r["key-index"];A==="device"&&o.push({id:s,keyIndex:g,isHosted:!!(r.is_hosted&&r.is_hosted==="true")})}a?.tag==="key-index-list"&&(i={timestamp:+a.attrs.ts,signedKeyIndex:a?.content,expectedTimestamp:a.attrs.expected_ts?+a.attrs.expected_ts:void 0})}return{deviceList:o,keyIndex:i}}};var tg=class{withId(t){return this.id=t,this}withLid(t){return this.lid=t,this}withPhone(t){return this.phone=t,this}withUsername(t){return this.username=t,this}withUsernameKey(t){return this.usernameKey=t,this}withType(t){return this.type=t,this}withPersonaId(t){return this.personaId=t,this}};var sM=class{constructor(){this.name="contact"}getQueryElement(){return{tag:"contact",attrs:{}}}getUserElement(t){return t.phone?{tag:"contact",attrs:{},content:t.phone}:t.username?{tag:"contact",attrs:{username:t.username,...t.usernameKey?{pin:t.usernameKey}:{},...t.lid?{lid:t.lid}:{}}}:t.type?{tag:"contact",attrs:{type:t.type}}:{tag:"contact",attrs:{}}}parser(t){return t.tag==="contact"?(Ji(t),t?.attrs?.type==="in"):!1}};var gM=class{constructor(){this.name="status"}getQueryElement(){return{tag:"status",attrs:{}}}getUserElement(){return null}parser(t){if(t.tag==="status"){Ji(t);let o=t?.content?.toString()??null,i=new Date(+(t?.attrs.t||0)*1e3);return o?typeof o=="string"&&o.length===0&&(o=null):t.attrs?.code&&+t.attrs.code==401?o="":o=null,{status:o,setAt:i}}}};var cM=class{constructor(){this.name="disappearing_mode"}getQueryElement(){return{tag:"disappearing_mode",attrs:{}}}getUserElement(){return null}parser(t){if(t.tag==="disappearing_mode"){Ji(t);let o=+t?.attrs.duration,i=new Date(+(t?.attrs.t||0)*1e3);return{duration:o,setAt:i}}}};var IM=class{constructor(){this.name="username"}getQueryElement(){return{tag:"username",attrs:{}}}getUserElement(t){return null}parser(t){return t.tag==="username"?(Ji(t),typeof t.content=="string"?t.content:null):null}};var lM=class{constructor(){this.name="bot"}getQueryElement(){return{tag:"bot",attrs:{},content:[{tag:"profile",attrs:{v:"1"}}]}}getUserElement(t){return{tag:"bot",attrs:{},content:[{tag:"profile",attrs:{persona_id:t.personaId}}]}}parser(t){let o=le(t,"bot"),i=le(o,"profile"),e=le(i,"commands"),a=le(i,"prompts"),A=[],r=[];for(let s of PA(e,"command"))A.push({name:jA(s,"name"),description:jA(s,"description")});for(let s of PA(a,"prompt"))r.push(`${jA(s,"emoji")} ${jA(s,"text")}`);return{isDefault:!!le(i,"default"),jid:t.attrs.jid,name:jA(i,"name"),attributes:jA(i,"attributes"),description:jA(i,"description"),category:jA(i,"category"),personaId:i.attrs.persona_id,commandsDescription:jA(e,"description"),commands:A,prompts:r}}};var pM=class{constructor(){this.name="lid"}getQueryElement(){return{tag:"lid",attrs:{}}}getUserElement(t){return t.lid?{tag:"lid",attrs:{jid:t.lid}}:null}parser(t){return t.tag==="lid"?t.attrs.val:null}};var rg=class{constructor(){this.protocols=[],this.users=[],this.context="interactive",this.mode="query"}withMode(t){return this.mode=t,this}withContext(t){return this.context=t,this}withUser(t){return this.users.push(t),this}parseUSyncQueryResult(t){if(t?.attrs.type!=="result")return;let o=Object.fromEntries(this.protocols.map(A=>[A.name,A.parser])),i={list:[],sideList:[]},e=le(t,"usync"),a=e?le(e,"list"):void 0;return a?.content&&Array.isArray(a.content)&&(i.list=a.content.reduce((A,r)=>{let s=r?.attrs.jid;if(s){let g=Array.isArray(r?.content)?Object.fromEntries(r.content.map(c=>{let I=c.tag,d=o[I];return d?[I,d(c)]:[I,null]}).filter(([,c])=>c!==null)):{};A.push({...g,id:s})}return A},[])),i}withDeviceProtocol(){return this.protocols.push(new nM),this}withContactProtocol(){return this.protocols.push(new sM),this}withStatusProtocol(){return this.protocols.push(new gM),this}withDisappearingModeProtocol(){return this.protocols.push(new cM),this}withBotProfileProtocol(){return this.protocols.push(new lM),this}withLIDProtocol(){return this.protocols.push(new pM),this}withUsernameProtocol(){return this.protocols.push(new IM),this}};var Wr=qe(Kr(),1);import{randomBytes as WH}from"crypto";import{URL as aZe}from"url";import{promisify as iZe}from"util";var dM=class{constructor(t={}){this.protocolVersion=5,this.sequence=0,this.events=[],this.buffer=[],Object.assign(this,t)}};import{EventEmitter as tZe}from"events";var hM=class extends tZe{constructor(t,o){super(),this.url=t,this.config=o,this.setMaxListeners(0)}};var EM=class extends hM{constructor(){super(...arguments),this.socket=null}get isOpen(){return this.socket?.readyState===Ho.OPEN}get isClosed(){return this.socket===null||this.socket?.readyState===Ho.CLOSED}get isClosing(){return this.socket===null||this.socket?.readyState===Ho.CLOSING}get isConnecting(){return this.socket?.readyState===Ho.CONNECTING}connect(){if(this.socket)return;this.socket=new Ho(this.url,{origin:Mf,headers:this.config.options?.headers,handshakeTimeout:this.config.connectTimeoutMs,timeout:this.config.connectTimeoutMs,agent:this.config.agent}),this.socket.setMaxListeners(0);let t=["close","error","upgrade","message","open","ping","pong","unexpected-response"];for(let o of t)this.socket?.on(o,(...i)=>this.emit(o,...i))}async close(){if(!this.socket)return;let t=new Promise(o=>{this.socket?.once("close",o)});this.socket.close(),await t,this.socket=null}send(t,o){return this.socket?.send(t,o),!!this.socket}};var VH=qe(Kr(),1);var rZe=(n,t,o,i)=>o({tag:"iq",attrs:{id:i(),type:"get",to:OA,xmlns:"w:mex"},content:[{tag:"query",attrs:{query_id:t},content:Buffer.from(JSON.stringify({variables:n}),"utf-8")}]}),Wf=async(n,t,o,i,e)=>{let a=await rZe(n,t,i,e),A=le(a,"result");if(A?.content){let s=JSON.parse(A.content.toString());if(s.errors&&s.errors.length>0){let c=s.errors.map(B=>B.message||"Unknown error").join(", "),I=s.errors[0],d=I.extensions?.error_code||400;throw new VH.Boom(`GraphQL server error: ${c}`,{statusCode:d,data:I})}let g=o?s?.data?.[o]:s?.data;if(typeof g<"u")return g}let r=(o||"").startsWith("xwa2_")?o.substring(5).replace(/_/g," "):o?.replace(/_/g," ");throw new VH.Boom(`Failed to ${r}, unexpected response structure.`,{statusCode:400,data:a})};var Hce=n=>{let{waWebSocketUrl:t,connectTimeoutMs:o,logger:i,keepAliveIntervalMs:e,browser:a,auth:A,printQRInTerminal:r,defaultQueryTimeoutMs:s,transactionOpts:g,qrTimeout:c,makeSignalRepository:I}=n,d=new dM,B=0,f=z7(),Q=()=>`${f}${se++}`;r&&i.warn({},"\u26A0\uFE0F The printQRInTerminal option has been deprecated. You will no longer receive QR codes in the terminal automatically. Please listen to the connection.update event yourself and handle the QR your way. You can remove this message by removing this opttion. This message will be removed in a future version."),a[1].toLocaleLowerCase().includes("android")&&i.warn("\u26A0\uFE0F Using the Android browser is experimental and may lead to unexpected behavior. Use at your own risk."),qf.map(de=>n.shouldSyncHistoryMessage({syncType:de})).filter(de=>de===!1).length===qf.length&&i.warn("\u26A0\uFE0F DANGER: DISABLING ALL SYNC BY shouldSyncHistoryMsg PREVENTS BAILEYS FROM ACCESSING INITIAL LID MAPPINGS, LEADING TO INSTABILIY AND SESSION ERRORS");let m=typeof t=="string"?new aZe(t):t;if(n.mobile||m.protocol==="tcp:")throw new Wr.Boom("Mobile API is not supported anymore",{statusCode:$t.loggedOut});m.protocol==="wss"&&A?.creds?.routingInfo&&m.searchParams.append("ED",A.creds.routingInfo.toString("base64url"));let _=Sr.generateKeyPair(),T=une({keyPair:_,NOISE_HEADER:fce,logger:i,routingInfo:A?.creds?.routingInfo}),R=new EM(m,n);R.connect();let K=iZe(R.send),L=async de=>{if(!R.isOpen)throw new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed});let ye=T.encodeFrame(de);await Qh(o,async(be,oA)=>{try{await K.call(R,ye),be()}catch(pA){oA(pA)}})},U=de=>{i.level==="trace"&&i.trace({xml:Gn(de),msg:"xml send"});let ye=l7(de);return L(ye)},z=async(de,ye=s)=>{let be,oA;try{return await Qh(ye,(FA,Kt)=>(be=st=>{FA(st)},oA=st=>{Kt(st||new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed}))},R.on(`TAG:${de}`,be),R.on("close",oA),R.on("error",oA),()=>Kt(new Wr.Boom("Query Cancelled"))))}catch(pA){if(pA instanceof Wr.Boom&&pA.output?.statusCode===$t.timedOut){i?.warn?.({msgId:de},"timed out waiting for message");return}throw pA}finally{be&&R.off(`TAG:${de}`,be),oA&&(R.off("close",oA),R.off("error",oA))}},q=async(de,ye)=>{de.attrs.id||(de.attrs.id=Q());let be=de.attrs.id,oA=await Qh(ye,async(pA,FA)=>{let Kt=z(be,ye).catch(FA);U(de).then(async()=>pA(await Kt)).catch(FA)});return oA&&"tag"in oA&&Ji(oA),oA},x=async()=>{let de=await q({tag:"iq",attrs:{to:OA,type:"get",xmlns:"encrypt"},content:[{tag:"digest",attrs:{}}]});if(!le(de,"digest"))throw await Xe(),new Error("encrypt/get digest returned no digest node")},G=async()=>{let de=(J.signedPreKey.keyId||0)+1,ye=await dD(J.signedIdentityKey,de);await q({tag:"iq",attrs:{to:OA,type:"set",xmlns:"encrypt"},content:[{tag:"rotate",attrs:{},content:[Rf(ye)]}]}),k.emit("creds.update",{signedPreKey:ye})},V=async de=>{if(de.protocols.length===0)throw new Wr.Boom("USyncQuery must have at least one protocol");let be=de.users.map(st=>({tag:"user",attrs:{jid:st.phone?void 0:st.id},content:de.protocols.map(Dr=>Dr.getUserElement(st)).filter(Dr=>Dr!==null)})),oA={tag:"list",attrs:{},content:be},pA={tag:"query",attrs:{},content:de.protocols.map(st=>st.getQueryElement())},FA={tag:"iq",attrs:{to:OA,type:"get",xmlns:"usync"},content:[{tag:"usync",attrs:{context:de.context,mode:de.mode,sid:Q(),last:"true",index:"0"},content:[pA,oA]}]},Kt=await q(FA);return de.parseUSyncQueryResult(Kt)},F=async(...de)=>{let ye=new rg,be=!1;for(let pA of de)if(qA(pA)){i?.warn("LIDs are not supported with onWhatsApp");continue}else{be||(be=!0,ye=ye.withContactProtocol());let FA=`+${pA.replace("+","").split("@")[0]?.split(":")[0]}`;ye.withUser(new tg().withPhone(FA))}if(ye.users.length===0)return[];let oA=await V(ye);if(oA)return oA.list.filter(pA=>!!pA.contact).map(({contact:pA,id:FA})=>({jid:FA,exists:pA}))},N=async de=>{let ye=new rg().withLIDProtocol().withContext("background");for(let oA of de)if(qA(oA)){i?.warn("LID user found in LID fetch call");continue}else ye.withUser(new tg().withId(oA));if(ye.users.length===0)return[];let be=await V(ye);return be?be.list.filter(oA=>!!oA.lid).map(({lid:oA,id:pA})=>({pn:pA,lid:oA})):[]},k=$ne(i),{creds:J}=A,$=Yne(A.keys,i,g),ie=I({creds:J,keys:$},i,N),pe,se=1,Me,fe,ke=!1,Ne=[],We=(de,ye)=>{i.error({err:de},`unexpected error in '${ye}'`)},ve=async de=>{if(!R.isOpen)throw new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed});let ye,be,oA=Qh(o,(pA,FA)=>{ye=pA,be=ZH(FA),R.on("frame",ye),R.on("close",be),R.on("error",be)}).finally(()=>{R.off("frame",ye),R.off("close",be),R.off("error",be)});return de&&L(de).catch(be),oA},aA=async()=>{let de={clientHello:{ephemeral:_.public}};de=oe.HandshakeMessage.fromObject(de),i.info({browser:a,helloMsg:de},"connected to WA");let ye=oe.HandshakeMessage.encode(de).finish(),be=await ve(ye),oA=oe.HandshakeMessage.decode(be);i.trace({handshake:oA},"handshake recv from WA");let pA=T.processHandshake(oA,J.noiseKey),FA;J.me?(FA=cne(J.me.id,n),i.info({node:FA},"logging in...")):(FA=Ine(J,n),i.info({node:FA},"not logged in, attempting registration..."));let Kt=T.encrypt(oe.ClientPayload.encode(FA).finish());await L(oe.HandshakeMessage.encode({clientFinish:{static:pA,payload:Kt}}).finish()),await T.finishInit(),Ze()},Qe=async()=>{let de=await q({tag:"iq",attrs:{id:Q(),xmlns:"encrypt",type:"get",to:OA},content:[{tag:"count",attrs:{}}]});return+le(de,"count").attrs.value},Ie=null,Xe=async(de=zf)=>{if(Ie){i.debug("Pre-key upload already in progress, waiting for completion"),await Ie;return}let ye=async be=>{i.info({count:de,retryCount:be},"uploading pre-keys");let oA=await $.transaction(async()=>{i.debug({requestedCount:de},"generating pre-keys with requested count");let{update:pA,node:FA}=await nne({creds:J,keys:$},de);return k.emit("creds.update",pA),FA},J?.me?.id||"upload-pre-keys");try{await q(oA),i.info({count:de},"uploaded pre-keys successfully")}catch(pA){if(i.error({uploadError:pA.toString(),count:de},"Failed to upload pre-keys to server"),be<3){let FA=Math.min(1e3*Math.pow(2,be),1e4);return i.info(`Retrying pre-key upload in ${FA}ms`),await new Promise(Kt=>setTimeout(Kt,FA)),ye(be+1)}throw pA}};Ie=Promise.race([ye(0),new Promise((be,oA)=>setTimeout(()=>oA(new Wr.Boom("Pre-key upload timeout",{statusCode:408})),Sce))]);try{await Ie}finally{Ie=null}},je=async()=>{let de=J.nextPreKeyId-1;return de<=0?{exists:!1,currentPreKeyId:0}:{exists:!!(await $.get("pre-key",[de.toString()]))[de.toString()],currentPreKeyId:de}},Oe=async()=>{try{let de=0,ye=await Qe();ye===0?de=mce:de=zf;let{exists:be,currentPreKeyId:oA}=await je();i.info(`${ye} pre-keys found on server`),i.info(`Current prekey ID: ${oA}, exists in storage: ${be}`);let pA=ye<=de,FA=!be&&oA>0;if(pA||FA){let st=[];pA&&st.push(`server count low (${ye})`),FA&&st.push(`current prekey ${oA} missing from storage`),i.info(`Uploading PreKeys due to: ${st.join(", ")}`),await Xe(de)}else i.info(`PreKey validation passed - Server: ${ye}, Current prekey ${oA} exists`)}catch(de){i.error({error:de},"Failed to check/upload pre-keys during initialization")}},EA=async de=>{await T.decodeFrame(de,ye=>{pe=new Date;let be=!1;if(be=R.emit("frame",ye),!(ye instanceof Uint8Array)){let oA=ye.attrs.id;i.level==="trace"&&i.trace({xml:Gn(ye),msg:"recv xml"}),be=R.emit(`${Cce}${oA}`,ye)||be;let pA=ye.tag,FA=ye.attrs||{},Kt=Array.isArray(ye.content)?ye.content[0]?.tag:"";for(let st of Object.keys(FA))be=R.emit(`${SE}${pA},${st}:${FA[st]},${Kt}`,ye)||be,be=R.emit(`${SE}${pA},${st}:${FA[st]}`,ye)||be,be=R.emit(`${SE}${pA},${st}`,ye)||be;be=R.emit(`${SE}${pA},,${Kt}`,ye)||be,be=R.emit(`${SE}${pA}`,ye)||be,!be&&i.level==="debug"&&i.debug({unhandled:!0,msgId:oA,fromMe:!1,frame:ye},"communication recv")}})},hA=async de=>{if(ke){i.trace({trace:de?.stack},"connection already closed");return}if(ke=!0,i.info({trace:de?.stack},de?"connection errored":"connection closed"),clearInterval(Me),clearTimeout(fe),R.removeAllListeners("close"),R.removeAllListeners("open"),R.removeAllListeners("message"),ie.close?.(),!R.isClosed&&!R.isClosing)try{await R.close()}catch{}for(let ye of Ne)try{await ye(de)}catch(be){i.error({err:be},"error in socket end handler")}k.emit("connection.update",{connection:"close",lastDisconnect:{error:de,date:new Date}}),k.removeAllListeners("connection.update"),k.destroy()},iA=async()=>{if(R.isOpen)return;if(R.isClosed||R.isClosing)throw new Wr.Boom("Connection Closed",{statusCode:$t.connectionClosed});let de,ye;await new Promise((be,oA)=>{de=()=>be(void 0),ye=ZH(oA),R.on("open",de),R.on("close",ye),R.on("error",ye)}).finally(()=>{R.off("open",de),R.off("close",ye),R.off("error",ye)})},Ze=()=>Me=setInterval(()=>{pe||(pe=new Date),Date.now()-pe.getTime()>e+5e3?hA(new Wr.Boom("Connection was lost",{statusCode:$t.connectionLost})):R.isOpen?q({tag:"iq",attrs:{id:Q(),to:OA,type:"get",xmlns:"w:p"},content:[{tag:"ping",attrs:{}}]}).catch(ye=>{i.error({trace:ye.stack},"error in sending keep alive")}):i.warn("keep alive called when WS not open")},e),bA=de=>q({tag:"iq",attrs:{to:OA,xmlns:"passive",type:"set"},content:[{tag:de,attrs:{}}]}),Be=async de=>{let ye=A.creds.me?.id;ye&&await U({tag:"iq",attrs:{to:OA,type:"set",id:Q(),xmlns:"md"},content:[{tag:"remove-companion-device",attrs:{jid:ye,reason:"user_initiated"}}]}),hA(new Wr.Boom(de||"Intentional Logout",{statusCode:$t.loggedOut}))},Re=async(de,ye)=>{let be=ye??$7(WH(5));if(ye&&ye?.length!==8)throw new Error("Custom pairing code must be exactly 8 chars");return A.creds.pairingCode=be,A.creds.me={id:yr(de,"s.whatsapp.net"),name:"~"},k.emit("creds.update",A.creds),await U({tag:"iq",attrs:{to:OA,type:"set",id:Q(),xmlns:"md"},content:[{tag:"link_code_companion_reg",attrs:{jid:A.creds.me.id,stage:"companion_hello",should_show_push_notification:"true"},content:[{tag:"link_code_pairing_wrapped_companion_ephemeral_pub",attrs:{},content:await Ue()},{tag:"companion_server_auth_key_pub",attrs:{},content:A.creds.noiseKey.public},{tag:"companion_platform_id",attrs:{},content:ZU(a)},{tag:"companion_platform_display",attrs:{},content:`${a[1]} (${a[0]})`},{tag:"link_code_pairing_nonce",attrs:{},content:"0"}]}]}),A.creds.pairingCode};async function Ue(){let de=WH(32),ye=WH(16),be=await hD(A.creds.pairingCode,de),oA=P7(A.creds.pairingEphemeralKeyPair.public,be,ye);return Buffer.concat([de,ye,oA])}let MA=de=>q({tag:"iq",attrs:{to:OA,id:Q(),xmlns:"w:stats"},content:[{tag:"add",attrs:{t:Math.round(Date.now()/1e3)+""},content:de}]});R.on("message",EA),R.on("open",async()=>{try{await aA()}catch(de){i.error({err:de},"error in validating connection"),hA(de)}}),R.on("error",ZH(hA)),R.on("close",()=>void hA(new Wr.Boom("Connection Terminated",{statusCode:$t.connectionClosed}))),R.on("CB:xmlstreamend",()=>void hA(new Wr.Boom("Connection Terminated by Server",{statusCode:$t.connectionClosed}))),R.on("CB:iq,type:set,pair-device",async de=>{let ye={tag:"iq",attrs:{to:OA,type:"result",id:de.attrs.id}};await U(ye);let be=le(de,"pair-device"),oA=PA(be,"ref"),pA=Buffer.from(J.noiseKey.public).toString("base64"),FA=Buffer.from(J.signedIdentityKey.public).toString("base64"),Kt=J.advSecretKey,st=c||6e4,Dr=()=>{if(!R.isOpen)return;let rr=oA.shift();if(!rr){hA(new Wr.Boom("QR refs attempts ended",{statusCode:$t.timedOut}));return}let Qo=rr.content.toString("utf-8"),$i=tse(Qo,pA,FA,Kt,a);k.emit("connection.update",{qr:$i}),fe=setTimeout(Dr,st),st=c||2e4};Dr()}),R.on("CB:iq,,pair-success",async de=>{i.debug("pair success recv");try{_A(de);let{reply:ye,creds:be}=lne(de,J);i.info({me:be.me,platform:be.platform},"pairing configured successfully, expect to restart the connection..."),k.emit("creds.update",be),k.emit("connection.update",{isNewLogin:!0,qr:void 0}),await U(ye),wA()}catch(ye){i.info({trace:ye.stack},"error in pairing"),hA(ye)}}),R.on("CB:success",async de=>{try{_A(de),await Oe(),await bA("active");try{await x()}catch(ye){i.warn({e:ye},"failed to run digest after login")}}catch(ye){i.warn({err:ye},"failed to send initial passive iq")}if(i.info("opened connection to WA"),clearTimeout(fe),k.emit("creds.update",{me:{...A.creds.me,lid:de.attrs.lid}}),k.emit("connection.update",{connection:"open"}),wA(),de.attrs.lid&&A.creds.me?.id){let ye=de.attrs.lid;process.nextTick(async()=>{try{let be=A.creds.me.id;await ie.lidMapping.storeLIDPNMappings([{lid:ye,pn:be}]);let{user:oA,device:pA}=fA(be);await A.keys.set({"device-list":{[oA]:[pA?.toString()||"0"]}}),await ie.migrateSession(be,ye),i.info({myPN:be,myLID:ye},"Own LID session created successfully")}catch(be){i.error({error:be,lid:ye},"Failed to create own LID session")}})}}),R.on("CB:stream:error",de=>{let[ye]=_s(de);i.error({reasonNode:ye,fullErrorNode:de},"stream errored out");let{reason:be,statusCode:oA}=W7(de);hA(new Wr.Boom(`Stream Errored (${be})`,{statusCode:oA,data:ye||de}))}),R.on("CB:failure",de=>{let ye=+(de.attrs.reason||500);hA(new Wr.Boom("Connection Failure",{statusCode:ye,data:de.attrs}))}),R.on("CB:ib,,downgrade_webclient",()=>{hA(new Wr.Boom("Multi-device beta not joined",{statusCode:$t.multideviceMismatch}))}),R.on("CB:ib,,offline_preview",async de=>{i.info("offline preview received",JSON.stringify(de)),await U({tag:"ib",attrs:{},content:[{tag:"offline_batch",attrs:{count:"100"}}]})}),R.on("CB:ib,,edge_routing",de=>{let ye=le(de,"edge_routing"),be=le(ye,"routing_info");be?.content&&(A.creds.routingInfo=Buffer.from(be?.content),k.emit("creds.update",A.creds))});let Ke=!1;process.nextTick(()=>{J.me?.id&&(k.buffer(),Ke=!0),k.emit("connection.update",{connection:"connecting",receivedPendingNotifications:!1,qr:void 0})}),R.on("CB:ib,,offline",de=>{let be=+(le(de,"offline")?.attrs.count||0);i.info(`handled ${be} offline messages/notifications`),Ke&&(k.flush(),i.trace("flushed events for initial buffer")),k.emit("connection.update",{receivedPendingNotifications:!0})}),k.on("creds.update",de=>{let ye=de.me?.name;J.me?.name!==ye&&(i.debug({name:ye},"updated pushName"),U({tag:"presence",attrs:{name:ye}}).catch(be=>{i.warn({trace:be.stack},"error in sending presence update on name change")})),Object.assign(J,de)});let _A=({attrs:de})=>{let ye=de?.t;if(!ye)return;let be=Number(ye);if(Number.isNaN(be)||be<=0)return;let oA=Date.now();B=be*1e3-oA,i.debug({offset:B},"calculated server time offset")},at=()=>{let de=3*YH.Day;return((Date.now()+B+de)%YH.Week).toString()},wA=async()=>{if(!R.isOpen)return;let de={tag:"ib",attrs:{},content:[{tag:"unified_session",attrs:{id:at()}}]};try{await U(de)}catch(ye){i.debug({error:ye},"failed to send unified_session telemetry")}},lt=de=>{Ne.push(de)},Er=async()=>{let de=await Wf({},ca.REACHOUT_TIMELOCK,Da.xwa2_fetch_account_reachout_timelock,q,Q),ye={isActive:!!de?.is_active,timeEnforcementEnds:de?.time_enforcement_ends&&de?.time_enforcement_ends!=="0"?new Date(parseInt(de.time_enforcement_ends,10)*1e3):void 0,enforcementType:de?.enforcement_type??Vc.DEFAULT};return k.emit("connection.update",{reachoutTimeLock:ye}),ye},UA=async()=>Wf({input:{type:"INDIVIDUAL_NEW_CHAT_MSG"}},ca.MESSAGE_CAPPING_INFO,Da.xwa2_message_capping_info,q,Q);return{type:"md",ws:R,ev:k,authState:{creds:J,keys:$},signalRepository:ie,get user(){return A.creds.me},generateMessageTag:Q,query:q,waitForMessage:z,waitForSocketOpen:iA,sendRawMessage:L,sendNode:U,logout:Be,end:hA,registerSocketEndHandler:lt,onUnexpectedError:We,uploadPreKeys:Xe,uploadPreKeysToServerIfRequired:Oe,digestKeyBundle:x,rotateSignedPreKey:G,requestPairingCode:Re,updateServerTimeOffset:_A,sendUnifiedSession:wA,wamBuffer:d,waitForConnectionUpdate:q7(k),sendWAMBuffer:MA,executeUSyncQuery:V,onWhatsApp:F,fetchAccountReachoutTimelock:Er,fetchNewChatMessageCap:UA}};function ZH(n){return t=>{n(new Wr.Boom(`WebSocket Error (${t?.message})`,{statusCode:X7(t),data:t}))}}var oZe=(n,t)=>{let o={tag:"picture",attrs:{type:n,query:"url"}};return t?.length&&(o.content=t),[o]},Kce=n=>{let{logger:t,markOnlineOnConnect:o,fireInitQueries:i,appStateMacVerification:e,shouldIgnoreJid:a,shouldSyncHistoryMessage:A,getMessage:r}=n,s=Hce(n),{ev:g,ws:c,authState:I,generateMessageTag:d,sendNode:B,query:f,signalRepository:Q,onUnexpectedError:y,sendUnifiedSession:m,registerSocketEndHandler:_}=s,T=Q.lidMapping.getLIDForPN.bind(Q.lidMapping),R,K={privacyTokenOn1to1:!0,profilePicPrivacyToken:!0,lidTrustedTokenIssueToLid:!1},L=ga.Connecting,U=ac(),z=ac(),q=ac(),x=ac(),G,V={initialBootstrapComplete:!1,recentSyncComplete:!1},F,N=new Set,k=n.placeholderResendCache||new $g({stdTTL:mI.MSG_RETRY,useClones:!1}),J=async W=>{let{[W]:X}=await I.keys.get("app-state-sync-key",[W]);return X},$=async(W=!1)=>{if(!R||W){let{content:X}=await f({tag:"iq",attrs:{xmlns:"privacy",to:OA,type:"get"},content:[{tag:"privacy",attrs:{}}]});R=xF(X?.[0],"category")}return R},ie=async(W,X)=>{await f({tag:"iq",attrs:{xmlns:"privacy",to:OA,type:"set"},content:[{tag:"privacy",attrs:{},content:[{tag:"category",attrs:{name:W,value:X}}]}]})},pe=async W=>{await ie("messages",W)},se=async W=>{await ie("calladd",W)},Me=async W=>{await ie("last",W)},fe=async W=>{await ie("online",W)},ke=async W=>{await ie("profile",W)},Ne=async W=>{await ie("status",W)},We=async W=>{await ie("readreceipts",W)},ve=async W=>{await ie("groupadd",W)},aA=async W=>{await f({tag:"iq",attrs:{xmlns:"disappearing_mode",to:OA,type:"set"},content:[{tag:"disappearing_mode",attrs:{duration:W.toString()}}]})},Qe=async()=>{let W=await f({tag:"iq",attrs:{xmlns:"bot",to:OA,type:"get"},content:[{tag:"bot",attrs:{v:"2"}}]}),X=le(W,"bot"),re=[];for(let ne of PA(X,"section"))if(ne.attrs.type==="all")for(let we of PA(ne,"bot"))re.push({jid:we.attrs.jid,personaId:we.attrs.persona_id});return re},Ie=async(...W)=>{let X=new rg().withStatusProtocol();for(let ne of W)X.withUser(new tg().withId(ne));let re=await s.executeUSyncQuery(X);if(re)return re.list},Xe=async(...W)=>{let X=new rg().withDisappearingModeProtocol();for(let ne of W)X.withUser(new tg().withId(ne));let re=await s.executeUSyncQuery(X);if(re)return re.list},je=async(W,X,re)=>{let ne;if(!W)throw new DI.Boom("Illegal no-jid profile update. Please specify either your ID or the ID of the chat you wish to update");uA(W)!==uA(I.creds.me.id)?ne=uA(W):ne=void 0;let{img:we}=await ub(X,re);await f({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:profile:picture",...ne?{target:ne}:{}},content:[{tag:"picture",attrs:{type:"image"},content:we}]})},Oe=async W=>{let X;if(!W)throw new DI.Boom("Illegal no-jid profile update. Please specify either your ID or the ID of the chat you wish to update");uA(W)!==uA(I.creds.me.id)?X=uA(W):X=void 0,await f({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:profile:picture",...X?{target:X}:{}}})},EA=async W=>{await f({tag:"iq",attrs:{to:OA,type:"set",xmlns:"status"},content:[{tag:"status",attrs:{},content:Buffer.from(W,"utf-8")}]})},hA=async W=>{await UA({pushNameSetting:W},"")},iA=async()=>{let W=await f({tag:"iq",attrs:{xmlns:"blocklist",to:OA,type:"get"}}),X=le(W,"list");return PA(X,"item").map(re=>re.attrs.jid)},Ze=async(W,X)=>{let re=uA(W),ne,we;if(qA(re)||Ia(re)){if(ne=re,X==="block"){let Ee=await Q.lidMapping.getPNForLID(re);if(!Ee)throw new DI.Boom(`Unable to resolve PN JID for LID: ${W}`,{statusCode:400});we=uA(Ee)}}else if(_t(re)||mr(re)){let Ee=await Q.lidMapping.getLIDForPN(re);if(!Ee)throw new DI.Boom(`Unable to resolve LID for PN JID: ${W}`,{statusCode:400});ne=Ee,X==="block"&&(we=uA(re))}else throw new DI.Boom(`Invalid jid: ${W}`,{statusCode:400});let Ce={action:X,jid:ne};if(X==="block"){if(!we)throw new DI.Boom(`pn_jid required for block: ${W}`,{statusCode:400});Ce.pn_jid=we}await f({tag:"iq",attrs:{xmlns:"blocklist",to:OA,type:"set"},content:[{tag:"item",attrs:Ce}]})},bA=async W=>{let X=await f({tag:"iq",attrs:{to:"s.whatsapp.net",xmlns:"w:biz",type:"get"},content:[{tag:"business_profile",attrs:{v:"244"},content:[{tag:"profile",attrs:{jid:W}}]}]}),re=le(X,"business_profile"),ne=le(re,"profile");if(ne){let we=le(ne,"address"),Ce=le(ne,"description"),Ee=le(ne,"website"),me=le(ne,"email"),Je=le(le(ne,"categories"),"category"),IA=le(ne,"business_hours"),yA=IA?PA(IA,"business_hours_config"):void 0,XA=Ee?.content?.toString();return{wid:ne.attrs?.jid,address:we?.content?.toString(),description:Ce?.content?.toString()||"",website:XA?[XA]:[],email:me?.content?.toString(),category:Je?.content?.toString(),business_hours:{timezone:IA?.attrs?.timezone,business_config:yA?.map(({attrs:vA})=>vA)}}}},Be=async(W,X)=>{t.info({fromTimestamp:X},"clean dirty bits "+W),await B({tag:"iq",attrs:{to:OA,type:"set",xmlns:"urn:xmpp:whatsapp:dirty",id:d()},content:[{tag:"clean",attrs:{type:W,...X?{timestamp:X.toString()}:null}}]})},Re=W=>({onMutation(X){vne(X,g,I.creds.me,W?{accountSettings:I.creds.accountSettings}:void 0,t)}}),Ue=g.createBufferedFunction(async(W,X)=>{let re=new Map,ne=async me=>{if(re.has(me))return re.get(me)??void 0;let Je=await J(me);return re.set(me,Je??null),Je},we={},Ce={};await I.keys.transaction(async()=>{let me=new Set(W),Je={},IA=new Set;for(;me.size;){let yA={},XA=[];for(let $A of me){let tA=(await I.keys.get("app-state-sync-version",[$A]))[$A];tA?(tA=DU(tA),typeof we[$A]>"u"&&(we[$A]=tA.version)):tA=Sb(),yA[$A]=tA;let et=IA.has($A);et&&IA.delete($A),t.info(`resyncing ${$A} from v${tA.version}${et?" (forcing snapshot)":""}`),XA.push({tag:"collection",attrs:{name:$A,version:tA.version.toString(),return_snapshot:(et||!tA.version).toString()}})}let vA=await f({tag:"iq",attrs:{to:OA,xmlns:"w:sync:app:state",type:"set"},content:[{tag:"sync",attrs:{},content:XA}]}),YA=await Tne(vA,n?.options);for(let $A in YA){let Ge=$A,{patches:tA,hasMorePatches:et,snapshot:Zr}=YA[Ge];try{if(Zr){let{state:ar,mutationMap:yo}=await Rne(Ge,Zr,ne,we[Ge],e.snapshot,t);yA[Ge]=ar,Object.assign(Ce,yo),t.info(`restored state of ${Ge} from snapshot to v${ar.version} with mutations`),await I.keys.set({"app-state-sync-version":{[Ge]:ar}})}if(tA.length){let{state:ar,mutationMap:yo}=await bU(Ge,tA,yA[Ge],ne,n.options,we[Ge],t,e.patch);await I.keys.set({"app-state-sync-version":{[Ge]:ar}}),t.info(`synced ${Ge} to v${ar.version}`),we[Ge]=ar.version,Object.assign(Ce,yo)}et?t.info(`${Ge} has more patches...`):me.delete(Ge)}catch(ar){Je[Ge]=(Je[Ge]||0)+1;let yo={name:Ge,attempt:Je[Ge],version:yA[Ge].version,statusCode:ar.output?.statusCode,errorType:ar.name,error:ar.stack};Pf(ar)&&Je[Ge]>=OU?(t.warn(yo,`${Ge} blocked on missing key from v${yA[Ge].version}, parking after ${Je[Ge]} attempts`),N.add(Ge),me.delete(Ge)):Pf(ar)?(t.info(yo,`${Ge} blocked on missing key from v${yA[Ge].version}, retrying with snapshot`),IA.add(Ge)):bne(ar,Je[Ge])?(t.warn(yo,`failed to sync ${Ge} from v${yA[Ge].version}, giving up`),me.delete(Ge)):(t.info(yo,`failed to sync ${Ge} from v${yA[Ge].version}, forcing snapshot retry`),IA.add(Ge))}}}},I?.creds?.me?.id||"resync-app-state");let{onMutation:Ee}=Re(X);for(let me in Ce)Ee(Ce[me])}),MA=async(W,X="preview",re)=>{let ne=uA(W),we=_t(ne)||qA(ne),Ce=I.creds.me,Ee=Ce&&(ne===uA(Ce.id)||Ce.lid&&ne===uA(Ce.lid)),me;K.profilePicPrivacyToken&&we&&!Ee&&(me=await jU({authState:I,jid:ne,getLIDForPN:T})),W=uA(W);let Je=await f({tag:"iq",attrs:{target:W,to:OA,type:"get",xmlns:"w:profile:picture"},content:oZe(X,me)},re);return le(Je,"picture")?.attrs?.url},Ke=async(W,X,re)=>{let ne=await f({tag:"call",attrs:{id:d(),to:"@call"},content:[{tag:"link_create",attrs:{media:W},content:X?[{tag:"event",attrs:{start_time:String(X.startTime)}}]:void 0}]},re);return le(ne,"link_create")?.attrs?.token},_A=async(W,X)=>{let re=I.creds.me,ne=W==="available";if(ne||W==="unavailable"){if(!re.name){t.warn("no name present, ignoring presence update request...");return}g.emit("connection.update",{isOnline:ne}),ne&&m(),await B({tag:"presence",attrs:{name:re.name.replace(/@/g,""),type:W}})}else{let{server:we}=fA(X);await B({tag:"chatstate",attrs:{from:we==="lid"?re.lid:re.id,to:X},content:[{tag:W==="recording"?"composing":W,attrs:W==="recording"?{media:"audio"}:{}}]})}},at=async W=>{let X=uA(W),ne=_t(X)||qA(X)?await jU({authState:I,jid:X,getLIDForPN:T}):void 0;return B({tag:"presence",attrs:{to:W,id:d(),type:"subscribe"},content:ne})},wA=({tag:W,attrs:X,content:re})=>{let ne,we=X.from,Ce=X.participant||X.from;if(!(a(we)&&we!==OA)){if(W==="presence")ne={lastKnownPresence:X.type==="unavailable"?"unavailable":"available",lastSeen:X.last&&X.last!=="deny"?+X.last:void 0,groupOnlineCount:X.count?+X.count:void 0};else if(Array.isArray(re)){let[Ee]=re,me=Ee.tag;me==="paused"&&(me="available"),Ee.attrs?.media==="audio"&&(me="recording"),ne={lastKnownPresence:me}}else t.error({tag:W,attrs:X,content:re},"recv invalid presence node");ne&&g.emit("presence.update",{id:we,presences:{[Ce]:ne}})}},lt=async W=>{let X=W.type,re=I.creds.myAppStateKeyId;if(!re)throw new DI.Boom("App state key not present!",{statusCode:400});let ne,we;if(await q.mutex(async()=>{await I.keys.transaction(async()=>{t.debug({patch:W},"applying app patch"),await Ue([X],!1);let{[X]:Ce}=await I.keys.get("app-state-sync-version",[X]);ne=Ce?DU(Ce):Sb(),we=await Mne(W,re,ne,J);let{patch:Ee,state:me}=we,Je={tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:sync:app:state"},content:[{tag:"sync",attrs:{},content:[{tag:"collection",attrs:{name:X,version:(me.version-1).toString(),return_snapshot:"false"},content:[{tag:"patch",attrs:{},content:oe.SyncdPatch.encode(Ee).finish()}]}]}]};await f(Je),await I.keys.set({"app-state-sync-version":{[X]:me}})},I?.creds?.me?.id||"app-patch")}),n.emitOwnEvents){let{onMutation:Ce}=Re(!1),{mutationMap:Ee}=await bU(X,[{...we.patch,version:{version:we.state.version}}],ne,J,n.options,void 0,t);for(let me in Ee)Ce(Ee[me])}},Er=async()=>{let W=await f({tag:"iq",attrs:{to:OA,xmlns:"abt",type:"get"},content:[{tag:"props",attrs:{protocol:"1",...I?.creds?.lastPropHash?{hash:I.creds.lastPropHash}:{}}}]}),X=le(W,"props"),re={};X&&(X.attrs?.hash&&(I.creds.lastPropHash=X?.attrs?.hash,g.emit("creds.update",I.creds)),re=xF(X,"prop"));let ne=re[10518]??re.privacy_token_sending_on_all_1_on_1_messages;ne!==void 0&&(K.privacyTokenOn1to1=ne==="true"||ne==="1");let we=re[9666]??re.profile_scraping_privacy_token_in_photo_iq;we!==void 0&&(K.profilePicPrivacyToken=we==="true"||we==="1");let Ce=re[14303]??re.lid_trusted_token_issue_to_lid;return Ce!==void 0&&(K.lidTrustedTokenIssueToLid=Ce==="true"||Ce==="1"),t.debug({serverProps:K},"fetched props"),re},UA=(W,X)=>{let re=kne(W,X);return lt(re)},de=W=>UA({disableLinkPreviews:{isPreviewsDisabled:W}},""),ye=(W,X,re)=>UA({star:{messages:X,star:re}},W),be=(W,X)=>UA({contact:X},W),oA=W=>UA({contact:null},W),pA=(W,X)=>UA({addLabel:{...X}},W),FA=(W,X)=>UA({addChatLabel:{labelId:X}},W),Kt=(W,X)=>UA({removeChatLabel:{labelId:X}},W),st=(W,X,re)=>UA({addMessageLabel:{messageId:X,labelId:re}},W),Dr=(W,X,re)=>UA({removeMessageLabel:{messageId:X,labelId:re}},W),rr=W=>UA({quickReply:W},""),Qo=W=>UA({quickReply:{timestamp:W,deleted:!0}},""),$i=async()=>{await Promise.all([Er(),iA(),$()])},Ae=g.createBufferedFunction(async(W,X)=>{if(g.emit("messages.upsert",{messages:[W],type:X}),W.pushName){let Ce=W.key.fromMe?I.creds.me.id:W.key.participant||W.key.remoteJid;Ce=uA(Ce),W.key.fromMe||g.emit("contacts.update",[{id:Ce,notify:W.pushName,verifiedName:W.verifiedBizName}]),W.key.fromMe&&W.pushName&&I.creds.me?.name!==W.pushName&&g.emit("creds.update",{me:{...I.creds.me,name:W.pushName}})}let re=mb(W.message),ne=re?A(re)&&qf.includes(re.syncType):!1;if(re&&ne){let Ce=re.syncType;Ce===oe.HistorySync.HistorySyncType.INITIAL_BOOTSTRAP&&!V.initialBootstrapComplete&&(V.initialBootstrapComplete=!0,g.emit("messaging-history.status",{syncType:Ce,status:"complete",explicit:!0})),Ce===oe.HistorySync.HistorySyncType.RECENT&&re.progress===100&&!V.recentSyncComplete&&(V.recentSyncComplete=!0,clearTimeout(F),F=void 0,g.emit("messaging-history.status",{syncType:Ce,status:"complete",explicit:!0})),Ce===oe.HistorySync.HistorySyncType.RECENT&&!V.recentSyncComplete&&(clearTimeout(F),F=setTimeout(()=>{V.recentSyncComplete||(V.recentSyncComplete=!0,g.emit("messaging-history.status",{syncType:oe.HistorySync.HistorySyncType.RECENT,status:"paused",explicit:!1})),F=void 0},yce))}re&&L===ga.AwaitingInitialSync&&(G&&(clearTimeout(G),G=void 0),ne?(L=ga.Syncing,t.info("Transitioned to Syncing state")):(L=ga.Online,t.info("History sync skipped, transitioning to Online state and flushing buffer"),g.flush()));let we=async()=>{if(L===ga.Syncing){N.clear(),t.info("Doing app state sync"),await Ue(t7,!0),L=ga.Online,t.info("App state sync complete, transitioning to Online state and flushing buffer"),g.flush();let Ce=(I.creds.accountSyncCounter||0)+1;g.emit("creds.update",{accountSyncCounter:Ce})}};await Promise.all([(async()=>{ne&&await we()})(),Xne(W,{signalRepository:Q,shouldProcessHistoryMsg:ne,placeholderResendCache:k,ev:g,creds:I.creds,keyStore:I.keys,logger:t,options:n.options,getMessage:r})]),W.message?.protocolMessage?.appStateSyncKeyShare&&L===ga.Syncing&&(t.info("App state sync key arrived, triggering app state sync"),await we())});return c.on("CB:presence",wA),c.on("CB:chatstate",wA),c.on("CB:ib,,dirty",async W=>{let{attrs:X}=le(W,"dirty");switch(X.type){case"account_sync":if(X.timestamp){let{lastAccountSyncTimestamp:ne}=I.creds;ne&&await Be("account_sync",ne),ne=+X.timestamp,g.emit("creds.update",{lastAccountSyncTimestamp:ne})}break;case"groups":break;default:t.info({node:W},"received unknown sync");break}}),g.on("connection.update",({connection:W,receivedPendingNotifications:X})=>{if(W==="close"&&(N.clear(),clearTimeout(F),F=void 0),W==="open"&&(i&&$i().catch(ne=>y(ne,"init queries")),_A(o?"available":"unavailable").catch(ne=>y(ne,"presence update requests"))),!X||L!==ga.Connecting)return;if(V.initialBootstrapComplete=!1,V.recentSyncComplete=!1,clearTimeout(F),F=void 0,L=ga.AwaitingInitialSync,t.info("Connection is now AwaitingInitialSync, buffering events"),g.buffer(),!A(oe.Message.HistorySyncNotification.create({syncType:oe.HistorySync.HistorySyncType.RECENT}))){t.info("History sync is disabled by config, not waiting for notification. Transitioning to Online."),L=ga.Online,setTimeout(()=>g.flush(),0);return}if(I.creds.accountSyncCounter>0){t.info("Reconnection with existing sync data, skipping history sync wait. Transitioning to Online."),L=ga.Online,setTimeout(()=>g.flush(),0);return}t.info("First connection, awaiting history sync notification with a 20s timeout."),G&&clearTimeout(G),G=setTimeout(()=>{if(L===ga.AwaitingInitialSync){t.warn("Timeout in AwaitingInitialSync, forcing state to Online and flushing buffer"),L=ga.Online,g.flush();let ne=(I.creds.accountSyncCounter||0)+1;g.emit("creds.update",{accountSyncCounter:ne})}},2e4)}),g.on("creds.update",({myAppStateKeyId:W})=>{if(!W||N.size===0)return;if(L===ga.Syncing){N.clear();return}let X=[...N];N.clear(),t.info({collections:X},"app state sync key arrived, re-syncing blocked collections"),Ue(X,!1).catch(re=>y(re,"blocked collections resync"))}),g.on("lid-mapping.update",async({lid:W,pn:X})=>{try{await Q.lidMapping.storeLIDPNMappings([{lid:W,pn:X}])}catch(re){t.warn({lid:W,pn:X,error:re},"Failed to store LID-PN mapping")}}),_(()=>{G&&(clearTimeout(G),G=void 0),!n.placeholderResendCache&&k.close&&k.close(),L=ga.Connecting,R=void 0}),{...s,serverProps:K,createCallLink:Ke,getBotListV2:Qe,messageMutex:U,receiptMutex:z,appStatePatchMutex:q,notificationMutex:x,fetchPrivacySettings:$,upsertMessage:Ae,appPatch:lt,sendPresenceUpdate:_A,presenceSubscribe:at,profilePictureUrl:MA,fetchBlocklist:iA,fetchStatus:Ie,fetchDisappearingDuration:Xe,updateProfilePicture:je,removeProfilePicture:Oe,updateProfileStatus:EA,updateProfileName:hA,updateBlockStatus:Ze,updateDisableLinkPreviewsPrivacy:de,updateCallPrivacy:se,updateMessagesPrivacy:pe,updateLastSeenPrivacy:Me,updateOnlinePrivacy:fe,updateProfilePicturePrivacy:ke,updateStatusPrivacy:Ne,updateReadReceiptsPrivacy:We,updateGroupsAddPrivacy:ve,updateDefaultDisappearingMode:aA,getBusinessProfile:bA,resyncAppState:Ue,chatModify:UA,cleanDirtyBits:Be,addOrEditContact:be,removeContact:oA,placeholderResendCache:k,addLabel:pA,addChatLabel:FA,removeChatLabel:Kt,addMessageLabel:st,removeMessageLabel:Dr,star:ye,addOrEditQuickReply:rr,removeQuickReply:Qo}};var xce=n=>{let t=Kce(n),{authState:o,ev:i,query:e,upsertMessage:a}=t,A=async(g,c,I)=>e({tag:"iq",attrs:{type:c,xmlns:"w:g2",to:g},content:I}),r=async g=>{let c=await A(g,"get",[{tag:"query",attrs:{request:"interactive"}}]);return OE(c)},s=async()=>{let g=await e({tag:"iq",attrs:{to:"@g.us",xmlns:"w:g2",type:"get"},content:[{tag:"participating",attrs:{},content:[{tag:"participants",attrs:{}},{tag:"description",attrs:{}}]}]}),c={},I=le(g,"groups");if(I){let d=PA(I,"group");for(let B of d){let f=OE({tag:"result",attrs:{},content:[B]});c[f.id]=f}}return t.ev.emit("groups.update",Object.values(c)),c};return t.ws.on("CB:ib,,dirty",async g=>{let{attrs:c}=le(g,"dirty");c.type==="groups"&&(await s(),await t.cleanDirtyBits("groups"))}),{...t,groupMetadata:r,groupCreate:async(g,c)=>{let I=jr(),d=await A("@g.us","set",[{tag:"create",attrs:{subject:g,key:I},content:c.map(B=>({tag:"participant",attrs:{jid:B}}))}]);return OE(d)},groupLeave:async g=>{await A("@g.us","set",[{tag:"leave",attrs:{},content:[{tag:"group",attrs:{id:g}}]}])},groupUpdateSubject:async(g,c)=>{await A(g,"set",[{tag:"subject",attrs:{},content:Buffer.from(c,"utf-8")}])},groupRequestParticipantsList:async g=>{let c=await A(g,"get",[{tag:"membership_approval_requests",attrs:{}}]),I=le(c,"membership_approval_requests");return PA(I,"membership_approval_request").map(B=>B.attrs)},groupRequestParticipantsUpdate:async(g,c,I)=>{let d=await A(g,"set",[{tag:"membership_requests_action",attrs:{},content:[{tag:I,attrs:{},content:c.map(y=>({tag:"participant",attrs:{jid:y}}))}]}]),B=le(d,"membership_requests_action"),f=le(B,I);return PA(f,"participant").map(y=>({status:y.attrs.error||"200",jid:y.attrs.jid}))},groupParticipantsUpdate:async(g,c,I)=>{let d=await A(g,"set",[{tag:I,attrs:{},content:c.map(Q=>({tag:"participant",attrs:{jid:Q}}))}]),B=le(d,I);return PA(B,"participant").map(Q=>({status:Q.attrs.error||"200",jid:Q.attrs.jid,content:Q}))},groupUpdateDescription:async(g,c)=>{let d=(await r(g)).descId??null;await A(g,"set",[{tag:"description",attrs:{...c?{id:jr()}:{delete:"true"},...d?{prev:d}:{}},content:c?[{tag:"body",attrs:{},content:Buffer.from(c,"utf-8")}]:void 0}])},groupInviteCode:async g=>{let c=await A(g,"get",[{tag:"invite",attrs:{}}]);return le(c,"invite")?.attrs.code},groupRevokeInvite:async g=>{let c=await A(g,"set",[{tag:"invite",attrs:{}}]);return le(c,"invite")?.attrs.code},groupAcceptInvite:async g=>{let c=await A("@g.us","set",[{tag:"invite",attrs:{code:g}}]);return le(c,"group")?.attrs.jid},groupRevokeInviteV4:async(g,c)=>!!await A(g,"set",[{tag:"revoke",attrs:{},content:[{tag:"participant",attrs:{jid:c}}]}]),groupAcceptInviteV4:i.createBufferedFunction(async(g,c)=>{g=typeof g=="string"?{remoteJid:g}:g;let I=await A(c.groupJid,"set",[{tag:"accept",attrs:{code:c.inviteCode,expiration:c.inviteExpiration.toString(),admin:g.remoteJid}}]);return g.id&&(c=oe.Message.GroupInviteMessage.fromObject(c),c.inviteExpiration=0,c.inviteCode="",i.emit("messages.update",[{key:g,update:{message:{groupInviteMessage:c}}}])),await a({key:{remoteJid:c.groupJid,id:jr(t.user?.id),fromMe:!1,participant:g.remoteJid},messageStubType:RA.GROUP_PARTICIPANT_ADD,messageStubParameters:[JSON.stringify(o.creds.me)],participant:g.remoteJid,messageTimestamp:ba()},"notify"),I.attrs.from}),groupGetInviteInfo:async g=>{let c=await A("@g.us","get",[{tag:"invite",attrs:{code:g}}]);return OE(c)},groupToggleEphemeral:async(g,c)=>{let I=c?{tag:"ephemeral",attrs:{expiration:c.toString()}}:{tag:"not_ephemeral",attrs:{}};await A(g,"set",[I])},groupSettingUpdate:async(g,c)=>{await A(g,"set",[{tag:c,attrs:{}}])},groupMemberAddMode:async(g,c)=>{await A(g,"set",[{tag:"member_add_mode",attrs:{},content:c}])},groupJoinApprovalMode:async(g,c)=>{await A(g,"set",[{tag:"membership_approval_mode",attrs:{},content:[{tag:"group_join",attrs:{state:c}}]}])},groupFetchAllParticipating:s}},OE=n=>{let t=le(n,"group");if(!t){let B=le(n,"error");if(B){let f=B.attrs.code?+B.attrs.code:500,Q=B.attrs.text||"group metadata query failed";throw new CM.Boom(Q,{statusCode:f,data:B})}throw new CM.Boom("Invalid group metadata response: missing node",{data:n})}if(!t.attrs.id)throw new CM.Boom("Invalid group metadata response: missing group id",{data:t});let o=le(t,"description"),i,e,a,A,r,s;o&&(i=jA(o,"body"),a=o.attrs.participant?uA(o.attrs.participant):void 0,A=o.attrs.participant_pn?uA(o.attrs.participant_pn):void 0,r=o.attrs.participant_username||void 0,s=+o.attrs.t,e=o.attrs.id);let g=t.attrs.id.includes("@")?t.attrs.id:yr(t.attrs.id,"g.us"),c=le(t,"ephemeral")?.attrs.expiration,I=jA(t,"member_add_mode")==="all_member_add";return{id:g,notify:t.attrs.notify,addressingMode:t.attrs.addressing_mode==="lid"?yB.LID:yB.PN,subject:t.attrs.subject,subjectOwner:t.attrs.s_o,subjectOwnerPn:t.attrs.s_o_pn,subjectOwnerUsername:t.attrs.s_o_username,subjectTime:+t.attrs.s_t,size:t.attrs.size?+t.attrs.size:PA(t,"participant").length,creation:+t.attrs.creation,owner:t.attrs.creator?uA(t.attrs.creator):void 0,ownerPn:t.attrs.creator_pn?uA(t.attrs.creator_pn):void 0,ownerUsername:t.attrs.creator_username||void 0,owner_country_code:t.attrs.creator_country_code,desc:i,descId:e,descOwner:a,descOwnerPn:A,descOwnerUsername:r,descTime:s,linkedParent:le(t,"linked_parent")?.attrs.jid||void 0,restrict:!!le(t,"locked"),announce:!!le(t,"announcement"),isCommunity:!!le(t,"parent"),isCommunityAnnounce:!!le(t,"default_sub_group"),joinApprovalMode:!!le(t,"membership_approval_mode"),memberAddMode:I,participants:PA(t,"participant").map(({attrs:B})=>({id:B.jid,phoneNumber:qA(B.jid)&&_t(B.phone_number)?B.phone_number:void 0,lid:_t(B.jid)&&qA(B.lid)?B.lid:void 0,username:B.participant_username||B.username||void 0,admin:B.type||null})),ephemeralDuration:c?+c:void 0}};var bE=qe(Kr(),1);var nZe=n=>{let{id:t,thread_metadata:o,viewer_metadata:i}=n;return{id:t,owner:void 0,name:o.name.text,creation_time:parseInt(o.creation_time,10),description:o.description.text,invite:o.invite,subscribers:parseInt(o.subscribers_count,10),verification:o.verification,picture:{id:o.picture.id,directPath:o.picture.direct_path},mute_state:i.mute}},sZe=n=>typeof n!="object"||n===null?null:"id"in n&&typeof n.id=="string"?n:"result"in n&&typeof n.result=="object"&&n.result!==null&&"id"in n.result?n.result:null,Yce=n=>{let t=xce(n),{query:o,generateMessageTag:i}=t,e=(A,r,s)=>Wf(A,r,s,o,i),a=async(A,r)=>{let s={newsletter_id:A,updates:{...r,settings:null}};return e(s,ca.UPDATE_METADATA,"xwa2_newsletter_update")};return{...t,newsletterCreate:async(A,r)=>{let g=await e({input:{name:A,description:r??null}},ca.CREATE,Da.xwa2_newsletter_create);return nZe(g)},newsletterUpdate:a,newsletterSubscribers:async A=>e({newsletter_id:A},ca.SUBSCRIBERS,Da.xwa2_newsletter_subscribers),newsletterMetadata:async(A,r)=>{let s={fetch_creation_time:!0,fetch_full_image:!0,fetch_viewer_metadata:!0,input:{key:r,type:A.toUpperCase()}},g=await e(s,ca.METADATA,Da.xwa2_newsletter_metadata);return sZe(g)},newsletterFollow:A=>e({newsletter_id:A},ca.FOLLOW,Da.xwa2_newsletter_join_v2),newsletterUnfollow:A=>e({newsletter_id:A},ca.UNFOLLOW,Da.xwa2_newsletter_leave_v2),newsletterMute:A=>e({newsletter_id:A},ca.MUTE,Da.xwa2_newsletter_mute_v2),newsletterUnmute:A=>e({newsletter_id:A},ca.UNMUTE,Da.xwa2_newsletter_unmute_v2),newsletterUpdateName:async(A,r)=>await a(A,{name:r}),newsletterUpdateDescription:async(A,r)=>await a(A,{description:r}),newsletterUpdatePicture:async(A,r)=>{let{img:s}=await ub(r);return await a(A,{picture:s.toString("base64")})},newsletterRemovePicture:async A=>await a(A,{picture:""}),newsletterReactMessage:async(A,r,s)=>{await o({tag:"message",attrs:{to:A,...s?{}:{edit:"7"},type:"reaction",server_id:r,id:i()},content:[{tag:"reaction",attrs:s?{code:s}:{}}]})},newsletterFetchMessages:async(A,r,s,g)=>{let c={count:r.toString()};return typeof s=="number"&&(c.since=s.toString()),g&&(c.after=g.toString()),await o({tag:"iq",attrs:{id:i(),type:"get",xmlns:"newsletter",to:A},content:[{tag:"message_updates",attrs:c}]})},subscribeNewsletterUpdates:async A=>{let r=await o({tag:"iq",attrs:{id:i(),type:"set",xmlns:"newsletter",to:A},content:[{tag:"live_updates",attrs:{},content:[]}]}),g=le(r,"live_updates")?.attrs?.duration;return g?{duration:g}:null},newsletterAdminCount:async A=>(await e({newsletter_id:A},ca.ADMIN_COUNT,Da.xwa2_newsletter_admin_count)).admin_count,newsletterChangeOwner:async(A,r)=>{await e({newsletter_id:A,user_id:r},ca.CHANGE_OWNER,Da.xwa2_newsletter_change_owner)},newsletterDemote:async(A,r)=>{await e({newsletter_id:A,user_id:r},ca.DEMOTE,Da.xwa2_newsletter_demote)},newsletterDelete:async A=>{await e({newsletter_id:A},ca.DELETE,Da.xwa2_newsletter_delete_v2)}}};var jce=n=>{let{logger:t,linkPreviewImageThumbnailWidth:o,generateHighQualityLinkPreview:i,options:e,patchMessageBeforeSending:a,cachedGroupMetadata:A,enableRecentMessageCache:r,maxMsgRetryCount:s}=n,g=Yce(n),{ev:c,authState:I,messageMutex:d,signalRepository:B,upsertMessage:f,query:Q,fetchPrivacySettings:y,sendNode:m,groupMetadata:_,groupToggleEphemeral:T,registerSocketEndHandler:R}=g,K=B.lidMapping.getLIDForPN.bind(B.lidMapping),L=new Set,U=n.userDevicesCache||new $g({stdTTL:mI.USER_DEVICES,useClones:!1}),z=ac(),q=r?new Nb(t,s):null,x=Lce(),G,V=cU,F=async(Qe=!1)=>{let Ie=await G;return(!Ie||Qe||new Date().getTime()-Ie.fetchDate.getTime()>Ie.ttl*1e3)&&(G=(async()=>{let Xe=await Q({tag:"iq",attrs:{type:"set",xmlns:"w:m",to:OA},content:[{tag:"media_conn",attrs:{}}]}),je=le(Xe,"media_conn"),Oe={hosts:PA(je,"host").map(({attrs:EA})=>({hostname:EA.hostname,maxContentLengthBytes:+EA.maxContentLengthBytes})),auth:je.attrs.auth,ttl:+je.attrs.ttl,fetchDate:new Date};return t.debug("fetched media conn"),Oe.hosts[0]&&(V=Oe.hosts[0].hostname),Oe})()),G},N=async(Qe,Ie,Xe,je)=>{if(!Xe||Xe.length===0)throw new bE.Boom("missing ids in receipt");let Oe={tag:"receipt",attrs:{id:Xe[0]}};(je==="read"||je==="read-self")&&(Oe.attrs.t=ba().toString()),je==="sender"&&(_t(Qe)||qA(Qe))?(Oe.attrs.recipient=Qe,Oe.attrs.to=Ie):(Oe.attrs.to=Qe,Ie&&(Oe.attrs.participant=Ie)),je&&(Oe.attrs.type=je);let hA=Xe.slice(1);hA.length&&(Oe.content=[{tag:"list",attrs:{},content:hA.map(iA=>({tag:"item",attrs:{id:iA}}))}]),t.debug({attrs:Oe.attrs,messageIds:Xe},"sending receipt for messages"),await m(Oe)},k=async(Qe,Ie)=>{let Xe=Zoe(Qe);for(let{jid:je,participant:Oe,messageIds:EA}of Xe)await N(je,Oe,EA,Ie)},J=async Qe=>{let Xe=(await y()).readreceipts==="all"?"read":"read-self";await k(Qe,Xe)},$=async(Qe,Ie,Xe)=>{let je=[];Ie||t.debug("not using cache for devices");let Oe=[],EA=Qe.map(Be=>{let Re=fA(Be),Ue=Re?.user,MA=Re?.device;return typeof MA=="number"&&MA>=0&&Ue?(je.push({user:Ue,device:MA,jid:Be}),null):(Be=uA(Be),{jid:Be,user:Ue})}).filter(Be=>Be!==null),hA;if(Ie&&U.mget){let Be=EA.map(Re=>Re?.user).filter(Boolean);hA=await U.mget(Be)}for(let{jid:Be,user:Re}of EA)if(Ie){let Ue=hA?.[Re]||(U.mget?void 0:await U.get(Re));if(Ue){let MA=Ue.map(Ke=>({...Ke,jid:yr(Ke.user,Ke.server,Ke.device)}));je.push(...MA),t.trace({user:Re},"using cache for devices")}else Oe.push(Be)}else Oe.push(Be);if(!Oe.length)return je;let iA=new Set;for(let Be of Oe)if(qA(Be)||Ia(Be)){let Re=fA(Be)?.user;Re&&iA.add(Re)}let Ze=new rg().withContext("message").withDeviceProtocol().withLIDProtocol();for(let Be of Oe)Ze.withUser(new tg().withId(Be));let bA=await g.executeUSyncQuery(Ze);if(bA){let Be=bA.list.filter(Ke=>!!Ke.lid);if(Be.length>0){t.trace("Storing LID maps from device call"),await B.lidMapping.storeLIDPNMappings(Be.map(Ke=>({lid:Ke.lid,pn:Ke.id})));try{let Ke=Be.map(_A=>_A.lid);Ke.length&&await pe(Ke,!0)}catch(Ke){t.warn({e:Ke,count:Be.length},"failed to assert sessions for newly mapped LIDs")}}let Re=one(bA?.list,I.creds.me.id,I.creds.me.lid,Xe),Ue={};for(let Ke of Re)Ue[Ke.user]=Ue[Ke.user]||[],Ue[Ke.user]?.push(Ke);for(let[Ke,_A]of Object.entries(Ue)){let at=iA.has(Ke);for(let wA of _A){let lt=at?yr(Ke,wA.server,wA.device):yr(wA.user,wA.server,wA.device);je.push({...wA,jid:lt}),t.debug({user:wA.user,device:wA.device,finalJid:lt,usedLid:at},"Processed device with LID priority")}}await z.mutex(async()=>{if(U.mset)await U.mset(Object.entries(Ue).map(([Ke,_A])=>({key:Ke,value:_A})));else for(let Ke in Ue)Ue[Ke]&&await U.set(Ke,Ue[Ke])});let MA={};for(let[Ke,_A]of Object.entries(Ue))_A&&_A.length>0&&(MA[Ke]=_A.map(at=>at.device?.toString()||"0"));if(Object.keys(MA).length>0)try{await I.keys.set({"device-list":MA}),t.debug({userCount:Object.keys(MA).length},"stored user device lists for bulk migration")}catch(Ke){t.warn({error:Ke},"failed to store user device lists")}}return je},ie=(Qe,Ie)=>fe(Qe,{protocolMessage:{type:oe.Message.ProtocolMessage.Type.GROUP_MEMBER_LABEL_CHANGE,memberLabel:{label:Ie?.slice(0,30),labelTimestamp:ba()}}},{additionalNodes:[{tag:"meta",attrs:{tag_reason:"user_update",appdata:"member_tag"},content:void 0}]}),pe=async(Qe,Ie)=>{let Xe=!1,je=[...new Set(Qe)],Oe=[];t.debug({jids:Qe},"assertSessions call with jids");for(let EA of je)!Ie&&(await B.validateSession(EA)).exists||Oe.push(EA);if(Oe.length){let EA=[...Oe.filter(iA=>!!qA(iA)||!!Ia(iA)),...(await B.lidMapping.getLIDsForPNs(Oe.filter(iA=>!!_t(iA)||!!mr(iA)))||[]).map(iA=>iA.lid)];t.debug({jidsRequiringFetch:Oe,wireJids:EA},"fetching sessions");let hA=await Q({tag:"iq",attrs:{xmlns:"encrypt",type:"get",to:OA},content:[{tag:"key",attrs:{},content:EA.map(iA=>{let Ze={jid:iA};return Ie&&(Ze.reason="identity"),{tag:"user",attrs:Ze}})}]});await ine(hA,B),Xe=!0}return Xe},se=async Qe=>{if(!I.creds.me?.id)throw new bE.Boom("Not authenticated");let Ie={protocolMessage:{peerDataOperationRequestMessage:Qe,type:oe.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_MESSAGE}},Xe=uA(I.creds.me.id);return await fe(Xe,Ie,{additionalAttributes:{category:"peer",push_priority:"high_force"},additionalNodes:[{tag:"meta",attrs:{appdata:"default"}}]})},Me=async(Qe,Ie,Xe,je)=>{if(!Qe.length)return{nodes:[],shouldIncludeDeviceIdentity:!1};let Oe=await a(Ie,Qe),EA=Array.isArray(Oe)?Oe:Qe.map(Ue=>({recipientJid:Ue,message:Oe})),hA=!1,iA=I.creds.me.id,Ze=I.creds.me?.lid,bA=Ze?fA(Ze)?.user:null,Be=EA.map(async({recipientJid:Ue,message:MA})=>{try{if(!Ue)return null;let Ke=MA;if(je){let{user:lt}=fA(Ue),{user:Er}=fA(iA),UA=bA;(lt===Er||UA&<===UA)&&!(Ue===iA||Ze&&Ue===Ze)&&(Ke=je,t.debug({jid:Ue,targetUser:lt},"Using DSM for own device"))}let _A=fh(Ke),at=Ue;return await x.mutex(at,async()=>{let{type:lt,ciphertext:Er}=await B.encryptMessage({jid:Ue,data:_A});return lt==="pkmsg"&&(hA=!0),{tag:"to",attrs:{jid:Ue},content:[{tag:"enc",attrs:{v:"2",type:lt,...Xe||{}},content:Er}]}})}catch(Ke){return t.error({jid:Ue,err:Ke},"Failed to encrypt for recipient"),null}}),Re=(await Promise.all(Be)).filter(Ue=>Ue!==null);if(Qe.length>0&&Re.length===0)throw new bE.Boom("All encryptions failed",{statusCode:500});return{nodes:Re,shouldIncludeDeviceIdentity:hA}},fe=async(Qe,Ie,{messageId:Xe,participant:je,additionalAttributes:Oe,additionalNodes:EA,useUserDevicesCache:hA,useCachedGroupMetadata:iA,statusJidList:Ze})=>{let bA=jne(I.creds),Be=I.creds.me?.lid,Re=!!je?.jid,Ue=Re,MA="status@broadcast",{user:Ke,server:_A}=fA(Qe),at=_A==="g.us",wA=Qe===MA,lt=_A==="lid",Er=_A==="newsletter",UA=at||wA,de=Qe;Xe=Xe||jr(bA),hA=hA!==!1,iA=iA!==!1&&!wA;let ye=[],be=wA?MA:de,oA=[],pA=[],FA,Kt={deviceSentMessage:{destinationJid:be,message:Ie},messageContextInfo:Ie.messageContextInfo},st={};if(je){!at&&!wA&&(Oe={...Oe,device_fanout:"false"});let{user:Dr,device:rr}=fA(je.jid);pA.push({user:Dr,device:rr,jid:je.jid})}return await I.keys.transaction(async()=>{let Dr=Ne(Ie);if(Dr&&(st.mediatype=Dr),Er){let Ce=a?await a(Ie,[]):Ie,Ee=e$(Ce);oA.push({tag:"plaintext",attrs:{},content:Ee});let me={tag:"message",attrs:{to:Qe,id:Xe,type:ke(Ie),...Oe||{}},content:oA};t.debug({msgId:Xe},`sending newsletter message to ${Qe}`),await m(me);return}if((Ra(Ie)?.pinInChatMessage||Ra(Ie)?.reactionMessage)&&(st["decrypt-fail"]="hide"),UA&&!Re){let[Ce,Ee]=await Promise.all([(async()=>{let tA=iA&&A?await A(Qe):void 0;return tA&&Array.isArray(tA?.participants)?t.trace({jid:Qe,participants:tA.participants.length},"using cached group metadata"):wA||(tA=await _(Qe)),tA})(),(async()=>!je&&!wA?(await I.keys.get("sender-key-memory",[Qe]))[Qe]||{}:{})()]),me=Ce?Ce.participants.map(tA=>tA.id):[];Ce?.ephemeralDuration&&Ce.ephemeralDuration>0&&(Oe={...Oe,expiration:Ce.ephemeralDuration.toString()}),wA&&Ze&&me.push(...Ze);let Je=await $(me,!!hA,!1);pA.push(...Je),at&&(Oe={...Oe,addressing_mode:Ce?.addressingMode||"lid"});let IA=await a(Ie);if(Array.isArray(IA))throw new bE.Boom("Per-jid patching is not supported in groups");let yA=fh(IA);FA=IA;let vA=(Oe?.addressing_mode||Ce?.addressingMode||"lid")==="lid"&&Be?Be:bA,{ciphertext:YA,senderKeyDistributionMessage:$A}=await B.encryptGroupMessage({group:be,data:yA,meId:vA}),Ge=[];for(let tA of pA){let et=tA.jid;(!!!Ee[et]||je)&&!Ia(et)&&!mr(et)&&tA.device!==99&&(Ge.push(et),Ee[et]=!0)}if(Ge.length){t.debug({senderKeyJids:Ge},"sending new sender key");let tA={senderKeyDistributionMessage:{axolotlSenderKeyDistributionMessage:$A,groupId:be}};await pe(Ge);let Zr=await Me(Ge,tA,st);Ue=Ue||Zr.shouldIncludeDeviceIdentity,ye.push(...Zr.nodes)}oA.push({tag:"enc",attrs:{v:"2",type:"skmsg",...st},content:YA}),await I.keys.set({"sender-key-memory":{[Qe]:Ee}})}else{let Ce=bA;lt&&Be?(Ce=Be,t.debug({to:Qe,ownId:Ce},"Using LID identity for @lid conversation")):t.debug({to:Qe,ownId:Ce},"Using PN identity for @s.whatsapp.net conversation");let{user:Ee}=fA(Ce);if(!je){let tA=await a(Ie,[Qe]);FA=Array.isArray(tA)?tA.find(et=>et.recipientJid===Qe)||tA[0]:tA}if(!Re){let tA=lt?"lid":"s.whatsapp.net";if(pA.push({user:Ke,device:0,jid:yr(Ke,tA,0)}),Ke!==Ee){let et=lt?"lid":"s.whatsapp.net",Zr=lt&&Be?fA(Be).user:fA(bA).user;pA.push({user:Zr,device:0,jid:yr(Zr,et,0)})}if(Oe?.category!=="peer"){pA.length=0;let et=lt&&Be?yr(fA(Be)?.user,"lid",void 0):yr(fA(bA)?.user,"s.whatsapp.net",void 0),Zr=await $([et,Qe],!0,!1);pA.push(...Zr),t.debug({deviceCount:pA.length,devices:pA.map(ar=>`${ar.user}:${ar.device}@${fA(ar.jid)?.server}`)},"Device enumeration complete with unified addressing")}}let me=[],Je=[],IA=[],{user:yA}=fA(bA),{user:XA}=Be?fA(Be):{user:null};for(let{user:tA,jid:et}of pA){if(et===bA||Be&&et===Be){t.debug({jid:et,meId:bA,meLid:Be},"Skipping exact sender device (whatsmeow pattern)");continue}tA===yA||tA===XA?Je.push(et):IA.push(et),me.push(et)}await pe(me);let[{nodes:vA,shouldIncludeDeviceIdentity:YA},{nodes:$A,shouldIncludeDeviceIdentity:Ge}]=await Promise.all([Me(Je,Kt||Ie,st),Me(IA,Ie,st,Kt)]);ye.push(...vA),ye.push(...$A),(Je.length>0||IA.length>0)&&(st.phash=Y7([...Je,...IA])),Ue=Ue||YA||Ge}if(Re){let Ce=qA(je.jid),Ee=Rt(je.jid,Ce?Be:bA),me=Ie;if(UA){let XA;if(Be&&await B.hasSenderKey({group:be,meId:Be})?XA=Be:await B.hasSenderKey({group:be,meId:bA})&&(XA=bA),XA)try{let vA=await B.getSenderKeyDistributionMessage({group:be,meId:XA});me={...Ie,senderKeyDistributionMessage:{groupId:be,axolotlSenderKeyDistributionMessage:vA}}}catch(vA){t.warn({err:vA,jid:be},"failed to build SKDM for retry, sending without it")}}let Je=Ee?fh({deviceSentMessage:{destinationJid:be,message:me}}):fh(me),{type:IA,ciphertext:yA}=await B.encryptMessage({data:Je,jid:je.jid});oA.push({tag:"enc",attrs:{v:"2",type:IA,count:je.count.toString()},content:yA})}if(ye.length)if(Oe?.category==="peer"){let Ce=ye[0]?.content?.[0];Ce&&oA.push(Ce)}else oA.push({tag:"participants",attrs:{},content:ye});let rr={tag:"message",attrs:{id:Xe,to:be,type:ke(Ie),...Oe||{}},content:oA};if(je?xr(be)?(rr.attrs.to=be,rr.attrs.participant=je.jid):Rt(je.jid,bA)?(rr.attrs.to=je.jid,rr.attrs.recipient=be):rr.attrs.to=je.jid:rr.attrs.to=be,Ue&&(rr.content.push({tag:"device-identity",attrs:{},content:kf(I.creds.account,!0)}),t.debug({jid:Qe},"adding device identity")),!Er&&!Re&&FA?.messageContextInfo?.messageSecret&&Qb(FA))try{let Ce=fh(FA),Ee={id:Xe,fromMe:!0,remoteJid:be,participant:je?.jid},me=await Joe(Ce,FA,Ee);me&&(rr.content.push(me),t.trace({jid:Qe},"added reporting token to message"))}catch(Ce){t.warn({jid:Qe,trace:Ce?.stack},"failed to attach reporting token")}let Qo=Oe?.category==="peer",$i=!at&&!Re&&!wA&&!Er&&!Qo,Ae=$i?await Xs(be,K):be,X=($i?await I.keys.get("tctoken",[Ae]):{})[Ae],re=X?.token;if(re?.length&&gp(X?.timestamp)){t.debug({jid:be,timestamp:X?.timestamp},"tctoken expired, clearing"),re=void 0;let Ce=X?.senderTimestamp!==void 0?{token:Buffer.alloc(0),senderTimestamp:X.senderTimestamp}:null;try{await I.keys.set({tctoken:{[Ae]:Ce}})}catch(Ee){t.debug({jid:be,err:Ee?.message},"failed to persist tctoken expiry cleanup")}}re?.length&&g.serverProps.privacyTokenOn1to1&&rr.content.push({tag:"tctoken",attrs:{},content:re}),EA&&EA.length>0&&rr.content.push(...EA),t.debug({msgId:Xe},`sending message to ${ye.length} devices`),await m(rr);let ne=!!Ra(Ie)?.protocolMessage,we=be===s7||c7(be)||ph(be);if($i&&!ne&&!we&&Wne(X?.senderTimestamp)&&!L.has(Ae)){L.add(Ae);let Ce=ba(),Ee=B.lidMapping.getPNForLID.bind(B.lidMapping);Lf(be,g.serverProps.lidTrustedTokenIssueToLid,K,Ee).then(me=>We([me],Ce)).then(async me=>{await hE({result:me,fallbackJid:Ae,keys:I.keys,getLIDForPN:K});let IA=(await I.keys.get("tctoken",[Ae]))[Ae],yA=await dE(I.keys,[Ae]);await I.keys.set({tctoken:{[Ae]:{token:Buffer.alloc(0),...IA,senderTimestamp:Ce},...yA}})}).catch(me=>{t.debug({jid:be,err:me?.message},"fire-and-forget tctoken issuance failed")}).finally(()=>{L.delete(Ae)})}q&&!je&&q.addRecentMessage(be,Xe,Ie)},bA),Xe},ke=Qe=>{let Ie=Ra(Qe);return Ie?Ie.reactionMessage||Ie.encReactionMessage?"reaction":Ie.pollCreationMessage||Ie.pollCreationMessageV2||Ie.pollCreationMessageV3||Ie.pollUpdateMessage?"poll":Ie.eventMessage?"event":Ne(Ie)!==""?"media":"text":"text"},Ne=Qe=>Qe.imageMessage?"image":Qe.videoMessage?Qe.videoMessage.gifPlayback?"gif":"video":Qe.audioMessage?Qe.audioMessage.ptt?"ptt":"audio":Qe.contactMessage?"vcard":Qe.documentMessage?"document":Qe.contactsArrayMessage?"contact_array":Qe.liveLocationMessage?"livelocation":Qe.stickerMessage?"sticker":Qe.listMessage?"list":Qe.listResponseMessage?"list_response":Qe.buttonsResponseMessage?"buttons_response":Qe.orderMessage?"order":Qe.productMessage?"product":Qe.interactiveResponseMessage?"native_flow_response":Qe.groupInviteMessage?"url":"",We=async(Qe,Ie)=>{let Xe=(Ie??ba()).toString();return await Q({tag:"iq",attrs:{to:OA,type:"set",xmlns:"privacy"},content:[{tag:"tokens",attrs:{},content:Qe.map(Oe=>({tag:"token",attrs:{jid:uA(Oe),t:Xe,type:"trusted_contact"}}))}]})},ve=Goe(n,F),aA=XF(c,"messages.media-update");return R(()=>{!n.userDevicesCache&&U.close&&U.close(),G=void 0,q&&q.clear()}),{...g,userDevicesCache:U,devicesMutex:z,issuePrivacyTokens:We,assertSessions:pe,relayMessage:fe,sendReceipt:N,sendReceipts:k,readMessages:J,refreshMediaConn:F,getMediaHost:()=>V,waUploadToServer:ve,fetchPrivacySettings:y,sendPeerDataOperationMessage:se,createParticipantNodes:Me,getUSyncDevices:$,messageRetryManager:q,updateMemberLabel:ie,updateMediaMessage:async Qe=>{let Ie=Xoe(Qe.message),Xe=Ie.mediaKey,je=I.creds.me.id,Oe=Loe(Qe.key,Xe,je),EA;if(await Promise.all([m(Oe),aA(async hA=>{let iA=hA.find(Ze=>Ze.key.id===Qe.key.id);if(iA){if(iA.error)EA=iA.error;else try{let Ze=Hoe(iA.media,Xe,iA.key.id);if(Ze.result!==oe.MediaRetryNotification.ResultType.SUCCESS){let bA=oe.MediaRetryNotification.ResultType[Ze.result];throw new bE.Boom(`Media re-upload failed by device (${bA})`,{data:Ze,statusCode:IU(Ze.result)||404})}Ie.directPath=Ze.directPath,Ie.url=bf(Ie.directPath,V),t.debug({directPath:Ze.directPath,key:iA.key},"media update successful")}catch(Ze){EA=Ze}return!0}})]),EA)throw EA;return c.emit("messages.update",[{key:Qe.key,update:{message:Qe.message}}]),Qe},sendMessage:async(Qe,Ie,Xe={})=>{let je=I.creds.me.id;if(typeof Ie=="object"&&"disappearingMessagesInChat"in Ie&&typeof Ie.disappearingMessagesInChat<"u"&&xr(Qe)){let{disappearingMessagesInChat:Oe}=Ie;await T(Qe,typeof Oe=="boolean"?Oe?Nf:0:Oe)}else{let Oe=await Voe(Qe,Ie,{logger:t,userJid:je,getUrlInfo:Ue=>Vne(Ue,{thumbnailWidth:o,fetchOpts:{timeout:3e3,...e||{}},logger:t,uploadImage:i?ve:void 0}),getProfilePicUrl:g.profilePictureUrl,getCallLink:g.createCallLink,upload:ve,mediaCache:n.mediaCache,options:n.options,messageId:jr(g.user?.id),...Xe}),EA="event"in Ie&&!!Ie.event,hA="delete"in Ie&&!!Ie.delete,iA="edit"in Ie&&!!Ie.edit,Ze="pin"in Ie&&!!Ie.pin,bA="poll"in Ie&&!!Ie.poll,Be={},Re=[];return hA?xr(Ie.delete?.remoteJid)&&!Ie.delete?.fromMe?Be.edit="8":Be.edit="7":iA?Be.edit="1":Ze?Be.edit="2":bA?Re.push({tag:"meta",attrs:{polltype:"creation"}}):EA&&Re.push({tag:"meta",attrs:{event_type:"creation"}}),await fe(Qe,Oe.message,{messageId:Oe.key.id,useCachedGroupMetadata:Xe.useCachedGroupMetadata,additionalAttributes:Be,statusJidList:Xe.statusJidList,additionalNodes:Re}),n.emitOwnEvents&&process.nextTick(async()=>{await d.mutex(()=>f(Oe,"append"))}),Oe}}}};var gZe=new Set(Object.values(Vc));function cZe(n){return typeof n=="string"&&gZe.has(n)}var Jce=n=>{let{logger:t,retryRequestDelayMs:o,maxMsgRetryCount:i,getMessage:e,shouldIgnoreJid:a,enableAutoSessionRecreation:A}=n,r=jce(n),{userDevicesCache:s,devicesMutex:g,ev:c,authState:I,ws:d,messageMutex:B,notificationMutex:f,receiptMutex:Q,signalRepository:y,query:m,upsertMessage:_,resyncAppState:T,onUnexpectedError:R,assertSessions:K,sendNode:L,relayMessage:U,sendReceipt:z,uploadPreKeys:q,sendPeerDataOperationMessage:x,messageRetryManager:G,registerSocketEndHandler:V,issuePrivacyTokens:F,fetchAccountReachoutTimelock:N,placeholderResendCache:k}=r,J=y.lidMapping.getLIDForPN.bind(y.lidMapping),$=ac(),ie=n.msgRetryCounterCache||new $g({stdTTL:mI.MSG_RETRY,useClones:!1}),pe=n.callOfferCache||new $g({stdTTL:mI.CALL_OFFER,useClones:!1}),se=new $g({stdTTL:5,useClones:!1}),Me=!1,fe=async(Ae,W,X)=>{if(!I.creds.me?.id)throw new Zf.Boom("Not authenticated");let re={historySyncOnDemandRequest:{chatJid:W.remoteJid,oldestMsgFromMe:W.fromMe,oldestMsgId:W.id,oldestMsgTimestampMs:X,onDemandMsgCount:Ae},peerDataOperationRequestType:oe.Message.PeerDataOperationRequestType.HISTORY_SYNC_ON_DEMAND};return x(re)},ke=async(Ae,W)=>{if(!I.creds.me?.id)throw new Zf.Boom("Not authenticated");if(await k.get(Ae?.id)){t.debug({messageKey:Ae},"already requested resend");return}else await k.set(Ae?.id,W||!0);if(await kB(2e3),!await k.get(Ae?.id))return t.debug({messageKey:Ae},"message received while resend requested"),"RESOLVED";let X={placeholderMessageResendRequest:[{messageKey:Ae}],peerDataOperationRequestType:oe.Message.PeerDataOperationRequestType.PLACEHOLDER_MESSAGE_RESEND};return setTimeout(async()=>{await k.get(Ae?.id)&&(t.debug({messageKey:Ae},"PDO message without response after 8 seconds. Phone possibly offline"),await k.del(Ae?.id))},8e3),x(X)},Ne=async Ae=>{let W=le(Ae,"update");if(W){let X=W.attrs?.op_name;if(!X){t.warn({node:Gn(Ae)},"mex notification missing op_name, fallback to legacy"),await aA(Ae);return}let re;try{re=JSON.parse(W.content.toString())}catch(we){t.error({err:we,opName:X},"failed to parse mex notification JSON");return}if(re.errors?.length){t.warn({errors:re.errors,opName:X},"mex notification has GQL errors");return}let ne=re.data;if(!ne){t.warn({opName:X},"mex notification has null data");return}switch(t.debug({opName:X},"processing mex notification"),X){case"NotificationUserReachoutTimelockUpdate":We(ne);break;case"MessageCappingInfoNotification":ve(ne);break;case"NotificationNewsletterUpdate":case"NotificationLinkedProfilesUpdates":case"NotificationNewsletterAdminPromote":case"NotificationNewsletterAdminDemote":case"NotificationNewsletterUserSettingChange":case"NotificationNewsletterJoin":case"NotificationNewsletterLeave":case"NotificationNewsletterStateChange":case"NotificationNewsletterAdminMetadataUpdate":case"NotificationNewsletterOwnerUpdate":case"NotificationNewsletterAdminInviteRevoke":case"NotificationNewsletterWamoSubStatusChange":case"NotificationNewsletterBlockUser":case"NotificationNewsletterPaidPartnership":case"NotificationNewsletterMilestone":case"NewsletterResponseStateUpdate":await aA(Ae);break;default:t.debug({opName:X},"unhandled mex notification");break}return}await aA(Ae)},We=Ae=>{let W=Ae.xwa2_notify_account_reachout_timelock;if(!W){t.warn("reachout timelock notification missing payload");return}if(!W.is_active){t.info("reachout timelock restriction lifted"),c.emit("connection.update",{reachoutTimeLock:{isActive:!1,enforcementType:Vc.DEFAULT}});return}let X=W.time_enforcement_ends?new Date(parseInt(W.time_enforcement_ends,10)*1e3):new Date(Date.now()+6e4),re=cZe(W.enforcement_type)?W.enforcement_type:Vc.DEFAULT;t.info({enforcementType:re,timeEnforcementEnds:X},"reachout timelock restriction set"),c.emit("connection.update",{reachoutTimeLock:{isActive:!0,timeEnforcementEnds:X,enforcementType:re}})},ve=Ae=>{let W=Ae.xwa2_notify_new_chat_messages_capping_info_update;if(!W){t.warn("message capping notification missing payload");return}t.info({payload:W},"received message capping update"),c.emit("message-capping.update",W)},aA=async Ae=>{let W=le(Ae,"mex"),X=W?.content?null:le(Ae,"update")||_s(Ae)[0],re=W?.content?W:X;if(!re?.content){t.warn({node:Gn(Ae)},"invalid mex newsletter notification");return}let ne;try{let Ee=re.content;if(Array.isArray(Ee)){t.warn({payloadNode:re},"invalid mex newsletter notification payload format");return}let me=typeof Ee=="string"?Buffer.from(Ee,"binary"):Buffer.from(Ee);ne=JSON.parse(me.toString())}catch(Ee){t.error({err:Ee,node:Gn(Ae)},"failed to parse mex newsletter notification");return}let we=ne?.operation??re?.attrs?.op_name,Ce=ne?.updates;if(!Ce){let Ee=ne?.data?.xwa2_notify_linked_profiles;Ee&&(Ce=[Ee])}if(!Ce||!we){t.warn({data:ne},"invalid mex newsletter notification content");return}switch(t.info({operation:we,updates:Ce},"got mex newsletter notification"),we){case"NotificationNewsletterUpdate":for(let Ee of Ce)Ee.jid&&Ee.settings&&Object.keys(Ee.settings).length>0&&c.emit("newsletter-settings.update",{id:Ee.jid,update:Ee.settings});break;case"NotificationNewsletterAdminPromote":for(let Ee of Ce)Ee.jid&&Ee.user&&c.emit("newsletter-participants.update",{id:Ee.jid,author:Ae.attrs.from,user:Ee.user,new_role:"ADMIN",action:"promote"});break;case"NotificationLinkedProfilesUpdates":for(let Ee of Ce){let me=Ee?.jid,Je=Array.isArray(Ee?.added_profiles)?Ee.added_profiles:[],IA=[];for(let yA of Je){let XA=typeof yA=="string"?yA:yA?.pn??yA?.jid??null;if(me&&XA){let vA={lid:me,pn:XA};c.emit("lid-mapping.update",vA),IA.push(vA)}}await y.lidMapping.storeLIDPNMappings(IA)}break;default:t.info({operation:we,data:ne},"unhandled mex newsletter notification");break}},Qe=async Ae=>{let W=Ae.attrs.from,X=_s(Ae),re=Ae.attrs.participant;for(let ne of X)switch(t.debug({from:W,child:ne},"got newsletter notification"),ne.tag){case"reaction":{let we={id:W,server_id:ne.attrs.message_id,reaction:{code:jA(ne,"reaction"),count:1}};c.emit("newsletter.reaction",we);break}case"view":{let we={id:W,server_id:ne.attrs.message_id,count:parseInt(ne.content?.toString()||"0",10)};c.emit("newsletter.view",we);break}case"participant":{let we={id:W,author:re,user:ne.attrs.jid,action:ne.attrs.action,new_role:ne.attrs.role};c.emit("newsletter-participants.update",we);break}case"update":{let we=le(ne,"settings");if(we){let Ce={},Ee=le(we,"name");Ee?.content&&(Ce.name=Ee.content.toString());let me=le(we,"description");me?.content&&(Ce.description=me.content.toString()),c.emit("newsletter-settings.update",{id:W,update:Ce})}break}case"message":{let we=le(ne,"plaintext");if(we?.content)try{let Ce=typeof we.content=="string"?Buffer.from(we.content,"binary"):Buffer.from(we.content),Ee=oe.Message.decode(Ce).toJSON(),me=oe.WebMessageInfo.fromObject({key:{remoteJid:W,id:ne.attrs.message_id||ne.attrs.server_id,fromMe:!1},message:Ee,messageTimestamp:+ne.attrs.t}).toJSON();await _(me,"append"),t.debug("Processed plaintext newsletter message")}catch(Ce){t.error({error:Ce},"Failed to decode plaintext newsletter message")}break}default:t.warn({node:Ae,child:ne},"Unknown newsletter notification child");break}},Ie=async(Ae,W)=>{let X=ase(Ae,W,I.creds.me.id);t.debug({recv:{tag:Ae.tag,attrs:Ae.attrs},sent:X.attrs},"sent ack"),await L(X)},Xe=async(Ae,W)=>{let X={tag:"call",attrs:{from:I.creds.me.id,to:W},content:[{tag:"reject",attrs:{"call-id":Ae,"call-creator":W,count:"0"},content:void 0}]};await m(X)},je=async(Ae,W=!1)=>{let{fullMessage:X}=eL(Ae,I.creds.me.id,I.creds.me.lid||""),{key:re}=X,ne=re.id;if(G){if(G.hasExceededMaxRetries(ne)){t.debug({msgId:ne},"reached retry limit with new retry manager, clearing"),G.markRetryFailed(ne);return}let YA=G.incrementRetryCount(ne),$A=`${ne}:${re?.participant}`;await ie.set($A,YA)}else{let YA=`${ne}:${re?.participant}`,$A=await ie.get(YA)||0;if($A>=i){t.debug({retryCount:$A,msgId:ne},"reached retry limit, clearing"),await ie.del(YA);return}$A+=1,await ie.set(YA,$A)}let we=`${ne}:${re?.participant}`,Ce=await ie.get(we)||1,{account:Ee,signedPreKey:me,signedIdentityKey:Je}=I.creds,IA=Ae.attrs.from,yA=!1,XA="";if(A&&G&&Ce>1)try{let YA=y.jidToSignalProtocolAddress(IA),$A=await y.validateSession(IA),Ge=G.shouldRecreateSession(IA,$A.exists);yA=Ge.recreate,XA=Ge.reason,yA&&(t.debug({fromJid:IA,retryCount:Ce,reason:XA},"recreating session for retry"),await I.keys.set({session:{[YA]:null}}),W=!0)}catch(YA){t.warn({error:YA,fromJid:IA},"failed to check session recreation")}if(Ce<=2)if(G)G.schedulePhoneRequest(ne,async()=>{try{let YA=await ke(re);t.debug(`sendRetryRequest: requested placeholder resend (${YA}) for message ${ne} (scheduled)`)}catch(YA){t.warn({error:YA,msgId:ne},"failed to send scheduled phone request")}});else{let YA=await ke(re);t.debug(`sendRetryRequest: requested placeholder resend for message ${YA}`)}let vA=kf(Ee,!0);await I.keys.transaction(async()=>{let YA={tag:"receipt",attrs:{id:ne,type:"retry",to:Ae.attrs.from},content:[{tag:"retry",attrs:{count:Ce.toString(),id:Ae.attrs.id,t:Ae.attrs.t,v:"1",error:"0"}},{tag:"registration",attrs:{},content:Kg(I.creds.registrationId)}]};if(Ae.attrs.recipient&&(YA.attrs.recipient=Ae.attrs.recipient),Ae.attrs.participant&&(YA.attrs.participant=Ae.attrs.participant),Ce>1||W||yA){let{update:$A,preKeys:Ge}=await QU(I,1),[tA]=Object.keys(Ge),et=Ge[+tA];YA.content.push({tag:"keys",attrs:{},content:[{tag:"type",attrs:{},content:Buffer.from(Hg)},{tag:"identity",attrs:{},content:Je.public},fU(et,+tA),Rf(me),{tag:"device-identity",attrs:{},content:vA}]}),c.emit("creds.update",$A)}await L(YA),t.info({msgAttrs:Ae.attrs,retryCount:Ce},"sent retry receipt")},I?.creds?.me?.id||"sendRetryRequest")},Oe=new Set,EA=Ae=>{(async()=>{let W=uA(Ae),X=await Xs(W,J),ne=(await I.keys.get("tctoken",[X]))?.[X]?.senderTimestamp;if(ne==null||gp(ne))return;t.debug({jid:W,senderTimestamp:ne},"identity changed, re-issuing tctoken");let we=y.lidMapping.getPNForLID.bind(y.lidMapping),Ce=await Lf(W,r.serverProps.lidTrustedTokenIssueToLid,J,we),Ee=await F([Ce],ne);await hE({result:Ee,fallbackJid:X,keys:I.keys,getLIDForPN:J,onNewJidStored:_A})})().catch(W=>{t.debug({jid:Ae,err:W?.message},"failed to re-issue tctoken after identity change")})},hA=async Ae=>{if(Ae.attrs.from===OA){let X=Ae.attrs.id;if(X&&Oe.has(X))return;let ne=+le(Ae,"count").attrs.value,we=ne{let re=Ae.attrs.participant,ne=Ae.attrs.participant_pn,we=Ae.attrs.participant_username,Ce=le(W,"participant")?.attrs?.jid||re,Ee=le(W,"participant")?.attrs?.phone_number||ne;switch(W?.tag){case"create":let me=OE(W);X.messageStubType=RA.GROUP_CREATE,X.messageStubParameters=[me.subject],X.key={participant:me.owner,participantAlt:me.ownerPn},c.emit("chats.upsert",[{id:me.id,name:me.subject,conversationTimestamp:me.creation}]),c.emit("groups.upsert",[{...me,author:re,authorPn:ne,authorUsername:we}]);break;case"ephemeral":case"not_ephemeral":X.message={protocolMessage:{type:oe.Message.ProtocolMessage.Type.EPHEMERAL_SETTING,ephemeralExpiration:+(W.attrs.expiration||0)}};break;case"modify":let Je=PA(W,"participant").map(Ge=>Ge.attrs.jid);X.messageStubParameters=Je||[],X.messageStubType=RA.GROUP_PARTICIPANT_CHANGE_NUMBER;break;case"promote":case"demote":case"remove":case"add":case"leave":let IA=`GROUP_PARTICIPANT_${W.tag.toUpperCase()}`;X.messageStubType=RA[IA];let yA=PA(W,"participant").map(({attrs:Ge})=>({id:Ge.jid,phoneNumber:qA(Ge.jid)&&_t(Ge.phone_number)?Ge.phone_number:void 0,lid:_t(Ge.jid)&&qA(Ge.lid)?Ge.lid:void 0,username:Ge.participant_username||Ge.username||void 0,admin:Ge.type||null}));yA.length===1&&(Rt(yA[0].id,re)||Rt(yA[0].id,ne))&&W.tag==="remove"&&(X.messageStubType=RA.GROUP_PARTICIPANT_LEAVE),X.messageStubParameters=yA.map(Ge=>JSON.stringify(Ge));break;case"subject":X.messageStubType=RA.GROUP_CHANGE_SUBJECT,X.messageStubParameters=[W.attrs.subject];break;case"description":let XA=le(W,"body")?.content?.toString();X.messageStubType=RA.GROUP_CHANGE_DESCRIPTION,X.messageStubParameters=XA?[XA]:void 0;break;case"announcement":case"not_announcement":X.messageStubType=RA.GROUP_CHANGE_ANNOUNCE,X.messageStubParameters=[W.tag==="announcement"?"on":"off"];break;case"locked":case"unlocked":X.messageStubType=RA.GROUP_CHANGE_RESTRICT,X.messageStubParameters=[W.tag==="locked"?"on":"off"];break;case"invite":X.messageStubType=RA.GROUP_CHANGE_INVITE_LINK,X.messageStubParameters=[W.attrs.code];break;case"member_add_mode":let vA=W.content;vA&&(X.messageStubType=RA.GROUP_MEMBER_ADD_MODE,X.messageStubParameters=[vA.toString()]);break;case"membership_approval_mode":let YA=le(W,"group_join");YA&&(X.messageStubType=RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE,X.messageStubParameters=[YA.attrs.state]);break;case"created_membership_requests":X.messageStubType=RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD,X.messageStubParameters=[JSON.stringify({lid:Ce,pn:Ee}),"created",W.attrs.request_method];break;case"revoked_membership_requests":let $A=Rt(Ce,re);X.messageStubType=RA.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD,X.messageStubParameters=[JSON.stringify({lid:Ce,pn:Ee}),$A?"revoked":"rejected"];break}},Ze=async Ae=>{let[W]=_s(Ae),X=uA(Ae.attrs.from);if(!W){t.debug({from:X},"devices notification missing child, skipping");return}let re=W.tag,ne=W.attrs.device_hash,we=PA(W,"device");if(Rt(X,I.creds.me.id)||Rt(X,I.creds.me.lid)){let Ee=we.map(me=>me.attrs.jid);t.info({deviceJids:Ee},"got my own devices")}if(!we.length){t.debug({from:X,tag:re},"no devices in notification, skipping");return}let Ce=[];for(let Ee of we){let me=Ee.attrs.jid;if(!me)continue;let Je=fA(me);if(!Je){t.debug({jid:me},"failed to decode device jid, skipping");continue}Ce.push({jid:me,user:Je.user,server:Je.server,device:Je.device})}Ce.length&&await g.mutex(async()=>{let Ee=new Map;for(let me of Ce){let Je=Ee.get(me.user)||[];Je.push(me),Ee.set(me.user,Je)}for(let[me,Je]of Ee){if(re==="update"){t.debug({user:me},`${me}'s device list updated, dropping cached devices`),await s?.del(me);continue}re==="remove"&&await y.deleteSession(Je.map(vA=>vA.jid));let IA=await s?.get(me)||[];if(!IA.length){t.debug({user:me,tag:re},"device list not cached, deferring to USync refresh");continue}let yA=new Set(Je.map(vA=>vA.device)),XA;switch(re){case"add":t.info({deviceHash:ne,count:Je.length},"devices added"),XA=[...IA.filter(vA=>!yA.has(vA.device)),...Je.map(vA=>({user:vA.user,server:vA.server,device:vA.device}))];break;case"remove":t.info({deviceHash:ne,count:Je.length},"devices removed"),XA=IA.filter(vA=>!yA.has(vA.device));break;default:t.debug({tag:re},"Unknown device list change tag");continue}XA.length===0?await s?.del(me):await s?.set(me,XA)}})},bA=async Ae=>{let W={},[X]=_s(Ae),re=Ae.attrs.type,ne=uA(Ae.attrs.from);switch(re){case"newsletter":await Qe(Ae);break;case"mex":await Ne(Ae);break;case"w:gp2":iA(Ae,X,W);break;case"mediaretry":let we=Uoe(Ae);c.emit("messages.media-update",[we]);break;case"encrypt":await hA(Ae);break;case"devices":try{await Ze(Ae)}catch(mo){t.error({error:mo,node:Ae},"failed to handle devices notification")}break;case"server_sync":let Ce=le(Ae,"collection");if(Ce){let mo=Ce.attrs.name;await T([mo],!1)}break;case"picture":let Ee=le(Ae,"set"),me=le(Ae,"delete");if(c.emit("contacts.update",[{id:uA(Ae?.attrs?.from)||(Ee||me)?.attrs?.hash||"",imgUrl:Ee?"changed":"removed"}]),xr(ne)){let mo=Ee||me;W.messageStubType=RA.GROUP_CHANGE_ICON,Ee&&(W.messageStubParameters=[Ee.attrs.id]),W.participant=mo?.attrs.author,W.key={...W.key||{},participant:Ee?.attrs.author}}break;case"account_sync":if(X.tag==="disappearing_mode"){let mo=+X.attrs.duration,yp=+X.attrs.t;t.info({newDuration:mo},"updated account disappearing mode"),c.emit("creds.update",{accountSettings:{...I.creds.accountSettings,defaultDisappearingMode:{ephemeralExpiration:mo,ephemeralSettingTimestamp:yp}}})}else if(X.tag==="blocklist"){let mo=PA(X,"item");for(let{attrs:yp}of mo){let bM=[yp.jid],MM=yp.action==="block"?"add":"remove";c.emit("blocklist.update",{blocklist:bM,type:MM})}}break;case"link_code_companion_reg":let Je=le(Ae,"link_code_companion_reg"),IA=lt(Oa(Je,"link_code_pairing_ref")),yA=lt(Oa(Je,"primary_identity_pub")),XA=lt(Oa(Je,"link_code_pairing_wrapped_primary_ephemeral_pub")),vA=await wA(XA),YA=Sr.sharedKey(I.creds.pairingEphemeralKeyPair.private,vA),$A=XH(32),Ge=XH(32),tA=Un(YA,32,{salt:Ge,info:"link_code_pairing_key_bundle_encryption_key"}),et=Buffer.concat([Buffer.from(I.creds.signedIdentityKey.public),yA,$A]),Zr=XH(12),ar=Pl(et,tA,Zr,Buffer.alloc(0)),yo=Buffer.concat([Ge,Zr,ar]),DM=Sr.sharedKey(I.creds.signedIdentityKey.private,yA),OM=Buffer.concat([YA,DM,$A]);I.creds.advSecretKey=Buffer.from(Un(OM,32,{info:"adv_secret"})).toString("base64"),await m({tag:"iq",attrs:{to:OA,type:"set",id:r.generateMessageTag(),xmlns:"md"},content:[{tag:"link_code_companion_reg",attrs:{jid:I.creds.me.id,stage:"companion_finish"},content:[{tag:"link_code_pairing_wrapped_key_bundle",attrs:{},content:yo},{tag:"companion_identity_public",attrs:{},content:I.creds.signedIdentityKey.public},{tag:"link_code_pairing_ref",attrs:{},content:IA}]}]}),I.creds.registered=!0,c.emit("creds.update",I.creds);break;case"privacy_token":await at(Ae);break}if(Object.keys(W).length)return W},Be=new Set,Re=(async()=>{try{let Ae=await _b(I.keys);for(let W of Ae)Be.add(W);t.debug({count:Be.size},"loaded tctoken index")}catch(Ae){t.warn({err:Ae?.message},"failed to load tctoken index")}})(),Ue;async function MA(){Ue&&(clearTimeout(Ue),Ue=void 0);let Ae=await dE(I.keys,Be);return I.keys.set({tctoken:Ae})}function Ke(){Ue&&clearTimeout(Ue),Ue=setTimeout(()=>{Ue=void 0,MA().catch(Ae=>{t.warn({err:Ae?.message},"failed to save tctoken index")})},5e3)}function _A(Ae){Ae&&Ae!==SI&&!Be.has(Ae)&&(Be.add(Ae),Ke())}let at=async Ae=>{if(!le(Ae,"tokens"))return;let X=uA(Ae.attrs.from),ne=(Ae.attrs.sender_lid&&qA(uA(Ae.attrs.sender_lid))?uA(Ae.attrs.sender_lid):void 0)??await Xs(X,J);t.debug({from:X,storageJid:ne},"processing privacy token notification"),await hE({result:Ae,fallbackJid:ne,keys:I.keys,getLIDForPN:J,onNewJidStored:_A})};async function wA(Ae){let W=lt(Ae),X=W.slice(0,32),re=await hD(I.creds.pairingCode,X),ne=W.slice(32,48),we=W.slice(48,80);return G7(we,re,ne)}function lt(Ae){if(Ae===void 0)throw new Zf.Boom("Invalid buffer",{statusCode:400});return Ae instanceof Buffer?Ae:Buffer.from(Ae)}let Er=async(Ae,W)=>{let X=`${Ae}:${W}`;return(await ie.get(X)||0){let X=`${Ae}:${W}`,re=(await ie.get(X)||0)+1;await ie.set(X,re)},de=async(Ae,W,X,re)=>{let ne=Ae.remoteJid,we=Ae.participant||ne,Ce=+X.attrs.count||1,Ee=W[0],me=[];for(let Ge of W){let tA;if(G){let et=G.getRecentMessage(ne,Ge);et&&(tA=et.message,t.debug({jid:ne,id:Ge},"found message in retry cache"),G.markRetrySuccess(Ge))}tA||(tA=await e({...Ae,id:Ge}),tA&&(t.debug({jid:ne,id:Ge},"found message via getMessage"),G&&G.markRetrySuccess(Ge))),me.push(tA)}let Je=!fA(we)?.device,IA=y.jidToSignalProtocolAddress(we),yA=!1,XA=ane(re);if(XA)try{await y.injectE2ESession({jid:we,session:XA}),yA=!0,t.debug({participant:we,retryCount:Ce},"injected session from retry receipt key bundle")}catch(Ge){t.warn({error:Ge,participant:we},"failed to inject session from retry receipt")}if(!yA){let Ge=Zc(re,"registration",4);if(typeof Ge=="number"&&Number.isInteger(Ge)){let tA=await y.getSessionInfo(we);tA&&tA.registrationId!==0&&tA.registrationId!==Ge&&(t.info({participant:we,stored:tA.registrationId,received:Ge},"reg id mismatch on retry without bundle, deleting session"),await I.keys.set({session:{[IA]:null}}))}}let vA=2;if(Ee&&G){let Ge=await y.getSessionInfo(we);Ge&&(Ce===vA?G.saveBaseKey(IA,Ee,Ge.baseKey):Ce>vA&&(G.hasSameBaseKey(IA,Ee,Ge.baseKey)&&(t.warn({participant:we,retryCount:Ce},"base key collision on retry, forcing fresh session"),await I.keys.set({session:{[IA]:null}})),G.deleteBaseKey(IA,Ee)))}let YA=!1,$A="";if(A&&G&&Ce>1&&!yA)try{let Ge=await y.validateSession(we),tA=G.shouldRecreateSession(we,Ge.exists);YA=tA.recreate,$A=tA.reason,YA&&(t.debug({participant:we,retryCount:Ce,reason:$A},"recreating session for outgoing retry"),await I.keys.set({session:{[IA]:null}}))}catch(Ge){t.warn({error:Ge,participant:we},"failed to check session recreation for outgoing retry")}yA||await K([we],!0),xr(ne)&&await I.keys.set({"sender-key-memory":{[ne]:null}}),t.debug({participant:we,sendToAll:Je,shouldRecreateSession:YA,recreateReason:$A,injectedFromBundle:yA},"prepared session for retry resend");for(let[Ge,tA]of me.entries())if(W[Ge])if(tA&&await Er(W[Ge],we)){await UA(W[Ge],we);let et={messageId:W[Ge]};Je?et.useUserDevicesCache=!1:et.participant={jid:we,count:+X.attrs.count},await U(Ae.remoteJid,tA,et)}else t.debug({jid:Ae.remoteJid,id:W[Ge]},"recv retry request, but message not available")},ye=async Ae=>{let{attrs:W,content:X}=Ae,re=W.from.includes("lid"),ne=Rt(W.participant||W.from,re?I.creds.me?.lid:I.creds.me?.id),we=!ne||xr(W.from)?W.from:W.recipient,Ce=!W.recipient||(W.type==="retry"||W.type==="sender")&&ne,Ee={remoteJid:we,id:"",fromMe:Ce,participant:W.participant},me=[W.id];if(Array.isArray(X)){let Je=PA(X[0],"item");me.push(...Je.map(IA=>IA.attrs.id))}try{await Promise.all([Q.mutex(async()=>{let Je=V7(W.type);if(typeof Je<"u"&&(Je>=oe.WebMessageInfo.Status.SERVER_ACK||!ne))if(xr(we)||Lg(we)){if(W.participant){let IA=Je===oe.WebMessageInfo.Status.DELIVERY_ACK?"receiptTimestamp":"readTimestamp";c.emit("message-receipt.update",me.map(yA=>({key:{...Ee,id:yA},receipt:{userJid:uA(W.participant),[IA]:+W.t}})))}}else c.emit("messages.update",me.map(IA=>({key:{...Ee,id:IA},update:{status:Je,messageTimestamp:Yr(+(W.t??0))}})));if(W.type==="retry"){Ee.participant=Ee.participant||W.from;let IA=le(Ae,"retry");if(me[0]&&Ee.participant&&await Er(me[0],Ee.participant))if(Ee.fromMe)try{await UA(me[0],Ee.participant),t.debug({attrs:W,key:Ee},"recv retry request"),await de(Ee,me,IA,Ae)}catch(yA){t.error({key:Ee,ids:me,trace:yA instanceof Error?yA.stack:"Unknown error"},"error in sending message again")}else t.info({attrs:W,key:Ee},"recv retry for not fromMe message");else t.info({attrs:W,key:Ee},"will not send message again, as sent too many times")}})])}finally{await Ie(Ae).catch(Je=>t.error({ackErr:Je},"failed to ack receipt"))}},be=async Ae=>{let W=Ae.attrs.from;try{await Promise.all([f.mutex(async()=>{let X=await bA(Ae);if(X){let re=Rt(Ae.attrs.participant||W,I.creds.me.id),{senderAlt:ne,addressingMode:we}=BD(Ae);X.key={remoteJid:W,fromMe:re,participant:Ae.attrs.participant,participantAlt:ne,participantUsername:Ae.attrs.participant_username,addressingMode:we,id:Ae.attrs.id,...X.key||{}},X.participant??(X.participant=Ae.attrs.participant),X.messageTimestamp=+Ae.attrs.t;let Ce=oe.WebMessageInfo.fromObject(X);await _(Ce,"append")}})])}finally{await Ie(Ae).catch(X=>t.error({ackErr:X},"failed to ack notification"))}},oA=async Ae=>{if(le(Ae,"enc")?.attrs.type==="msmsg"){t.debug({key:Ae.attrs.key},"ignored msmsg"),await Ie(Ae,Ll.MissingMessageSecret);return}let X=!1;try{let{fullMessage:re,category:ne,author:we,decrypt:Ce}=r$(Ae,I.creds.me.id,I.creds.me.lid||"",y,t),Ee=re.key.participantAlt||re.key.remoteJidAlt;if(Ee){let me=fA(Ee)?.server,Je=re.key.participant||re.key.remoteJid;me==="lid"?await y.lidMapping.getPNForLID(Ee)||(await y.lidMapping.storeLIDPNMappings([{lid:Ee,pn:Je}]),await y.migrateSession(Je,Ee)):(await y.lidMapping.storeLIDPNMappings([{lid:Je,pn:Ee}]),await y.migrateSession(Ee,Je))}await B.mutex(async()=>{if(await Ce(),re.key?.remoteJid&&re.key?.id&&re.message&&G&&G.addRecentMessage(re.key.remoteJid,re.key.id,re.message),re.messageStubType===oe.WebMessageInfo.StubType.CIPHERTEXT&&re.category!=="peer"){if(re?.messageStubParameters?.[0]===A$)return X=!0,Ie(Ae,Ll.ParsingError);if(re.messageStubParameters?.[0]===uD){let Je=le(Ae,"unavailable")?.attrs?.type;if(Je==="bot_unavailable_fanout"||Je==="hosted_unavailable_fanout"||Je==="view_once_unavailable_fanout")return t.debug({msgId:re.key.id,unavailableType:Je},"skipping placeholder resend for excluded unavailable type"),X=!0,Ie(Ae);let IA=ba()-Yr(re.messageTimestamp);if(IA>Bce)return t.debug({msgId:re.key.id,messageAge:IA},"skipping placeholder resend for old message"),X=!0,Ie(Ae);let yA={remoteJid:re.key.remoteJid,fromMe:re.key.fromMe,id:re.key.id,participant:re.key.participant},XA={key:re.key,messageTimestamp:re.messageTimestamp,pushName:re.pushName,participant:re.participant,verifiedBizName:re.verifiedBizName};ke(yA,XA).then(vA=>{vA&&vA!=="RESOLVED"&&(t.debug({msgId:re.key.id,requestId:vA},"requested placeholder resend for unavailable message"),c.emit("messages.update",[{key:re.key,update:{messageStubParameters:[uD,vA]}}]))}).catch(vA=>{t.warn({err:vA,msgId:re.key.id},"failed to request placeholder resend for unavailable message")}),X=!0,await Ie(Ae)}else{if(Lg(re.key.remoteJid)){let me=ba()-Yr(re.messageTimestamp);if(me>uce)return t.debug({msgId:re.key.id,messageAge:me,remoteJid:re.key.remoteJid},"skipping retry for expired status message"),X=!0,Ie(Ae)}t.debug("[handleMessage] Attempting retry request for failed decryption"),await $.mutex(async()=>{try{if(!d.isOpen){t.debug({node:Ae},"Connection closed, skipping retry");return}let me=le(Ae,"enc");await je(Ae,!me),o&&await kB(o)}catch(me){t.error({err:me},"Failed to send retry")}X=!0,await Ie(Ae,Ll.UnhandledError)})}}else if(G&&re.key.id&&G.cancelPendingPhoneRequest(re.key.id),Wc(re.key.remoteJid))X=!0,await Ie(Ae),t.debug({key:re.key},"processed newsletter message without receipts");else{let Je,IA=re.key.participant;if(ne==="peer"?Je="peer_msg":re.key.fromMe?(Je="sender",(qA(re.key.remoteJid)||qA(re.key.remoteJidAlt))&&(IA=we)):Me||(Je="inactive"),X=!0,await z(re.key.remoteJid,IA,[re.key.id],Je),mb(re.message)){let XA=uA(re.key.remoteJid);await z(XA,void 0,[re.key.id],"hist_sync")}}Zne(re,I.creds.me.id,I.creds.me.lid),await _(re,Ae.attrs.offline?"append":"notify")})}catch(re){t.error({error:re,node:Gn(Ae)},"error in handling message"),X||await Ie(Ae,Ll.UnhandledError).catch(ne=>t.error({ackErr:ne},"failed to ack message after error"))}},pA=async Ae=>{try{let{attrs:W}=Ae,[X]=_s(Ae);if(!X)throw new Zf.Boom("Missing call info in call node");let re=Z7(X),ne=X.attrs["call-id"],we=X.attrs.from||X.attrs["call-creator"],Ce={chatId:W.from,from:we,callerPn:X.attrs.caller_pn,id:ne,date:new Date(+W.t*1e3),offline:!!W.offline,status:re};if(re==="relaylatency"){let me=X.attrs.latency||X.attrs.latency_ms||X.attrs["latency-ms"],Je=me?Number(me):void 0;Number.isFinite(Je)&&(Ce.latencyMs=Je)}re==="offer"&&(Ce.isVideo=!!le(X,"video"),Ce.isGroup=X.attrs.type==="group"||!!X.attrs["group-jid"],Ce.groupJid=X.attrs["group-jid"],await pe.set(Ce.id,Ce));let Ee=await pe.get(Ce.id);Ee&&(Ce.isVideo=Ee.isVideo,Ce.isGroup=Ee.isGroup,Ce.callerPn=Ce.callerPn||Ee.callerPn),(re==="reject"||re==="accept"||re==="timeout"||re==="terminate")&&await pe.del(Ce.id),c.emit("call",[Ce])}catch(W){t.error({error:W,node:Gn(Ae)},"error in handling call")}finally{await Ie(Ae).catch(W=>t.error({ackErr:W},"failed to ack call"))}},FA=async({attrs:Ae})=>{let W={remoteJid:Ae.from,fromMe:!0,id:Ae.id};if(Ae.error){let X=Ae.error===String(Ll.SenderReachoutTimelocked);if(Ae.error===$F.MessageAccountRestriction){t.warn({msgId:Ae.id,from:Ae.from},"error 463: account restricted or missing tctoken for contact");let re=Ae.from;re&&!Qo.has(re)&&(Qo.add(re),(async()=>{try{let ne=y.lidMapping.getPNForLID.bind(y.lidMapping),we=await Xs(re,J),Ce=await Lf(re,r.serverProps.lidTrustedTokenIssueToLid,J,ne),Ee=await F([Ce],ba());await hE({result:Ee,fallbackJid:we,keys:I.keys,getLIDForPN:J,onNewJidStored:_A}),t.debug({from:re},"completed 463 token recovery issuance")}catch(ne){t.debug({from:re,err:ne?.message},"failed 463 token recovery issuance")}finally{Qo.delete(re)}})())}else Ae.error===$F.SmaxInvalid?t.warn({msgId:Ae.id,from:Ae.from},"smax-invalid (479): stanza rejected by server \u2014 likely stale device session or malformed addressing"):X?(await N().catch(re=>t.warn({err:re},"failed to fetch reachout timelock")),t.warn({attrs:Ae},"received error in ack")):t.warn({attrs:Ae},"received error in ack");c.emit("messages.update",[{key:W,update:{status:lh.ERROR,messageStubParameters:X?[Ae.error,t$]:[Ae.error]}}])}},Kt=async(Ae,W,X)=>{c.buffer(),await re(),c.flush();function re(){return X(Ae,!1).catch(ne=>R(ne,W))}},st=Uce(new Map([["message",oA],["call",pA],["receipt",ye],["notification",be]]),{isWsOpen:()=>d.isOpen,onUnexpectedError:R,yieldToEventLoop:()=>new Promise(Ae=>setImmediate(Ae))}),Dr=async(Ae,W,X,re)=>{let ne=W.attrs.from,we=ne;if(Ae==="receipt"&&ne){let Ee=W.attrs,me=Ee.from.includes("lid");we=!Rt(Ee.participant||Ee.from,me?I.creds.me?.lid:I.creds.me?.id)||xr(Ee.from)?Ee.from:Ee.recipient}if(we&&we!==OA&&a(we)){await Ie(W,Ae==="message"?Ll.UnhandledError:void 0);return}!!W.attrs.offline?st.enqueue(Ae,W):await Kt(W,X,re)};d.on("CB:message",async Ae=>{await Dr("message",Ae,"processing message",oA)}),d.on("CB:call",async Ae=>{await Dr("call",Ae,"handling call",pA)}),d.on("CB:receipt",async Ae=>{await Dr("receipt",Ae,"handling receipt",ye)}),d.on("CB:notification",async Ae=>{await Dr("notification",Ae,"handling notification",be)}),d.on("CB:ack,class:message",Ae=>{FA(Ae).catch(W=>R(W,"handling bad ack"))}),c.on("call",async([Ae])=>{if(Ae&&(Ae.status==="timeout"||Ae.status==="offer"&&Ae.isGroup)){let W={key:{remoteJid:Ae.chatId,id:Ae.id,fromMe:!1},messageTimestamp:ba(Ae.date)};Ae.status==="timeout"?Ae.isGroup?W.messageStubType=Ae.isVideo?RA.CALL_MISSED_GROUP_VIDEO:RA.CALL_MISSED_GROUP_VOICE:W.messageStubType=Ae.isVideo?RA.CALL_MISSED_VIDEO:RA.CALL_MISSED_VOICE:W.message={call:{callKey:Buffer.from(Ae.id)}};let X=oe.WebMessageInfo.fromObject(W);await _(X,Ae.offline?"append":"notify")}});let rr=0,Qo=new Set;c.on("connection.update",({isOnline:Ae,connection:W})=>{if(typeof Ae<"u"&&(Me=Ae,t.trace(`sendActiveReceipts set to "${Me}"`)),W==="close"&&Ue){clearTimeout(Ue),Ue=void 0;try{Promise.resolve(MA()).catch(()=>{})}catch{}}if(Ae){let X=Date.now(),re=1440*60*1e3;X-rr>=re&&(rr=X,$i())}}),V(()=>{!n.msgRetryCounterCache&&ie.close&&ie.close(),!n.callOfferCache&&pe.close&&pe.close(),se.close(),Me=!1});async function $i(){try{await Re;let Ae=await _b(I.keys),W=new Set(Be);for(let Ee of Ae)W.add(Ee);if(!W.size)return;let X=[...W],re=await I.keys.get("tctoken",X),ne={},we=new Set,Ce=0;for(let Ee of X){let me=re[Ee];if(!me){Ce++;continue}let Je=!!me.token?.length,IA=Je&&gp(me.timestamp),yA=me.senderTimestamp!==void 0,XA=yA&&gp(me.senderTimestamp),vA=Je&&!IA,YA=yA&&!XA;!vA&&!YA?(ne[Ee]=null,Ce++):IA&&YA?(ne[Ee]={token:Buffer.alloc(0),senderTimestamp:me.senderTimestamp},we.add(Ee),Ce++):we.add(Ee)}if(Ce===0)return;await I.keys.set({tctoken:{...ne,[SI]:{token:Buffer.from(JSON.stringify([...we]))}}}),Be.clear();for(let Ee of we)Be.add(Ee);t.debug({mutated:Ce,remaining:we.size},"pruned expired tctokens")}catch(Ae){t.warn({err:Ae?.message},"failed to prune expired tctokens")}}return{...r,sendMessageAck:Ie,sendRetryRequest:je,rejectCall:Xe,fetchMessageHistory:fe,requestPlaceholderResend:ke,messageRetryManager:G}};var qce=n=>{let t=Jce(n),{authState:o,query:i,waUploadToServer:e}=t,a=async f=>{let Q=[],y=["address","email","description"];return Q.push(...y.filter(_=>f[_]!==void 0&&f[_]!==null).map(_=>({tag:_,attrs:{},content:f[_]}))),f.websites!==void 0&&Q.push(...f.websites.map(_=>({tag:"website",attrs:{},content:_}))),f.hours!==void 0&&Q.push({tag:"business_hours",attrs:{timezone:f.hours.timezone},content:f.hours.days.map(_=>{let T={tag:"business_hours_config",attrs:{day_of_week:_.day,mode:_.mode}};return _.mode==="specific_hours"?{...T,attrs:{...T.attrs,open_time:_.openTimeInMinutes,close_time:_.closeTimeInMinutes}}:T})}),await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz"},content:[{tag:"business_profile",attrs:{v:"3",mutation_type:"delta"},content:Q}]})},A=async f=>{let{fileSha256:Q,filePath:y}=await Cb(f,"biz-cover-photo"),m=Q.toString("base64"),{meta_hmac:_,fbid:T,ts:R}=await e(y,{fileEncSha256B64:m,mediaType:"biz-cover-photo"});return await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz"},content:[{tag:"business_profile",attrs:{v:"3",mutation_type:"delta"},content:[{tag:"cover_photo",attrs:{id:String(T),op:"update",token:_,ts:String(R)}}]}]}),T},r=async f=>await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz"},content:[{tag:"business_profile",attrs:{v:"3",mutation_type:"delta"},content:[{tag:"cover_photo",attrs:{op:"delete",id:f}}]}]}),s=async({jid:f,limit:Q,cursor:y})=>{f=f||o.creds.me?.id,f=uA(f);let m=[{tag:"limit",attrs:{},content:Buffer.from((Q||10).toString())},{tag:"width",attrs:{},content:Buffer.from("100")},{tag:"height",attrs:{},content:Buffer.from("100")}];y&&m.push({tag:"after",attrs:{},content:y});let _=await i({tag:"iq",attrs:{to:OA,type:"get",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog",attrs:{jid:f,allow_shop_source:"true"},content:m}]});return Dce(_)},g=async(f,Q=51)=>{f=f||o.creds.me?.id,f=uA(f);let y=await i({tag:"iq",attrs:{to:OA,type:"get",xmlns:"w:biz:catalog",smax_id:"35"},content:[{tag:"collections",attrs:{biz_jid:f},content:[{tag:"collection_limit",attrs:{},content:Buffer.from(Q.toString())},{tag:"item_limit",attrs:{},content:Buffer.from(Q.toString())},{tag:"width",attrs:{},content:Buffer.from("100")},{tag:"height",attrs:{},content:Buffer.from("100")}]}]});return Oce(y)},c=async(f,Q)=>{let y=await i({tag:"iq",attrs:{to:OA,type:"get",xmlns:"fb:thrift_iq",smax_id:"5"},content:[{tag:"order",attrs:{op:"get",id:f},content:[{tag:"image_dimensions",attrs:{},content:[{tag:"width",attrs:{},content:Buffer.from("100")},{tag:"height",attrs:{},content:Buffer.from("100")}]},{tag:"token",attrs:{},content:Buffer.from(Q)}]}]});return bce(y)},I=async(f,Q)=>{Q=await JH(Q,e);let y=jH(f,Q),m=await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog_edit",attrs:{v:"1"},content:[y,{tag:"width",attrs:{},content:"100"},{tag:"height",attrs:{},content:"100"}]}]}),_=le(m,"product_catalog_edit"),T=le(_,"product");return Vf(T)},d=async f=>{f.isHidden=!!f.isHidden,f=await JH(f,e);let Q=jH(void 0,f),y=await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog_add",attrs:{v:"1"},content:[Q,{tag:"width",attrs:{},content:"100"},{tag:"height",attrs:{},content:"100"}]}]}),m=le(y,"product_catalog_add"),_=le(m,"product");return Vf(_)},B=async f=>{let Q=await i({tag:"iq",attrs:{to:OA,type:"set",xmlns:"w:biz:catalog"},content:[{tag:"product_catalog_delete",attrs:{v:"1"},content:f.map(m=>({tag:"product",attrs:{},content:[{tag:"id",attrs:{},content:Buffer.from(m)}]}))}]});return{deleted:+(le(Q,"product_catalog_delete")?.attrs.deleted_count||0)}};return{...t,logger:n.logger,getOrderDetails:c,getCatalog:s,getCollections:g,productCreate:d,productDelete:B,productUpdate:I,updateBussinesProfile:a,updateCoverPhoto:A,removeCoverPhoto:r}};var zce=n=>{let t=qce(n),{authState:o,ev:i,query:e,upsertMessage:a}=t,A=async(I,d,B)=>e({tag:"iq",attrs:{type:d,xmlns:"w:g2",to:I},content:B}),r=async I=>{let d=await A(I,"get",[{tag:"query",attrs:{request:"interactive"}}]);return $H(d)},s=async()=>{let I=await e({tag:"iq",attrs:{to:"@g.us",xmlns:"w:g2",type:"get"},content:[{tag:"participating",attrs:{},content:[{tag:"participants",attrs:{}},{tag:"description",attrs:{}}]}]}),d={},B=le(I,"communities");if(B){let f=PA(B,"community");for(let Q of f){let y=$H({tag:"result",attrs:{},content:[Q]});d[y.id]=y}}return t.ev.emit("groups.update",Object.values(d)),d};async function g(I){Jf.info({node:I},"parseGroupResult");let d=le(I,"group");if(d)try{Jf.info({groupNode:d},"groupNode");let B=await t.groupMetadata(`${d.attrs.id}@g.us`);return B||c.empty()}catch(B){return console.error("Error parsing group metadata:",B),c.empty()}return c.empty()}let c={empty:()=>null,of:I=>I!==null?{value:I}:null};return t.ws.on("CB:ib,,dirty",async I=>{let{attrs:d}=le(I,"dirty");d.type==="communities"&&(await s(),await t.cleanDirtyBits("groups"))}),{...t,communityMetadata:r,communityCreate:async(I,d)=>{let B=ZF().substring(0,12),f=await A("@g.us","set",[{tag:"create",attrs:{subject:I},content:[{tag:"description",attrs:{id:B},content:[{tag:"body",attrs:{},content:Buffer.from(d||"","utf-8")}]},{tag:"parent",attrs:{default_membership_approval_mode:"request_required"}},{tag:"allow_non_admin_sub_group_creation",attrs:{}},{tag:"create_general_chat",attrs:{}}]}]);return await g(f)},communityCreateGroup:async(I,d,B)=>{let f=jr(),Q=await A("@g.us","set",[{tag:"create",attrs:{subject:I,key:f},content:[...d.map(y=>({tag:"participant",attrs:{jid:y}})),{tag:"linked_parent",attrs:{jid:B}}]}]);return await g(Q)},communityLeave:async I=>{await A("@g.us","set",[{tag:"leave",attrs:{},content:[{tag:"community",attrs:{id:I}}]}])},communityUpdateSubject:async(I,d)=>{await A(I,"set",[{tag:"subject",attrs:{},content:Buffer.from(d,"utf-8")}])},communityLinkGroup:async(I,d)=>{await A(d,"set",[{tag:"links",attrs:{},content:[{tag:"link",attrs:{link_type:"sub_group"},content:[{tag:"group",attrs:{jid:I}}]}]}])},communityUnlinkGroup:async(I,d)=>{await A(d,"set",[{tag:"unlink",attrs:{unlink_type:"sub_group"},content:[{tag:"group",attrs:{jid:I}}]}])},communityFetchLinkedGroups:async I=>{let d=I,B=!1,f=await t.groupMetadata(I);f.linkedParent?d=f.linkedParent:B=!0;let Q=await A(d,"get",[{tag:"sub_groups",attrs:{}}]),y=[],m=le(Q,"sub_groups");if(m){let _=PA(m,"group");for(let T of _)y.push({id:T.attrs.id?yr(T.attrs.id,"g.us"):void 0,subject:T.attrs.subject||"",creation:T.attrs.creation?Number(T.attrs.creation):void 0,owner:T.attrs.creator?uA(T.attrs.creator):void 0,size:T.attrs.size?Number(T.attrs.size):void 0})}return{communityJid:d,isCommunity:B,linkedGroups:y}},communityRequestParticipantsList:async I=>{let d=await A(I,"get",[{tag:"membership_approval_requests",attrs:{}}]),B=le(d,"membership_approval_requests");return PA(B,"membership_approval_request").map(Q=>Q.attrs)},communityRequestParticipantsUpdate:async(I,d,B)=>{let f=await A(I,"set",[{tag:"membership_requests_action",attrs:{},content:[{tag:B,attrs:{},content:d.map(_=>({tag:"participant",attrs:{jid:_}}))}]}]),Q=le(f,"membership_requests_action"),y=le(Q,B);return PA(y,"participant").map(_=>({status:_.attrs.error||"200",jid:_.attrs.jid}))},communityParticipantsUpdate:async(I,d,B)=>{let f=await A(I,"set",[{tag:B,attrs:B==="remove"?{linked_groups:"true"}:{},content:d.map(m=>({tag:"participant",attrs:{jid:m}}))}]),Q=le(f,B);return PA(Q,"participant").map(m=>({status:m.attrs.error||"200",jid:m.attrs.jid,content:m}))},communityUpdateDescription:async(I,d)=>{let f=(await r(I)).descId??null;await A(I,"set",[{tag:"description",attrs:{...d?{id:ZF()}:{delete:"true"},...f?{prev:f}:{}},content:d?[{tag:"body",attrs:{},content:Buffer.from(d,"utf-8")}]:void 0}])},communityInviteCode:async I=>{let d=await A(I,"get",[{tag:"invite",attrs:{}}]);return le(d,"invite")?.attrs.code},communityRevokeInvite:async I=>{let d=await A(I,"set",[{tag:"invite",attrs:{}}]);return le(d,"invite")?.attrs.code},communityAcceptInvite:async I=>{let d=await A("@g.us","set",[{tag:"invite",attrs:{code:I}}]);return le(d,"community")?.attrs.jid},communityRevokeInviteV4:async(I,d)=>!!await A(I,"set",[{tag:"revoke",attrs:{},content:[{tag:"participant",attrs:{jid:d}}]}]),communityAcceptInviteV4:i.createBufferedFunction(async(I,d)=>{I=typeof I=="string"?{remoteJid:I}:I;let B=await A(d.groupJid,"set",[{tag:"accept",attrs:{code:d.inviteCode,expiration:d.inviteExpiration.toString(),admin:I.remoteJid}}]);return I.id&&(d=oe.Message.GroupInviteMessage.fromObject(d),d.inviteExpiration=0,d.inviteCode="",i.emit("messages.update",[{key:I,update:{message:{groupInviteMessage:d}}}])),await a({key:{remoteJid:d.groupJid,id:jr(t.user?.id),fromMe:!1,participant:I.remoteJid},messageStubType:RA.GROUP_PARTICIPANT_ADD,messageStubParameters:[JSON.stringify(o.creds.me)],participant:I.remoteJid,messageTimestamp:ba()},"notify"),B.attrs.from}),communityGetInviteInfo:async I=>{let d=await A("@g.us","get",[{tag:"invite",attrs:{code:I}}]);return $H(d)},communityToggleEphemeral:async(I,d)=>{let B=d?{tag:"ephemeral",attrs:{expiration:d.toString()}}:{tag:"not_ephemeral",attrs:{}};await A(I,"set",[B])},communitySettingUpdate:async(I,d)=>{await A(I,"set",[{tag:d,attrs:{}}])},communityMemberAddMode:async(I,d)=>{await A(I,"set",[{tag:"member_add_mode",attrs:{},content:d}])},communityJoinApprovalMode:async(I,d)=>{await A(I,"set",[{tag:"membership_approval_mode",attrs:{},content:[{tag:"community_join",attrs:{state:d}}]}])},communityFetchAllParticipating:s}},$H=n=>{let t=le(n,"community"),o=le(t,"description"),i,e;o&&(i=jA(o,"body"),e=o.attrs.id);let a=t.attrs.id?.includes("@")?t.attrs.id:yr(t.attrs.id||"","g.us"),A=le(t,"ephemeral")?.attrs.expiration,r=jA(t,"member_add_mode")==="all_member_add";return{id:a,subject:t.attrs.subject||"",subjectOwner:t.attrs.s_o,subjectTime:Number(t.attrs.s_t||0),size:PA(t,"participant").length,creation:Number(t.attrs.creation||0),owner:t.attrs.creator?uA(t.attrs.creator):void 0,desc:i,descId:e,linkedParent:le(t,"linked_parent")?.attrs.jid||void 0,restrict:!!le(t,"locked"),announce:!!le(t,"announcement"),isCommunity:!!le(t,"parent"),isCommunityAnnounce:!!le(t,"default_sub_community"),joinApprovalMode:!!le(t,"membership_approval_mode"),memberAddMode:r,participants:PA(t,"participant").map(({attrs:g})=>({id:g.jid,admin:g.type||null})),ephemeralDuration:A?+A:void 0,addressingMode:jA(t,"addressing_mode")}};var IZe=n=>{let t={...Qce,...n};return zce(t)},Vce=IZe;var Wce=Vce;var lZe=Object.freeze({key:"whatsapp",label:"WhatsApp",get connectionLabel(){return w(" Web \u5173\u8054\u8BBE\u5907")},reactions:Object.freeze({processing:"\u{1F440}",success:"\u2705",error:"\u274C"})}),uM=class extends ns{constructor(t){super({...t,descriptor:lZe})}};import{chmod as Zce,mkdir as pZe,readdir as dZe}from"node:fs/promises";var hZe=Object.freeze({level:"silent",trace(){},debug(){},info(){},warn(){},error(){},fatal(){},child(){return this}}),EZe=6e4;function Xce(){return Object.assign(new Error("WhatsApp connection was cancelled"),{name:"AbortError"})}function CZe(n){return n?.output?.statusCode??n?.data?.statusCode??n?.statusCode??null}function uZe(n){let t=n;if(typeof t=="string"){if(!/^\d+$/.test(t))return null;t=Number(t)}else typeof t=="bigint"?t=Number(t):t&&typeof t=="object"&&(t=Number(t.valueOf()));return Number.isFinite(t)&&t>=0?t*1e3:null}async function eK(n){await pZe(n,{recursive:!0,mode:448}),await Zce(n,448);let t=await dZe(n,{withFileTypes:!0}).catch(()=>[]);await Promise.all(t.filter(o=>o.isFile()).map(o=>Zce(`${n}/${o.name}`,384).catch(()=>{})))}function BZe(n,t){let o=n.user??t.creds.me,i=uA(o?.id);if(!/^\d{5,32}@(s\.whatsapp\.net|lid)$/.test(i??""))throw new Error("WhatsApp did not return a valid linked account");return{accountJid:i,name:typeof o?.name=="string"&&o.name.trim()?o.name.trim().slice(0,100):w("WhatsApp\u673A\u5668\u4EBA")}}async function BM({authDir:n,onQr:t,onMessage:o,onDisconnect:i,signal:e,logger:a=console,makeSocket:A=Wce,loadAuthState:r=zne}={}){if(!n||typeof t!="function")throw new TypeError("WhatsApp Web session requires an auth directory and QR callback");await eK(n);let s=Date.now(),{state:g,saveCreds:c}=await r(n),I=g.keys.set.bind(g.keys);g.keys.set=async q=>{await I(q),await eK(n)};let d=!1,B=!1,f,Q,y=Promise.resolve(),m=null,_=0,T=null,R=new Promise((q,x)=>{f=q,Q=x}),K=q=>{B||(B=!0,Q(q))},L=async()=>{d||(d=!0,_+=1,K(Xce()),await T?.catch(()=>{}),await y.catch(()=>{}),await m?.end(void 0).catch(()=>{}))},U=async()=>{d||(d=!0,_+=1,K(Xce()),await T?.catch(()=>{}),await y.catch(()=>{}),await m?.logout("Removed from DeepSeek Harness").catch(()=>{}))},z=()=>{let q=++_,x=!1,G=A({auth:g,browser:Rb.macOS("DeepSeek Harness"),logger:hZe,markOnlineOnConnect:!1,syncFullHistory:!1,shouldSyncHistoryMessage:()=>!1,getMessage:async()=>{},generateHighQualityLinkPreview:!1});m=G;let V=()=>{!x||!g.creds.me||B||y.then(()=>{d||B||q!==_||!x||!g.creds.me||(B=!0,f(BZe(G,g)))}).catch(F=>K(F))};G.ev.on("creds.update",()=>{d||q!==_||(y=y.then(async()=>{await c(),await eK(n)}),y.catch(()=>a.error?.("[dsh-im:whatsapp] failed to persist linked-device state")),V())}),G.ev.on("connection.update",F=>{if(!(d||q!==_)&&(typeof F.qr=="string"&&F.qr&&t(F.qr),F.connection==="open"&&(x=!0,V()),F.connection==="close")){let N=CZe(F.lastDisconnect?.error);if(N===$t.restartRequired){T??=y.then(async()=>{d||q!==_||(await G.end(void 0).catch(()=>{}),!(d||q!==_)&&z())}).catch($=>K($)).finally(()=>{T=null});return}let k=N===$t.loggedOut,J=Object.assign(new Error(k?"WhatsApp linked device was removed from the phone":"WhatsApp Web connection closed"),{code:k?"logged-out":"connection-closed"});B?i?.({error:J,loggedOut:k}):K(J)}}),G.ev.on("messages.upsert",({messages:F,type:N})=>{if(!(d||q!==_||N!=="notify"&&N!=="append"||typeof o!="function"))for(let k of Array.isArray(F)?F:[]){if(N==="append"){let J=uZe(k?.messageTimestamp);if(J===null||J{a.error?.("[dsh-im:whatsapp] failed to process an inbound WhatsApp message")})}})};return z(),e&&(e.aborted?await L():e.addEventListener("abort",()=>void L(),{once:!0})),Object.freeze({get socket(){return m},ready:R,close:L,logout:U})}var tK=new Set(["image/jpeg","image/png","image/webp","image/gif"]),QZe=5*1024*1024,AK=15e3,rK=12e4,yZe=["ephemeralMessage","viewOnceMessage","documentWithCaptionMessage","viewOnceMessageV2","viewOnceMessageV2Extension","editedMessage","associatedChildMessage","groupStatusMessage","groupStatusMessageV2"],mZe=new Set(["viewOnceMessage","viewOnceMessageV2","viewOnceMessageV2Extension"]),SZe=new Set(["s.whatsapp.net","c.us","lid","hosted","hosted.lid"]);function eIe(n){if(typeof n!="string")return null;let t=n.trim();if(/^\+?\d+$/.test(t))return`${t.replace(/^\+/,"")}@s.whatsapp.net`;let o=fA(t);return!o||!/^\d+$/.test(o.user)||!SZe.has(o.server)?null:t}function oK(n,t){let o=eIe(n),i=eIe(t);if(!o||!i)return!1;try{return Rt(o,i)===!0}catch{return!1}}function wZe(n){let t=n;for(let o=0;o<5&&t&&typeof t=="object";o+=1){let i=yZe.find(e=>t[e]?.message);if(!i)return!1;if(mZe.has(i))return!0;t=t[i].message}return!1}function DZe(n){return n?.extendedTextMessage?.contextInfo??n?.imageMessage?.contextInfo??n?.videoMessage?.contextInfo??n?.documentMessage?.contextInfo??null}function OZe(n){return n?.conversation??n?.extendedTextMessage?.text??n?.imageMessage?.caption??n?.videoMessage?.caption??n?.documentMessage?.caption??""}function tIe(n){if(Number.isSafeInteger(n)&&n>=0)return n;let t;try{t=Number(n?.toString?.())}catch{return}return Number.isSafeInteger(t)&&t>=0?t:void 0}async function bZe(n,t,{signal:o,maxBytes:i=QZe}={}){o?.throwIfAborted();let e=AbortSignal.timeout(AK),a=o?AbortSignal.any([o,e]):e,A=Promise.resolve().then(()=>t(n,"stream",{options:{signal:a}})),r=await new Promise((I,d)=>{let B=!1,f=(y,m)=>B?!1:(B=!0,a.removeEventListener("abort",Q),y(m),!0),Q=()=>f(d,a.reason);a.addEventListener("abort",Q,{once:!0}),A.then(y=>{f(I,y)||y?.destroy?.()},y=>f(d,y)),a.aborted&&Q()}).catch(I=>{throw o?.aborted?o.reason??I:e.aborted?new ut("image-download-failed",`WhatsApp image download timed out after ${AK} ms`,w("\u56FE\u7247\u4E0B\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001\u540E\u518D\u8BD5\u3002")):I}),s=[],g=0,c=()=>r?.destroy?.(a.reason);a.addEventListener("abort",c,{once:!0});try{for await(let I of r){a.throwIfAborted();let d=Buffer.from(I);if(g+=d.length,g>i)throw r.destroy?.(),new ut("image-too-large",`WhatsApp image exceeded ${i} bytes`,w("\u56FE\u7247\u8D85\u8FC7 5 MB\uFF0C\u8BF7\u538B\u7F29\u540E\u91CD\u8BD5\u3002"));s.push(d)}}catch(I){throw o?.aborted?o.reason??I:e.aborted?new ut("image-download-failed",`WhatsApp image stream timed out after ${AK} ms`,w("\u56FE\u7247\u4E0B\u8F7D\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001\u540E\u518D\u8BD5\u3002")):I}finally{a.removeEventListener("abort",c)}return Buffer.concat(s,g)}function MZe(n,t,o,{viewOnce:i=!1}={}){let e,a;if(!i&&t?.imageMessage&&t.imageMessage.viewOnce!==!0)e=t.imageMessage;else if(t?.documentMessage){let r=typeof t.documentMessage.mimetype=="string"?t.documentMessage.mimetype.toLowerCase():"";if(!tK.has(r))return null;e=t.documentMessage,a=typeof e.fileName=="string"?e.fileName:void 0}if(!e)return null;let A=typeof e.mimetype=="string"?e.mimetype.toLowerCase():"";return tK.has(A)?{name:a,mediaType:A,size:tIe(e.fileLength),load:r=>bZe(n,o,r)}:null}function _Ze(n,t,o){let i=t?.documentMessage;if(!i)return null;let e=typeof i.mimetype=="string"&&i.mimetype?i.mimetype.toLowerCase():void 0;return tK.has(e)?null:{name:typeof i.fileName=="string"&&i.fileName?i.fileName:"whatsapp-file",...e?{mediaType:e}:{},size:tIe(i.fileLength),async load({signal:a}={}){a?.throwIfAborted();let A=await o(n,"stream",{options:{signal:a}});return a?.throwIfAborted(),{stream:A}}}}function TZe({socket:n,logger:t=console,download:o=uU}={}){if(typeof o!="function")throw new TypeError("WhatsApp media downloader is required");return typeof n?.updateMediaMessage!="function"?o:(i,e,a)=>o(i,e,a,{logger:t,reuploadRequest:A=>n.updateMediaMessage(A)})}function NZe(n,t,{download:o=uU}={}){let i=typeof n?.key?.remoteJid=="string"?n.key.remoteJid:"",e=typeof n?.key?.remoteJidAlt=="string"?n.key.remoteJidAlt:"",a=typeof n?.key?.id=="string"?n.key.id:"";if(!i||!a||i==="status@broadcast"||i.endsWith("@newsletter"))return null;let A=i.endsWith("@g.us"),r=n.key.fromMe===!0,s=r&&!A&&[i,e].some(_=>_&&Rt(_,t));if(r&&!s&&!A)return null;let g=r?t:A?n.key.participant:i,c=A&&!r?n.key.participantAlt:e;if(typeof g!="string"||!g)return null;let I=wZe(n.message),d=Ra(n.message),B=DZe(d),f=Array.isArray(B?.mentionedJid)&&B.mentionedJid.some(_=>Rt(_,t)),Q=typeof B?.participant=="string"&&Rt(B.participant,t),y=MZe(n,d,o,{viewOnce:I}),m=_Ze(n,d,o);return{messageId:`${i}:${a}`,providerMessageId:a,senderId:g,contextSource:()=>({senderName:n.pushName}),senderAlternateId:typeof c=="string"?c:"",senderIsBot:!1,kind:A?"group":"direct",conversationId:i,content:OZe(d),plainText:typeof d?.conversation=="string"||typeof d?.extendedTextMessage?.text=="string",images:y?[y]:[],files:m?[m]:[],addressed:!A||r||f||Q,selfChat:s,replyTarget:{jid:i,quoted:n,selfChat:s},reactionTarget:{jid:i,key:n.key}}}var aK=class{#e=new Map;has(t){return this.#t(),this.#e.has(t)}remember(t){this.#A(t)}reserve(t){this.#A(t)}#A(t){if(!(typeof t!="string"||!t))for(this.#t(),this.#e.set(t,Date.now()+5*6e4);this.#e.size>256;)this.#e.delete(this.#e.keys().next().value)}#t(){let t=Date.now();for(let[o,i]of this.#e)i>t||this.#e.delete(o)}};function rIe(n){return n?.reason??new DOMException("The operation was aborted.","AbortError")}function AIe(n,t){return t?(t.throwIfAborted(),new Promise((o,i)=>{let e=!1,a=(r,s)=>{e||(e=!0,t.removeEventListener("abort",A),r(s))},A=()=>a(i,rIe(t));t.addEventListener("abort",A,{once:!0}),Promise.resolve(n).then(r=>a(o,r),r=>a(i,r)),t.aborted&&A()})):n}function RZe(n){if(n?.code==="artifact-delivery-uncertain")return n;let t=new Error("WhatsApp could not confirm artifact delivery.");return t.code="artifact-delivery-uncertain",t.cause=n,t}function kZe(n){if(n?.code?.startsWith?.("artifact-"))return n;let t=n?.output?.statusCode??n?.data?.statusCode??n?.statusCode,o;if(t===401||t===403?o="artifact-permission-required":t===413?o="artifact-too-large":t===429?o="artifact-rate-limited":[400,404,405,406,410,415,422].includes(t)&&(o="artifact-provider-rejected"),!o)return RZe(n);let i=new Error("WhatsApp rejected artifact delivery.");return i.code=o,i.cause=n,i}var iK=class{#e;#A;#t;#r;#l=new Map;constructor(t,o,{signal:i,mediaUploadTimeoutMs:e=rK}={}){this.#e=t,this.#A=o,this.#t=i,this.#r=e}async sendText(t,o){await this.#a(t.jid);let i=[];for(let[e,a]of ss(o,4e3).entries()){let A=$ce(10).toString("hex").toUpperCase(),r={...e===0&&t.quoted?{quoted:t.quoted}:{},messageId:A};typeof this.#A.reserve=="function"?this.#A.reserve(A):this.#A.remember(A);let s=await this.#e.sendMessage(t.jid,{text:a},r);this.#A.remember(s?.key?.id),typeof s?.key?.id=="string"&&s.key.id&&i.push(s.key.id)}return{providerMessageIds:i}}async sendFile(t,o){return this.#i(t,o,{document:o.bytes,mimetype:o.mediaType??"application/octet-stream",fileName:o.fileName},"file")}async sendImage(t,o){return this.#i(t,o,{image:o.bytes,mimetype:o.mediaType??"image/jpeg"},"image")}async addReaction(t,o,{signal:i}={}){if(typeof o!="string"||!o.trim())throw new TypeError("A WhatsApp reaction emoji is required");let e=o.trim();return await this.#o(t,e,i),e}removeReaction(t,o,{signal:i}={}){return this.#o(t,"",i)}async#o(t,o,i){if(typeof t?.jid!="string"||!t.jid||!t.key?.id)throw new TypeError("A WhatsApp reaction target is required");let e=i??this.#t;e?.throwIfAborted();let a=$ce(10).toString("hex").toUpperCase();typeof this.#A.reserve=="function"?this.#A.reserve(a):this.#A.remember(a);let A=this.#e.sendMessage(t.jid,{react:{text:o,key:t.key}},{messageId:a}),r=await AIe(A,e);return this.#A.remember(r?.key?.id),r}async#i(t,o,i,e){this.#t?.throwIfAborted(),await this.#a(t.jid),this.#t?.throwIfAborted();let a=typeof o.deliveryKey=="string"&&o.deliveryKey?o.deliveryKey:o.artifactId,A=e==="image"?`${a}:image`:a,r=typeof A=="string"&&A?fZe("sha256").update(A).digest("hex").slice(0,20).toUpperCase():void 0,s={...t.quoted?{quoted:t.quoted}:{},...r?{messageId:r}:{},mediaUploadTimeoutMs:this.#r};this.#A.remember(r);let g;try{let c=this.#e.sendMessage(t.jid,i,s);Bn(o,c);let I=AbortSignal.timeout(this.#r),d=this.#t?AbortSignal.any([this.#t,I]):I;g=await AIe(c,d)}catch(c){throw this.#t?.aborted?rIe(this.#t):kZe(c)}return this.#t?.throwIfAborted(),this.#A.remember(g?.key?.id),g}async sendTyping(t){!t.selfChat&&t.quoted?.key&&await this.#e.readMessages([t.quoted.key]).catch(()=>{}),await this.#e.sendPresenceUpdate("composing",t.jid),await this.#a(t.jid,!1);let o=setInterval(()=>{this.#e.sendPresenceUpdate("composing",t.jid).catch(()=>{this.#a(t.jid)})},2e4);o.unref?.(),this.#l.set(t.jid,o)}async close(){let t=[...this.#l.keys()];await Promise.allSettled(t.map(o=>this.#a(o)))}async#a(t,o=!0){let i=this.#l.get(t);i&&clearInterval(i),this.#l.delete(t),o&&await this.#e.sendPresenceUpdate("paused",t).catch(()=>{})}};function vZe(){return{startedAt:null,ready:!1,connectionState:"idle",harnessReachable:!1,lastCheckedAt:null,lastConnectedAt:null,lastError:null,...io()}}var Xf=class{#e;#A;#t;#r;#l;#o;#i;#a;#n;#s;#p;#c=vZe();#g=null;#I=null;#d=null;#h=null;#C=null;constructor({config:t,authDir:o,harness:i,state:e,contextEnhancement:a,accessPolicy:A,logger:r=console,replyTimeoutMs:s=6e5,connectTimeoutMs:g=3e4,mediaUploadTimeoutMs:c=rK,createSession:I=BM}){if(!t||!o||!i||!e||typeof I!="function")throw new TypeError("WhatsappRuntime requires config, auth directory, Harness, state, and session factory");if(this.#e=t,this.#A=o,this.#t=i,this.#r=e,this.#l=a,this.#o=A,this.#i=r,this.#a=s,this.#n=g,!Number.isSafeInteger(c)||c<=0)throw new TypeError("mediaUploadTimeoutMs must be a positive safe integer");this.#s=Math.min(c,rK),this.#p=I}get status(){return structuredClone(this.#c)}async start(){return this.#c.ready&&this.#I?this.status:this.#C?this.#C:(this.#C=this.#u().finally(()=>{this.#C=null}),this.#C)}async#u(){await this.stop(),this.#c.startedAt=new Date().toISOString(),this.#c.connectionState="connecting",this.#c.lastError=null,await this.#t.ensureRunning(),this.#c.harnessReachable=!0;let t=new AbortController;this.#g=t;let o=new aK,i,e=new Promise((a,A)=>{i=A});e.catch(()=>{});try{let a=await this.#p({authDir:this.#A,signal:t.signal,logger:this.#i,onQr:()=>i(Object.assign(new Error("WhatsApp linked-device session must be scanned again"),{code:"relink-required"})),onMessage:async(c,I)=>{let d=NZe(c,this.#e.accountJid,{download:TZe({socket:I?.socket,logger:this.#i})});!d||o.has(d.providerMessageId)||!this.#h||(this.#c.lastCheckedAt=Date.now(),await this.#h.accept(d))},onDisconnect:({error:c})=>{t.signal.aborted||(this.#c.ready=!1,this.#c.connectionState="failed",this.#c.lastError=c?.message??"WhatsApp Web connection closed")}});this.#I=a;let A,r=await Promise.race([a.ready,e,new Promise((c,I)=>{A=setTimeout(()=>I(new Error("WhatsApp Web did not connect in time")),this.#n)})]).finally(()=>clearTimeout(A));if(!Rt(r.accountJid,this.#e.accountJid))throw new Error("WhatsApp linked account does not match the saved bot");let s=new iK(a.socket,o,{signal:t.signal,mediaUploadTimeoutMs:this.#s});this.#d=s,this.#h=new uM({bot:s,harness:this.#t,state:this.#r,contextEnhancement:this.#l,accessPolicy:this.#o?{botId:this.#o.botId,getSettings:(...c)=>this.#o.getSettings(...c),...typeof this.#o.isPrivileged=="function"?{isPrivileged:(...c)=>this.#o.isPrivileged(...c)}:{},equals:oK}:void 0,status:this.#c,logger:this.#i,replyTimeoutMs:this.#a,signal:t.signal});let g=Date.now();return this.#c.ready=!0,this.#c.connectionState="connected",this.#c.lastCheckedAt=g,this.#c.lastConnectedAt=g,this.status}catch(a){throw this.#c.ready=!1,this.#c.connectionState="failed",this.#c.lastError=a?.message??String(a),await this.stop(),a}}async logout(){return await this.#I?.logout().catch(()=>{}),this.stop()}async sendConnectionTest(t){if(!this.#c.ready||!this.#d){let o=new Error(w("WhatsApp\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5"));throw o.code="test-target-unavailable",o}if(typeof t!="string"||!t.trim())throw new TypeError("WhatsApp connection test text is required");return await this.#d.sendText({jid:this.#e.accountJid,selfChat:!0},t),{sent:!0}}async sendProactiveText(t,o,{signal:i}={}){let e=typeof t?.route?.jid=="string"?t.route.jid.trim():"",a=t?.kind==="user"&&/^[^@\s]+@(s\.whatsapp\.net|lid)$/.test(e),A=t?.kind==="group"&&/^[^@\s]+@g\.us$/.test(e);if(!a&&!A){let r=new TypeError("Invalid WhatsApp proactive delivery target");throw r.code="invalid-target",r}if(!this.#c.ready||!this.#d){let r=new Error(w("WhatsApp\u673A\u5668\u4EBA\u5C1A\u672A\u8FDE\u63A5"));throw r.code="bot-not-connected",r}return i?.throwIfAborted(),this.#d.sendText({jid:e},o)}async stop(){let t=this.#I,o=this.#d,i=this.#h;return this.#g?.abort(),this.#g=null,this.#I=null,this.#d=null,this.#h=null,await o?.close().catch(()=>{}),await t?.close().catch(()=>{}),await Promise.race([i?.waitForIdle()??Promise.resolve(),new Promise(e=>setTimeout(e,2e3))]),this.#c.ready=!1,this.#c.connectionState="idle",this.status}};var LZe=/^[a-f0-9-]{36}$/;function UZe(n){let t=ic(n.dshHome??process.env.DSH_HOME??ME(FZe(),".dsh")),o=ic(n.dataDir??ME(t,"integrations","dsh-whatsapp")),i=ic(n.authDir??ME(o,"auth")),e=a=>{if(!LZe.test(a??""))throw new TypeError("Invalid WhatsApp auth directory");return ic(i,a)};return{config:ic(n.configPath??ME(o,"config.json")),bots:ic(n.botsDir??ME(o,"bots")),workspaces:ic(n.workspacesPath??ME(o,"workspaces.json")),authPath:e}}async function nK(n,t={},o={}){let i=aa(n,t),e=typeof n.logger=="function"?n.logger("dsh-im:whatsapp"):n.logger??console,a=()=>La(n),A=o.ConfigStore??Rw,r=o.StateStore??Pw,s=o.HarnessClient??vw,g=o.Controller??dB,c=o.Runtime??Xf,I=o.createSession??BM,d=o.createConnectionSupervisor??jp,B=UZe(t),f=await new A(B.config).load(),Q=ic(t.workspace??process.cwd()),y=o.WorkspaceStore??ra,m=o.workspaces??await new y(B.workspaces,{defaultWorkspace:Q}).load(),_=f.list();await m.reconcile(_.map(k=>k.botId)),await Promise.all(_.map(k=>m.ensure(k.botId,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("whatsapp",k)})));let T=typeof f.remove=="function"?Ha(f,{workspaces:m}):f,R=new Map,K=k=>ic(B.bots,k,"state.json"),L=async k=>{let J=R.get(k);return J||(J=await new r(K(k)).load(),R.set(k,J)),J},U=ja(n,o.commandExecutor),{controlExecutor:z,sessionMaintenanceExecutor:q,fileIngressExecutor:x}=Ja(n,{controlExecutor:o.controlExecutor,sessionMaintenanceExecutor:o.sessionMaintenanceExecutor,fileIngressExecutor:o.fileIngressExecutor}),G=new s({...i,workspace:Q,autostart:!1,dshBin:t.dshBin??"dsh",...U?{commandExecutor:U}:{},...z?{controlExecutor:z}:{},...q?{sessionMaintenanceExecutor:q}:{},...x?{fileIngressExecutor:x}:{}}),V=new g({configStore:T,authPath:B.authPath,createSession:I,logger:e,createRuntime:async({botId:k,config:J,authDir:$})=>{let ie=await L(k);await m.ensure(k,{defaultAgentPreset:t.agentPreset,initialAccessPolicy:nr("whatsapp",J)});let pe=Ka(G,{botId:k,workspaces:m,state:ie,agentPresetCatalog:a});return new c({config:J,authDir:$,harness:pe.harness,state:pe.state,contextEnhancement:{botId:k,getSettings:()=>m.contextEnhancementFor(k)},accessPolicy:qa(m,k,{channel:"whatsapp",config:J,equals:oK}),replyTimeoutMs:t.replyTimeoutMs??6e5,connectTimeoutMs:t.connectTimeoutMs??3e4,createSession:I,logger:{error:(...se)=>e.error?.(`[${k}]`,...se),warn:(...se)=>e.warn?.(`[${k}]`,...se),info:(...se)=>e.info?.(`[${k}]`,...se),debug:(...se)=>e.debug?.(`[${k}]`,...se)}})},deleteAuth:k=>PZe(B.authPath(k),{recursive:!0,force:!0}),deleteState:async({botId:k})=>{let J=R.get(k);if(R.delete(k),J&&typeof J.remove=="function")await J.remove();else try{await GZe(K(k))}catch($){if($?.code!=="ENOENT")throw $}}}),F=xa(V,{workspaces:m,stateFor:L,agentPresetCatalog:a}),N=d({channel:"whatsapp",controller:F,harness:G,logger:e,retryDelaysMs:t.retryDelaysMs,healthyIntervalMs:t.healthyIntervalMs}).start();return{controller:F,deliveryAdapter:Ya({channel:"whatsapp",workspaces:m,coreController:V,stateFor:L}),ready:N.ready,async close(){await N.close(),await F.close(),G.stopManagedProcess()}}}import HZe from"qrcode";var aIe="/whatsapp",Mr=Object.freeze({status:"connection.status",beginProvisioning:"provision.begin",pollProvisioning:"provision.poll",cancelProvisioning:"provision.cancel",reconnectBot:"bot.reconnect",deleteBot:"bot.delete",setAccessPolicy:Va,setWorkspace:vi,setAgentPreset:Pi,setContextEnhancement:ki}),iIe=Object.freeze(Object.values(Mr)),KZe=new Set(["qrValue","accountJid","authDirectory"]);function cK(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function fM(n,t){return cK(n)&&Object.keys(n).every(o=>t.includes(o))}function sK(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function xZe(n,t){return cK(t)?[Mr.status,Mr.beginProvisioning].includes(n)?fM(t,[])?null:`${n} does not accept fields.`:[Mr.pollProvisioning,Mr.cancelProvisioning].includes(n)?fM(t,["attemptId"])&&sK(t.attemptId)?null:`${n} requires an attemptId.`:n===Mr.reconnectBot?fM(t,["botId","sendTest"])&&sK(t.botId)&&(t.sendTest===void 0||typeof t.sendTest=="boolean")?null:"bot.reconnect requires a botId and optional sendTest flag.":n===Mr.deleteBot?fM(t,["botId","confirm"])&&sK(t.botId)&&t.confirm===!0?null:"bot.delete requires a botId and confirm=true.":n===Mr.setAccessPolicy?Wa(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u8BBF\u95EE\u8BBE\u7F6E\u3002":n===Mr.setWorkspace?Za(t)?null:"\u8BF7\u8F93\u5165\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002":n===Mr.setAgentPreset?$a(t)?null:"\u8BF7\u9009\u62E9 Agent Preset\u3002":n===Mr.setContextEnhancement?za(t)?null:"\u8BF7\u63D0\u4EA4\u6709\u6548\u7684\u4E0A\u4E0B\u6587\u589E\u5F3A\u8BBE\u7F6E\u3002":"Unknown WhatsApp endpoint.":"Payload must be an object."}function _E(n){if(Array.isArray(n))return n.map(_E);if(!cK(n))return n;let t={};for(let[o,i]of Object.entries(n))KZe.has(o)||(t[o]=_E(i));return t}async function YZe(n){return HZe.toDataURL(n,{type:"image/png",errorCorrectionLevel:"M",margin:2,width:320})}async function gK(n,t){return!n||typeof n.qrValue!="string"?_E(n):_E({...n,qrCodeDataUrl:await t(n.qrValue)})}async function Bp(n,t){let o=structuredClone(n);return o?.provisioning&&(o.provisioning=await gK(o.provisioning,t)),_E(o)}function oIe(n,{encodeQr:t=YZe}={}){for(let e of["status","startProvisioning","registrationStatus","cancelProvisioning","reconnectBot","deleteBot"])if(typeof n?.[e]!="function")throw new TypeError(`A complete WhatsApp controller is required (${e})`);let o=new Map,i=e=>{let a=o.get(e);return a||(o.size>=16&&o.delete(o.keys().next().value),a=Promise.resolve().then(()=>t(e)),o.set(e,a)),a};return async(e,a,A)=>{if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(!iIe.includes(e))return{ok:!1,error:{code:"bad-request",message:"Unknown WhatsApp endpoint."}};let r=xZe(e,a);if(r)return{ok:!1,error:{code:"bad-request",message:r}};try{let s;if(e===Mr.status)s=await Bp(await n.status(),i);else if(e===Mr.beginProvisioning)s=await gK(await n.startProvisioning(),i);else if(e===Mr.pollProvisioning){let g=await n.registrationStatus(a.attemptId);if(!g)return{ok:!1,error:{code:"bad-request",message:"The provisioning attempt no longer exists."}};s=await gK(g,i)}else if(e===Mr.cancelProvisioning)s=_E(await n.cancelProvisioning(a.attemptId));else if(e===Mr.reconnectBot){let g=await n.reconnectBot(a.botId);if(A?.aborted)return{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}};if(s=await Bp(g,i),a.sendTest===!0){let c=null;if(!(g?.bots?.some(d=>d?.botId===a.botId&&d.connected===!0)===!0))c=new Error("WhatsApp bot is not connected"),c.code="test-target-unavailable";else try{if(typeof n.sendConnectionTest!="function"){let d=new Error("Connection test is unavailable");throw d.code="test-target-unavailable",d}await n.sendConnectionTest(a.botId)}catch(d){c=d}s={...s,testMessage:or(c)}}}else if(e===Mr.setWorkspace){if(typeof n.updateWorkspace!="function")throw new Error("Workspace update is unavailable");s=await Bp(await n.updateWorkspace(a.botId,a.workspace),i)}else if(e===Mr.setContextEnhancement){if(typeof n.updateContextEnhancement!="function")throw new Error("Context enhancement update is unavailable");s=await n.updateContextEnhancement(a.botId,a.config,g=>Bp(g,i))}else if(e===Mr.setAgentPreset){if(typeof n.updateAgentPreset!="function")throw new Error("Agent preset update is unavailable");s=await Bp(await n.updateAgentPreset(a.botId,a.agentPreset),i)}else if(e===Mr.setAccessPolicy){if(typeof n.updateAccessPolicy!="function")throw new Error("Access policy update is unavailable");s=await n.updateAccessPolicy(a.botId,a.policy,g=>Bp(g,i))}else s=await Bp(await n.deleteBot(a.botId),i);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!0,value:s}}catch(s){let g=Xa(s);return A?.aborted?{ok:!1,error:{code:"cancelled",message:"The request was cancelled."}}:{ok:!1,error:g??{code:"whatsapp-operation-failed",message:"WhatsApp \u64CD\u4F5C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"}}}}}function QM(n,t,o,i){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(aIe,oIe(t,o),{authority:fr(i)})}async function nIe(n,t={}){if(t?.controller)return QM(n,t.controller,t.rpcOptions,t.rpcAuthority);let o=await nK(n,t,t.internals??{}),i=t.deliveryService&&o.deliveryAdapter?t.deliveryService.registerAdapter(o.deliveryAdapter):void 0,e=QM(n,o.controller,t.rpcOptions,t.rpcAuthority);return n.effect(()=>async()=>{await i?.(),await o.close()},"dsh-im: close WhatsApp Web connections"),e}var jZe="/dsh-im-delivery",JZe="DSH-IM \u4E3B\u52A8\u6295\u9012\u6D4B\u8BD5\u6210\u529F\u3002",yi=Object.freeze({send:"message.send",listTargets:"target.list",listSuggestions:"target.suggestion.list",createTarget:"target.create",updateTarget:"target.update",deleteTarget:"target.delete",testTarget:"target.test"}),qZe=new Set(Object.values(yi)),zZe=new Set(["bad-request","unknown-bot","unknown-target","target-conflict","invalid-target","bot-not-connected","target-rejected","delivery-failed","cancelled"]);function eQ(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function OI(n,t){return eQ(n)&&Object.keys(n).length===t.length&&Object.keys(n).every(o=>t.includes(o))}function fp(n){return typeof n=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(n)}function $f(n){return typeof n=="string"&&/^[A-Za-z0-9._:@-]{1,128}$/.test(n)}function sIe(n,{targetId:t}){let o=t?["targetId","name","kind","route"]:["name","kind","route"];return!eQ(n)||Object.keys(n).some(i=>!o.includes(i))||t&&!$f(n.targetId)||n.name!==void 0&&(typeof n.name!="string"||!n.name.trim()||n.name.trim().length>80)?!1:typeof n.kind=="string"&&/^[a-z][a-z0-9-]{0,31}$/.test(n.kind)&&eQ(n.route)}function VZe(n){return OI(n,["kind","route"])&&typeof n.kind=="string"&&/^[a-z][a-z0-9-]{0,31}$/.test(n.kind)&&eQ(n.route)}function WZe(n,t){return!qZe.has(n)||!eQ(t)?!1:n===yi.send?OI(t,["botId","targetId","text"])&&fp(t.botId)&&$f(t.targetId)&&typeof t.text=="string"&&!!t.text.trim():n===yi.listTargets||n===yi.listSuggestions?OI(t,["botId"])&&fp(t.botId):n===yi.createTarget?OI(t,["botId","target"])&&fp(t.botId)&&sIe(t.target,{targetId:!0}):n===yi.updateTarget?OI(t,["botId","targetId","target"])&&fp(t.botId)&&$f(t.targetId)&&sIe(t.target,{targetId:!1}):n===yi.testTarget?OI(t,["botId","targetId"])&&fp(t.botId)&&$f(t.targetId)||OI(t,["botId","target"])&&fp(t.botId)&&VZe(t.target):OI(t,["botId","targetId"])&&fp(t.botId)&&$f(t.targetId)}function ZZe(n){let t=zZe.has(n?.code)?n.code:"delivery-failed";return{code:t,message:t,details:{}}}function IK(n){for(let t of["send","listTargets","listSuggestions","createTarget","updateTarget","deleteTarget"])if(typeof n?.[t]!="function")throw new TypeError(`A complete delivery service is required (${t})`);return async(t,o,i)=>{if(!WZe(t,o))return{ok:!1,error:{code:"bad-request",message:"Invalid delivery request.",details:{}}};if(i?.aborted)return{ok:!1,error:{code:"cancelled",message:"cancelled",details:{}}};try{let e;return t===yi.send?e=await n.send(o.botId,o.targetId,o.text,{signal:i}):t===yi.listTargets?e=await n.listTargets(o.botId):t===yi.listSuggestions?e=await n.listSuggestions(o.botId):t===yi.createTarget?e=await n.createTarget(o.botId,o.target):t===yi.updateTarget?e=await n.updateTarget(o.botId,o.targetId,o.target):t===yi.deleteTarget?e=await n.deleteTarget(o.botId,o.targetId):e=await n.send(o.botId,Object.hasOwn(o,"target")?o.target:o.targetId,JZe,{signal:i}),{ok:!0,value:e}}catch(e){return{ok:!1,error:ZZe(e)}}}}function gIe(n,t,{authority:o}={}){if(!n?.connection?.rpc||typeof n.connection.rpc.handle!="function")throw new TypeError("DSH Host Connection RPC is required");return n.connection.rpc.handle(jZe,IK(t),{authority:fr(o)})}var cIe="/api/dsh-im/delivery/messages",IIe=1024*1024,XZe=Object.freeze({"bad-request":400,"unknown-bot":404,"unknown-target":404,"target-conflict":409,"invalid-target":422,"bot-not-connected":503,"target-rejected":422,"delivery-failed":502,cancelled:408}),NE=class extends Error{constructor(t,o){super(o),this.status=t,this.code=o}};function TE(n,t,o,i={}){if(n.destroyed||n.writableEnded)return;let e=JSON.stringify(o);n.writeHead(t,{"cache-control":"no-store","content-type":"application/json; charset=utf-8","content-length":String(Buffer.byteLength(e)),...i}),n.end(e)}function $Ze(n){return typeof n=="string"&&n.split(";",1)[0].trim().toLowerCase()==="application/json"}async function e9e(n){let t=Number(n.headers["content-length"]);if(Number.isFinite(t)&&t>IIe)throw new NE(413,"payload-too-large");let o=[],i=0;for await(let e of n){let a=Buffer.isBuffer(e)?e:Buffer.from(e);if(i+=a.length,i>IIe)throw new NE(413,"payload-too-large");o.push(a)}try{return JSON.parse(Buffer.concat(o,i).toString("utf8"))}catch{throw new NE(400,"bad-request")}}function A9e(n){let t=IK(n);return async(o,i)=>{if(o.method!=="POST"){TE(i,405,{error:{code:"method-not-allowed",message:"method-not-allowed",details:{}}},{allow:"POST"});return}if(!$Ze(o.headers["content-type"])){TE(i,415,{error:{code:"unsupported-media-type",message:"unsupported-media-type",details:{}}});return}let e=new AbortController,a=()=>e.abort(),A=()=>{i.writableEnded||a()};o.once("aborted",a),i.once("close",A);try{let r=await e9e(o),s=await t(yi.send,r,e.signal);if(s.ok){TE(i,200,s.value);return}TE(i,XZe[s.error.code]??500,{error:s.error})}catch(r){if(r instanceof NE){TE(i,r.status,{error:{code:r.code,message:r.code,details:{}}});return}TE(i,500,{error:{code:"delivery-failed",message:"delivery-failed",details:{}}})}finally{o.off("aborted",a),i.off("close",A)}}}function lIe(n,t){if(!n?.webServer||typeof n.webServer.register!="function"||typeof n.effect!="function")throw new TypeError("DSH Host WebServer is required");let o={kind:"exact",path:cIe,handler:A9e(t)};return n.effect(()=>n.webServer.register(o),`dsh-im: ${cIe}`)}var t9e=/^[A-Za-z0-9_-]{1,128}$/,r9e=/^[A-Za-z0-9._:@-]{1,128}$/,a9e=/^[a-z][a-z0-9-]{0,31}$/,i9e="__test__",o9e=Object.freeze(["ownsBot","listTargets","listSuggestions","createTarget","updateTarget","deleteTarget","sendText"]),n9e=new Set(["bad-request","unknown-bot","unknown-target","target-conflict","invalid-target","bot-not-connected","target-rejected","delivery-failed","cancelled"]);function dn(n,t=n,o){let i=new Error(t,o);return i.code=n,i}function RE(n){if(typeof n!="string"||!t9e.test(n))throw dn("bad-request","Invalid bot id");return n}function yM(n){if(typeof n!="string"||!r9e.test(n))throw dn("bad-request","Invalid target id");return n}function lK(n,{includesTargetId:t}={}){if(!n||typeof n!="object"||Array.isArray(n))throw dn("bad-request","Invalid target");if(t)yM(n.targetId);else if(Object.hasOwn(n,"targetId"))throw dn("bad-request","A target id cannot be changed");return n}function s9e(n){lK(n);let t=Object.keys(n);if(t.length!==2||!t.includes("kind")||!t.includes("route"))throw dn("bad-request","Invalid draft target");return n}function pIe(n){if(n?.aborted)throw dn("cancelled","Request cancelled")}function Qp(n,t="delivery-failed"){return n?.code==="workspace-bot-not-found"?dn("unknown-bot","Unknown bot",{cause:n}):n9e.has(n?.code)?n:dn(t,t,{cause:n})}function g9e(n){if(!n||typeof n!="object"||typeof n.channel!="string"||!a9e.test(n.channel))throw new TypeError("A delivery adapter with a valid channel is required");for(let t of o9e)if(typeof n[t]!="function")throw new TypeError(`A complete delivery adapter is required (${t})`);return n}var pK=class{#e=new Map;registerAdapter(t){let o=g9e(t),i=Object.freeze({adapter:o});return this.#e.set(o.channel,i),()=>this.#e.get(o.channel)!==i?!1:(this.#e.delete(o.channel),!0)}async listTargets(t){let o=RE(t),i=await this.#A(o);try{let e=await i.listTargets(o);if(!Array.isArray(e))throw new TypeError("Adapter returned invalid targets");return{botId:o,channel:i.channel,targets:e}}catch(e){throw Qp(e)}}async listSuggestions(t){let o=RE(t),i=await this.#A(o);try{let e=await i.listSuggestions(o);if(!Array.isArray(e))throw new TypeError("Adapter returned invalid suggestions");return{botId:o,channel:i.channel,suggestions:e.map(a=>Up(i.channel,a,{targetIdRequired:!1}))}}catch(e){throw Qp(e)}}async createTarget(t,o){let i=RE(t);lK(o,{includesTargetId:!0});let e=await this.#A(i);try{return await e.createTarget(i,o)}catch(a){throw Qp(a)}}async updateTarget(t,o,i){let e=RE(t),a=yM(o);lK(i);let A=await this.#A(e);try{return await A.updateTarget(e,a,i)}catch(r){throw Qp(r)}}async deleteTarget(t,o){let i=RE(t),e=yM(o),a=await this.#A(i);try{return await a.deleteTarget(i,e),{deleted:!0}}catch(A){throw Qp(A)}}async send(t,o,i,{signal:e}={}){let a=RE(t),A=typeof o=="string"?yM(o):null,r=A===null?s9e(o):null;if(typeof i!="string"||!i.trim())throw dn("bad-request","Message text is required");pIe(e);let s=await this.#A(a);try{let g;if(r)g={targetId:i9e,...r};else{let c=await s.listTargets(a);if(!Array.isArray(c))throw new TypeError("Adapter returned invalid targets");if(g=c.find(I=>I?.targetId===A),!g)throw dn("unknown-target","Unknown target")}return pIe(e),await s.sendText(a,g,i,{signal:e}),{sent:!0}}catch(g){throw e?.aborted||g?.name==="AbortError"||g?.code==="ABORT_ERR"?dn("cancelled","Request cancelled",{cause:g}):Qp(g)}}async#A(t){for(let{adapter:o}of this.#e.values()){let i;try{i=await o.ownsBot(t)}catch(e){throw Qp(e)}if(i)return o}throw dn("unknown-bot","Unknown bot")}};function dIe(){return new pK}var AQ=qe(PD(),1);import{createHash as c9e}from"node:crypto";import{readFile as CIe,realpath as Vn,stat as I9e}from"node:fs/promises";import{homedir as l9e}from"node:os";import{basename as p9e,dirname as hK,isAbsolute as uK,join as oc,relative as d9e,resolve as SM,sep as h9e}from"node:path";import{fileURLToPath as E9e}from"node:url";var bI="@xmanrui/dsh-im",tQ="https://registry.npmjs.org/",C9e=15*6e4,u9e=1e4,hIe=16*1024;function Wn(n,t={}){return Object.assign(new Error(n),{code:n,...t})}function mM(n,t){return typeof n?.get=="function"?n.get(t):n?.[t]}function EK(n,t){let o=d9e(n,t);return o!==".."&&!o.startsWith(`..${h9e}`)&&!uK(o)}async function B9e(n){try{return await CIe(n,"utf8")}catch(t){if(t.code==="ENOENT")return"";throw t}}async function CK(n){let t=await CIe(oc(n,"package.json"),"utf8");return{directory:await Vn(n),manifest:JSON.parse(t),contents:t}}async function dK(n,t){let o=hK(await Vn(n));for(;;){try{let e=await CK(o);return e.manifest?.name===t?e:null}catch(e){if(e.code!=="ENOENT")throw e}let i=hK(o);if(i===o)return null;o=i}}function f9e(n){return typeof n=="string"&&n.length>0&&Buffer.byteLength(n)<=255&&!n.startsWith("-")&&![".","..","node_modules"].includes(n)&&!/[\\/\x00-\x1f\x7f<>:"|?*]/u.test(n)}function Q9e(n){if(n[0]==="web")return"web";let t;for(let o=0;o0&&(AQ.default.validRange(n)!==null||/^[A-Za-z][A-Za-z0-9._-]*$/u.test(n))}async function S9e(n){if(n.manifest?.name!==bI||AQ.default.valid(n.manifest.version)===null)return!1;let t=[n.manifest.main,n.manifest.exports?.["./client"],n.manifest.dsh?.bundle?.patch];for(let o of t){if(typeof o!="string"||!o||uK(o)||o.includes("\0"))return!1;let i=SM(n.directory,o);if(!EK(n.directory,i)||!EK(n.directory,await Vn(i))||!(await I9e(i)).isFile())return!1}return!0}function w9e(n){if(n==null||n==="")return!0;if(typeof n!="string")return!1;try{return new URL(n).href===tQ}catch{return!1}}async function EIe(n,{signal:t,timeoutMs:o,errorCode:i,capture:e=!1}){if(t?.aborted)throw Wn("install-interrupted");let a=new AbortController,A,r,s=B=>{A??=B,a.abort(),r?.cancel?.()},g=()=>s("install-interrupted");t?.addEventListener("abort",g,{once:!0});let c=setTimeout(()=>s("install-timeout"),o),I="",d="";try{r=n(a.signal),r.stdout?.on("data",f=>{e&&(I=(I+f.toString()).slice(-hIe))}),r.stderr?.on("data",f=>{d=(d+f.toString()).slice(-hIe)}),r.stdout?.on("error",()=>s(i)),r.stderr?.on("error",()=>s(i));let B=await r.done;if(A)throw Wn(A);if(B.exitCode!==0||B.signal)throw Wn(i,{exitCode:B.exitCode,diagnosticCode:d.match(/\bERR_PNPM_[A-Z0-9_]+\b/u)?.[0]});return{exitCode:0,signal:null,...e?{stdout:I}:{}}}catch(B){throw A?Wn(A):B.code===i?B:Wn(i)}finally{clearTimeout(c),t?.removeEventListener("abort",g)}}function uIe(n={}){let t=n.ctx,o=n.env??process.env,i=n.argv??process.argv,e=n.execArgv??process.execArgv,a=n.execPath??process.execPath,A=n.cwd??process.cwd(),r=n.platform??process.platform,s=n.osHome??l9e(),g=n.electron??process.versions.electron,c=n.moduleUrl??import.meta.url,I=dK(E9e(c),bI).catch(()=>null),d;async function B(){let _=mM(t,"desktopProfiles"),T=mM(t,"desktopPnpm"),R=mM(t,"desktopPnpmBootstrap"),K=!!(g||_||T||R),L=_?.current,U=K?L?.name:Q9e(i.slice(2)),z=K&&R?.homeDir?SM(R.homeDir):y9e(o,s),q={environmentKind:K?"desktop":"cli",homeDir:z,profileName:U};if(!f9e(U))return{...q,blockedReason:"unknown-profile"};let x=await Vn(oc(z,"profiles",U)),G=await Vn(z),V={...q,homeDir:G,profileDir:x};if(K)try{if(typeof T?.runPlugin!="function"||typeof T?.run!="function"||!R||!L?.dir||R.activeProfileName!==U||await Vn(L.dir)!==x||await Vn(R.activeProfileDir)!==x||await Vn(R.appExecutable)!==await Vn(a))return{...V,blockedReason:"executor-unavailable"};let N=await dK(R.dshBootstrapPath,"dsh-plugin-desktop");return!N||p9e(R.dshBootstrapPath)!=="desktop-cli.js"||hK(await Vn(R.dshBootstrapPath))!==oc(N.directory,"lib")?{...V,blockedReason:"executor-unavailable"}:{...V,desktop:T,executable:a,cliEntry:R.dshBootstrapPath}}catch{return{...V,blockedReason:"executor-unavailable"}}let F=mM(t,"subprocess");if(typeof F?.spawn!="function"||typeof i[1]!="string"||!uK(i[1])||r==="win32")return{...V,blockedReason:"executor-unavailable"};try{let N=await dK(i[1],"@deepseek-ai/dsh");if(!N)return{...V,blockedReason:"executor-unavailable"};let k=await Vn(i[1]),J=typeof N.manifest.bin=="string"?N.manifest.bin:N.manifest.bin?.dsh,$=typeof J=="string"?SM(N.directory,J):"";return k!==$&&k!==oc(N.directory,"src","bin.ts")?{...V,blockedReason:"executor-unavailable"}:{...V,subprocess:F,executable:a,cliEntry:k}}catch{return{...V,blockedReason:"executor-unavailable"}}}function f(_,T,R,K=!1){let L=_.subprocess.spawn({argv:K?["pnpm",...T]:[a,...e,_.cliEntry,...T],cwd:K?_.profileDir:A,env:{DSH_HOME:_.homeDir,CI:"true"},stdio:{stdin:"ignore",stdout:"pipe",stderr:"pipe"},graceMs:3e3,signal:R});return{stdout:L.stdout,stderr:L.stderr,cancel:()=>L.terminate(),done:(async()=>{try{return await L.done}finally{await L.waitForExit()}})()}}async function Q(_,T){let R=["config","get","@xmanrui:registry","--json"],L=(await EIe(z=>_.desktop?_.desktop.run(R,z):f(_,R,z,!0),{signal:T,timeoutMs:n.configTimeoutMs??u9e,errorCode:"registry-check-failed",capture:!0})).stdout.trim(),U;try{U=L===""||L==="undefined"?void 0:JSON.parse(L)}catch{throw Wn("registry-check-failed")}if(!w9e(U))throw Wn("registry-conflict")}async function y({preflight:_=!1}={}){let T,R={installedVersion:null,packageValid:!1,eligible:!1,installationKey:null};try{T=await B();for(let G of["homeDir","profileDir","profileName","environmentKind","executable","cliEntry"])R[G]=T[G]??null;if(!T.profileDir)return{...R,blockedReason:T.blockedReason??"unknown-profile"};let K=await CK(T.profileDir),L=await CK(oc(T.profileDir,"node_modules",bI));R.sourceInstall=!m9e(K.manifest.dependencies?.[bI])||!EK(oc(T.profileDir,"node_modules"),L.directory),R.installedVersion=typeof L.manifest.version=="string"?L.manifest.version:null,R.packageValid=await S9e(L);let U=await I,z=`${T.homeDir}\0${T.profileDir}\0${T.profileName}`,q=U?.directory===L.directory&&U?.manifest.version===L.manifest.version;d===void 0&&q&&R.packageValid&&(d=z);let x=await Promise.all(["pnpm-lock.yaml","pnpm-workspace.yaml","package-lock.json"].map(G=>B9e(oc(T.profileDir,G))));return R.installationKey=c9e("sha256").update(JSON.stringify([z,K.contents,L.directory,L.contents,T.cliEntry,T.executable,...x])).digest("hex"),d!==void 0&&d!==z||!q&&d===void 0?R.blockedReason="installation-changed":R.packageValid?R.sourceInstall?R.blockedReason="source-install":T.blockedReason?R.blockedReason=T.blockedReason:q?_&&await Q(T):R.blockedReason="pending-restart":R.blockedReason="invalid-installation",R.eligible=!R.blockedReason,{...R,blockedReason:R.blockedReason??null}}catch(K){return{...R,blockedReason:["registry-conflict","registry-check-failed","install-timeout","install-interrupted"].includes(K.code)?K.code:T?.profileDir?"invalid-installation":"unknown-profile"}}}async function m(_,{signal:T,expectedInstallationKey:R}={}){if(AQ.default.valid(_)!==_||AQ.default.prerelease(_))throw Wn("invalid-version");let K=await y();if(R!==void 0&&K.installationKey!==R)throw Wn("installation-changed");if(!K.eligible)throw Wn(K.blockedReason);let L=await B();await Q(L,T);let U=await y();if(!U.eligible||U.installationKey!==K.installationKey)throw Wn("installation-changed");let z=["add","-w","--save-exact",`${bI}@${_}`,`--registry=${tQ}`];return EIe(q=>L.desktop?L.desktop.runPlugin(z,L.profileDir,q):f(L,["plugin","--profile",L.profileName,...z],q),{signal:T,timeoutMs:n.installTimeoutMs??C9e,errorCode:"install-failed"})}return Object.freeze({inspect:y,install:m})}var MI=qe(PD(),1);import{createHash as D9e,randomUUID as fK}from"node:crypto";import{mkdir as O9e,open as b9e,readFile as mIe,rename as M9e,stat as SIe,unlink as wIe,writeFile as _9e}from"node:fs/promises";import{isAbsolute as BIe,join as aQ}from"node:path";var iQ=new Set(["installing","verifying"]),T9e=new Set([...iQ,"restart-required","completed","failed","interrupted"]),fIe=256*1024,N9e=["package.json","pnpm-lock.yaml","pnpm-workspace.yaml"],wM=Symbol("no update lock");function bt(n){return Object.assign(new Error(n),{code:n})}async function QIe(n=globalThis.fetch,t=1e4){let o;try{if(o=await n(`${tQ}${encodeURIComponent(bI)}/latest`,{headers:{accept:"application/json"},redirect:"error",signal:AbortSignal.timeout(t)}),!o.ok)throw bt("check-failed");if(Number(o.headers.get("content-length"))>fIe)throw bt("invalid-release");let i=[],e=0;for await(let c of o.body){if(e+=c.byteLength,e>fIe)throw bt("invalid-release");i.push(Buffer.from(c))}let a=JSON.parse(Buffer.concat(i).toString("utf8")),A=a.version;if(a.name!==bI||typeof A!="string"||MI.default.valid(A)!==A||MI.default.prerelease(A))throw bt("invalid-release");let r=a.engines?.node;if(r!==void 0&&(typeof r!="string"||!MI.default.validRange(r)))throw bt("invalid-release");let s=new URL(a.dist?.tarball),g=a.dist?.integrity;if(s.origin!==new URL(tQ).origin||s.username||s.password||s.search||s.hash||s.pathname!==`/@xmanrui/dsh-im/-/dsh-im-${A}.tgz`||typeof g!="string"||!/^sha512-[A-Za-z0-9+/]{86}==$/.test(g))throw bt("invalid-release");return{version:A,nodeRange:r??"*",integrity:g,tarball:s.href}}catch(i){throw i?.code==="invalid-release"||i instanceof SyntaxError||i instanceof TypeError&&o?.ok?bt("invalid-release"):bt("check-failed")}}function yIe(n){if(!BIe(n.homeDir??"")||!BIe(n.profileDir??""))return null;let t=D9e("sha256").update(n.profileDir).digest("hex").slice(0,24),o=aQ(n.homeDir,"updates","dsh-im",t);return{directory:o,state:aQ(o,"state.json"),lock:aQ(o,"install.lock"),backup:aQ(o,"before.json")}}async function BK(n,t=null){try{if((await SIe(n)).size>10*1024*1024)throw bt("state-unavailable");return JSON.parse(await mIe(n,"utf8"))}catch(o){if(o.code==="ENOENT")return t;throw bt("state-unavailable")}}async function rQ(n,t){let o=`${n}.${fK()}.tmp`;try{await _9e(o,`${JSON.stringify(t,null,2)} +`,{mode:384,flag:"wx"}),await M9e(o,n)}catch{throw bt("state-unavailable")}finally{await wIe(o).catch(i=>{if(i.code!=="ENOENT")throw bt("state-unavailable")})}}function R9e(n){if(!Number.isSafeInteger(n)||n<=0)return!1;try{return process.kill(n,0),!0}catch(t){return t.code!=="ESRCH"}}function k9e(n){if(!n)return null;let{id:t,state:o,targetVersion:i,message:e}=n;return{id:t,state:o,targetVersion:i,message:e}}function DIe({runtime:n,runningVersion:t=QQ.version,nodeVersion:o=process.versions.node,fetchImpl:i=globalThis.fetch,now:e=Date.now,checkTimeoutMs:a=1e4,confirmationTtlMs:A=10*6e4,installTimeoutMs:r=15*6e4}={}){let s={},g=null,c=null,I=-1/0,d=null,B=null,f=null,Q=null,y=!1;function m(){if(y)throw bt("disposed")}async function _(V){let F=yIe(V);if(!F)return null;if(Q?.statePath===F.state)return Q.job;let N=await BK(F.state),k=await BK(F.lock,wM);if(!N)return k!==wM?{id:"locked",state:"interrupted",message:"recovery-required",targetVersion:null}:null;if(!T9e.has(N.state)||typeof N.id!="string"||!MI.default.valid(N.targetVersion))throw bt("state-unavailable");if(iQ.has(N.state)&&N.id!==d?.id&&(k===wM||k?.id!==N.id||!R9e(k?.pid))&&(N={...N,state:"interrupted",message:"recovery-required"}),N.id!==d?.id&&!iQ.has(N.state)){if(k!==wM)return{...N,state:"interrupted",message:"recovery-required"};if(["failed","interrupted"].includes(N.state)&&V.packageValid===!0&&V.installedVersion===t&&!V.blockedReason)return N.targetVersion===t?{...N,state:"completed",message:"recovered"}:{...N,recoverable:!0}}return N.state==="restart-required"||N.state==="completed"?V.installedVersion!==N.targetVersion||V.packageValid!==!0?{...N,state:"interrupted",message:"installation-changed"}:{...N,state:t===N.targetVersion?"completed":"restart-required"}:N}function T(V,F){let N=V.blockedReason??g?.blockedReason??null;F?.state==="interrupted"&&!F.recoverable||F?.state==="failed"&&V.installedVersion!==t?N="recovery-required":(F?.state==="restart-required"||V.installedVersion&&V.installedVersion!==t)&&(N="pending-restart");let k=iQ.has(F?.state),J=!!(V.eligible&&!N&&!k&&g?.checkId&&e(){try{let V=await n.inspect({preflight:!0}),F=await QIe(i,a);return m(),g={release:F,checkId:fK(),checkedAt:e(),expiresAt:e()+A,installationKey:V.installationKey,profileDir:V.profileDir,blockedReason:V.blockedReason??(MI.default.satisfies(o,F.nodeRange)?null:"incompatible-node")},T(V,await _(V))}catch(V){throw g&&(g={...g,checkId:null,expiresAt:0}),V}finally{c=null}})(),c))}async function L(V,F){(await BK(V.lock))?.id===F&&await wIe(V.lock)}async function U(V,F,N){let k={};for(let J of N9e)try{let $=aQ(V.profileDir,J);if((await SIe($)).size>3*1024*1024)throw bt("state-unavailable");k[J]=await mIe($,"utf8")}catch($){if($.code!=="ENOENT")throw bt("state-unavailable")}await rQ(F.backup,{jobId:N.id,previousVersion:N.previousVersion,files:k})}function z(V){d={...d,state:"interrupted",message:"state-unavailable"},Q={statePath:V.state,job:d}}async function q(V,F,N){let k=AbortSignal.timeout(r);try{if(await n.install(F.targetVersion,{signal:AbortSignal.any([f.signal,k]),expectedInstallationKey:N.installationKey}),y)throw bt("interrupted");d={...d,state:"verifying",updatedAt:e()},await rQ(V.state,d);let J=await n.inspect();if(J.homeDir!==N.homeDir||J.profileDir!==N.profileDir||J.profileName!==N.profileName||J.blockedReason==="installation-changed")throw bt("installation-changed");if(J.installedVersion!==F.targetVersion||J.packageValid!==!0||J.blockedReason&&J.blockedReason!=="pending-restart")throw bt("verify-failed");d={...d,state:"restart-required",message:null,updatedAt:e()},await rQ(V.state,d)}catch(J){let $=k.aborted||J.code==="install-timeout",ie=y||f.signal.aborted||!$&&["interrupted","install-interrupted"].includes(J.code);d={...d,state:ie?"interrupted":"failed",message:ie?"interrupted":$?"install-timeout":["verify-failed","state-unavailable","installation-changed","registry-conflict"].includes(J.code)?J.code:"install-failed",updatedAt:e()};try{await rQ(V.state,d)}catch{z(V);return}}await L(V,F.id)}function x({checkId:V,requestId:F}){return ag(s,"install",async()=>{m();let N=await n.inspect({preflight:!0}),k=await _(N);if(k?.requestId===F)return T(N,k);if(iQ.has(k?.state)||k?.state==="restart-required")throw bt("update-busy");let J=g;if(!J||!V||J.checkId!==V||e()>=J.expiresAt)throw bt("check-expired");if(N.profileDir!==J.profileDir||N.installationKey!==J.installationKey)throw bt("installation-changed");if(!T(N,k).canInstall)throw bt(N.blockedReason??"update-busy");let $=yIe(N);if(!$)throw bt("state-unavailable");let ie={id:fK(),requestId:F,state:"installing",message:null,targetVersion:J.release.version,previousVersion:N.installedVersion,startedAt:e(),updatedAt:e()},pe=!1;try{await O9e($.directory,{recursive:!0,mode:448});let se=await b9e($.lock,"wx",384);pe=!0;try{await se.writeFile(JSON.stringify({id:ie.id,pid:process.pid,startedAt:e()}))}finally{await se.close()}let Me=await QIe(i,a);if(JSON.stringify(Me)!==JSON.stringify(J.release))throw bt("check-expired");if(N=await n.inspect({preflight:!0}),N.profileDir!==J.profileDir||N.installationKey!==J.installationKey)throw bt("installation-changed");if(!N.eligible||N.blockedReason)throw bt(N.blockedReason??"update-busy");m(),await U(N,$,ie),await rQ($.state,ie),m()}catch(se){throw pe&&await L($,ie.id),se.code==="EEXIST"?bt("update-busy"):se.code?.startsWith("E")?bt("state-unavailable"):se}return d=ie,f=new AbortController,B=q($,ie,N).catch(()=>{z($)}),T(N,ie)})}async function G(){y=!0,f?.abort(),B&&await B}return Object.freeze({status:R,check:K,install:x,close:G})}var v9e="/dsh-im",P9e=Object.freeze(["update.status","update.check","update.install"]);function G9e(n,t){if(t===null||typeof t!="object"||Array.isArray(t))return!1;let o=Object.keys(t);return n!=="update.install"?o.length===0:o.length===2&&o.every(i=>i==="checkId"||i==="requestId")&&["checkId","requestId"].every(i=>typeof t[i]=="string"&&/^[A-Za-z0-9_-]{1,128}$/.test(t[i]))}var F9e=new Set(["check-failed","invalid-release","check-expired","installation-changed","update-busy","install-failed","verify-failed","state-unavailable","interrupted","disposed","source-install","unknown-profile","unsupported-runtime","registry-conflict","incompatible-node","pending-restart","recovery-required","executor-unavailable","invalid-installation","registry-check-failed","install-timeout","install-interrupted","invalid-version"]);function L9e(n){return async(t,o,i)=>{if(!P9e.includes(t)||!G9e(t,o))return{ok:!1,error:{code:"bad-request",message:"Invalid update request."}};if(i?.aborted)return{ok:!1,error:{code:"cancelled",message:"Request cancelled."}};try{return{ok:!0,value:t==="update.install"?await n.install(o):t==="update.check"?await n.check():await n.status()}}catch(e){let a=F9e.has(e?.code)?e.code:"update-failed";return{ok:!1,error:{code:a,message:a}}}}}function OIe(n,t={}){let o=t.runtime??uIe({ctx:n,moduleUrl:import.meta.url}),i=t.service??DIe({runtime:o}),e=n.connection.rpc.handle(v9e,L9e(i),{authority:"loopback"});return n.effect(()=>()=>i.close(),"dsh-im: close update installer"),e}var bIe="dsh-im-host",U9e=["connection","credentials","typertGateway"];function H9e(n,t,o){let i=n[t]??{},e=n.rpcAuthority===void 0?i:{...i,rpcAuthority:n.rpcAuthority};return t==="office"?e:{...e,deliveryService:o}}function K9e(n={}){let t=n.installUpdateRpc??OIe,o=n.installDeliveryRpc??gIe,i=n.installDeliveryHttp??lIe,e=n.createDeliveryService??dIe,a=n.applyFeishu??S5,A=n.applyWeixin??E9,r=n.applyDingtalk??P1,s=n.applyWecom??UZ,g=n.applyQq??x5,c=n.applySlack??oZ,I=n.applyTelegram??SZ,d=n.applyDiscord??s3,B=n.applyOffice??d3,f=n.applyWhatsapp??nIe,Q=[["feishu",a],["weixin",A],["dingtalk",r],["wecom",s],["qq",g],["slack",c],["telegram",I],["discord",d],["whatsapp",f],["office",B]];return Object.freeze({name:bIe,inject:U9e,async apply(m,_={}){let T=e();typeof m?.provide=="function"&&m.provide("dshIm",Object.freeze({send:(K,L,U,z)=>T.send(K,L,U,z),listTargets:async K=>(await T.listTargets(K)).targets}));let R=async K=>{await y(K,_,T)};if(typeof m?.inject=="function"){let K=typeof m?.typertGateway?.stream=="function";await m.inject(K?["sessionController","workspaceController"]:["apiProxy"],R),m.inject(["webServer"],L=>{i(L,T)});return}await R(m),m?.webServer?.register&&typeof m?.effect=="function"&&i(m,T)}});async function y(m,_,T){ox(_.language??process.env.DSH_IM_LANGUAGE),typeof m?.inject=="function"?m.inject(["tools","systemPrompt"],L=>{m_(L)}):m_(m);let R=typeof m?.logger=="function"?m.logger(bIe):m?.logger??console;if(m?.connection?.rpc){try{t(m)}catch(L){R.error?.("[dsh-im] failed to activate update management; continuing with channels",L)}try{o(m,T,{authority:_.rpcAuthority})}catch(L){R.error?.("[dsh-im] failed to activate delivery management; continuing with channels",L)}}let K=[];for(let[L,U]of Q)try{await U(m,H9e(_,L,T))}catch(z){K.push(z),R.error?.(`[dsh-im] failed to activate ${L}; continuing with the remaining channels`,z)}if(K.length===Q.length)throw new AggregateError(K,"dsh-im failed to activate every channel")}}async function h2A(n,t={}){return K9e().apply(n,t)}export{h2A as apply,K9e as createImHostPlugin,U9e as inject,bIe as name}; /*! Bundled license information: mime-db/index.js: diff --git a/src/channels/shared/harness-client.mjs b/src/channels/shared/harness-client.mjs index 205a788..10aa1f0 100644 --- a/src/channels/shared/harness-client.mjs +++ b/src/channels/shared/harness-client.mjs @@ -428,6 +428,11 @@ export class HarnessReplyTracker { return this.#finished; } + /** The highest event seq consumed so far; advances as the turn produces events. */ + get lastSeq() { + return this.#lastSeq; + } + get answer() { return this.#latestText.trim(); } @@ -1387,8 +1392,13 @@ export class HarnessClient { promptAccepted = true; try { - const deadline = Date.now() + timeoutMs; - while (Date.now() < deadline) { + // Renew the wait window whenever the turn is still making progress, so + // a long-running task is not falsely reported as MODEL_REPLY_TIMEOUT + // while Harness is still working. A genuine stall (no new events and + // no active turn for the whole timeoutMs window) still fails fast. + let lastProgressAt = Date.now(); + let lastPollSeq = tracker.lastSeq; + while (Date.now() - lastProgressAt < timeoutMs) { await sleep(300, signal); const history = await this.rpc( 'session.history', @@ -1402,6 +1412,26 @@ export class HarnessClient { if (!wasActive && ownership.active) ownership.reconnect?.(); } const updates = tracker.consumeAll(history.events ?? []); + // Progress = the turn produced new events, or the ownership is still + // active. Either refreshes the stall window. + const seqAdvanced = tracker.lastSeq > lastPollSeq; + lastPollSeq = tracker.lastSeq; + if (seqAdvanced) { + lastProgressAt = Date.now(); + } else if (ownership?.active) { + lastProgressAt = Date.now(); + } else if (tracker.tracking) { + // Mid-turn but no new events: ask Harness whether the session is + // still running before declaring a stall. A failing probe must not + // mask a real stall, so it is not treated as progress. + try { + if (await this.isSessionRunning(sessionId, { signal })) { + lastProgressAt = Date.now(); + } + } catch { + // ignore probe failure; the deadline still applies + } + } if (onUpdate) { const visibleUpdates = progressMode === 'all' ? updates : updates.slice(-1); for (const update of visibleUpdates) { diff --git a/test/channels/feishu/harness-client.test.mjs b/test/channels/feishu/harness-client.test.mjs index e6e043d..dffe03b 100644 --- a/test/channels/feishu/harness-client.test.mjs +++ b/test/channels/feishu/harness-client.test.mjs @@ -974,3 +974,87 @@ test('HarnessReplyTracker keeps every frame of a batched turn in order', () => { ]); assert.equal(tracker.answer, '先创建再观察:'); }); + +test('a turn that keeps producing events is not falsely reported as MODEL_REPLY_TIMEOUT', async () => { + const client = new HarnessClient({ + baseUrl: 'http://127.0.0.1:3080', + workspace: '/tmp/dsh-feishu-workspace', + }); + client.ensureRunning = async () => undefined; + let promptRpcId; + let prompted = false; + let seq = 0; + const startedAt = Date.now(); + client.rpc = async (method, _payload, _timeoutMs, options) => { + if (method === 'session.history') { + if (!prompted) return { events: [] }; + const events = []; + if (!promptRpcId) promptRpcId = options?.rpcId; + // The turn "works" for ~250ms: each poll appends a fresh chunk so the + // seq keeps advancing (the renewal signal). After the window it ends. + const elapsed = Date.now() - startedAt; + if (elapsed < 250) { + events.push( + { event: { type: 'turn/start', seq: ++seq, data: { turn: 1 } } }, + { event: { type: 'user/message', seq: ++seq, data: { turn: 1, source: { rpcId: promptRpcId } } } }, + { event: { type: 'assistant/chunk', seq: ++seq, data: { turn: 1, step: 1, chunk: { type: 'text-delta', index: 0, text: `chunk-${seq}` } } } }, + ); + } else { + events.push( + { event: { type: 'turn/start', seq: ++seq, data: { turn: 1 } } }, + { event: { type: 'user/message', seq: ++seq, data: { turn: 1, source: { rpcId: promptRpcId } } } }, + { event: { type: 'assistant/message', seq: ++seq, data: { turn: 1, step: 1, message: { content: [{ type: 'text', text: '最终结果' }] } } } }, + { event: { type: 'turn/end', seq: ++seq, data: { turn: 1, reason: { kind: 'completed' } } } }, + ); + } + return { events }; + } + if (method === 'session.prompt') { + prompted = true; + promptRpcId = options.rpcId; + return {}; + } + if (method === 'session.list') { + return { items: [{ sessionId: 'session-renewal', running: true }] }; + } + throw new Error(`unexpected rpc ${method}`); + }; + + // timeoutMs is tiny (100ms) but the turn keeps producing events, so the + // stall window keeps renewing and the ask must complete instead of timing out. + const answer = await client.ask('session-renewal', 'long task', { timeoutMs: 100 }); + assert.equal(answer, '最终结果'); +}); + +test('a turn with no activity and no running session still times out', async () => { + const client = new HarnessClient({ + baseUrl: 'http://127.0.0.1:3080', + workspace: '/tmp/dsh-feishu-workspace', + }); + client.ensureRunning = async () => undefined; + let promptRpcId; + let prompted = false; + client.rpc = async (method, _payload, _timeoutMs, options) => { + if (method === 'session.history') { + if (!prompted) return { events: [] }; + // The turn started but never emits another event, and the session is not + // reported as running: a genuine stall. + return { events: [] }; + } + if (method === 'session.prompt') { + prompted = true; + promptRpcId = options.rpcId; + return {}; + } + if (method === 'session.list') { + return { items: [{ sessionId: 'session-stall', running: false }] }; + } + throw new Error(`unexpected rpc ${method}`); + }; + + await assert.rejects( + client.ask('session-stall', 'never runs', { timeoutMs: 120 }), + (error) => error?.code === 'harness-reply-timeout', + 'a genuinely stalled turn must still fail with MODEL_REPLY_TIMEOUT', + ); +});