| var log=(()=>{const n=()=>{};return new Proxy(console,{get:(c,m)=>globalThis.__gdbDebug?c[m].bind(c):n})})(); | ||
| var c$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function d$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function D0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function R$($,...J){if(!d$($))throw Error("Uint8Array expected");if(J.length>0&&!J.includes($.length))throw Error("Uint8Array expected of length "+J+", got length="+$.length)}function P0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");D0($.outputLen),D0($.blockLen)}function Q0($,J=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(J&&$.finished)throw Error("Hash#digest() has already been called")}function g8($,J){R$($);let q=J.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function l$(...$){for(let J=0;J<$.length;J++)$[J].fill(0)}function I0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function x$($,J){return $<<32-J|$>>>J}var u8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),UJ=Array.from({length:256},($,J)=>J.toString(16).padStart(2,"0"));function I$($){if(R$($),u8)return $.toHex();let J="";for(let q=0;q<$.length;q++)J+=UJ[$[q]];return J}var P$={_0:48,_9:57,A:65,F:70,a:97,f:102};function y8($){if($>=P$._0&&$<=P$._9)return $-P$._0;if($>=P$.A&&$<=P$.F)return $-(P$.A-10);if($>=P$.a&&$<=P$.f)return $-(P$.a-10);return}function p$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(u8)return Uint8Array.fromHex($);let J=$.length,q=J/2;if(J%2)throw Error("hex string expected, got unpadded hex of length "+J);let Q=new Uint8Array(q);for(let G=0,Y=0;G<q;G++,Y+=2){let X=y8($.charCodeAt(Y)),U=y8($.charCodeAt(Y+1));if(X===void 0||U===void 0){let Z=$[Y]+$[Y+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+Y)}Q[G]=X*16+U}return Q}function E0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function M0($){if(typeof $==="string")$=E0($);return R$($),$}function D$(...$){let J=0;for(let Q=0;Q<$.length;Q++){let G=$[Q];R$(G),J+=G.length}let q=new Uint8Array(J);for(let Q=0,G=0;Q<$.length;Q++){let Y=$[Q];q.set(Y,G),G+=Y.length}return q}class V0{}function F8($){let J=(Q)=>$().update(M0(Q)).digest(),q=$();return J.outputLen=q.outputLen,J.blockLen=q.blockLen,J.create=()=>$(),J}function o$($=32){if(c$&&typeof c$.getRandomValues==="function")return c$.getRandomValues(new Uint8Array($));if(c$&&typeof c$.randomBytes==="function")return Uint8Array.from(c$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function KJ($,J,q,Q){if(typeof $.setBigUint64==="function")return $.setBigUint64(J,q,Q);let G=BigInt(32),Y=BigInt(4294967295),X=Number(q>>G&Y),U=Number(q&Y),Z=Q?4:0,B=Q?0:4;$.setUint32(J+Z,X,Q),$.setUint32(J+B,U,Q)}function m8($,J,q){return $&J^~$&q}function h8($,J,q){return $&J^$&q^J&q}class q8 extends V0{constructor($,J,q,Q){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=J,this.padOffset=q,this.isLE=Q,this.buffer=new Uint8Array($),this.view=I0(this.buffer)}update($){Q0(this),$=M0($),R$($);let{view:J,buffer:q,blockLen:Q}=this,G=$.length;for(let Y=0;Y<G;){let X=Math.min(Q-this.pos,G-Y);if(X===Q){let U=I0($);for(;Q<=G-Y;Y+=Q)this.process(U,Y);continue}if(q.set($.subarray(Y,Y+X),this.pos),this.pos+=X,Y+=X,this.pos===Q)this.process(J,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){Q0(this),g8($,this),this.finished=!0;let{buffer:J,view:q,blockLen:Q,isLE:G}=this,{pos:Y}=this;if(J[Y++]=128,l$(this.buffer.subarray(Y)),this.padOffset>Q-Y)this.process(q,0),Y=0;for(let M=Y;M<Q;M++)J[M]=0;KJ(q,Q-8,BigInt(this.length*8),G),this.process(q,0);let X=I0($),U=this.outputLen;if(U%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=U/4,B=this.get();if(Z>B.length)throw Error("_sha2: outputLen bigger than state");for(let M=0;M<Z;M++)X.setUint32(4*M,B[M],G)}digest(){let{buffer:$,outputLen:J}=this;this.digestInto($);let q=$.slice(0,J);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:J,buffer:q,length:Q,finished:G,destroyed:Y,pos:X}=this;if($.destroyed=Y,$.finished=G,$.length=Q,$.pos=X,Q%J)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var E$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var jJ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),y$=new Uint32Array(64);class c8 extends q8{constructor($=32){super(64,$,8,!1);this.A=E$[0]|0,this.B=E$[1]|0,this.C=E$[2]|0,this.D=E$[3]|0,this.E=E$[4]|0,this.F=E$[5]|0,this.G=E$[6]|0,this.H=E$[7]|0}get(){let{A:$,B:J,C:q,D:Q,E:G,F:Y,G:X,H:U}=this;return[$,J,q,Q,G,Y,X,U]}set($,J,q,Q,G,Y,X,U){this.A=$|0,this.B=J|0,this.C=q|0,this.D=Q|0,this.E=G|0,this.F=Y|0,this.G=X|0,this.H=U|0}process($,J){for(let M=0;M<16;M++,J+=4)y$[M]=$.getUint32(J,!1);for(let M=16;M<64;M++){let H=y$[M-15],z=y$[M-2],j=x$(H,7)^x$(H,18)^H>>>3,w=x$(z,17)^x$(z,19)^z>>>10;y$[M]=w+y$[M-7]+j+y$[M-16]|0}let{A:q,B:Q,C:G,D:Y,E:X,F:U,G:Z,H:B}=this;for(let M=0;M<64;M++){let H=x$(X,6)^x$(X,11)^x$(X,25),z=B+H+m8(X,U,Z)+jJ[M]+y$[M]|0,w=(x$(q,2)^x$(q,13)^x$(q,22))+h8(q,Q,G)|0;B=Z,Z=U,U=X,X=Y+z|0,Y=G,G=Q,Q=q,q=z+w|0}q=q+this.A|0,Q=Q+this.B|0,G=G+this.C|0,Y=Y+this.D|0,X=X+this.E|0,U=U+this.F|0,Z=Z+this.G|0,B=B+this.H|0,this.set(q,Q,G,Y,X,U,Z,B)}roundClean(){l$(y$)}destroy(){this.set(0,0,0,0,0,0,0,0),l$(this.buffer)}}var v0=F8(()=>new c8);class G8 extends V0{constructor($,J){super();this.finished=!1,this.destroyed=!1,P0($);let q=M0(J);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let Q=this.blockLen,G=new Uint8Array(Q);G.set(q.length>Q?$.create().update(q).digest():q);for(let Y=0;Y<G.length;Y++)G[Y]^=54;this.iHash.update(G),this.oHash=$.create();for(let Y=0;Y<G.length;Y++)G[Y]^=106;this.oHash.update(G),l$(G)}update($){return Q0(this),this.iHash.update($),this}digestInto($){Q0(this),R$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:J,iHash:q,finished:Q,destroyed:G,blockLen:Y,outputLen:X}=this;return $=$,$.finished=Q,$.destroyed=G,$.blockLen=Y,$.outputLen=X,$.oHash=J._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var Y8=($,J,q)=>new G8($,J).update(q).digest();Y8.create=($,J)=>new G8($,J);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Z8=BigInt(0),z8=BigInt(1);function N0($,J=""){if(typeof $!=="boolean"){let q=J&&`"${J}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function g$($,J,q=""){let Q=d$($),G=$?.length,Y=J!==void 0;if(!Q||Y&&G!==J){let X=q&&`"${q}" `,U=Y?` of length ${J}`:"",Z=Q?`length=${G}`:`type=${typeof $}`;throw Error(X+"expected Uint8Array"+U+", got "+Z)}return $}function B0($){let J=$.toString(16);return J.length&1?"0"+J:J}function d8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?Z8:BigInt("0x"+$)}function v$($){return d8(I$($))}function U8($){return R$($),d8(I$(Uint8Array.from($).reverse()))}function J0($,J){return p$($.toString(16).padStart(J*2,"0"))}function K8($,J){return J0($,J).reverse()}function p($,J,q){let Q;if(typeof J==="string")try{Q=p$(J)}catch(Y){throw Error($+" must be hex string or Uint8Array, cause: "+Y)}else if(d$(J))Q=Uint8Array.from(J);else throw Error($+" must be hex string or Uint8Array");let G=Q.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return Q}var X8=($)=>typeof $==="bigint"&&Z8<=$;function O0($,J,q){return X8($)&&X8(J)&&X8(q)&&J<=$&&$<q}function l8($,J,q,Q){if(!O0(J,q,Q))throw Error("expected valid "+$+": "+q+" <= n < "+Q+", got "+J)}function _0($){let J;for(J=0;$>Z8;$>>=z8,J+=1);return J}var u$=($)=>(z8<<BigInt($))-z8;function p8($,J,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof J!=="number"||J<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let Q=(j)=>new Uint8Array(j),G=(j)=>Uint8Array.of(j),Y=Q($),X=Q($),U=0,Z=()=>{Y.fill(1),X.fill(0),U=0},B=(...j)=>q(X,Y,...j),M=(j=Q(0))=>{if(X=B(G(0),j),Y=B(),j.length===0)return;X=B(G(1),j),Y=B()},H=()=>{if(U++>=1000)throw Error("drbg: tried 1000 values");let j=0,w=[];while(j<J){Y=B();let S=Y.slice();w.push(S),j+=Y.length}return D$(...w)};return(j,w)=>{Z(),M(j);let S=void 0;while(!(S=w(H())))M();return Z(),S}}function H0($,J,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function Q(G,Y,X){let U=$[G];if(X&&U===void 0)return;let Z=typeof U;if(Z!==Y||U===null)throw Error(`param "${G}" is invalid: expected ${Y}, got ${Z}`)}Object.entries(J).forEach(([G,Y])=>Q(G,Y,!1)),Object.entries(q).forEach(([G,Y])=>Q(G,Y,!0))}function j8($){let J=new WeakMap;return(q,...Q)=>{let G=J.get(q);if(G!==void 0)return G;let Y=$(q,...Q);return J.set(q,Y),Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var K$=BigInt(0),Y$=BigInt(1),i$=BigInt(2),r8=BigInt(3),a8=BigInt(4),n8=BigInt(5),WJ=BigInt(7),s8=BigInt(8),DJ=BigInt(9),t8=BigInt(16);function N$($,J){let q=$%J;return q>=K$?q:J+q}function B$($,J,q){let Q=$;while(J-- >K$)Q*=Q,Q%=q;return Q}function o8($,J){if($===K$)throw Error("invert: expected non-zero number");if(J<=K$)throw Error("invert: expected positive modulus, got "+J);let q=N$($,J),Q=J,G=K$,Y=Y$,X=Y$,U=K$;while(q!==K$){let B=Q/q,M=Q%q,H=G-X*B,z=Y-U*B;Q=q,q=M,G=X,Y=U,X=H,U=z}if(Q!==Y$)throw Error("invert: does not exist");return N$(G,J)}function W8($,J,q){if(!$.eql($.sqr(J),q))throw Error("Cannot find square root")}function e8($,J){let q=($.ORDER+Y$)/a8,Q=$.pow(J,q);return W8($,Q,J),Q}function MJ($,J){let q=($.ORDER-n8)/s8,Q=$.mul(J,i$),G=$.pow(Q,q),Y=$.mul(J,G),X=$.mul($.mul(Y,i$),G),U=$.mul(Y,$.sub(X,$.ONE));return W8($,U,J),U}function VJ($){let J=F$($),q=$Q($),Q=q(J,J.neg(J.ONE)),G=q(J,Q),Y=q(J,J.neg(Q)),X=($+WJ)/t8;return(U,Z)=>{let B=U.pow(Z,X),M=U.mul(B,Q),H=U.mul(B,G),z=U.mul(B,Y),j=U.eql(U.sqr(M),Z),w=U.eql(U.sqr(H),Z);B=U.cmov(B,M,j),M=U.cmov(z,H,w);let S=U.eql(U.sqr(M),Z),I=U.cmov(B,M,S);return W8(U,I,Z),I}}function $Q($){if($<r8)throw Error("sqrt is not defined for small field");let J=$-Y$,q=0;while(J%i$===K$)J/=i$,q++;let Q=i$,G=F$($);while(i8(G,Q)===1)if(Q++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return e8;let Y=G.pow(Q,J),X=(J+Y$)/i$;return function(Z,B){if(Z.is0(B))return B;if(i8(Z,B)!==1)throw Error("Cannot find square root");let M=q,H=Z.mul(Z.ONE,Y),z=Z.pow(B,J),j=Z.pow(B,X);while(!Z.eql(z,Z.ONE)){if(Z.is0(z))return Z.ZERO;let w=1,S=Z.sqr(z);while(!Z.eql(S,Z.ONE))if(w++,S=Z.sqr(S),w===M)throw Error("Cannot find square root");let I=Y$<<BigInt(M-w-1),m=Z.pow(H,I);M=w,H=Z.sqr(m),z=Z.mul(z,H),j=Z.mul(j,m)}return j}}function NJ($){if($%a8===r8)return e8;if($%s8===n8)return MJ;if($%t8===DJ)return VJ($);return $Q($)}var BJ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function D8($){let J={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=BJ.reduce((Q,G)=>{return Q[G]="function",Q},J);return H0($,q),$}function OJ($,J,q){if(q<K$)throw Error("invalid exponent, negatives unsupported");if(q===K$)return $.ONE;if(q===Y$)return J;let Q=$.ONE,G=J;while(q>K$){if(q&Y$)Q=$.mul(Q,G);G=$.sqr(G),q>>=Y$}return Q}function b0($,J,q=!1){let Q=Array(J.length).fill(q?$.ZERO:void 0),G=J.reduce((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=X,$.mul(X,U)},$.ONE),Y=$.inv(G);return J.reduceRight((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=$.mul(X,Q[Z]),$.mul(X,U)},Y),Q}function i8($,J){let q=($.ORDER-Y$)/i$,Q=$.pow(J,q),G=$.eql(Q,$.ONE),Y=$.eql(Q,$.ZERO),X=$.eql(Q,$.neg($.ONE));if(!G&&!Y&&!X)throw Error("invalid Legendre symbol result");return G?1:Y?0:-1}function f0($,J){if(J!==void 0)D0(J);let q=J!==void 0?J:$.toString(2).length,Q=Math.ceil(q/8);return{nBitLength:q,nByteLength:Q}}function F$($,J,q=!1,Q={}){if($<=K$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,Y=void 0,X=!1,U=void 0;if(typeof J==="object"&&J!=null){if(Q.sqrt||q)throw Error("cannot specify opts in two arguments");let z=J;if(z.BITS)G=z.BITS;if(z.sqrt)Y=z.sqrt;if(typeof z.isLE==="boolean")q=z.isLE;if(typeof z.modFromBytes==="boolean")X=z.modFromBytes;U=z.allowedLengths}else{if(typeof J==="number")G=J;if(Q.sqrt)Y=Q.sqrt}let{nBitLength:Z,nByteLength:B}=f0($,G);if(B>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let M,H=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:B,MASK:u$(Z),ZERO:K$,ONE:Y$,allowedLengths:U,create:(z)=>N$(z,$),isValid:(z)=>{if(typeof z!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof z);return K$<=z&&z<$},is0:(z)=>z===K$,isValidNot0:(z)=>!H.is0(z)&&H.isValid(z),isOdd:(z)=>(z&Y$)===Y$,neg:(z)=>N$(-z,$),eql:(z,j)=>z===j,sqr:(z)=>N$(z*z,$),add:(z,j)=>N$(z+j,$),sub:(z,j)=>N$(z-j,$),mul:(z,j)=>N$(z*j,$),pow:(z,j)=>OJ(H,z,j),div:(z,j)=>N$(z*o8(j,$),$),sqrN:(z)=>z*z,addN:(z,j)=>z+j,subN:(z,j)=>z-j,mulN:(z,j)=>z*j,inv:(z)=>o8(z,$),sqrt:Y||((z)=>{if(!M)M=NJ($);return M(H,z)}),toBytes:(z)=>q?K8(z,B):J0(z,B),fromBytes:(z,j=!0)=>{if(U){if(!U.includes(z.length)||z.length>B)throw Error("Field.fromBytes: expected "+U+" bytes, got "+z.length);let S=new Uint8Array(B);S.set(z,q?0:S.length-z.length),z=S}if(z.length!==B)throw Error("Field.fromBytes: expected "+B+" bytes, got "+z.length);let w=q?U8(z):v$(z);if(X)w=N$(w,$);if(!j){if(!H.isValid(w))throw Error("invalid field element: outside of range 0..ORDER")}return w},invertBatch:(z)=>b0(H,z),cmov:(z,j,w)=>w?j:z});return Object.freeze(H)}function QQ($){if(typeof $!=="bigint")throw Error("field order must be bigint");let J=$.toString(2).length;return Math.ceil(J/8)}function M8($){let J=QQ($);return J+Math.ceil(J/2)}function y0($,J,q=!1){let Q=$.length,G=QQ(J),Y=M8(J);if(Q<16||Q<Y||Q>1024)throw Error("expected "+Y+"-1024 bytes of input, got "+Q);let X=q?U8($):v$($),U=N$(X,J-Y$)+Y$;return q?K8(U,G):J0(U,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var q0=BigInt(0),r$=BigInt(1);function A0($,J){let q=J.negate();return $?q:J}function g0($,J){let q=b0($.Fp,J.map((Q)=>Q.Z));return J.map((Q,G)=>$.fromAffine(Q.toAffine(q[G])))}function YQ($,J){if(!Number.isSafeInteger($)||$<=0||$>J)throw Error("invalid window size, expected [1.."+J+"], got W="+$)}function V8($,J){YQ($,J);let q=Math.ceil(J/$)+1,Q=2**($-1),G=2**$,Y=u$($),X=BigInt($);return{windows:q,windowSize:Q,mask:Y,maxNumber:G,shiftBy:X}}function JQ($,J,q){let{windowSize:Q,mask:G,maxNumber:Y,shiftBy:X}=q,U=Number($&G),Z=$>>X;if(U>Q)U-=Y,Z+=r$;let B=J*Q,M=B+Math.abs(U)-1,H=U===0,z=U<0,j=J%2!==0;return{nextN:Z,offset:M,isZero:H,isNeg:z,isNegF:j,offsetF:B}}function HJ($,J){if(!Array.isArray($))throw Error("array expected");$.forEach((q,Q)=>{if(!(q instanceof J))throw Error("invalid point at index "+Q)})}function AJ($,J){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,Q)=>{if(!J.isValid(q))throw Error("invalid scalar at index "+Q)})}var N8=new WeakMap,XQ=new WeakMap;function B8($){return XQ.get($)||1}function qQ($){if($!==q0)throw Error("invalid wNAF")}class O8{constructor($,J){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=J}_unsafeLadder($,J,q=this.ZERO){let Q=$;while(J>q0){if(J&r$)q=q.add(Q);Q=Q.double(),J>>=r$}return q}precomputeWindow($,J){let{windows:q,windowSize:Q}=V8(J,this.bits),G=[],Y=$,X=Y;for(let U=0;U<q;U++){X=Y,G.push(X);for(let Z=1;Z<Q;Z++)X=X.add(Y),G.push(X);Y=X.double()}return G}wNAF($,J,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let Q=this.ZERO,G=this.BASE,Y=V8($,this.bits);for(let X=0;X<Y.windows;X++){let{nextN:U,offset:Z,isZero:B,isNeg:M,isNegF:H,offsetF:z}=JQ(q,X,Y);if(q=U,B)G=G.add(A0(H,J[z]));else Q=Q.add(A0(M,J[Z]))}return qQ(q),{p:Q,f:G}}wNAFUnsafe($,J,q,Q=this.ZERO){let G=V8($,this.bits);for(let Y=0;Y<G.windows;Y++){if(q===q0)break;let{nextN:X,offset:U,isZero:Z,isNeg:B}=JQ(q,Y,G);if(q=X,Z)continue;else{let M=J[U];Q=Q.add(B?M.negate():M)}}return qQ(q),Q}getPrecomputes($,J,q){let Q=N8.get(J);if(!Q){if(Q=this.precomputeWindow(J,$),$!==1){if(typeof q==="function")Q=q(Q);N8.set(J,Q)}}return Q}cached($,J,q){let Q=B8($);return this.wNAF(Q,this.getPrecomputes(Q,$,q),J)}unsafe($,J,q,Q){let G=B8($);if(G===1)return this._unsafeLadder($,J,Q);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),J,Q)}createCache($,J){YQ(J,this.bits),XQ.set($,J),N8.delete($)}hasCache($){return B8($)!==1}}function zQ($,J,q,Q){let G=J,Y=$.ZERO,X=$.ZERO;while(q>q0||Q>q0){if(q&r$)Y=Y.add(G);if(Q&r$)X=X.add(G);G=G.double(),q>>=r$,Q>>=r$}return{p1:Y,p2:X}}function ZQ($,J,q,Q){HJ(q,$),AJ(Q,J);let G=q.length,Y=Q.length;if(G!==Y)throw Error("arrays of points and scalars must have equal length");let X=$.ZERO,U=_0(BigInt(G)),Z=1;if(U>12)Z=U-3;else if(U>4)Z=U-2;else if(U>0)Z=2;let B=u$(Z),M=Array(Number(B)+1).fill(X),H=Math.floor((J.BITS-1)/Z)*Z,z=X;for(let j=H;j>=0;j-=Z){M.fill(X);for(let S=0;S<Y;S++){let I=Q[S],m=Number(I>>BigInt(j)&B);M[m]=M[m].add(q[S])}let w=X;for(let S=M.length-1,I=X;S>0;S--)I=I.add(M[S]),w=w.add(I);if(z=z.add(w),j!==0)for(let S=0;S<Z;S++)z=z.double()}return z}function GQ($,J,q){if(J){if(J.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return D8(J),J}else return F$($,{isLE:q})}function UQ($,J,q={},Q){if(Q===void 0)Q=$==="edwards";if(!J||typeof J!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let B=J[Z];if(!(typeof B==="bigint"&&B>q0))throw Error(`CURVE.${Z} must be positive bigint`)}let G=GQ(J.p,q.Fp,Q),Y=GQ(J.n,q.Fn,Q),U=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of U)if(!G.isValid(J[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return J=Object.freeze(Object.assign({},J)),{CURVE:J,Fp:G,Fn:Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var KQ=($,J)=>($+($>=0?J:-J)/WQ)/J;function RJ($,J,q){let[[Q,G],[Y,X]]=J,U=KQ(X*$,q),Z=KQ(-G*$,q),B=$-U*Q-Z*Y,M=-U*G-Z*X,H=B<b$,z=M<b$;if(H)B=-B;if(z)M=-M;let j=u$(Math.ceil(_0(q)/2))+G0;if(B<b$||B>=j||M<b$||M>=j)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:H,k1:B,k2neg:z,k2:M}}function A8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function H8($,J){let q={};for(let Q of Object.keys(J))q[Q]=$[Q]===void 0?J[Q]:$[Q];if(N0(q.lowS,"lowS"),N0(q.prehash,"prehash"),q.format!==void 0)A8(q.format);return q}class jQ extends Error{constructor($=""){super($)}}var _$={Err:jQ,_tlv:{encode:($,J)=>{let{Err:q}=_$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length&1)throw new q("tlv.encode: unpadded data");let Q=J.length/2,G=B0(Q);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let Y=Q>127?B0(G.length/2|128):"";return B0($)+Y+G+J},decode($,J){let{Err:q}=_$,Q=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length<2||J[Q++]!==$)throw new q("tlv.decode: wrong tlv");let G=J[Q++],Y=!!(G&128),X=0;if(!Y)X=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let B=J.subarray(Q,Q+Z);if(B.length!==Z)throw new q("tlv.decode: length bytes not complete");if(B[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let M of B)X=X<<8|M;if(Q+=Z,X<128)throw new q("tlv.decode(long): not minimal encoding")}let U=J.subarray(Q,Q+X);if(U.length!==X)throw new q("tlv.decode: wrong value length");return{v:U,l:J.subarray(Q+X)}}},_int:{encode($){let{Err:J}=_$;if($<b$)throw new J("integer: negative integers are not allowed");let q=B0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new J("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:J}=_$;if($[0]&128)throw new J("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new J("invalid signature integer: unnecessary leading zero");return v$($)}},toSig($){let{Err:J,_int:q,_tlv:Q}=_$,G=p("signature",$),{v:Y,l:X}=Q.decode(48,G);if(X.length)throw new J("invalid signature: left bytes after parsing");let{v:U,l:Z}=Q.decode(2,Y),{v:B,l:M}=Q.decode(2,Z);if(M.length)throw new J("invalid signature: left bytes after parsing");return{r:q.decode(U),s:q.decode(B)}},hexFromSig($){let{_tlv:J,_int:q}=_$,Q=J.encode(2,q.encode($.r)),G=J.encode(2,q.encode($.s)),Y=Q+G;return J.encode(48,Y)}},b$=BigInt(0),G0=BigInt(1),WQ=BigInt(2),u0=BigInt(3),xJ=BigInt(4);function m$($,J){let{BYTES:q}=$,Q;if(typeof J==="bigint")Q=J;else{let G=p("private key",J);try{Q=$.fromBytes(G)}catch(Y){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof J}`)}}if(!$.isValidNot0(Q))throw Error("invalid private key: out of range [1..N-1]");return Q}function TJ($,J={}){let q=UQ("weierstrass",$,J),{Fp:Q,Fn:G}=q,Y=q.CURVE,{h:X,n:U}=Y;H0(J,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=J;if(Z){if(!Q.is0(Y.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let B=MQ(Q,G);function M(){if(!Q.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function H(A,C,W){let{x:O,y:N}=C.toAffine(),T=Q.toBytes(O);if(N0(W,"isCompressed"),W){M();let K=!Q.isOdd(N);return D$(DQ(K),T)}else return D$(Uint8Array.of(4),T,Q.toBytes(N))}function z(A){g$(A,void 0,"Point");let{publicKey:C,publicKeyUncompressed:W}=B,O=A.length,N=A[0],T=A.subarray(1);if(O===C&&(N===2||N===3)){let K=Q.fromBytes(T);if(!Q.isValid(K))throw Error("bad point: is not on curve, wrong x");let D=S(K),x;try{x=Q.sqrt(D)}catch(v){let b=v instanceof Error?": "+v.message:"";throw Error("bad point: is not on curve, sqrt error"+b)}M();let R=Q.isOdd(x);if((N&1)===1!==R)x=Q.neg(x);return{x:K,y:x}}else if(O===W&&N===4){let K=Q.BYTES,D=Q.fromBytes(T.subarray(0,K)),x=Q.fromBytes(T.subarray(K,K*2));if(!I(D,x))throw Error("bad point: is not on curve");return{x:D,y:x}}else throw Error(`bad point: got length ${O}, expected compressed=${C} or uncompressed=${W}`)}let j=J.toBytes||H,w=J.fromBytes||z;function S(A){let C=Q.sqr(A),W=Q.mul(C,A);return Q.add(Q.add(W,Q.mul(A,Y.a)),Y.b)}function I(A,C){let W=Q.sqr(C),O=S(A);return Q.eql(W,O)}if(!I(Y.Gx,Y.Gy))throw Error("bad curve params: generator point");let m=Q.mul(Q.pow(Y.a,u0),xJ),e=Q.mul(Q.sqr(Y.b),BigInt(27));if(Q.is0(Q.add(m,e)))throw Error("bad curve params: a or b");function u(A,C,W=!1){if(!Q.isValid(C)||W&&Q.is0(C))throw Error(`bad point coordinate ${A}`);return C}function n(A){if(!(A instanceof _))throw Error("ProjectivePoint expected")}function Q$(A){if(!Z||!Z.basises)throw Error("no endo");return RJ(A,Z.basises,G.ORDER)}let X$=j8((A,C)=>{let{X:W,Y:O,Z:N}=A;if(Q.eql(N,Q.ONE))return{x:W,y:O};let T=A.is0();if(C==null)C=T?Q.ONE:Q.inv(N);let K=Q.mul(W,C),D=Q.mul(O,C),x=Q.mul(N,C);if(T)return{x:Q.ZERO,y:Q.ZERO};if(!Q.eql(x,Q.ONE))throw Error("invZ was invalid");return{x:K,y:D}}),V$=j8((A)=>{if(A.is0()){if(J.allowInfinityPoint&&!Q.is0(A.Y))return;throw Error("bad point: ZERO")}let{x:C,y:W}=A.toAffine();if(!Q.isValid(C)||!Q.isValid(W))throw Error("bad point: x or y not field elements");if(!I(C,W))throw Error("bad point: equation left != right");if(!A.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function J$(A,C,W,O,N){return W=new _(Q.mul(W.X,A),W.Y,W.Z),C=A0(O,C),W=A0(N,W),C.add(W)}class _{constructor(A,C,W){this.X=u("x",A),this.Y=u("y",C,!0),this.Z=u("z",W),Object.freeze(this)}static CURVE(){return Y}static fromAffine(A){let{x:C,y:W}=A||{};if(!A||!Q.isValid(C)||!Q.isValid(W))throw Error("invalid affine point");if(A instanceof _)throw Error("projective point not allowed");if(Q.is0(C)&&Q.is0(W))return _.ZERO;return new _(C,W,Q.ONE)}static fromBytes(A){let C=_.fromAffine(w(g$(A,void 0,"point")));return C.assertValidity(),C}static fromHex(A){return _.fromBytes(p("pointHex",A))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(A=8,C=!0){if(r.createCache(this,A),!C)this.multiply(u0);return this}assertValidity(){V$(this)}hasEvenY(){let{y:A}=this.toAffine();if(!Q.isOdd)throw Error("Field doesn't support isOdd");return!Q.isOdd(A)}equals(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.eql(Q.mul(C,K),Q.mul(N,O)),x=Q.eql(Q.mul(W,K),Q.mul(T,O));return D&&x}negate(){return new _(this.X,Q.neg(this.Y),this.Z)}double(){let{a:A,b:C}=Y,W=Q.mul(C,u0),{X:O,Y:N,Z:T}=this,K=Q.ZERO,D=Q.ZERO,x=Q.ZERO,R=Q.mul(O,O),L=Q.mul(N,N),v=Q.mul(T,T),b=Q.mul(O,N);return b=Q.add(b,b),x=Q.mul(O,T),x=Q.add(x,x),K=Q.mul(A,x),D=Q.mul(W,v),D=Q.add(K,D),K=Q.sub(L,D),D=Q.add(L,D),D=Q.mul(K,D),K=Q.mul(b,K),x=Q.mul(W,x),v=Q.mul(A,v),b=Q.sub(R,v),b=Q.mul(A,b),b=Q.add(b,x),x=Q.add(R,R),R=Q.add(x,R),R=Q.add(R,v),R=Q.mul(R,b),D=Q.add(D,R),v=Q.mul(N,T),v=Q.add(v,v),R=Q.mul(v,b),K=Q.sub(K,R),x=Q.mul(v,L),x=Q.add(x,x),x=Q.add(x,x),new _(K,D,x)}add(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.ZERO,x=Q.ZERO,R=Q.ZERO,L=Y.a,v=Q.mul(Y.b,u0),b=Q.mul(C,N),h=Q.mul(W,T),E=Q.mul(O,K),y=Q.add(C,W),F=Q.add(N,T);y=Q.mul(y,F),F=Q.add(b,h),y=Q.sub(y,F),F=Q.add(C,O);let f=Q.add(N,K);return F=Q.mul(F,f),f=Q.add(b,E),F=Q.sub(F,f),f=Q.add(W,O),D=Q.add(T,K),f=Q.mul(f,D),D=Q.add(h,E),f=Q.sub(f,D),R=Q.mul(L,F),D=Q.mul(v,E),R=Q.add(D,R),D=Q.sub(h,R),R=Q.add(h,R),x=Q.mul(D,R),h=Q.add(b,b),h=Q.add(h,b),E=Q.mul(L,E),F=Q.mul(v,F),h=Q.add(h,E),E=Q.sub(b,E),E=Q.mul(L,E),F=Q.add(F,E),b=Q.mul(h,F),x=Q.add(x,b),b=Q.mul(f,F),D=Q.mul(y,D),D=Q.sub(D,b),b=Q.mul(y,h),R=Q.mul(f,R),R=Q.add(R,b),new _(D,x,R)}subtract(A){return this.add(A.negate())}is0(){return this.equals(_.ZERO)}multiply(A){let{endo:C}=J;if(!G.isValidNot0(A))throw Error("invalid scalar: out of range");let W,O,N=(T)=>r.cached(this,T,(K)=>g0(_,K));if(C){let{k1neg:T,k1:K,k2neg:D,k2:x}=Q$(A),{p:R,f:L}=N(K),{p:v,f:b}=N(x);O=L.add(b),W=J$(C.beta,R,v,T,D)}else{let{p:T,f:K}=N(A);W=T,O=K}return g0(_,[W,O])[0]}multiplyUnsafe(A){let{endo:C}=J,W=this;if(!G.isValid(A))throw Error("invalid scalar: out of range");if(A===b$||W.is0())return _.ZERO;if(A===G0)return W;if(r.hasCache(this))return this.multiply(A);if(C){let{k1neg:O,k1:N,k2neg:T,k2:K}=Q$(A),{p1:D,p2:x}=zQ(_,W,N,K);return J$(C.beta,D,x,O,T)}else return r.unsafe(W,A)}multiplyAndAddUnsafe(A,C,W){let O=this.multiplyUnsafe(C).add(A.multiplyUnsafe(W));return O.is0()?void 0:O}toAffine(A){return X$(this,A)}isTorsionFree(){let{isTorsionFree:A}=J;if(X===G0)return!0;if(A)return A(_,this);return r.unsafe(this,U).is0()}clearCofactor(){let{clearCofactor:A}=J;if(X===G0)return this;if(A)return A(_,this);return this.multiplyUnsafe(X)}isSmallOrder(){return this.multiplyUnsafe(X).is0()}toBytes(A=!0){return N0(A,"isCompressed"),this.assertValidity(),j(_,this,A)}toHex(A=!0){return I$(this.toBytes(A))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(A=!0){return this.toBytes(A)}_setWindowSize(A){this.precompute(A)}static normalizeZ(A){return g0(_,A)}static msm(A,C){return ZQ(_,G,A,C)}static fromPrivateKey(A){return _.BASE.multiply(m$(G,A))}}_.BASE=new _(Y.Gx,Y.Gy,Q.ONE),_.ZERO=new _(Q.ZERO,Q.ONE,Q.ZERO),_.Fp=Q,_.Fn=G;let z$=G.BITS,r=new O8(_,J.endo?Math.ceil(z$/2):z$);return _.BASE.precompute(8),_}function DQ($){return Uint8Array.of($?2:3)}function MQ($,J){return{secretKey:J.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*J.BYTES}}function wJ($,J={}){let{Fn:q}=$,Q=J.randomBytes||o$,G=Object.assign(MQ($.Fp,q),{seed:M8(q.ORDER)});function Y(j){try{return!!m$(q,j)}catch(w){return!1}}function X(j,w){let{publicKey:S,publicKeyUncompressed:I}=G;try{let m=j.length;if(w===!0&&m!==S)return!1;if(w===!1&&m!==I)return!1;return!!$.fromBytes(j)}catch(m){return!1}}function U(j=Q(G.seed)){return y0(g$(j,G.seed,"seed"),q.ORDER)}function Z(j,w=!0){return $.BASE.multiply(m$(q,j)).toBytes(w)}function B(j){let w=U(j);return{secretKey:w,publicKey:Z(w)}}function M(j){if(typeof j==="bigint")return!1;if(j instanceof $)return!0;let{secretKey:w,publicKey:S,publicKeyUncompressed:I}=G;if(q.allowedLengths||w===S)return;let m=p("key",j).length;return m===S||m===I}function H(j,w,S=!0){if(M(j)===!0)throw Error("first arg must be private key");if(M(w)===!1)throw Error("second arg must be public key");let I=m$(q,j);return $.fromHex(w).multiply(I).toBytes(S)}return Object.freeze({getPublicKey:Z,getSharedSecret:H,keygen:B,Point:$,utils:{isValidSecretKey:Y,isValidPublicKey:X,randomSecretKey:U,isValidPrivateKey:Y,randomPrivateKey:U,normPrivateKeyToScalar:(j)=>m$(q,j),precompute(j=8,w=$.BASE){return w.precompute(j,!1)}},lengths:G})}function LJ($,J,q={}){P0(J),H0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let Q=q.randomBytes||o$,G=q.hmac||((W,...O)=>Y8(J,W,D$(...O))),{Fp:Y,Fn:X}=$,{ORDER:U,BITS:Z}=X,{keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j}=wJ($,q),w={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},S="compact";function I(W){let O=U>>G0;return W>O}function m(W,O){if(!X.isValidNot0(O))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return O}function e(W,O){A8(O);let N=j.signature,T=O==="compact"?N:O==="recovered"?N+1:void 0;return g$(W,T,`${O} signature`)}class u{constructor(W,O,N){if(this.r=m("r",W),this.s=m("s",O),N!=null)this.recovery=N;Object.freeze(this)}static fromBytes(W,O=S){e(W,O);let N;if(O==="der"){let{r:x,s:R}=_$.toSig(g$(W));return new u(x,R)}if(O==="recovered")N=W[0],O="compact",W=W.subarray(1);let T=X.BYTES,K=W.subarray(0,T),D=W.subarray(T,T*2);return new u(X.fromBytes(K),X.fromBytes(D),N)}static fromHex(W,O){return this.fromBytes(p$(W),O)}addRecoveryBit(W){return new u(this.r,this.s,W)}recoverPublicKey(W){let O=Y.ORDER,{r:N,s:T,recovery:K}=this;if(K==null||![0,1,2,3].includes(K))throw Error("recovery id invalid");if(U*WQ<O&&K>1)throw Error("recovery id is ambiguous for h>1 curve");let x=K===2||K===3?N+U:N;if(!Y.isValid(x))throw Error("recovery id 2 or 3 invalid");let R=Y.toBytes(x),L=$.fromBytes(D$(DQ((K&1)===0),R)),v=X.inv(x),b=Q$(p("msgHash",W)),h=X.create(-b*v),E=X.create(T*v),y=$.BASE.multiplyUnsafe(h).add(L.multiplyUnsafe(E));if(y.is0())throw Error("point at infinify");return y.assertValidity(),y}hasHighS(){return I(this.s)}toBytes(W=S){if(A8(W),W==="der")return p$(_$.hexFromSig(this));let O=X.toBytes(this.r),N=X.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return D$(Uint8Array.of(this.recovery),O,N)}return D$(O,N)}toHex(W){return I$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return u.fromBytes(p("sig",W),"compact")}static fromDER(W){return u.fromBytes(p("sig",W),"der")}normalizeS(){return this.hasHighS()?new u(this.r,X.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return I$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return I$(this.toBytes("compact"))}}let n=q.bits2int||function(O){if(O.length>8192)throw Error("input is too large");let N=v$(O),T=O.length*8-Z;return T>0?N>>BigInt(T):N},Q$=q.bits2int_modN||function(O){return X.create(n(O))},X$=u$(Z);function V$(W){return l8("num < 2^"+Z,W,b$,X$),X.toBytes(W)}function J$(W,O){return g$(W,void 0,"message"),O?g$(J(W),void 0,"prehashed message"):W}function _(W,O,N){if(["recovered","canonical"].some((E)=>(E in N)))throw Error("sign() legacy options not supported");let{lowS:T,prehash:K,extraEntropy:D}=H8(N,w);W=J$(W,K);let x=Q$(W),R=m$(X,O),L=[V$(R),V$(x)];if(D!=null&&D!==!1){let E=D===!0?Q(j.secretKey):D;L.push(p("extraEntropy",E))}let v=D$(...L),b=x;function h(E){let y=n(E);if(!X.isValidNot0(y))return;let F=X.inv(y),f=$.BASE.multiply(y).toAffine(),Z$=X.create(f.x);if(Z$===b$)return;let j$=X.create(F*X.create(b+Z$*R));if(j$===b$)return;let d=(f.x===Z$?0:2)|Number(f.y&G0),a=j$;if(T&&I(j$))a=X.neg(j$),d^=1;return new u(Z$,a,d)}return{seed:v,k2sig:h}}function z$(W,O,N={}){W=p("message",W);let{seed:T,k2sig:K}=_(W,O,N);return p8(J.outputLen,X.BYTES,G)(T,K)}function r(W){let O=void 0,N=typeof W==="string"||d$(W),T=!N&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!N&&!T)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(T)O=new u(W.r,W.s);else if(N){try{O=u.fromBytes(p("sig",W),"der")}catch(K){if(!(K instanceof _$.Err))throw K}if(!O)try{O=u.fromBytes(p("sig",W),"compact")}catch(K){return!1}}if(!O)return!1;return O}function A(W,O,N,T={}){let{lowS:K,prehash:D,format:x}=H8(T,w);if(N=p("publicKey",N),O=J$(p("message",O),D),"strict"in T)throw Error("options.strict was renamed to lowS");let R=x===void 0?r(W):u.fromBytes(p("sig",W),x);if(R===!1)return!1;try{let L=$.fromBytes(N);if(K&&R.hasHighS())return!1;let{r:v,s:b}=R,h=Q$(O),E=X.inv(b),y=X.create(h*E),F=X.create(v*E),f=$.BASE.multiplyUnsafe(y).add(L.multiplyUnsafe(F));if(f.is0())return!1;return X.create(f.x)===v}catch(L){return!1}}function C(W,O,N={}){let{prehash:T}=H8(N,w);return O=J$(O,T),u.fromBytes(W,"recovered").recoverPublicKey(O).toBytes()}return Object.freeze({keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j,Point:$,sign:z$,verify:A,recoverPublicKey:C,Signature:u,hash:J})}function kJ($){let J={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,Q=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((X)=>Math.ceil(X/2)))):void 0,G=F$(J.n,{BITS:$.nBitLength,allowedLengths:Q,modFromBytes:$.wrapPrivateKey}),Y={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:J,curveOpts:Y}}function CJ($){let{CURVE:J,curveOpts:q}=kJ($),Q={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:J,curveOpts:q,hash:$.hash,ecdsaOpts:Q}}function SJ($,J){let q=J.Point;return Object.assign({},J,{ProjectivePoint:q,CURVE:Object.assign({},$,f0(q.Fn.ORDER,q.Fn.BITS))})}function VQ($){let{CURVE:J,curveOpts:q,hash:Q,ecdsaOpts:G}=CJ($),Y=TJ(J,q),X=LJ(Y,Q,G);return SJ($,X)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function NQ($,J){let q=(Q)=>VQ({...$,hash:Q});return{...q(J),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Y0={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},PJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},IJ=BigInt(0),BQ=BigInt(1),R8=BigInt(2);function EJ($){let J=Y0.p,q=BigInt(3),Q=BigInt(6),G=BigInt(11),Y=BigInt(22),X=BigInt(23),U=BigInt(44),Z=BigInt(88),B=$*$*$%J,M=B*B*$%J,H=B$(M,q,J)*M%J,z=B$(H,q,J)*M%J,j=B$(z,R8,J)*B%J,w=B$(j,G,J)*j%J,S=B$(w,Y,J)*w%J,I=B$(S,U,J)*S%J,m=B$(I,Z,J)*I%J,e=B$(m,U,J)*S%J,u=B$(e,q,J)*M%J,n=B$(u,X,J)*w%J,Q$=B$(n,Q,J)*B%J,X$=B$(Q$,R8,J);if(!F0.eql(F0.sqr(X$),$))throw Error("Cannot find square root");return X$}var F0=F$(Y0.p,{sqrt:EJ}),AQ=NQ({...Y0,Fp:F0,lowS:!0,endo:PJ},v0),OQ={};function m0($,...J){let q=OQ[$];if(q===void 0){let Q=v0(E0($));q=D$(Q,Q),OQ[$]=q}return v0(D$(q,...J))}var T8=($)=>$.toBytes(!0).slice(1),X0=(()=>AQ.Point)(),w8=($)=>$%R8===IJ;function x8($){let{Fn:J,BASE:q}=X0,Q=m$(J,$),G=q.multiply(Q);return{scalar:w8(G.y)?Q:J.neg(Q),bytes:T8(G)}}function RQ($){let J=F0;if(!J.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=J.create($*$),Q=J.create(q*$+BigInt(7)),G=J.sqrt(Q);if(!w8(G))G=J.neg(G);let Y=X0.fromAffine({x:$,y:G});return Y.assertValidity(),Y}var R0=v$;function xQ(...$){return X0.Fn.create(R0(m0("BIP0340/challenge",...$)))}function HQ($){return x8($).bytes}function vJ($,J,q=o$(32)){let{Fn:Q}=X0,G=p("message",$),{bytes:Y,scalar:X}=x8(J),U=p("auxRand",q,32),Z=Q.toBytes(X^R0(m0("BIP0340/aux",U))),B=m0("BIP0340/nonce",Z,Y,G),{bytes:M,scalar:H}=x8(B),z=xQ(M,Y,G),j=new Uint8Array(64);if(j.set(M,0),j.set(Q.toBytes(Q.create(H+z*X)),32),!TQ(j,G,Y))throw Error("sign: Invalid signature produced");return j}function TQ($,J,q){let{Fn:Q,BASE:G}=X0,Y=p("signature",$,64),X=p("message",J),U=p("publicKey",q,32);try{let Z=RQ(R0(U)),B=R0(Y.subarray(0,32));if(!O0(B,BQ,Y0.p))return!1;let M=R0(Y.subarray(32,64));if(!O0(M,BQ,Y0.n))return!1;let H=xQ(Q.toBytes(B),T8(Z),X),z=G.multiplyUnsafe(M).add(Z.multiplyUnsafe(Q.neg(H))),{x:j,y:w}=z.toAffine();if(z.is0()||!w8(w)||j!==B)return!1;return!0}catch(Z){return!1}}var h0=(()=>{let q=(G=o$(48))=>{return y0(G,Y0.n)};AQ.utils.randomSecretKey;function Q(G){let Y=q(G);return{secretKey:Y,publicKey:HQ(Y)}}return{keygen:Q,getPublicKey:HQ,sign:vJ,verify:TQ,Point:X0,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:m0,lift_x:RQ,pointToBytes:T8,numberToBytesBE:J0,bytesToNumberBE:v$,mod:N$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var _J=new TextEncoder,bJ=new TextDecoder,L$=($)=>_J.encode($),a$=($)=>bJ.decode($),c0=($)=>Array.from($,(J)=>J.toString(16).padStart(2,"0")).join(""),O$=JSON.stringify,n$=JSON.parse,d0=($,J=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,Q)=>q+Q.charCodeAt(0),0)%J;var L8="AES-GCM",fJ={},wQ="$",LQ=",",yJ=($)=>{let J=new Uint8Array($),q=32768,Q="";for(let G=0;G<J.length;G+=32768)Q+=String.fromCharCode(...J.subarray(G,G+32768));return btoa(Q)},gJ=($)=>Uint8Array.from(atob($),(J)=>J.charCodeAt(0)).buffer,x0=($)=>fJ[$]??=crypto.subtle.digest("SHA-1",L$($)).then((J)=>{let q=new Uint8Array(J),Q="";for(let G of q)Q+=G.toString(36);return Q}),kQ=async($,J,q)=>{let Q=await crypto.subtle.digest("SHA-256",L$(`${$}:${J}:${q}`));return crypto.subtle.importKey("raw",Q,{name:L8},!1,["encrypt","decrypt"])},CQ=async($,J)=>{let q=crypto.getRandomValues(new Uint8Array(12)),Q=await $,G=await crypto.subtle.encrypt({name:L8,iv:q},Q,L$(J));return`${q.join(LQ)}${wQ}${yJ(G)}`},SQ=async($,J)=>{let[q,Q]=J.split(wQ);if(!q||!Q)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(LQ),Number),Y=await $,X=await crypto.subtle.decrypt({name:L8,iv:G},Y,gJ(Q));return a$(X)};var M$="GenosRTC",Z0=($,J)=>Array.from({length:$},J);var z0=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(J)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[J%62]).join(""),c=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=z0(20):z0(20),f$=Promise.all.bind(Promise),PQ=typeof window<"u",{entries:IQ,fromEntries:l0,keys:t9}=Object,EQ=()=>{},T$=($)=>Error(`GenosRTC: ${$}`),T0=(...$)=>$.join("@"),vQ=($,J)=>{let q=[...$],Q=q.length,G=()=>{let Y=Math.sin(J++)*1e4;return Y-Math.floor(Y)};while(Q){let Y=Math.floor(G()*Q--);[q[Q],q[Y]]=[q[Y],q[Q]]}return q};var uJ=5000,_Q="icegatheringstatechange",bQ="offer",FJ="answer",mJ=[...Z0(3,($,J)=>`stun:stun${J||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),k8=($,{rtcConfig:J,rtcPolyfill:q,turnConfig:Q})=>{let G=new(q||RTCPeerConnection)({iceServers:[...mJ,...Q||[]],...J}),Y={},X=!1,U=!1,Z,B=(z)=>Object.assign(z,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(j)=>Y.data?.(j.data),onopen:()=>Y.connect?.(),onclose:()=>Y.close?.(),onerror:(j)=>!j?.error?.message?.includes("User-Initiated Abort")&&Y.error?.(j)}),M=()=>Promise.race([new Promise((z)=>{let j=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(_Q,j),z()};G.addEventListener(_Q,j),j()}),new Promise((z)=>setTimeout(z,uJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?B(Z=G.createDataChannel("data")):G.ondatachannel=({channel:z})=>B(Z=z),G.onnegotiationneeded=async()=>{try{X=!0,await G.setLocalDescription(),Y.signal?.(await M())}catch(z){Y.error?.(z)}finally{X=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))Y.close?.()},G.ontrack=(z)=>{Y.track?.(z.track,z.streams[0]),Y.stream?.(z.streams[0])},G.onremovestream=(z)=>Y.stream?.(z.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let H=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(z){if(Z?.readyState==="open"&&!z.sdp?.includes("a=rtpmap"))return;try{if(z.type===bQ){if(X||G.signalingState!=="stable"&&!U){if($)return;await f$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(z)])}else await G.setRemoteDescription(z);await G.setLocalDescription();let j=await M();return Y.signal?.(j),j}if(z.type===FJ){U=!0;try{await G.setRemoteDescription(z)}finally{U=!1}}}catch(j){Y.error?.(j)}},sendData:(z)=>{if(Z?.readyState==="open")Z.send(z)},destroy:()=>{Z?.close(),G.close(),X=U=!1},setHandlers:(z)=>Object.assign(Y,z),offerPromise:$?new Promise((z)=>Y.signal=(j)=>j.type===bQ&&z(j)):Promise.resolve(),addStream:(z)=>z.getTracks().forEach((j)=>G.addTrack(j,z)),removeStream:(z)=>H().filter((j)=>z.getTracks().includes(j.track)).forEach((j)=>G.removeTrack(j)),addTrack:(z,j)=>G.addTrack(z,j),removeTrack:(z)=>{let j=H().find((w)=>w.track===z);if(j)G.removeTrack(j)},replaceTrack:(z,j)=>H().find((w)=>w.track===z)?.replaceTrack(j)}};var hJ=Object.getPrototypeOf(Uint8Array),o0=12,yQ=0,i0=yQ+o0,r0=i0+1,L0=r0+1,k0=L0+1,w0=16384-k0,p0=255,C8="bufferedamountlow",U0=($)=>`@_${$}`,S8=100,cJ=3,dJ=200,lJ=512,fQ=($,J)=>new Response(new Blob([$]).stream().pipeThrough(new J("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),gQ=($,J,q,Q)=>{let G=new Map,Y=new Map,X=new Map,U={},Z={},B={},M={},H=new Map,z=Promise.resolve(),j=(K,D)=>{if(!H.has(K))H.set(K,new Set);H.get(K).add(D)},w=(K,D)=>H.get(K)?.delete(D),S=(K,...D)=>H.get(K)?.forEach((x)=>x(...D)),I=(K,D)=>{let x=K?Array.isArray(K)?K:[K]:G.keys();return Array.from(x,(R)=>{let L=G.get(R);if(!L)return console.warn(`${M$}: no peer with id ${R}`),null;return D(R,L)}).filter(Boolean)},m=(K)=>{if(!G.has(K))return;G.delete(K),delete U[K],delete Z[K],delete B[K],delete M[K],S("peer:leave",K),J(K)},e=(K)=>new Promise((D,x)=>{let R=setTimeout(()=>{K.removeEventListener(C8,L),x(Error(`${M$}: bufferLow timeout`))},5000);function L(){clearTimeout(R),K.removeEventListener(C8,L),D()}K.addEventListener(C8,L)}),u=(K)=>{if(X.has(K))return X.get(K);if(!K)throw T$("action type is required");let D=L$(K);if(D.byteLength>o0)throw T$(`❌ "${K}" exceeds ${o0} bytes. Use a shorter name.`);let x=new Uint8Array(o0).map((y,F)=>D[F]||0),R=0,L=new Map([["message",new Set],["progress",new Set]]),v=(y,F)=>L.get(y)?.add(F),b=(y,F)=>L.get(y)?.delete(F),h=async(y,F,f,Z$)=>{if(f&&typeof f!=="object")throw T$("meta must be object");if(y===void 0)throw T$("data cannot be undefined");let j$=y instanceof Blob,d=j$||y instanceof ArrayBuffer||y instanceof hJ,a=typeof y!=="string";if(f&&!d)throw T$("meta only allowed with binary");let q$=d?new Uint8Array(j$?await y.arrayBuffer():y):L$(a?O$(y):y),s=0;if(!d&&q$.byteLength>=lJ){let H$=await fQ(q$,CompressionStream);if(H$.byteLength<q$.byteLength)q$=H$,s=1}let U$=f?L$(O$(f)):null,k$=Math.ceil(q$.byteLength/w0)+(f?1:0)||1;if(k$>S8)throw T$(`Message too large, exceeds max chunks ${S8}`);let s$=Z0(k$,(H$,G$)=>{let C$=G$===k$-1,S$=f&&G$===0,h$=S$?U$:q$.subarray(f?(G$-1)*w0:G$*w0,f?G$*w0:(G$+1)*w0),w$=new Uint8Array(k0+h$.byteLength);return w$.set(x),w$.set([R],i0),w$.set([C$|S$<<1|d<<2|a<<3|s<<4],r0),w$.set([Math.round((G$+1)/k$*p0)],L0),w$.set(h$,k0),w$});return R=R+1&p0,f$(I(F,async(H$,G$)=>{let{channel:C$}=G$;for(let S$=0;S$<k$;S$++){let h$=0;while(C$.bufferedAmount>C$.bufferedAmountLowThreshold){if(h$++>cJ)throw T$(`${M$}: send buffer full, max retries reached for peer ${H$}`);try{await e(C$)}catch(w$){console.warn(w$.message),await new Promise((t$)=>setTimeout(t$,dJ))}}if(!G.has(H$))break;G$.sendData(s$[S$]),Z$?.(s$[S$][L0]/p0,H$,f)}}))};Y.set(K,{listeners:L,send:h});let E={send:h,on:v,off:b};return X.set(K,E),E},n=(K,D)=>{try{let x=new Uint8Array(D),R=a$(x.subarray(yQ,i0)).replace(/\x00/g,"");if(!Y.has(R))return console.warn(`${M$}: unregistered type (${R})`);let[L]=x.subarray(i0,r0),[v]=x.subarray(r0,L0),[b]=x.subarray(L0,k0),h=x.subarray(k0),E=Boolean(v&1),y=Boolean(v&2),F=Boolean(v&4),f=Boolean(v&8),Z$=Boolean(v&16),j$=Y.get(R),d=(U[K]||={})[R]||={};if(d[L]?.chunks?.length>S8){console.warn(`${M$}: peer ${K} sent too many chunks for nonce ${L}, ignoring.`);return}let a=d[L]||={chunks:[]};if(y)try{a.meta=n$(a$(h))}catch{console.warn(`${M$}: failed to parse meta from peer ${K} for type ${R}`);return}else a.chunks.push(h);if(j$.listeners.get("progress").forEach((s)=>{try{s(b/p0,K,a.meta)}catch(U$){console.error(U$)}}),!E)return;let q$=new Uint8Array(a.chunks.reduce((s,U$)=>s+U$.byteLength,0));a.chunks.reduce((s,U$)=>(q$.set(U$,s),s+U$.byteLength),0),delete d[L],z=z.then(async()=>{let s=Z$?await fQ(q$,DecompressionStream):q$,U$;if(F)U$=s;else if(f)try{U$=n$(a$(s))}catch{console.warn(`${M$}: failed to parse JSON message data from peer ${K} for type ${R}`);return}else U$=a$(s);j$.listeners.get("message").forEach((k$)=>{try{k$(U$,K,a.meta)}catch(s$){console.error(s$)}})}).catch((s)=>console.error(`${M$}: dispatch error from peer ${K}:`,s))}catch(x){console.error(`${M$}: error handling data from peer ${K}:`,x)}},Q$=async()=>{try{await N(""),await new Promise((K)=>setTimeout(K,99))}catch(K){console.warn(`${M$}: error sending leave`,K)}for(let[K,D]of G){try{D.destroy()}catch{}G.delete(K)}q()},{send:X$,on:V$}=u(U0("ping")),{send:J$,on:_}=u(U0("pong")),{send:z$,on:r}=u(U0("signal")),{send:A,on:C}=u(U0("stream")),{send:W,on:O}=u(U0("track")),{send:N,on:T}=u(U0("leave"));if($((K,D)=>{let x=G.get(D);if(x===K)return;if(x){let R=()=>{};x.setHandlers({data:R,stream:R,track:R,signal:R,close:R,error:R})}G.set(D,K),K.setHandlers({data:(R)=>n(D,R),stream:(R)=>{S("stream:add",R,D,B[D]),delete B[D]},track:(R,L)=>{S("track:add",R,L,D,M[D]),delete M[D]},signal:(R)=>z$(R,D),close:()=>m(D),error:(R)=>{console.error(`${M$}: peer error for ${D}`,R),m(D)}}),S("peer:join",D,Q?.(D))}),V$("message",(K,D)=>J$("",D)),_("message",(K,D)=>{Z[D]?.(),delete Z[D]}),r("message",(K,D)=>G.get(D)?.signal(K)),C("message",(K,D)=>B[D]=K),O("message",(K,D)=>M[D]=K),T("message",(K,D)=>m(D)),PQ)addEventListener("beforeunload",Q$);return{on:j,off:w,channel:u,leave:Q$,ping:async(K)=>{if(!K)throw T$("ping() requires target peer ID");let D=Date.now();return X$("",K),await new Promise((x)=>Z[K]=x),Date.now()-D},getPeers:()=>l0(Array.from(G,([K,D])=>[K,D.connection])),addStream:(K,D,x)=>I(D,async(R,L)=>{if(x)await A(x,R);L.addStream(K)}),removeStream:(K,D)=>I(D,(x,R)=>R.removeStream(K)),addTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.addTrack(K,D)}),removeTrack:(K,D)=>I(D,(x,R)=>R.removeTrack(K)),replaceTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.replaceTrack(K,D)})}};var pJ=5,oJ=10,iJ=2500,a0=57333,uQ=({init:$,subscribe:J,announce:q})=>{let Q={},G=!1,Y,X;return(U,Z,B)=>{let{appId:M}=U;if(Q[M]?.[Z])return Q[M][Z];if(!U||!Z||!M&&!U.firebaseApp)throw T$(!U?"config required":!Z?"roomId required":"appId missing");let H=EQ;if(!G){let N=$(U);X=Z0(pJ,()=>{try{return k8(!0,U)}catch{return null}}).filter(Boolean),Y=Array.isArray(N)?N:[N];let T=setInterval(()=>{X=X.filter((K)=>{let D=Date.now()-K.created<a0;if(!D)K.destroy();return D})},a0);Q.offerCleanupTimer||=T,G=!0}let z={},j={},w=new Map,S=new Map,I={},m=T0(M$,M,Z),e=x0(m),u=x0(T0(m,c)),n=kQ(U.password||"",M,Z),Q$=(N)=>async(T)=>({type:T.type,sdp:await N(n,T.sdp)}),X$=Q$(SQ),V$=Q$(CQ),J$=(N)=>{return setTimeout(()=>{if(!N.isDead&&!Object.values(j).includes(N))N.destroy()},a0),N},_=(N)=>{try{return J$(k8(N,U))}catch{return null}},z$=(N,T)=>{if(j[T]===N)return;j[T]?.destroy(),j[T]=N,H(N,T),z[T]?.forEach((K)=>K!==N&&K.destroy()),delete z[T]},r=(N,T)=>{if(j[T]===N)delete j[T]},A=(N)=>async(T,K,D)=>{let[x,R]=await f$([e,u]);if(T!==x&&T!==R)return;let{peerId:L,offer:v,answer:b,type:h}=typeof K==="string"?n$(K):K;if(L&&L!==c)S.set(L,Date.now());if(h&&L)I[L]=h;if(L===c||j[L])return;if(U.admit&&!U.admit(L))return;if(v){if(z[L]?.[N]&&c>L)return;let E=_(!1);if(!E)return;E.setHandlers({connect:()=>z$(E,L),close:()=>r(E,L)});try{let y=await X$(v);if(E.isDead)return;let[F,f]=await f$([x0(T0(m,L)),E.signal(y).then(V$)]);D(F,O$({peerId:c,answer:f,...U.type&&{type:U.type}}))}catch{B?.({error:"decryption failed (offer)",appId:M,peerId:L,roomId:Z})}}else if(b){let E=z[L]?.[N];if(!E||E.isDead)return;E.setHandlers({connect:()=>z$(E,L),close:()=>r(E,L)});try{E.signal(await X$(b))}catch{B?.({error:"decryption failed (answer)",appId:M,peerId:L,roomId:Z})}}else{let E=z[L]||=[];if(E.forEach((d,a)=>{if(d&&(d.isDead||Date.now()-(d.dialedAt??d.created)>a0)){if(d.isDead)w.set(L,Date.now()+30000);d.destroy(),delete E[a]}}),E[N]||E.filter(Boolean).length>=2||w.get(L)>Date.now())return;if(Object.values(z).reduce((d,a)=>d+a.filter((q$)=>q$&&!q$.isDead).length,0)>=oJ)return;let F=X.pop(),f=F?J$(F):_(!0);if(!f){w.set(L,Date.now()+30000);return}f.dialedAt=Date.now();let[Z$,{offer:j$}]=await f$([x0(T0(m,L)),f.offerPromise.then(V$).then((d)=>({offer:d}))]);E[N]=f,f.setHandlers({connect:()=>z$(f,L),close:()=>r(f,L)}),D(Z$,O$({peerId:c,offer:j$,peer:f,...U.type&&{type:U.type}}))}},C=[],W=[];Y.forEach(async(N,T)=>{let K=await N;if(!K)return;let[D,x]=await f$([e,u]);W[T]=J(K,D,x,A(T));let R=async()=>{let L=await q(K,D,x);C[T]=setTimeout(R,typeof L==="number"?L:iJ)};R()}),Q[M]||={};let O=gQ((N)=>H=N,(N)=>delete j[N],()=>O.onCleanup?.(),(N)=>I[N]);return O.onCleanup=()=>{if(delete Q[M][Z],C.forEach(clearTimeout),W.forEach((N)=>N?.()),Object.keys(Q).length===0)clearInterval(Q.offerCleanupTimer),delete Q.offerCleanupTimer},O._census=()=>{for(let T of Object.keys(j))S.set(T,Date.now());let N=Date.now()-120000;for(let[T,K]of S)if(K<N)S.delete(T);return[...S.keys()]},Q[M][Z]=O}};var FQ=3333,rJ=30000,C0={},mQ={},hQ=($,J)=>{let q={},Q=null;q.reopenHandlers=new Set;let G=()=>{if(Q)clearTimeout(Q),Q=null;if(q.socket)q.socket.onclose=null,q.socket.close();let Y=new WebSocket($);Y.onclose=()=>{C0[$]??=FQ,Q=setTimeout(G,C0[$]),C0[$]=Math.min(C0[$]*2,rJ)},Y.onmessage=(X)=>J(X.data),q.socket=Y,q.url=Y.url,q.ready=new Promise((X)=>{Y.onopen=()=>{C0[$]=FQ,X(q),q.reopenHandlers.forEach((U)=>U())}}),q.send=(X)=>{if(Y.readyState===1)Y.send(X)}};return q.forceReconnect=G,G(),mQ[$]=q,q};if(typeof window<"u"){let $=(J)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(mQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(J||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var cQ=($)=>()=>l0(IQ($).map(([J,q])=>[J,q.socket])),dQ=($,J,q,Q)=>($.relayUrls??(Q?vQ(J,d0($.appId)):J)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var lQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub","wss://nostr.bitcoiner.social"];var K0={},nJ=10,rQ="x",aQ="EVENT",sJ=/pow:\s*(\d+)\s*bits needed\.?/i,P8=new Set,nQ=h0.utils.randomSecretKey(),tJ=c0(h0.getPublicKey(nQ)),I8={},S0={},eJ={},sQ=()=>Math.floor(Date.now()/1000),tQ=($)=>eJ[$]??=d0($,1e4)+20000,n0=($)=>$.replace(/\/$/,""),$9=($,J)=>{let[q,Q,G,Y]=n$(J);if(q===aQ)return S0[Q]?.(I8[Q],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?Q:Y).match(sJ)?.[1]??0)>0){let U=n0($);P8.add(U),K0[U]?.close?.(),delete K0[U]}}},Q9=($)=>{let J=n0($);if(K0[J])return K0[J];let q=hQ(J,(Q)=>$9(J,Q));return K0[J]=q},pQ=async($,J)=>{let q={kind:tQ($),content:J,pubkey:tJ,created_at:sQ(),tags:[[rQ,$]]},Q=L$(O$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",Q)),Y=h0.sign(G,nQ);return O$([aQ,{...q,id:c0(G),sig:c0(Y)}])},oQ=($,J)=>{return I8[$]=J,O$(["REQ",$,{kinds:[tQ(J)],since:sQ(),["#"+rQ]:[J]}])},iQ=($)=>{return delete I8[$],O$(["CLOSE",$])},s0=uQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??lQ;return dQ($,q,nJ,!1).map(Q9).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,J,q,Q)=>{let G=z0(64),Y=z0(64);S0[G]=S0[Y]=(U,Z)=>Q(U,Z,async(B,M)=>{if(P8.has(n0($.url)))return;$.send(await pQ(B,M))});let X=()=>{$.send(oQ(G,J)),$.send(oQ(Y,q))};return X(),$.reopenHandlers.add(X),()=>{$.reopenHandlers.delete(X),$.send(iQ(G)),$.send(iQ(Y)),delete S0[G],delete S0[Y]}},announce:async($,J)=>{if(P8.has(n0($.url)))return;$.send(await pQ(J,O$({peerId:c})))}}),eQ=cQ(K0);var J9={cellSize:"auto",bridgesPerEdge:2,maxCellSize:50,targetCells:100,debug:!1},$J=5000,q9=3000,G9=30000,Y9=2000,$8=($)=>{let J=String($||"").match(/cell-(\d+)/);return J?Number(J[1]):null},X9=($,J)=>{let q=$8($);if(q==null)return[];let Q=[];for(let G=1;G<J;G*=2){if(q-G>=0)Q.push(`cell-${q-G}`);if(q+G<J)Q.push(`cell-${q+G}`)}return Q},t0=($)=>`c${($8($)||0).toString(36)}`,z9=($,J,q)=>{if($<=10)return Math.max(2,$);let G=10,Y=Math.ceil($/J);return Math.max(G,Math.min(q,Y))},Z9=($,J)=>{return Math.max(1,Math.ceil($/J))},QJ=($)=>{let J=0;for(let q=0;q<$.length;q++)J=Math.imul(J^$.charCodeAt(q),2654435761);return J>>>0},E8=($,J)=>{let q=0,Q=-1;for(let G=0;G<J;G++){let Y=QJ(`${$}:${G}`);if(Y>Q)Q=Y,q=G}return q};class e0{constructor($){this.peerId=$,this.joinedAt=Date.now(),this.lastSeen=Date.now(),this.rttSamples=[],this.stability=1,this.reconnects=0,this.isResponsive=!0,this.connectedCells=new Set}get uptime(){return Date.now()-this.joinedAt}get avgRtt(){if(this.rttSamples.length===0)return 1/0;return Math.round(this.rttSamples.reduce(($,J)=>$+J,0)/this.rttSamples.length)}get healthScore(){let $=this.avgRtt===1/0?0.5:Math.max(0,100-this.avgRtt)/100,J=Math.min(1,this.uptime/60000),q=this.stability,Q=this.isResponsive?1:0.3;return $*0.25+J*0.25+q*0.3+Q*0.2}get isStale(){return Date.now()-this.lastSeen>G9}addRttSample($){if(this.rttSamples.push($),this.rttSamples.length>10)this.rttSamples.shift();this.lastSeen=Date.now(),this.isResponsive=!0}markReconnect(){this.reconnects++,this.stability=Math.max(0,1-this.reconnects*0.1)}markUnresponsive(){this.isResponsive=!1}markSeen(){this.lastSeen=Date.now()}addConnectedCell($){if($)this.connectedCells.add($)}}function U9($,J={},q={}){let Q={...J9,...J},G=!!Q.debug,Y=(...V)=>G&&console.debug("[cells]",...V),X=Math.max(0,Q.bridgesPerEdge|0),U=Math.max(5,Q.maxCellSize|0),Z=Math.max(10,Q.targetCells|0),B=Q.cellSize==="auto",M=B?2:Math.max(1,Q.cellSize|0),H={cellId:null,bridges:[],isBridge:!1},z=null,j=null,w=null,S=new Map,I=new Map,m=new Set,e=new Map,u=new Set,n=new Set,Q$=0,X$=[],V$=new Map,J$=new Set,_=new Map,z$=new Map,r=1,A=0,C=1,W=0,O=()=>{a();let V=Z9(d().length,M);if(V!==C)C=V,W=Date.now();let k=Date.now()-W;if(V>r&&k>4000)r=V;else if(V<r&&k>30000)r=V;return r},N=()=>Math.min(150,Math.ceil(Math.log2(O()+1))*2+3),T=(V)=>X9(V,O()),K=$.on?.bind($),D=$.off?.bind($);if(K)$.on=(V,k)=>String(V).startsWith("mesh:")?L(V,k):K(V,k);if(D)$.off=(V,k)=>String(V).startsWith("mesh:")?e.get(V)?.delete(k):D(V,k);let x=(V)=>(m.add(V),()=>m.delete(V)),R=(V,k,P)=>{if(n.has(P))return;if(n.add(P),n.size>$J){let g=n.values().next().value;n.delete(g)}for(let g of m)try{g(V,k)}catch(l){Y("Error in deliver handler:",l)}},L=(V,k)=>{if(!e.has(V))e.set(V,new Set);return e.get(V).add(k),()=>e.get(V)?.delete(k)},v=(V,...k)=>{let P=e.get(V);if(P)for(let g of P)try{g(...k)}catch{}},b=(V)=>{try{return typeof V==="string"?JSON.parse(V):V}catch{return null}},h=()=>`${c}:${Date.now().toString(36)}:${(Q$++&65535).toString(36)}`,E=()=>{if(u.size>$J)u.delete(u.values().next().value)},y=(V,k,P=[])=>{if(!V||!k)return;if(S.set(V,{cell:k,isBridge:P.length>0,bridges:[...P]}),!I.has(V))I.set(V,new e0(V));let g=I.get(V);if(g.markSeen(),g.addConnectedCell(k),z$.set(k,{lastSeen:Date.now(),peerId:V}),P.length>0)for(let l of T(k))g.addConnectedCell(l)},F=(V)=>I.get(V),f=(V,k)=>{let P=I.get(V);if(P)P.addRttSample(k)},Z$=(V)=>{let k=s$(V);if(k.length===0)return null;let P=0,g=0;for(let t of k){let W$=I.get(t);if(W$&&!W$.isStale){if(P+=W$.healthScore,W$.isResponsive)g++}}let l=k.filter((t)=>{let W$=I.get(t);return W$&&!W$.isStale});return{cellId:V,memberCount:l.length,avgHealth:l.length>0?P/l.length:0,responsiveRatio:l.length>0?g/l.length:0}},j$=()=>{let V=Z$(H.cellId);v("mesh:health",{...H,health:V})},d=()=>[...new Set([...$._census(),c])].sort(),a=()=>{if(!B)return;let V=d().length,k=z9(V,Z,U);if(k!==M)Y("cellSize changed:",M,"->",k),M=k},q$=(V,k)=>k.filter((P)=>E8(P,O())===V),s=(V,k)=>{if(X===0)return[];let P=$8(V),g=$8(k);if(P==null||g==null)return[];let l=d(),t=q$(P,l),W$=q$(g,l),$$=Math.min(P,g),e$=Math.max(P,g),j0=(i)=>QJ(`${i}@${$$}~${e$}`),A$=[...new Set([...t,...W$])].sort((i,J8)=>j0(J8)-j0(i));if(!A$.length)return[];let $0=new Set(t),W0=[],o=(i)=>i&&!W0.includes(i)&&W0.push(i);o(A$.find((i)=>$0.has(i))),o(A$.find((i)=>!$0.has(i)));for(let i of A$){if(W0.length>=Math.max(X,2))break;o(i)}return W0},U$=(V,k)=>{if(X===0)return[];let P=T(k),g=[];for(let l of P)if(s(k,l).includes(V))g.push(l);return g},k$=()=>{a();let V=d(),k=E8(c,O()),P=O(),g=`cell-${k}`,l=U$(c,g),t=l.length>0;return Y("computeState",{self:c,myCell:g,isBridge:t,bridgeEdges:l,cellSize:M,rosterSize:V.length,totalCells:P,dynamicTTL:N()}),{cellId:g,isBridge:t,bridges:l,cellSize:M,dynamicTTL:N(),totalCells:P}},s$=(V)=>{let k=[],P=new Set(Object.keys($.getPeers?.()||{}));for(let[g,l]of S)if(l.cell===V){let t=I.get(g);if(P.has(g)&&(!t||!t.isStale))k.push(g)}return k.sort(),k},H$=()=>{if(!z)return;Q8=_8(),v8=Date.now();let V={t:"state",id:h(),ttl:N(),data:{id:c,cell:H.cellId,bridges:H.bridges,health:I.get(c)?.healthScore||0.5,timestamp:Date.now()},origin:c,originCell:H.cellId},k=JSON.stringify(V);z.send(k),G$(j,k)},G$=(V,k)=>{let P=b(k);if(!P?.id||!P?.t)return;let g=u.has(P.id);if(!g)u.add(P.id),E();let{t:l,id:t,ttl:W$,data:$$,origin:e$,originCell:j0}=P,A$=H.cellId;if(l==="state"&&$$)y($$.id,$$.cell,$$.bridges),v("mesh:peer-state",$$);if(l==="ping"&&$$?.pingId&&e$!==c){let o={t:"pong",id:h(),ttl:N(),data:{pingId:$$.pingId,receivedAt:Date.now()},origin:c,originCell:A$};z?.send(JSON.stringify(o))}if(l==="pong"&&$$?.pingId){let o=_.get($$.pingId);if(o){clearTimeout(o.timeout);let i=Date.now()-o.start;f(o.peerId,i),o.resolve(i),_.delete($$.pingId)}}if(l==="msg"&&e$!==c){if(j0===A$||X>0)R($$,e$,t)}if(g)return;if(!H.isBridge)return;if((W$??0)<=0)return;let $0=(o,i,J8=null)=>{if(!o)return;let XJ={t:l,id:t,ttl:J8??(W$??N())-1,data:$$,origin:e$||c,originCell:j0||A$},b8=JSON.stringify(XJ);if(i?.length){let zJ=new Set(Object.keys($.getPeers?.()||{})),f8=i.filter((ZJ)=>zJ.has(ZJ));if(f8.length>0)o.send(b8,f8)}else o.send(b8)};if(V===j){for(let o of T(A$))$0(C$(o),null);return}if(!T(A$).map(t0).includes(V))return;$0(z,null);for(let o of T(A$))if(t0(o)!==V)$0(C$(o),null)},C$=(V)=>{let k=t0(V);if(V$.has(V))return V$.get(V);let P=$.channel(k);if(V$.set(V,P),!J$.has(k))J$.add(k),P.on("message",(g)=>G$(k,g));return P},S$=()=>{if(!H.cellId)return;if(j=t0(H.cellId),z=$.channel(j),!J$.has(j))J$.add(j),z.on("message",(V)=>G$(j,V));if(H.isBridge)for(let V of T(H.cellId))C$(V);if(X$.length)for(let V of X$.splice(0)){let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)}H$()},h$=(V)=>{if(!H.cellId)return!0;if(!d().includes(V))return!0;let P=`cell-${E8(V,O())}`;if(P===H.cellId)return!0;if(H.bridges.includes(P))return!0;return T(H.cellId).includes(P)&&s(P,H.cellId).includes(V)},w$=()=>{let V=$.getPeers?.()||{};for(let k of Object.keys(V))if(!h$(k))V[k].close?.()};q.admit=h$;let t$=()=>{let V=k$(),k=!H.cellId||H.cellId!==V.cellId||H.isBridge!==V.isBridge||JSON.stringify(H.bridges)!==JSON.stringify(V.bridges);if(H=V,y(c,V.cellId,V.bridges),k)S$();else H$();w$(),v("mesh:state",V),j$()},Q8="",v8=0,_8=()=>{return`${H.cellId}:${H.isBridge}:${H.bridges.join(",")}`},qJ=()=>{if(w)return;w=setInterval(()=>{let V=O();if(V!==A){A=V,t$();return}let k=_8();if(k!==Q8||Date.now()-v8>1e4)H$(),Q8=k;for(let[P,g]of I)if(P!==c&&g.isStale)S.delete(P),I.delete(P),Y("Removed stale peer:",P)},Y9)},GJ=()=>{if(w)clearInterval(w),w=null},YJ=(V)=>{return new Promise((k,P)=>{let g=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,l=Date.now(),t=setTimeout(()=>{_.delete(g);let $$=I.get(V);if($$)$$.markUnresponsive();P(Error("Ping timeout"))},q9);_.set(g,{start:l,resolve:k,reject:P,timeout:t,peerId:V});let W$={t:"ping",id:h(),ttl:N(),data:{pingId:g,target:V},origin:c,originCell:H.cellId};z?.send(JSON.stringify(W$))})};if($.on?.("peer:join",(V)=>{if(!I.has(V))I.set(V,new e0(V));else I.get(V).markReconnect();t$()}),$.on?.("peer:leave",(V)=>{S.delete(V),t$()}),!I.has(c))I.set(c,new e0(c));return I.get(c).addConnectedCell(H.cellId||"cell-0"),t$(),qJ(),{send:(V)=>{if(!H.cellId||!z)return X$.push(V);let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)},on:(V,k)=>V==="message"?x(k):void 0,ping:YJ,getState:()=>({...H,cellSize:M,health:Z$(H.cellId),dynamicTTL:N(),totalCells:O(),knownCells:z$.size}),getMetrics:F,getCellHealth:Z$,getPeerInfo:()=>new Map(S),getStableRoster:()=>d(),getKnownCells:()=>new Map(z$),getCellSize:()=>M,destroy:()=>{GJ(),_.forEach((V)=>clearTimeout(V.timeout)),_.clear(),n.clear(),z$.clear()}}}function JJ($,J,q){let Q={},G=s0({...$,admit:(Z)=>Q.admit?.(Z)??!0},J,q),Y=$.overlay||{},X=U9(G,Y,Q),U=new Map;return{on:(Z,B)=>G.on(Z,B),off:(Z,B)=>G.off?.(Z,B),channel:(Z)=>{if(U.has(Z))return U.get(Z);let B=G.channel(Z),M={send:(H,z)=>{X.send({_ch:Z,_d:H,_t:z})},on:(H,z)=>{if(H==="message")X.on("message",(j,w)=>{if(j?._ch===Z)z(j._d,w)}),B.on(H,z);else B.on(H,z)},off:(H,z)=>B.off?.(H,z),_original:B};return U.set(Z,M),M},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:X,_room:G,getState:()=>X.getState(),getMetrics:(Z)=>X.getMetrics(Z),getCellHealth:(Z)=>X.getCellHealth(Z),getPeerInfo:()=>X.getPeerInfo(),ping:(Z)=>X.ping(Z),leave:()=>{X.destroy(),U.clear(),G.leave()},destroy:()=>{X.destroy(),U.clear()}}}var kq=($,J,q)=>$?.cells||$?.overlay?JJ($,J,q):s0($,J,q);export{c as selfId,kq as join,eQ as getRelaySockets}; | ||
| var c$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function d$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function D0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function R$($,...J){if(!d$($))throw Error("Uint8Array expected");if(J.length>0&&!J.includes($.length))throw Error("Uint8Array expected of length "+J+", got length="+$.length)}function P0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");D0($.outputLen),D0($.blockLen)}function Q0($,J=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(J&&$.finished)throw Error("Hash#digest() has already been called")}function g8($,J){R$($);let q=J.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function l$(...$){for(let J=0;J<$.length;J++)$[J].fill(0)}function I0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function x$($,J){return $<<32-J|$>>>J}var u8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),UJ=Array.from({length:256},($,J)=>J.toString(16).padStart(2,"0"));function I$($){if(R$($),u8)return $.toHex();let J="";for(let q=0;q<$.length;q++)J+=UJ[$[q]];return J}var P$={_0:48,_9:57,A:65,F:70,a:97,f:102};function y8($){if($>=P$._0&&$<=P$._9)return $-P$._0;if($>=P$.A&&$<=P$.F)return $-(P$.A-10);if($>=P$.a&&$<=P$.f)return $-(P$.a-10);return}function p$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(u8)return Uint8Array.fromHex($);let J=$.length,q=J/2;if(J%2)throw Error("hex string expected, got unpadded hex of length "+J);let Q=new Uint8Array(q);for(let G=0,Y=0;G<q;G++,Y+=2){let X=y8($.charCodeAt(Y)),U=y8($.charCodeAt(Y+1));if(X===void 0||U===void 0){let Z=$[Y]+$[Y+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+Y)}Q[G]=X*16+U}return Q}function E0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function M0($){if(typeof $==="string")$=E0($);return R$($),$}function W$(...$){let J=0;for(let Q=0;Q<$.length;Q++){let G=$[Q];R$(G),J+=G.length}let q=new Uint8Array(J);for(let Q=0,G=0;Q<$.length;Q++){let Y=$[Q];q.set(Y,G),G+=Y.length}return q}class V0{}function F8($){let J=(Q)=>$().update(M0(Q)).digest(),q=$();return J.outputLen=q.outputLen,J.blockLen=q.blockLen,J.create=()=>$(),J}function o$($=32){if(c$&&typeof c$.getRandomValues==="function")return c$.getRandomValues(new Uint8Array($));if(c$&&typeof c$.randomBytes==="function")return Uint8Array.from(c$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function KJ($,J,q,Q){if(typeof $.setBigUint64==="function")return $.setBigUint64(J,q,Q);let G=BigInt(32),Y=BigInt(4294967295),X=Number(q>>G&Y),U=Number(q&Y),Z=Q?4:0,B=Q?0:4;$.setUint32(J+Z,X,Q),$.setUint32(J+B,U,Q)}function m8($,J,q){return $&J^~$&q}function h8($,J,q){return $&J^$&q^J&q}class q8 extends V0{constructor($,J,q,Q){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=J,this.padOffset=q,this.isLE=Q,this.buffer=new Uint8Array($),this.view=I0(this.buffer)}update($){Q0(this),$=M0($),R$($);let{view:J,buffer:q,blockLen:Q}=this,G=$.length;for(let Y=0;Y<G;){let X=Math.min(Q-this.pos,G-Y);if(X===Q){let U=I0($);for(;Q<=G-Y;Y+=Q)this.process(U,Y);continue}if(q.set($.subarray(Y,Y+X),this.pos),this.pos+=X,Y+=X,this.pos===Q)this.process(J,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){Q0(this),g8($,this),this.finished=!0;let{buffer:J,view:q,blockLen:Q,isLE:G}=this,{pos:Y}=this;if(J[Y++]=128,l$(this.buffer.subarray(Y)),this.padOffset>Q-Y)this.process(q,0),Y=0;for(let M=Y;M<Q;M++)J[M]=0;KJ(q,Q-8,BigInt(this.length*8),G),this.process(q,0);let X=I0($),U=this.outputLen;if(U%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=U/4,B=this.get();if(Z>B.length)throw Error("_sha2: outputLen bigger than state");for(let M=0;M<Z;M++)X.setUint32(4*M,B[M],G)}digest(){let{buffer:$,outputLen:J}=this;this.digestInto($);let q=$.slice(0,J);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:J,buffer:q,length:Q,finished:G,destroyed:Y,pos:X}=this;if($.destroyed=Y,$.finished=G,$.length=Q,$.pos=X,Q%J)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var E$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var jJ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),y$=new Uint32Array(64);class c8 extends q8{constructor($=32){super(64,$,8,!1);this.A=E$[0]|0,this.B=E$[1]|0,this.C=E$[2]|0,this.D=E$[3]|0,this.E=E$[4]|0,this.F=E$[5]|0,this.G=E$[6]|0,this.H=E$[7]|0}get(){let{A:$,B:J,C:q,D:Q,E:G,F:Y,G:X,H:U}=this;return[$,J,q,Q,G,Y,X,U]}set($,J,q,Q,G,Y,X,U){this.A=$|0,this.B=J|0,this.C=q|0,this.D=Q|0,this.E=G|0,this.F=Y|0,this.G=X|0,this.H=U|0}process($,J){for(let M=0;M<16;M++,J+=4)y$[M]=$.getUint32(J,!1);for(let M=16;M<64;M++){let H=y$[M-15],z=y$[M-2],j=x$(H,7)^x$(H,18)^H>>>3,w=x$(z,17)^x$(z,19)^z>>>10;y$[M]=w+y$[M-7]+j+y$[M-16]|0}let{A:q,B:Q,C:G,D:Y,E:X,F:U,G:Z,H:B}=this;for(let M=0;M<64;M++){let H=x$(X,6)^x$(X,11)^x$(X,25),z=B+H+m8(X,U,Z)+jJ[M]+y$[M]|0,w=(x$(q,2)^x$(q,13)^x$(q,22))+h8(q,Q,G)|0;B=Z,Z=U,U=X,X=Y+z|0,Y=G,G=Q,Q=q,q=z+w|0}q=q+this.A|0,Q=Q+this.B|0,G=G+this.C|0,Y=Y+this.D|0,X=X+this.E|0,U=U+this.F|0,Z=Z+this.G|0,B=B+this.H|0,this.set(q,Q,G,Y,X,U,Z,B)}roundClean(){l$(y$)}destroy(){this.set(0,0,0,0,0,0,0,0),l$(this.buffer)}}var v0=F8(()=>new c8);class G8 extends V0{constructor($,J){super();this.finished=!1,this.destroyed=!1,P0($);let q=M0(J);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let Q=this.blockLen,G=new Uint8Array(Q);G.set(q.length>Q?$.create().update(q).digest():q);for(let Y=0;Y<G.length;Y++)G[Y]^=54;this.iHash.update(G),this.oHash=$.create();for(let Y=0;Y<G.length;Y++)G[Y]^=106;this.oHash.update(G),l$(G)}update($){return Q0(this),this.iHash.update($),this}digestInto($){Q0(this),R$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:J,iHash:q,finished:Q,destroyed:G,blockLen:Y,outputLen:X}=this;return $=$,$.finished=Q,$.destroyed=G,$.blockLen=Y,$.outputLen=X,$.oHash=J._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var Y8=($,J,q)=>new G8($,J).update(q).digest();Y8.create=($,J)=>new G8($,J);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Z8=BigInt(0),z8=BigInt(1);function N0($,J=""){if(typeof $!=="boolean"){let q=J&&`"${J}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function g$($,J,q=""){let Q=d$($),G=$?.length,Y=J!==void 0;if(!Q||Y&&G!==J){let X=q&&`"${q}" `,U=Y?` of length ${J}`:"",Z=Q?`length=${G}`:`type=${typeof $}`;throw Error(X+"expected Uint8Array"+U+", got "+Z)}return $}function B0($){let J=$.toString(16);return J.length&1?"0"+J:J}function d8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?Z8:BigInt("0x"+$)}function v$($){return d8(I$($))}function U8($){return R$($),d8(I$(Uint8Array.from($).reverse()))}function J0($,J){return p$($.toString(16).padStart(J*2,"0"))}function K8($,J){return J0($,J).reverse()}function o($,J,q){let Q;if(typeof J==="string")try{Q=p$(J)}catch(Y){throw Error($+" must be hex string or Uint8Array, cause: "+Y)}else if(d$(J))Q=Uint8Array.from(J);else throw Error($+" must be hex string or Uint8Array");let G=Q.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return Q}var X8=($)=>typeof $==="bigint"&&Z8<=$;function O0($,J,q){return X8($)&&X8(J)&&X8(q)&&J<=$&&$<q}function l8($,J,q,Q){if(!O0(J,q,Q))throw Error("expected valid "+$+": "+q+" <= n < "+Q+", got "+J)}function _0($){let J;for(J=0;$>Z8;$>>=z8,J+=1);return J}var u$=($)=>(z8<<BigInt($))-z8;function p8($,J,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof J!=="number"||J<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let Q=(j)=>new Uint8Array(j),G=(j)=>Uint8Array.of(j),Y=Q($),X=Q($),U=0,Z=()=>{Y.fill(1),X.fill(0),U=0},B=(...j)=>q(X,Y,...j),M=(j=Q(0))=>{if(X=B(G(0),j),Y=B(),j.length===0)return;X=B(G(1),j),Y=B()},H=()=>{if(U++>=1000)throw Error("drbg: tried 1000 values");let j=0,w=[];while(j<J){Y=B();let S=Y.slice();w.push(S),j+=Y.length}return W$(...w)};return(j,w)=>{Z(),M(j);let S=void 0;while(!(S=w(H())))M();return Z(),S}}function H0($,J,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function Q(G,Y,X){let U=$[G];if(X&&U===void 0)return;let Z=typeof U;if(Z!==Y||U===null)throw Error(`param "${G}" is invalid: expected ${Y}, got ${Z}`)}Object.entries(J).forEach(([G,Y])=>Q(G,Y,!1)),Object.entries(q).forEach(([G,Y])=>Q(G,Y,!0))}function j8($){let J=new WeakMap;return(q,...Q)=>{let G=J.get(q);if(G!==void 0)return G;let Y=$(q,...Q);return J.set(q,Y),Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var K$=BigInt(0),Y$=BigInt(1),i$=BigInt(2),r8=BigInt(3),a8=BigInt(4),n8=BigInt(5),WJ=BigInt(7),s8=BigInt(8),DJ=BigInt(9),t8=BigInt(16);function N$($,J){let q=$%J;return q>=K$?q:J+q}function B$($,J,q){let Q=$;while(J-- >K$)Q*=Q,Q%=q;return Q}function o8($,J){if($===K$)throw Error("invert: expected non-zero number");if(J<=K$)throw Error("invert: expected positive modulus, got "+J);let q=N$($,J),Q=J,G=K$,Y=Y$,X=Y$,U=K$;while(q!==K$){let B=Q/q,M=Q%q,H=G-X*B,z=Y-U*B;Q=q,q=M,G=X,Y=U,X=H,U=z}if(Q!==Y$)throw Error("invert: does not exist");return N$(G,J)}function W8($,J,q){if(!$.eql($.sqr(J),q))throw Error("Cannot find square root")}function e8($,J){let q=($.ORDER+Y$)/a8,Q=$.pow(J,q);return W8($,Q,J),Q}function MJ($,J){let q=($.ORDER-n8)/s8,Q=$.mul(J,i$),G=$.pow(Q,q),Y=$.mul(J,G),X=$.mul($.mul(Y,i$),G),U=$.mul(Y,$.sub(X,$.ONE));return W8($,U,J),U}function VJ($){let J=F$($),q=$Q($),Q=q(J,J.neg(J.ONE)),G=q(J,Q),Y=q(J,J.neg(Q)),X=($+WJ)/t8;return(U,Z)=>{let B=U.pow(Z,X),M=U.mul(B,Q),H=U.mul(B,G),z=U.mul(B,Y),j=U.eql(U.sqr(M),Z),w=U.eql(U.sqr(H),Z);B=U.cmov(B,M,j),M=U.cmov(z,H,w);let S=U.eql(U.sqr(M),Z),I=U.cmov(B,M,S);return W8(U,I,Z),I}}function $Q($){if($<r8)throw Error("sqrt is not defined for small field");let J=$-Y$,q=0;while(J%i$===K$)J/=i$,q++;let Q=i$,G=F$($);while(i8(G,Q)===1)if(Q++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return e8;let Y=G.pow(Q,J),X=(J+Y$)/i$;return function(Z,B){if(Z.is0(B))return B;if(i8(Z,B)!==1)throw Error("Cannot find square root");let M=q,H=Z.mul(Z.ONE,Y),z=Z.pow(B,J),j=Z.pow(B,X);while(!Z.eql(z,Z.ONE)){if(Z.is0(z))return Z.ZERO;let w=1,S=Z.sqr(z);while(!Z.eql(S,Z.ONE))if(w++,S=Z.sqr(S),w===M)throw Error("Cannot find square root");let I=Y$<<BigInt(M-w-1),m=Z.pow(H,I);M=w,H=Z.sqr(m),z=Z.mul(z,H),j=Z.mul(j,m)}return j}}function NJ($){if($%a8===r8)return e8;if($%s8===n8)return MJ;if($%t8===DJ)return VJ($);return $Q($)}var BJ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function D8($){let J={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=BJ.reduce((Q,G)=>{return Q[G]="function",Q},J);return H0($,q),$}function OJ($,J,q){if(q<K$)throw Error("invalid exponent, negatives unsupported");if(q===K$)return $.ONE;if(q===Y$)return J;let Q=$.ONE,G=J;while(q>K$){if(q&Y$)Q=$.mul(Q,G);G=$.sqr(G),q>>=Y$}return Q}function b0($,J,q=!1){let Q=Array(J.length).fill(q?$.ZERO:void 0),G=J.reduce((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=X,$.mul(X,U)},$.ONE),Y=$.inv(G);return J.reduceRight((X,U,Z)=>{if($.is0(U))return X;return Q[Z]=$.mul(X,Q[Z]),$.mul(X,U)},Y),Q}function i8($,J){let q=($.ORDER-Y$)/i$,Q=$.pow(J,q),G=$.eql(Q,$.ONE),Y=$.eql(Q,$.ZERO),X=$.eql(Q,$.neg($.ONE));if(!G&&!Y&&!X)throw Error("invalid Legendre symbol result");return G?1:Y?0:-1}function f0($,J){if(J!==void 0)D0(J);let q=J!==void 0?J:$.toString(2).length,Q=Math.ceil(q/8);return{nBitLength:q,nByteLength:Q}}function F$($,J,q=!1,Q={}){if($<=K$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,Y=void 0,X=!1,U=void 0;if(typeof J==="object"&&J!=null){if(Q.sqrt||q)throw Error("cannot specify opts in two arguments");let z=J;if(z.BITS)G=z.BITS;if(z.sqrt)Y=z.sqrt;if(typeof z.isLE==="boolean")q=z.isLE;if(typeof z.modFromBytes==="boolean")X=z.modFromBytes;U=z.allowedLengths}else{if(typeof J==="number")G=J;if(Q.sqrt)Y=Q.sqrt}let{nBitLength:Z,nByteLength:B}=f0($,G);if(B>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let M,H=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:B,MASK:u$(Z),ZERO:K$,ONE:Y$,allowedLengths:U,create:(z)=>N$(z,$),isValid:(z)=>{if(typeof z!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof z);return K$<=z&&z<$},is0:(z)=>z===K$,isValidNot0:(z)=>!H.is0(z)&&H.isValid(z),isOdd:(z)=>(z&Y$)===Y$,neg:(z)=>N$(-z,$),eql:(z,j)=>z===j,sqr:(z)=>N$(z*z,$),add:(z,j)=>N$(z+j,$),sub:(z,j)=>N$(z-j,$),mul:(z,j)=>N$(z*j,$),pow:(z,j)=>OJ(H,z,j),div:(z,j)=>N$(z*o8(j,$),$),sqrN:(z)=>z*z,addN:(z,j)=>z+j,subN:(z,j)=>z-j,mulN:(z,j)=>z*j,inv:(z)=>o8(z,$),sqrt:Y||((z)=>{if(!M)M=NJ($);return M(H,z)}),toBytes:(z)=>q?K8(z,B):J0(z,B),fromBytes:(z,j=!0)=>{if(U){if(!U.includes(z.length)||z.length>B)throw Error("Field.fromBytes: expected "+U+" bytes, got "+z.length);let S=new Uint8Array(B);S.set(z,q?0:S.length-z.length),z=S}if(z.length!==B)throw Error("Field.fromBytes: expected "+B+" bytes, got "+z.length);let w=q?U8(z):v$(z);if(X)w=N$(w,$);if(!j){if(!H.isValid(w))throw Error("invalid field element: outside of range 0..ORDER")}return w},invertBatch:(z)=>b0(H,z),cmov:(z,j,w)=>w?j:z});return Object.freeze(H)}function QQ($){if(typeof $!=="bigint")throw Error("field order must be bigint");let J=$.toString(2).length;return Math.ceil(J/8)}function M8($){let J=QQ($);return J+Math.ceil(J/2)}function y0($,J,q=!1){let Q=$.length,G=QQ(J),Y=M8(J);if(Q<16||Q<Y||Q>1024)throw Error("expected "+Y+"-1024 bytes of input, got "+Q);let X=q?U8($):v$($),U=N$(X,J-Y$)+Y$;return q?K8(U,G):J0(U,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var q0=BigInt(0),r$=BigInt(1);function A0($,J){let q=J.negate();return $?q:J}function g0($,J){let q=b0($.Fp,J.map((Q)=>Q.Z));return J.map((Q,G)=>$.fromAffine(Q.toAffine(q[G])))}function YQ($,J){if(!Number.isSafeInteger($)||$<=0||$>J)throw Error("invalid window size, expected [1.."+J+"], got W="+$)}function V8($,J){YQ($,J);let q=Math.ceil(J/$)+1,Q=2**($-1),G=2**$,Y=u$($),X=BigInt($);return{windows:q,windowSize:Q,mask:Y,maxNumber:G,shiftBy:X}}function JQ($,J,q){let{windowSize:Q,mask:G,maxNumber:Y,shiftBy:X}=q,U=Number($&G),Z=$>>X;if(U>Q)U-=Y,Z+=r$;let B=J*Q,M=B+Math.abs(U)-1,H=U===0,z=U<0,j=J%2!==0;return{nextN:Z,offset:M,isZero:H,isNeg:z,isNegF:j,offsetF:B}}function HJ($,J){if(!Array.isArray($))throw Error("array expected");$.forEach((q,Q)=>{if(!(q instanceof J))throw Error("invalid point at index "+Q)})}function AJ($,J){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,Q)=>{if(!J.isValid(q))throw Error("invalid scalar at index "+Q)})}var N8=new WeakMap,XQ=new WeakMap;function B8($){return XQ.get($)||1}function qQ($){if($!==q0)throw Error("invalid wNAF")}class O8{constructor($,J){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=J}_unsafeLadder($,J,q=this.ZERO){let Q=$;while(J>q0){if(J&r$)q=q.add(Q);Q=Q.double(),J>>=r$}return q}precomputeWindow($,J){let{windows:q,windowSize:Q}=V8(J,this.bits),G=[],Y=$,X=Y;for(let U=0;U<q;U++){X=Y,G.push(X);for(let Z=1;Z<Q;Z++)X=X.add(Y),G.push(X);Y=X.double()}return G}wNAF($,J,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let Q=this.ZERO,G=this.BASE,Y=V8($,this.bits);for(let X=0;X<Y.windows;X++){let{nextN:U,offset:Z,isZero:B,isNeg:M,isNegF:H,offsetF:z}=JQ(q,X,Y);if(q=U,B)G=G.add(A0(H,J[z]));else Q=Q.add(A0(M,J[Z]))}return qQ(q),{p:Q,f:G}}wNAFUnsafe($,J,q,Q=this.ZERO){let G=V8($,this.bits);for(let Y=0;Y<G.windows;Y++){if(q===q0)break;let{nextN:X,offset:U,isZero:Z,isNeg:B}=JQ(q,Y,G);if(q=X,Z)continue;else{let M=J[U];Q=Q.add(B?M.negate():M)}}return qQ(q),Q}getPrecomputes($,J,q){let Q=N8.get(J);if(!Q){if(Q=this.precomputeWindow(J,$),$!==1){if(typeof q==="function")Q=q(Q);N8.set(J,Q)}}return Q}cached($,J,q){let Q=B8($);return this.wNAF(Q,this.getPrecomputes(Q,$,q),J)}unsafe($,J,q,Q){let G=B8($);if(G===1)return this._unsafeLadder($,J,Q);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),J,Q)}createCache($,J){YQ(J,this.bits),XQ.set($,J),N8.delete($)}hasCache($){return B8($)!==1}}function zQ($,J,q,Q){let G=J,Y=$.ZERO,X=$.ZERO;while(q>q0||Q>q0){if(q&r$)Y=Y.add(G);if(Q&r$)X=X.add(G);G=G.double(),q>>=r$,Q>>=r$}return{p1:Y,p2:X}}function ZQ($,J,q,Q){HJ(q,$),AJ(Q,J);let G=q.length,Y=Q.length;if(G!==Y)throw Error("arrays of points and scalars must have equal length");let X=$.ZERO,U=_0(BigInt(G)),Z=1;if(U>12)Z=U-3;else if(U>4)Z=U-2;else if(U>0)Z=2;let B=u$(Z),M=Array(Number(B)+1).fill(X),H=Math.floor((J.BITS-1)/Z)*Z,z=X;for(let j=H;j>=0;j-=Z){M.fill(X);for(let S=0;S<Y;S++){let I=Q[S],m=Number(I>>BigInt(j)&B);M[m]=M[m].add(q[S])}let w=X;for(let S=M.length-1,I=X;S>0;S--)I=I.add(M[S]),w=w.add(I);if(z=z.add(w),j!==0)for(let S=0;S<Z;S++)z=z.double()}return z}function GQ($,J,q){if(J){if(J.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return D8(J),J}else return F$($,{isLE:q})}function UQ($,J,q={},Q){if(Q===void 0)Q=$==="edwards";if(!J||typeof J!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let B=J[Z];if(!(typeof B==="bigint"&&B>q0))throw Error(`CURVE.${Z} must be positive bigint`)}let G=GQ(J.p,q.Fp,Q),Y=GQ(J.n,q.Fn,Q),U=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of U)if(!G.isValid(J[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return J=Object.freeze(Object.assign({},J)),{CURVE:J,Fp:G,Fn:Y}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var KQ=($,J)=>($+($>=0?J:-J)/WQ)/J;function RJ($,J,q){let[[Q,G],[Y,X]]=J,U=KQ(X*$,q),Z=KQ(-G*$,q),B=$-U*Q-Z*Y,M=-U*G-Z*X,H=B<b$,z=M<b$;if(H)B=-B;if(z)M=-M;let j=u$(Math.ceil(_0(q)/2))+G0;if(B<b$||B>=j||M<b$||M>=j)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:H,k1:B,k2neg:z,k2:M}}function A8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function H8($,J){let q={};for(let Q of Object.keys(J))q[Q]=$[Q]===void 0?J[Q]:$[Q];if(N0(q.lowS,"lowS"),N0(q.prehash,"prehash"),q.format!==void 0)A8(q.format);return q}class jQ extends Error{constructor($=""){super($)}}var _$={Err:jQ,_tlv:{encode:($,J)=>{let{Err:q}=_$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length&1)throw new q("tlv.encode: unpadded data");let Q=J.length/2,G=B0(Q);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let Y=Q>127?B0(G.length/2|128):"";return B0($)+Y+G+J},decode($,J){let{Err:q}=_$,Q=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(J.length<2||J[Q++]!==$)throw new q("tlv.decode: wrong tlv");let G=J[Q++],Y=!!(G&128),X=0;if(!Y)X=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let B=J.subarray(Q,Q+Z);if(B.length!==Z)throw new q("tlv.decode: length bytes not complete");if(B[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let M of B)X=X<<8|M;if(Q+=Z,X<128)throw new q("tlv.decode(long): not minimal encoding")}let U=J.subarray(Q,Q+X);if(U.length!==X)throw new q("tlv.decode: wrong value length");return{v:U,l:J.subarray(Q+X)}}},_int:{encode($){let{Err:J}=_$;if($<b$)throw new J("integer: negative integers are not allowed");let q=B0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new J("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:J}=_$;if($[0]&128)throw new J("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new J("invalid signature integer: unnecessary leading zero");return v$($)}},toSig($){let{Err:J,_int:q,_tlv:Q}=_$,G=o("signature",$),{v:Y,l:X}=Q.decode(48,G);if(X.length)throw new J("invalid signature: left bytes after parsing");let{v:U,l:Z}=Q.decode(2,Y),{v:B,l:M}=Q.decode(2,Z);if(M.length)throw new J("invalid signature: left bytes after parsing");return{r:q.decode(U),s:q.decode(B)}},hexFromSig($){let{_tlv:J,_int:q}=_$,Q=J.encode(2,q.encode($.r)),G=J.encode(2,q.encode($.s)),Y=Q+G;return J.encode(48,Y)}},b$=BigInt(0),G0=BigInt(1),WQ=BigInt(2),u0=BigInt(3),xJ=BigInt(4);function m$($,J){let{BYTES:q}=$,Q;if(typeof J==="bigint")Q=J;else{let G=o("private key",J);try{Q=$.fromBytes(G)}catch(Y){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof J}`)}}if(!$.isValidNot0(Q))throw Error("invalid private key: out of range [1..N-1]");return Q}function TJ($,J={}){let q=UQ("weierstrass",$,J),{Fp:Q,Fn:G}=q,Y=q.CURVE,{h:X,n:U}=Y;H0(J,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=J;if(Z){if(!Q.is0(Y.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let B=MQ(Q,G);function M(){if(!Q.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function H(A,C,W){let{x:O,y:N}=C.toAffine(),T=Q.toBytes(O);if(N0(W,"isCompressed"),W){M();let K=!Q.isOdd(N);return W$(DQ(K),T)}else return W$(Uint8Array.of(4),T,Q.toBytes(N))}function z(A){g$(A,void 0,"Point");let{publicKey:C,publicKeyUncompressed:W}=B,O=A.length,N=A[0],T=A.subarray(1);if(O===C&&(N===2||N===3)){let K=Q.fromBytes(T);if(!Q.isValid(K))throw Error("bad point: is not on curve, wrong x");let D=S(K),x;try{x=Q.sqrt(D)}catch(v){let f=v instanceof Error?": "+v.message:"";throw Error("bad point: is not on curve, sqrt error"+f)}M();let R=Q.isOdd(x);if((N&1)===1!==R)x=Q.neg(x);return{x:K,y:x}}else if(O===W&&N===4){let K=Q.BYTES,D=Q.fromBytes(T.subarray(0,K)),x=Q.fromBytes(T.subarray(K,K*2));if(!I(D,x))throw Error("bad point: is not on curve");return{x:D,y:x}}else throw Error(`bad point: got length ${O}, expected compressed=${C} or uncompressed=${W}`)}let j=J.toBytes||H,w=J.fromBytes||z;function S(A){let C=Q.sqr(A),W=Q.mul(C,A);return Q.add(Q.add(W,Q.mul(A,Y.a)),Y.b)}function I(A,C){let W=Q.sqr(C),O=S(A);return Q.eql(W,O)}if(!I(Y.Gx,Y.Gy))throw Error("bad curve params: generator point");let m=Q.mul(Q.pow(Y.a,u0),xJ),$$=Q.mul(Q.sqr(Y.b),BigInt(27));if(Q.is0(Q.add(m,$$)))throw Error("bad curve params: a or b");function u(A,C,W=!1){if(!Q.isValid(C)||W&&Q.is0(C))throw Error(`bad point coordinate ${A}`);return C}function n(A){if(!(A instanceof _))throw Error("ProjectivePoint expected")}function J$(A){if(!Z||!Z.basises)throw Error("no endo");return RJ(A,Z.basises,G.ORDER)}let X$=j8((A,C)=>{let{X:W,Y:O,Z:N}=A;if(Q.eql(N,Q.ONE))return{x:W,y:O};let T=A.is0();if(C==null)C=T?Q.ONE:Q.inv(N);let K=Q.mul(W,C),D=Q.mul(O,C),x=Q.mul(N,C);if(T)return{x:Q.ZERO,y:Q.ZERO};if(!Q.eql(x,Q.ONE))throw Error("invZ was invalid");return{x:K,y:D}}),M$=j8((A)=>{if(A.is0()){if(J.allowInfinityPoint&&!Q.is0(A.Y))return;throw Error("bad point: ZERO")}let{x:C,y:W}=A.toAffine();if(!Q.isValid(C)||!Q.isValid(W))throw Error("bad point: x or y not field elements");if(!I(C,W))throw Error("bad point: equation left != right");if(!A.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function q$(A,C,W,O,N){return W=new _(Q.mul(W.X,A),W.Y,W.Z),C=A0(O,C),W=A0(N,W),C.add(W)}class _{constructor(A,C,W){this.X=u("x",A),this.Y=u("y",C,!0),this.Z=u("z",W),Object.freeze(this)}static CURVE(){return Y}static fromAffine(A){let{x:C,y:W}=A||{};if(!A||!Q.isValid(C)||!Q.isValid(W))throw Error("invalid affine point");if(A instanceof _)throw Error("projective point not allowed");if(Q.is0(C)&&Q.is0(W))return _.ZERO;return new _(C,W,Q.ONE)}static fromBytes(A){let C=_.fromAffine(w(g$(A,void 0,"point")));return C.assertValidity(),C}static fromHex(A){return _.fromBytes(o("pointHex",A))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(A=8,C=!0){if(a.createCache(this,A),!C)this.multiply(u0);return this}assertValidity(){M$(this)}hasEvenY(){let{y:A}=this.toAffine();if(!Q.isOdd)throw Error("Field doesn't support isOdd");return!Q.isOdd(A)}equals(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.eql(Q.mul(C,K),Q.mul(N,O)),x=Q.eql(Q.mul(W,K),Q.mul(T,O));return D&&x}negate(){return new _(this.X,Q.neg(this.Y),this.Z)}double(){let{a:A,b:C}=Y,W=Q.mul(C,u0),{X:O,Y:N,Z:T}=this,K=Q.ZERO,D=Q.ZERO,x=Q.ZERO,R=Q.mul(O,O),L=Q.mul(N,N),v=Q.mul(T,T),f=Q.mul(O,N);return f=Q.add(f,f),x=Q.mul(O,T),x=Q.add(x,x),K=Q.mul(A,x),D=Q.mul(W,v),D=Q.add(K,D),K=Q.sub(L,D),D=Q.add(L,D),D=Q.mul(K,D),K=Q.mul(f,K),x=Q.mul(W,x),v=Q.mul(A,v),f=Q.sub(R,v),f=Q.mul(A,f),f=Q.add(f,x),x=Q.add(R,R),R=Q.add(x,R),R=Q.add(R,v),R=Q.mul(R,f),D=Q.add(D,R),v=Q.mul(N,T),v=Q.add(v,v),R=Q.mul(v,f),K=Q.sub(K,R),x=Q.mul(v,L),x=Q.add(x,x),x=Q.add(x,x),new _(K,D,x)}add(A){n(A);let{X:C,Y:W,Z:O}=this,{X:N,Y:T,Z:K}=A,D=Q.ZERO,x=Q.ZERO,R=Q.ZERO,L=Y.a,v=Q.mul(Y.b,u0),f=Q.mul(C,N),h=Q.mul(W,T),E=Q.mul(O,K),y=Q.add(C,W),F=Q.add(N,T);y=Q.mul(y,F),F=Q.add(f,h),y=Q.sub(y,F),F=Q.add(C,O);let b=Q.add(N,K);return F=Q.mul(F,b),b=Q.add(f,E),F=Q.sub(F,b),b=Q.add(W,O),D=Q.add(T,K),b=Q.mul(b,D),D=Q.add(h,E),b=Q.sub(b,D),R=Q.mul(L,F),D=Q.mul(v,E),R=Q.add(D,R),D=Q.sub(h,R),R=Q.add(h,R),x=Q.mul(D,R),h=Q.add(f,f),h=Q.add(h,f),E=Q.mul(L,E),F=Q.mul(v,F),h=Q.add(h,E),E=Q.sub(f,E),E=Q.mul(L,E),F=Q.add(F,E),f=Q.mul(h,F),x=Q.add(x,f),f=Q.mul(b,F),D=Q.mul(y,D),D=Q.sub(D,f),f=Q.mul(y,h),R=Q.mul(b,R),R=Q.add(R,f),new _(D,x,R)}subtract(A){return this.add(A.negate())}is0(){return this.equals(_.ZERO)}multiply(A){let{endo:C}=J;if(!G.isValidNot0(A))throw Error("invalid scalar: out of range");let W,O,N=(T)=>a.cached(this,T,(K)=>g0(_,K));if(C){let{k1neg:T,k1:K,k2neg:D,k2:x}=J$(A),{p:R,f:L}=N(K),{p:v,f}=N(x);O=L.add(f),W=q$(C.beta,R,v,T,D)}else{let{p:T,f:K}=N(A);W=T,O=K}return g0(_,[W,O])[0]}multiplyUnsafe(A){let{endo:C}=J,W=this;if(!G.isValid(A))throw Error("invalid scalar: out of range");if(A===b$||W.is0())return _.ZERO;if(A===G0)return W;if(a.hasCache(this))return this.multiply(A);if(C){let{k1neg:O,k1:N,k2neg:T,k2:K}=J$(A),{p1:D,p2:x}=zQ(_,W,N,K);return q$(C.beta,D,x,O,T)}else return a.unsafe(W,A)}multiplyAndAddUnsafe(A,C,W){let O=this.multiplyUnsafe(C).add(A.multiplyUnsafe(W));return O.is0()?void 0:O}toAffine(A){return X$(this,A)}isTorsionFree(){let{isTorsionFree:A}=J;if(X===G0)return!0;if(A)return A(_,this);return a.unsafe(this,U).is0()}clearCofactor(){let{clearCofactor:A}=J;if(X===G0)return this;if(A)return A(_,this);return this.multiplyUnsafe(X)}isSmallOrder(){return this.multiplyUnsafe(X).is0()}toBytes(A=!0){return N0(A,"isCompressed"),this.assertValidity(),j(_,this,A)}toHex(A=!0){return I$(this.toBytes(A))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(A=!0){return this.toBytes(A)}_setWindowSize(A){this.precompute(A)}static normalizeZ(A){return g0(_,A)}static msm(A,C){return ZQ(_,G,A,C)}static fromPrivateKey(A){return _.BASE.multiply(m$(G,A))}}_.BASE=new _(Y.Gx,Y.Gy,Q.ONE),_.ZERO=new _(Q.ZERO,Q.ONE,Q.ZERO),_.Fp=Q,_.Fn=G;let z$=G.BITS,a=new O8(_,J.endo?Math.ceil(z$/2):z$);return _.BASE.precompute(8),_}function DQ($){return Uint8Array.of($?2:3)}function MQ($,J){return{secretKey:J.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*J.BYTES}}function wJ($,J={}){let{Fn:q}=$,Q=J.randomBytes||o$,G=Object.assign(MQ($.Fp,q),{seed:M8(q.ORDER)});function Y(j){try{return!!m$(q,j)}catch(w){return!1}}function X(j,w){let{publicKey:S,publicKeyUncompressed:I}=G;try{let m=j.length;if(w===!0&&m!==S)return!1;if(w===!1&&m!==I)return!1;return!!$.fromBytes(j)}catch(m){return!1}}function U(j=Q(G.seed)){return y0(g$(j,G.seed,"seed"),q.ORDER)}function Z(j,w=!0){return $.BASE.multiply(m$(q,j)).toBytes(w)}function B(j){let w=U(j);return{secretKey:w,publicKey:Z(w)}}function M(j){if(typeof j==="bigint")return!1;if(j instanceof $)return!0;let{secretKey:w,publicKey:S,publicKeyUncompressed:I}=G;if(q.allowedLengths||w===S)return;let m=o("key",j).length;return m===S||m===I}function H(j,w,S=!0){if(M(j)===!0)throw Error("first arg must be private key");if(M(w)===!1)throw Error("second arg must be public key");let I=m$(q,j);return $.fromHex(w).multiply(I).toBytes(S)}return Object.freeze({getPublicKey:Z,getSharedSecret:H,keygen:B,Point:$,utils:{isValidSecretKey:Y,isValidPublicKey:X,randomSecretKey:U,isValidPrivateKey:Y,randomPrivateKey:U,normPrivateKeyToScalar:(j)=>m$(q,j),precompute(j=8,w=$.BASE){return w.precompute(j,!1)}},lengths:G})}function LJ($,J,q={}){P0(J),H0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let Q=q.randomBytes||o$,G=q.hmac||((W,...O)=>Y8(J,W,W$(...O))),{Fp:Y,Fn:X}=$,{ORDER:U,BITS:Z}=X,{keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j}=wJ($,q),w={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},S="compact";function I(W){let O=U>>G0;return W>O}function m(W,O){if(!X.isValidNot0(O))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return O}function $$(W,O){A8(O);let N=j.signature,T=O==="compact"?N:O==="recovered"?N+1:void 0;return g$(W,T,`${O} signature`)}class u{constructor(W,O,N){if(this.r=m("r",W),this.s=m("s",O),N!=null)this.recovery=N;Object.freeze(this)}static fromBytes(W,O=S){$$(W,O);let N;if(O==="der"){let{r:x,s:R}=_$.toSig(g$(W));return new u(x,R)}if(O==="recovered")N=W[0],O="compact",W=W.subarray(1);let T=X.BYTES,K=W.subarray(0,T),D=W.subarray(T,T*2);return new u(X.fromBytes(K),X.fromBytes(D),N)}static fromHex(W,O){return this.fromBytes(p$(W),O)}addRecoveryBit(W){return new u(this.r,this.s,W)}recoverPublicKey(W){let O=Y.ORDER,{r:N,s:T,recovery:K}=this;if(K==null||![0,1,2,3].includes(K))throw Error("recovery id invalid");if(U*WQ<O&&K>1)throw Error("recovery id is ambiguous for h>1 curve");let x=K===2||K===3?N+U:N;if(!Y.isValid(x))throw Error("recovery id 2 or 3 invalid");let R=Y.toBytes(x),L=$.fromBytes(W$(DQ((K&1)===0),R)),v=X.inv(x),f=J$(o("msgHash",W)),h=X.create(-f*v),E=X.create(T*v),y=$.BASE.multiplyUnsafe(h).add(L.multiplyUnsafe(E));if(y.is0())throw Error("point at infinify");return y.assertValidity(),y}hasHighS(){return I(this.s)}toBytes(W=S){if(A8(W),W==="der")return p$(_$.hexFromSig(this));let O=X.toBytes(this.r),N=X.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return W$(Uint8Array.of(this.recovery),O,N)}return W$(O,N)}toHex(W){return I$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return u.fromBytes(o("sig",W),"compact")}static fromDER(W){return u.fromBytes(o("sig",W),"der")}normalizeS(){return this.hasHighS()?new u(this.r,X.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return I$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return I$(this.toBytes("compact"))}}let n=q.bits2int||function(O){if(O.length>8192)throw Error("input is too large");let N=v$(O),T=O.length*8-Z;return T>0?N>>BigInt(T):N},J$=q.bits2int_modN||function(O){return X.create(n(O))},X$=u$(Z);function M$(W){return l8("num < 2^"+Z,W,b$,X$),X.toBytes(W)}function q$(W,O){return g$(W,void 0,"message"),O?g$(J(W),void 0,"prehashed message"):W}function _(W,O,N){if(["recovered","canonical"].some((E)=>(E in N)))throw Error("sign() legacy options not supported");let{lowS:T,prehash:K,extraEntropy:D}=H8(N,w);W=q$(W,K);let x=J$(W),R=m$(X,O),L=[M$(R),M$(x)];if(D!=null&&D!==!1){let E=D===!0?Q(j.secretKey):D;L.push(o("extraEntropy",E))}let v=W$(...L),f=x;function h(E){let y=n(E);if(!X.isValidNot0(y))return;let F=X.inv(y),b=$.BASE.multiply(y).toAffine(),l=X.create(b.x);if(l===b$)return;let s=X.create(F*X.create(f+l*R));if(s===b$)return;let p=(b.x===l?0:2)|Number(b.y&G0),Z$=s;if(T&&I(s))Z$=X.neg(s),p^=1;return new u(l,Z$,p)}return{seed:v,k2sig:h}}function z$(W,O,N={}){W=o("message",W);let{seed:T,k2sig:K}=_(W,O,N);return p8(J.outputLen,X.BYTES,G)(T,K)}function a(W){let O=void 0,N=typeof W==="string"||d$(W),T=!N&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!N&&!T)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(T)O=new u(W.r,W.s);else if(N){try{O=u.fromBytes(o("sig",W),"der")}catch(K){if(!(K instanceof _$.Err))throw K}if(!O)try{O=u.fromBytes(o("sig",W),"compact")}catch(K){return!1}}if(!O)return!1;return O}function A(W,O,N,T={}){let{lowS:K,prehash:D,format:x}=H8(T,w);if(N=o("publicKey",N),O=q$(o("message",O),D),"strict"in T)throw Error("options.strict was renamed to lowS");let R=x===void 0?a(W):u.fromBytes(o("sig",W),x);if(R===!1)return!1;try{let L=$.fromBytes(N);if(K&&R.hasHighS())return!1;let{r:v,s:f}=R,h=J$(O),E=X.inv(f),y=X.create(h*E),F=X.create(v*E),b=$.BASE.multiplyUnsafe(y).add(L.multiplyUnsafe(F));if(b.is0())return!1;return X.create(b.x)===v}catch(L){return!1}}function C(W,O,N={}){let{prehash:T}=H8(N,w);return O=q$(O,T),u.fromBytes(W,"recovered").recoverPublicKey(O).toBytes()}return Object.freeze({keygen:B,getPublicKey:M,getSharedSecret:H,utils:z,lengths:j,Point:$,sign:z$,verify:A,recoverPublicKey:C,Signature:u,hash:J})}function kJ($){let J={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,Q=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((X)=>Math.ceil(X/2)))):void 0,G=F$(J.n,{BITS:$.nBitLength,allowedLengths:Q,modFromBytes:$.wrapPrivateKey}),Y={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:J,curveOpts:Y}}function CJ($){let{CURVE:J,curveOpts:q}=kJ($),Q={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:J,curveOpts:q,hash:$.hash,ecdsaOpts:Q}}function SJ($,J){let q=J.Point;return Object.assign({},J,{ProjectivePoint:q,CURVE:Object.assign({},$,f0(q.Fn.ORDER,q.Fn.BITS))})}function VQ($){let{CURVE:J,curveOpts:q,hash:Q,ecdsaOpts:G}=CJ($),Y=TJ(J,q),X=LJ(Y,Q,G);return SJ($,X)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function NQ($,J){let q=(Q)=>VQ({...$,hash:Q});return{...q(J),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var Y0={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},PJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},IJ=BigInt(0),BQ=BigInt(1),R8=BigInt(2);function EJ($){let J=Y0.p,q=BigInt(3),Q=BigInt(6),G=BigInt(11),Y=BigInt(22),X=BigInt(23),U=BigInt(44),Z=BigInt(88),B=$*$*$%J,M=B*B*$%J,H=B$(M,q,J)*M%J,z=B$(H,q,J)*M%J,j=B$(z,R8,J)*B%J,w=B$(j,G,J)*j%J,S=B$(w,Y,J)*w%J,I=B$(S,U,J)*S%J,m=B$(I,Z,J)*I%J,$$=B$(m,U,J)*S%J,u=B$($$,q,J)*M%J,n=B$(u,X,J)*w%J,J$=B$(n,Q,J)*B%J,X$=B$(J$,R8,J);if(!F0.eql(F0.sqr(X$),$))throw Error("Cannot find square root");return X$}var F0=F$(Y0.p,{sqrt:EJ}),AQ=NQ({...Y0,Fp:F0,lowS:!0,endo:PJ},v0),OQ={};function m0($,...J){let q=OQ[$];if(q===void 0){let Q=v0(E0($));q=W$(Q,Q),OQ[$]=q}return v0(W$(q,...J))}var T8=($)=>$.toBytes(!0).slice(1),X0=(()=>AQ.Point)(),w8=($)=>$%R8===IJ;function x8($){let{Fn:J,BASE:q}=X0,Q=m$(J,$),G=q.multiply(Q);return{scalar:w8(G.y)?Q:J.neg(Q),bytes:T8(G)}}function RQ($){let J=F0;if(!J.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=J.create($*$),Q=J.create(q*$+BigInt(7)),G=J.sqrt(Q);if(!w8(G))G=J.neg(G);let Y=X0.fromAffine({x:$,y:G});return Y.assertValidity(),Y}var R0=v$;function xQ(...$){return X0.Fn.create(R0(m0("BIP0340/challenge",...$)))}function HQ($){return x8($).bytes}function vJ($,J,q=o$(32)){let{Fn:Q}=X0,G=o("message",$),{bytes:Y,scalar:X}=x8(J),U=o("auxRand",q,32),Z=Q.toBytes(X^R0(m0("BIP0340/aux",U))),B=m0("BIP0340/nonce",Z,Y,G),{bytes:M,scalar:H}=x8(B),z=xQ(M,Y,G),j=new Uint8Array(64);if(j.set(M,0),j.set(Q.toBytes(Q.create(H+z*X)),32),!TQ(j,G,Y))throw Error("sign: Invalid signature produced");return j}function TQ($,J,q){let{Fn:Q,BASE:G}=X0,Y=o("signature",$,64),X=o("message",J),U=o("publicKey",q,32);try{let Z=RQ(R0(U)),B=R0(Y.subarray(0,32));if(!O0(B,BQ,Y0.p))return!1;let M=R0(Y.subarray(32,64));if(!O0(M,BQ,Y0.n))return!1;let H=xQ(Q.toBytes(B),T8(Z),X),z=G.multiplyUnsafe(M).add(Z.multiplyUnsafe(Q.neg(H))),{x:j,y:w}=z.toAffine();if(z.is0()||!w8(w)||j!==B)return!1;return!0}catch(Z){return!1}}var h0=(()=>{let q=(G=o$(48))=>{return y0(G,Y0.n)};AQ.utils.randomSecretKey;function Q(G){let Y=q(G);return{secretKey:Y,publicKey:HQ(Y)}}return{keygen:Q,getPublicKey:HQ,sign:vJ,verify:TQ,Point:X0,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:m0,lift_x:RQ,pointToBytes:T8,numberToBytesBE:J0,bytesToNumberBE:v$,mod:N$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var _J=new TextEncoder,bJ=new TextDecoder,L$=($)=>_J.encode($),a$=($)=>bJ.decode($),c0=($)=>Array.from($,(J)=>J.toString(16).padStart(2,"0")).join(""),O$=JSON.stringify,n$=JSON.parse,d0=($,J=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,Q)=>q+Q.charCodeAt(0),0)%J;var L8="AES-GCM",fJ={},wQ="$",LQ=",",yJ=($)=>{let J=new Uint8Array($),q=32768,Q="";for(let G=0;G<J.length;G+=32768)Q+=String.fromCharCode(...J.subarray(G,G+32768));return btoa(Q)},gJ=($)=>Uint8Array.from(atob($),(J)=>J.charCodeAt(0)).buffer,x0=($)=>fJ[$]??=crypto.subtle.digest("SHA-1",L$($)).then((J)=>{let q=new Uint8Array(J),Q="";for(let G of q)Q+=G.toString(36);return Q}),kQ=async($,J,q)=>{let Q=await crypto.subtle.digest("SHA-256",L$(`${$}:${J}:${q}`));return crypto.subtle.importKey("raw",Q,{name:L8},!1,["encrypt","decrypt"])},CQ=async($,J)=>{let q=crypto.getRandomValues(new Uint8Array(12)),Q=await $,G=await crypto.subtle.encrypt({name:L8,iv:q},Q,L$(J));return`${q.join(LQ)}${wQ}${yJ(G)}`},SQ=async($,J)=>{let[q,Q]=J.split(wQ);if(!q||!Q)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(LQ),Number),Y=await $,X=await crypto.subtle.decrypt({name:L8,iv:G},Y,gJ(Q));return a$(X)};var D$="GenosRTC",Z0=($,J)=>Array.from({length:$},J);var z0=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(J)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[J%62]).join(""),c=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=z0(20):z0(20),f$=Promise.all.bind(Promise),PQ=typeof window<"u",{entries:IQ,fromEntries:l0,keys:t9}=Object,EQ=()=>{},T$=($)=>Error(`GenosRTC: ${$}`),T0=(...$)=>$.join("@"),vQ=($,J)=>{let q=[...$],Q=q.length,G=()=>{let Y=Math.sin(J++)*1e4;return Y-Math.floor(Y)};while(Q){let Y=Math.floor(G()*Q--);[q[Q],q[Y]]=[q[Y],q[Q]]}return q};var uJ=5000,_Q="icegatheringstatechange",bQ="offer",FJ="answer",mJ=[...Z0(3,($,J)=>`stun:stun${J||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),k8=($,{rtcConfig:J,rtcPolyfill:q,turnConfig:Q})=>{let G=new(q||RTCPeerConnection)({iceServers:[...mJ,...Q||[]],...J}),Y={},X=!1,U=!1,Z,B=(z)=>Object.assign(z,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(j)=>Y.data?.(j.data),onopen:()=>Y.connect?.(),onclose:()=>Y.close?.(),onerror:(j)=>!j?.error?.message?.includes("User-Initiated Abort")&&Y.error?.(j)}),M=()=>Promise.race([new Promise((z)=>{let j=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(_Q,j),z()};G.addEventListener(_Q,j),j()}),new Promise((z)=>setTimeout(z,uJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?B(Z=G.createDataChannel("data")):G.ondatachannel=({channel:z})=>B(Z=z),G.onnegotiationneeded=async()=>{try{X=!0,await G.setLocalDescription(),Y.signal?.(await M())}catch(z){Y.error?.(z)}finally{X=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))Y.close?.()},G.ontrack=(z)=>{Y.track?.(z.track,z.streams[0]),Y.stream?.(z.streams[0])},G.onremovestream=(z)=>Y.stream?.(z.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let H=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(z){if(Z?.readyState==="open"&&!z.sdp?.includes("a=rtpmap"))return;try{if(z.type===bQ){if(X||G.signalingState!=="stable"&&!U){if($)return;await f$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(z)])}else await G.setRemoteDescription(z);await G.setLocalDescription();let j=await M();return Y.signal?.(j),j}if(z.type===FJ){U=!0;try{await G.setRemoteDescription(z)}finally{U=!1}}}catch(j){Y.error?.(j)}},sendData:(z)=>{if(Z?.readyState==="open")Z.send(z)},destroy:()=>{Z?.close(),G.close(),X=U=!1},setHandlers:(z)=>Object.assign(Y,z),offerPromise:$?new Promise((z)=>Y.signal=(j)=>j.type===bQ&&z(j)):Promise.resolve(),addStream:(z)=>z.getTracks().forEach((j)=>G.addTrack(j,z)),removeStream:(z)=>H().filter((j)=>z.getTracks().includes(j.track)).forEach((j)=>G.removeTrack(j)),addTrack:(z,j)=>G.addTrack(z,j),removeTrack:(z)=>{let j=H().find((w)=>w.track===z);if(j)G.removeTrack(j)},replaceTrack:(z,j)=>H().find((w)=>w.track===z)?.replaceTrack(j)}};var hJ=Object.getPrototypeOf(Uint8Array),o0=12,yQ=0,i0=yQ+o0,r0=i0+1,L0=r0+1,k0=L0+1,w0=16384-k0,p0=255,C8="bufferedamountlow",U0=($)=>`@_${$}`,S8=100,cJ=3,dJ=200,lJ=512,fQ=($,J)=>new Response(new Blob([$]).stream().pipeThrough(new J("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),gQ=($,J,q,Q)=>{let G=new Map,Y=new Map,X=new Map,U={},Z={},B={},M={},H=new Map,z=Promise.resolve(),j=(K,D)=>{if(!H.has(K))H.set(K,new Set);H.get(K).add(D)},w=(K,D)=>H.get(K)?.delete(D),S=(K,...D)=>H.get(K)?.forEach((x)=>x(...D)),I=(K,D)=>{let x=K?Array.isArray(K)?K:[K]:G.keys();return Array.from(x,(R)=>{let L=G.get(R);if(!L)return console.warn(`${D$}: no peer with id ${R}`),null;return D(R,L)}).filter(Boolean)},m=(K)=>{if(!G.has(K))return;G.delete(K),delete U[K],delete Z[K],delete B[K],delete M[K],S("peer:leave",K),J(K)},$$=(K)=>new Promise((D,x)=>{let R=setTimeout(()=>{K.removeEventListener(C8,L),x(Error(`${D$}: bufferLow timeout`))},5000);function L(){clearTimeout(R),K.removeEventListener(C8,L),D()}K.addEventListener(C8,L)}),u=(K)=>{if(X.has(K))return X.get(K);if(!K)throw T$("action type is required");let D=L$(K);if(D.byteLength>o0)throw T$(`❌ "${K}" exceeds ${o0} bytes. Use a shorter name.`);let x=new Uint8Array(o0).map((y,F)=>D[F]||0),R=0,L=new Map([["message",new Set],["progress",new Set]]),v=(y,F)=>L.get(y)?.add(F),f=(y,F)=>L.get(y)?.delete(F),h=async(y,F,b,l)=>{if(b&&typeof b!=="object")throw T$("meta must be object");if(y===void 0)throw T$("data cannot be undefined");let s=y instanceof Blob,p=s||y instanceof ArrayBuffer||y instanceof hJ,Z$=typeof y!=="string";if(b&&!p)throw T$("meta only allowed with binary");let V$=p?new Uint8Array(s?await y.arrayBuffer():y):L$(Z$?O$(y):y),t=0;if(!p&&V$.byteLength>=lJ){let H$=await fQ(V$,CompressionStream);if(H$.byteLength<V$.byteLength)V$=H$,t=1}let U$=b?L$(O$(b)):null,k$=Math.ceil(V$.byteLength/w0)+(b?1:0)||1;if(k$>S8)throw T$(`Message too large, exceeds max chunks ${S8}`);let s$=Z0(k$,(H$,G$)=>{let C$=G$===k$-1,S$=b&&G$===0,h$=S$?U$:V$.subarray(b?(G$-1)*w0:G$*w0,b?G$*w0:(G$+1)*w0),w$=new Uint8Array(k0+h$.byteLength);return w$.set(x),w$.set([R],i0),w$.set([C$|S$<<1|p<<2|Z$<<3|t<<4],r0),w$.set([Math.round((G$+1)/k$*p0)],L0),w$.set(h$,k0),w$});return R=R+1&p0,f$(I(F,async(H$,G$)=>{let{channel:C$}=G$;for(let S$=0;S$<k$;S$++){let h$=0;while(C$.bufferedAmount>C$.bufferedAmountLowThreshold){if(h$++>cJ)throw T$(`${D$}: send buffer full, max retries reached for peer ${H$}`);try{await $$(C$)}catch(w$){console.warn(w$.message),await new Promise((t$)=>setTimeout(t$,dJ))}}if(!G.has(H$))break;G$.sendData(s$[S$]),l?.(s$[S$][L0]/p0,H$,b)}}))};Y.set(K,{listeners:L,send:h});let E={send:h,on:v,off:f};return X.set(K,E),E},n=(K,D)=>{try{let x=new Uint8Array(D),R=a$(x.subarray(yQ,i0)).replace(/\x00/g,"");if(!Y.has(R))return console.warn(`${D$}: unregistered type (${R})`);let[L]=x.subarray(i0,r0),[v]=x.subarray(r0,L0),[f]=x.subarray(L0,k0),h=x.subarray(k0),E=Boolean(v&1),y=Boolean(v&2),F=Boolean(v&4),b=Boolean(v&8),l=Boolean(v&16),s=Y.get(R),p=(U[K]||={})[R]||={};if(p[L]?.chunks?.length>S8){console.warn(`${D$}: peer ${K} sent too many chunks for nonce ${L}, ignoring.`);return}let Z$=p[L]||={chunks:[]};if(y)try{Z$.meta=n$(a$(h))}catch{console.warn(`${D$}: failed to parse meta from peer ${K} for type ${R}`);return}else Z$.chunks.push(h);if(s.listeners.get("progress").forEach((t)=>{try{t(f/p0,K,Z$.meta)}catch(U$){console.error(U$)}}),!E)return;let V$=new Uint8Array(Z$.chunks.reduce((t,U$)=>t+U$.byteLength,0));Z$.chunks.reduce((t,U$)=>(V$.set(U$,t),t+U$.byteLength),0),delete p[L],z=z.then(async()=>{let t=l?await fQ(V$,DecompressionStream):V$,U$;if(F)U$=t;else if(b)try{U$=n$(a$(t))}catch{console.warn(`${D$}: failed to parse JSON message data from peer ${K} for type ${R}`);return}else U$=a$(t);s.listeners.get("message").forEach((k$)=>{try{k$(U$,K,Z$.meta)}catch(s$){console.error(s$)}})}).catch((t)=>console.error(`${D$}: dispatch error from peer ${K}:`,t))}catch(x){console.error(`${D$}: error handling data from peer ${K}:`,x)}},J$=async()=>{try{await N(""),await new Promise((K)=>setTimeout(K,99))}catch(K){console.warn(`${D$}: error sending leave`,K)}for(let[K,D]of G){try{D.destroy()}catch{}G.delete(K)}q()},{send:X$,on:M$}=u(U0("ping")),{send:q$,on:_}=u(U0("pong")),{send:z$,on:a}=u(U0("signal")),{send:A,on:C}=u(U0("stream")),{send:W,on:O}=u(U0("track")),{send:N,on:T}=u(U0("leave"));if($((K,D)=>{let x=G.get(D);if(x===K)return;if(x){let R=()=>{};x.setHandlers({data:R,stream:R,track:R,signal:R,close:R,error:R})}G.set(D,K),K.setHandlers({data:(R)=>n(D,R),stream:(R)=>{S("stream:add",R,D,B[D]),delete B[D]},track:(R,L)=>{S("track:add",R,L,D,M[D]),delete M[D]},signal:(R)=>z$(R,D),close:()=>m(D),error:(R)=>{console.error(`${D$}: peer error for ${D}`,R),m(D)}}),S("peer:join",D,Q?.(D))}),M$("message",(K,D)=>q$("",D)),_("message",(K,D)=>{Z[D]?.(),delete Z[D]}),a("message",(K,D)=>G.get(D)?.signal(K)),C("message",(K,D)=>B[D]=K),O("message",(K,D)=>M[D]=K),T("message",(K,D)=>m(D)),PQ)addEventListener("beforeunload",J$);return{on:j,off:w,channel:u,leave:J$,ping:async(K)=>{if(!K)throw T$("ping() requires target peer ID");let D=Date.now();return X$("",K),await new Promise((x)=>Z[K]=x),Date.now()-D},getPeers:()=>l0(Array.from(G,([K,D])=>[K,D.connection])),addStream:(K,D,x)=>I(D,async(R,L)=>{if(x)await A(x,R);L.addStream(K)}),removeStream:(K,D)=>I(D,(x,R)=>R.removeStream(K)),addTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.addTrack(K,D)}),removeTrack:(K,D)=>I(D,(x,R)=>R.removeTrack(K)),replaceTrack:(K,D,x,R)=>I(x,async(L,v)=>{if(R)await W(R,L);v.replaceTrack(K,D)})}};var pJ=5,oJ=10,iJ=2500,a0=57333,uQ=({init:$,subscribe:J,announce:q})=>{let Q={},G=!1,Y,X;return(U,Z,B)=>{let{appId:M}=U;if(Q[M]?.[Z])return Q[M][Z];if(!U||!Z||!M&&!U.firebaseApp)throw T$(!U?"config required":!Z?"roomId required":"appId missing");let H=EQ;if(!G){let N=$(U);X=Z0(pJ,()=>{try{return k8(!0,U)}catch{return null}}).filter(Boolean),Y=Array.isArray(N)?N:[N];let T=setInterval(()=>{X=X.filter((K)=>{let D=Date.now()-K.created<a0;if(!D)K.destroy();return D})},a0);Q.offerCleanupTimer||=T,G=!0}let z={},j={},w=new Map,S=new Map,I={},m=T0(D$,M,Z),$$=x0(m),u=x0(T0(m,c)),n=kQ(U.password||"",M,Z),J$=(N)=>async(T)=>({type:T.type,sdp:await N(n,T.sdp)}),X$=J$(SQ),M$=J$(CQ),q$=(N)=>{return setTimeout(()=>{if(!N.isDead&&!Object.values(j).includes(N))N.destroy()},a0),N},_=(N)=>{try{return q$(k8(N,U))}catch{return null}},z$=(N,T)=>{if(j[T]===N)return;j[T]?.destroy(),j[T]=N,H(N,T),z[T]?.forEach((K)=>K!==N&&K.destroy()),delete z[T]},a=(N,T)=>{if(j[T]===N)delete j[T]},A=(N)=>async(T,K,D)=>{let[x,R]=await f$([$$,u]);if(T!==x&&T!==R)return;let{peerId:L,offer:v,answer:f,type:h}=typeof K==="string"?n$(K):K;if(L&&L!==c)S.set(L,Date.now());if(h&&L)I[L]=h;if(L===c||j[L])return;if(U.admit&&!U.admit(L))return;if(v){if(z[L]?.[N]&&c>L)return;let E=_(!1);if(!E)return;E.setHandlers({connect:()=>z$(E,L),close:()=>a(E,L)});try{let y=await X$(v);if(E.isDead)return;let[F,b]=await f$([x0(T0(m,L)),E.signal(y).then(M$)]);D(F,O$({peerId:c,answer:b,...U.type&&{type:U.type}}))}catch{B?.({error:"decryption failed (offer)",appId:M,peerId:L,roomId:Z})}}else if(f){let E=z[L]?.[N];if(!E||E.isDead)return;E.setHandlers({connect:()=>z$(E,L),close:()=>a(E,L)});try{E.signal(await X$(f))}catch{B?.({error:"decryption failed (answer)",appId:M,peerId:L,roomId:Z})}}else{let E=z[L]||=[];if(E.forEach((l,s)=>{if(l&&(l.isDead||Date.now()-(l.dialedAt??l.created)>a0)){if(l.isDead)w.set(L,Date.now()+30000);l.destroy(),delete E[s]}}),E[N]||E.filter(Boolean).length>=2||w.get(L)>Date.now())return;if(Object.values(z).reduce((l,s)=>l+s.filter((p)=>p&&!p.isDead).length,0)>=oJ)return;let F=X.pop(),b=F?q$(F):_(!0);if(!b){w.set(L,Date.now()+30000);return}b.dialedAt=Date.now(),E[N]=b;try{let[l,{offer:s}]=await f$([x0(T0(m,L)),b.offerPromise.then(M$).then((p)=>({offer:p}))]);b.setHandlers({connect:()=>z$(b,L),close:()=>a(b,L)}),D(l,O$({peerId:c,offer:s,peer:b,...U.type&&{type:U.type}}))}catch{if(E[N]===b)delete E[N];b.destroy()}}},C=[],W=[];Y.forEach(async(N,T)=>{let K=await N;if(!K)return;let[D,x]=await f$([$$,u]);W[T]=J(K,D,x,A(T));let R=async()=>{let L=await q(K,D,x);C[T]=setTimeout(R,typeof L==="number"?L:iJ)};R()}),Q[M]||={};let O=gQ((N)=>H=N,(N)=>delete j[N],()=>O.onCleanup?.(),(N)=>I[N]);return O.onCleanup=()=>{if(delete Q[M][Z],C.forEach(clearTimeout),W.forEach((N)=>N?.()),Object.keys(Q).length===0)clearInterval(Q.offerCleanupTimer),delete Q.offerCleanupTimer},O._census=()=>{for(let T of Object.keys(j))S.set(T,Date.now());let N=Date.now()-120000;for(let[T,K]of S)if(K<N)S.delete(T);return[...S.keys()]},Q[M][Z]=O}};var FQ=3333,rJ=30000,C0={},mQ={},hQ=($,J)=>{let q={},Q=null;q.reopenHandlers=new Set;let G=()=>{if(Q)clearTimeout(Q),Q=null;if(q.socket)q.socket.onclose=null,q.socket.close();let Y=new WebSocket($);Y.onclose=()=>{C0[$]??=FQ,Q=setTimeout(G,C0[$]),C0[$]=Math.min(C0[$]*2,rJ)},Y.onmessage=(X)=>J(X.data),q.socket=Y,q.url=Y.url,q.ready=new Promise((X)=>{Y.onopen=()=>{C0[$]=FQ,X(q),q.reopenHandlers.forEach((U)=>U())}}),q.send=(X)=>{if(Y.readyState===1)Y.send(X)}};return q.forceReconnect=G,G(),mQ[$]=q,q};if(typeof window<"u"){let $=(J)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(mQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(J||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var cQ=($)=>()=>l0(IQ($).map(([J,q])=>[J,q.socket])),dQ=($,J,q,Q)=>($.relayUrls??(Q?vQ(J,d0($.appId)):J)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var lQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub"];var K0={},nJ=10,rQ="x",aQ="EVENT",sJ=/pow:\s*(\d+)\s*bits needed\.?/i,P8=new Set,nQ=h0.utils.randomSecretKey(),tJ=c0(h0.getPublicKey(nQ)),I8={},S0={},eJ={},sQ=()=>Math.floor(Date.now()/1000),tQ=($)=>eJ[$]??=d0($,1e4)+20000,n0=($)=>$.replace(/\/$/,""),$9=($,J)=>{let[q,Q,G,Y]=n$(J);if(q===aQ)return S0[Q]?.(I8[Q],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?Q:Y).match(sJ)?.[1]??0)>0){let U=n0($);P8.add(U),K0[U]?.close?.(),delete K0[U]}}},Q9=($)=>{let J=n0($);if(K0[J])return K0[J];let q=hQ(J,(Q)=>$9(J,Q));return K0[J]=q},pQ=async($,J)=>{let q={kind:tQ($),content:J,pubkey:tJ,created_at:sQ(),tags:[[rQ,$]]},Q=L$(O$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",Q)),Y=h0.sign(G,nQ);return O$([aQ,{...q,id:c0(G),sig:c0(Y)}])},oQ=($,J)=>{return I8[$]=J,O$(["REQ",$,{kinds:[tQ(J)],since:sQ(),["#"+rQ]:[J]}])},iQ=($)=>{return delete I8[$],O$(["CLOSE",$])},s0=uQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??lQ;return dQ($,q,nJ,!1).map(Q9).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,J,q,Q)=>{let G=z0(64),Y=z0(64);S0[G]=S0[Y]=(U,Z)=>Q(U,Z,async(B,M)=>{if(P8.has(n0($.url)))return;$.send(await pQ(B,M))});let X=()=>{$.send(oQ(G,J)),$.send(oQ(Y,q))};return X(),$.reopenHandlers.add(X),()=>{$.reopenHandlers.delete(X),$.send(iQ(G)),$.send(iQ(Y)),delete S0[G],delete S0[Y]}},announce:async($,J)=>{if(P8.has(n0($.url)))return;$.send(await pQ(J,O$({peerId:c})))}}),eQ=cQ(K0);var J9={cellSize:"auto",bridgesPerEdge:2,maxCellSize:50,targetCells:100,debug:!1},$J=5000,q9=3000,G9=30000,Y9=2000,$8=($)=>{let J=String($||"").match(/cell-(\d+)/);return J?Number(J[1]):null},X9=($,J)=>{let q=$8($);if(q==null)return[];let Q=[];for(let G=1;G<J;G*=2){if(q-G>=0)Q.push(`cell-${q-G}`);if(q+G<J)Q.push(`cell-${q+G}`)}return Q},t0=($)=>`c${($8($)||0).toString(36)}`,z9=($,J,q)=>{if($<=10)return Math.max(2,$);let G=10,Y=Math.ceil($/J);return Math.max(G,Math.min(q,Y))},Z9=($,J)=>{return Math.max(1,Math.ceil($/J))},QJ=($)=>{let J=0;for(let q=0;q<$.length;q++)J=Math.imul(J^$.charCodeAt(q),2654435761);return J>>>0},E8=($,J)=>{let q=0,Q=-1;for(let G=0;G<J;G++){let Y=QJ(`${$}:${G}`);if(Y>Q)Q=Y,q=G}return q};class e0{constructor($){this.peerId=$,this.joinedAt=Date.now(),this.lastSeen=Date.now(),this.rttSamples=[],this.stability=1,this.reconnects=0,this.isResponsive=!0,this.connectedCells=new Set}get uptime(){return Date.now()-this.joinedAt}get avgRtt(){if(this.rttSamples.length===0)return 1/0;return Math.round(this.rttSamples.reduce(($,J)=>$+J,0)/this.rttSamples.length)}get healthScore(){let $=this.avgRtt===1/0?0.5:Math.max(0,100-this.avgRtt)/100,J=Math.min(1,this.uptime/60000),q=this.stability,Q=this.isResponsive?1:0.3;return $*0.25+J*0.25+q*0.3+Q*0.2}get isStale(){return Date.now()-this.lastSeen>G9}addRttSample($){if(this.rttSamples.push($),this.rttSamples.length>10)this.rttSamples.shift();this.lastSeen=Date.now(),this.isResponsive=!0}markReconnect(){this.reconnects++,this.stability=Math.max(0,1-this.reconnects*0.1)}markUnresponsive(){this.isResponsive=!1}markSeen(){this.lastSeen=Date.now()}addConnectedCell($){if($)this.connectedCells.add($)}}function U9($,J={},q={}){let Q={...J9,...J},G=!!Q.debug,Y=(...V)=>G&&console.debug("[cells]",...V),X=Math.max(0,Q.bridgesPerEdge|0),U=Math.max(5,Q.maxCellSize|0),Z=Math.max(10,Q.targetCells|0),B=Q.cellSize==="auto",M=B?2:Math.max(1,Q.cellSize|0),H={cellId:null,bridges:[],isBridge:!1},z=null,j=null,w=null,S=new Map,I=new Map,m=new Set,$$=new Map,u=new Set,n=new Set,J$=0,X$=[],M$=new Map,q$=new Set,_=new Map,z$=new Map,a=1,A=0,C=1,W=0,O=()=>{Z$();let V=Z9(p().length,M);if(V!==C)C=V,W=Date.now();let k=Date.now()-W;if(V>a&&k>4000)a=V;else if(V<a&&k>30000)a=V;return a},N=()=>Math.min(150,Math.ceil(Math.log2(O()+1))*2+3),T=(V)=>X9(V,O()),K=$.on?.bind($),D=$.off?.bind($);if(K)$.on=(V,k)=>String(V).startsWith("mesh:")?L(V,k):K(V,k);if(D)$.off=(V,k)=>String(V).startsWith("mesh:")?$$.get(V)?.delete(k):D(V,k);let x=(V)=>(m.add(V),()=>m.delete(V)),R=(V,k,P)=>{if(n.has(P))return;if(n.add(P),n.size>$J){let g=n.values().next().value;n.delete(g)}for(let g of m)try{g(V,k)}catch(d){Y("Error in deliver handler:",d)}},L=(V,k)=>{if(!$$.has(V))$$.set(V,new Set);return $$.get(V).add(k),()=>$$.get(V)?.delete(k)},v=(V,...k)=>{let P=$$.get(V);if(P)for(let g of P)try{g(...k)}catch{}},f=(V)=>{try{return typeof V==="string"?JSON.parse(V):V}catch{return null}},h=()=>`${c}:${Date.now().toString(36)}:${(J$++&65535).toString(36)}`,E=()=>{if(u.size>$J)u.delete(u.values().next().value)},y=(V,k,P=[])=>{if(!V||!k)return;if(S.set(V,{cell:k,isBridge:P.length>0,bridges:[...P]}),!I.has(V))I.set(V,new e0(V));let g=I.get(V);if(g.markSeen(),g.addConnectedCell(k),z$.set(k,{lastSeen:Date.now(),peerId:V}),P.length>0)for(let d of T(k))g.addConnectedCell(d)},F=(V)=>I.get(V),b=(V,k)=>{let P=I.get(V);if(P)P.addRttSample(k)},l=(V)=>{let k=s$(V);if(k.length===0)return null;let P=0,g=0;for(let e of k){let j$=I.get(e);if(j$&&!j$.isStale){if(P+=j$.healthScore,j$.isResponsive)g++}}let d=k.filter((e)=>{let j$=I.get(e);return j$&&!j$.isStale});return{cellId:V,memberCount:d.length,avgHealth:d.length>0?P/d.length:0,responsiveRatio:d.length>0?g/d.length:0}},s=()=>{let V=l(H.cellId);v("mesh:health",{...H,health:V})},p=()=>[...new Set([...$._census(),c])].sort(),Z$=()=>{if(!B)return;let V=p().length,k=z9(V,Z,U);if(k!==M)Y("cellSize changed:",M,"->",k),M=k},V$=(V,k)=>k.filter((P)=>E8(P,O())===V),t=(V,k)=>{if(X===0)return[];let P=$8(V),g=$8(k);if(P==null||g==null)return[];let d=p(),e=V$(P,d),j$=V$(g,d),Q$=Math.min(P,g),e$=Math.max(P,g),j0=(r)=>QJ(`${r}@${Q$}~${e$}`),A$=[...new Set([...e,...j$])].sort((r,J8)=>j0(J8)-j0(r));if(!A$.length)return[];let $0=new Set(e),W0=[],i=(r)=>r&&!W0.includes(r)&&W0.push(r);i(A$.find((r)=>$0.has(r))),i(A$.find((r)=>!$0.has(r)));for(let r of A$){if(W0.length>=Math.max(X,2))break;i(r)}return W0},U$=(V,k)=>{if(X===0)return[];let P=T(k),g=[];for(let d of P)if(t(k,d).includes(V))g.push(d);return g},k$=()=>{Z$();let V=p(),k=E8(c,O()),P=O(),g=`cell-${k}`,d=U$(c,g),e=d.length>0;return Y("computeState",{self:c,myCell:g,isBridge:e,bridgeEdges:d,cellSize:M,rosterSize:V.length,totalCells:P,dynamicTTL:N()}),{cellId:g,isBridge:e,bridges:d,cellSize:M,dynamicTTL:N(),totalCells:P}},s$=(V)=>{let k=[],P=new Set(Object.keys($.getPeers?.()||{}));for(let[g,d]of S)if(d.cell===V){let e=I.get(g);if(P.has(g)&&(!e||!e.isStale))k.push(g)}return k.sort(),k},H$=()=>{if(!z)return;Q8=_8(),v8=Date.now();let V={t:"state",id:h(),ttl:N(),data:{id:c,cell:H.cellId,bridges:H.bridges,health:I.get(c)?.healthScore||0.5,timestamp:Date.now()},origin:c,originCell:H.cellId},k=JSON.stringify(V);z.send(k),G$(j,k)},G$=(V,k)=>{let P=f(k);if(!P?.id||!P?.t)return;let g=u.has(P.id);if(!g)u.add(P.id),E();let{t:d,id:e,ttl:j$,data:Q$,origin:e$,originCell:j0}=P,A$=H.cellId;if(d==="state"&&Q$)y(Q$.id,Q$.cell,Q$.bridges),v("mesh:peer-state",Q$);if(d==="ping"&&Q$?.pingId&&e$!==c){let i={t:"pong",id:h(),ttl:N(),data:{pingId:Q$.pingId,receivedAt:Date.now()},origin:c,originCell:A$};z?.send(JSON.stringify(i))}if(d==="pong"&&Q$?.pingId){let i=_.get(Q$.pingId);if(i){clearTimeout(i.timeout);let r=Date.now()-i.start;b(i.peerId,r),i.resolve(r),_.delete(Q$.pingId)}}if(d==="msg"&&e$!==c){if(j0===A$||X>0)R(Q$,e$,e)}if(g)return;if(!H.isBridge)return;if((j$??0)<=0)return;let $0=(i,r,J8=null)=>{if(!i)return;let XJ={t:d,id:e,ttl:J8??(j$??N())-1,data:Q$,origin:e$||c,originCell:j0||A$},b8=JSON.stringify(XJ);if(r?.length){let zJ=new Set(Object.keys($.getPeers?.()||{})),f8=r.filter((ZJ)=>zJ.has(ZJ));if(f8.length>0)i.send(b8,f8)}else i.send(b8)};if(V===j){for(let i of T(A$))$0(C$(i),null);return}if(!T(A$).map(t0).includes(V))return;$0(z,null);for(let i of T(A$))if(t0(i)!==V)$0(C$(i),null)},C$=(V)=>{let k=t0(V);if(M$.has(V))return M$.get(V);let P=$.channel(k);if(M$.set(V,P),!q$.has(k))q$.add(k),P.on("message",(g)=>G$(k,g));return P},S$=()=>{if(!H.cellId)return;if(j=t0(H.cellId),z=$.channel(j),!q$.has(j))q$.add(j),z.on("message",(V)=>G$(j,V));if(H.isBridge)for(let V of T(H.cellId))C$(V);if(X$.length)for(let V of X$.splice(0)){let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)}H$()},h$=(V)=>{if(!H.cellId)return!0;if(!p().includes(V))return!0;let P=`cell-${E8(V,O())}`;if(P===H.cellId)return!0;if(H.bridges.includes(P))return!0;return T(H.cellId).includes(P)&&t(P,H.cellId).includes(V)},w$=()=>{let V=$.getPeers?.()||{};for(let k of Object.keys(V))if(!h$(k))V[k].close?.()};q.admit=h$;let t$=()=>{let V=k$(),k=!H.cellId||H.cellId!==V.cellId||H.isBridge!==V.isBridge||JSON.stringify(H.bridges)!==JSON.stringify(V.bridges);if(H=V,y(c,V.cellId,V.bridges),k)S$();else H$();w$(),v("mesh:state",V),s()},Q8="",v8=0,_8=()=>{return`${H.cellId}:${H.isBridge}:${H.bridges.join(",")}`},qJ=()=>{if(w)return;w=setInterval(()=>{let V=O();if(V!==A){A=V,t$();return}let k=_8();if(k!==Q8||Date.now()-v8>1e4)H$(),Q8=k;for(let[P,g]of I)if(P!==c&&g.isStale)S.delete(P),I.delete(P),Y("Removed stale peer:",P)},Y9)},GJ=()=>{if(w)clearInterval(w),w=null},YJ=(V)=>{return new Promise((k,P)=>{let g=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,d=Date.now(),e=setTimeout(()=>{_.delete(g);let Q$=I.get(V);if(Q$)Q$.markUnresponsive();P(Error("Ping timeout"))},q9);_.set(g,{start:d,resolve:k,reject:P,timeout:e,peerId:V});let j$={t:"ping",id:h(),ttl:N(),data:{pingId:g,target:V},origin:c,originCell:H.cellId};z?.send(JSON.stringify(j$))})};if($.on?.("peer:join",(V)=>{if(!I.has(V))I.set(V,new e0(V));else I.get(V).markReconnect();t$()}),$.on?.("peer:leave",(V)=>{S.delete(V),t$()}),!I.has(c))I.set(c,new e0(c));return I.get(c).addConnectedCell(H.cellId||"cell-0"),t$(),qJ(),{send:(V)=>{if(!H.cellId||!z)return X$.push(V);let k={t:"msg",id:h(),ttl:N(),data:V,origin:c,originCell:H.cellId},P=JSON.stringify(k);z.send(P),G$(j,P)},on:(V,k)=>V==="message"?x(k):void 0,ping:YJ,getState:()=>({...H,cellSize:M,health:l(H.cellId),dynamicTTL:N(),totalCells:O(),knownCells:z$.size}),getMetrics:F,getCellHealth:l,getPeerInfo:()=>new Map(S),getStableRoster:()=>p(),getKnownCells:()=>new Map(z$),getCellSize:()=>M,destroy:()=>{GJ(),_.forEach((V)=>clearTimeout(V.timeout)),_.clear(),n.clear(),z$.clear()}}}function JJ($,J,q){let Q={},G=s0({...$,admit:(Z)=>Q.admit?.(Z)??!0},J,q),Y=$.overlay||{},X=U9(G,Y,Q),U=new Map;return{on:(Z,B)=>G.on(Z,B),off:(Z,B)=>G.off?.(Z,B),channel:(Z)=>{if(U.has(Z))return U.get(Z);let B=G.channel(Z),M={send:(H,z)=>{X.send({_ch:Z,_d:H,_t:z})},on:(H,z)=>{if(H==="message")X.on("message",(j,w)=>{if(j?._ch===Z)z(j._d,w)}),B.on(H,z);else B.on(H,z)},off:(H,z)=>B.off?.(H,z),_original:B};return U.set(Z,M),M},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:X,_room:G,getState:()=>X.getState(),getMetrics:(Z)=>X.getMetrics(Z),getCellHealth:(Z)=>X.getCellHealth(Z),getPeerInfo:()=>X.getPeerInfo(),ping:(Z)=>X.ping(Z),leave:()=>{X.destroy(),U.clear(),G.leave()},destroy:()=>{X.destroy(),U.clear()}}}var kq=($,J,q)=>$?.cells||$?.overlay?JJ($,J,q):s0($,J,q);export{c as selfId,kq as join,eQ as getRelaySockets}; |
+20
-8
| { | ||
| "name": "genosdb", | ||
| "version": "0.23.0", | ||
| "version": "0.23.1", | ||
| "description": "GenosDB (GDB): distributed graph database in real-time, peer-to-peer, scalable storage - efficient querying of complex relationships.", | ||
@@ -30,14 +30,26 @@ "main": "dist/index.js", | ||
| "GenosDB", | ||
| "genosdb", | ||
| "GenosRTC", | ||
| "genosrtc", | ||
| "gdb", | ||
| "database", | ||
| "graph", | ||
| "database", | ||
| "real-time", | ||
| "graph-database", | ||
| "crdt", | ||
| "CRDT", | ||
| "p2p", | ||
| "peer-to-peer", | ||
| "webrtc", | ||
| "decentralized", | ||
| "distributed", | ||
| "decentralized", | ||
| "real-time", | ||
| "realtime", | ||
| "replication", | ||
| "local-first", | ||
| "offline-first", | ||
| "rbac", | ||
| "decentralized-database", | ||
| "webrtc-mesh", | ||
| "offline-first", | ||
| "zero-trust" | ||
| "zero-trust", | ||
| "cellular-mesh", | ||
| "nostr", | ||
| "opfs" | ||
| ], | ||
@@ -44,0 +56,0 @@ "author": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
2056964
06271
0.02%3
50%