New:Socket for Asana Is Now Available.Learn more
Get Started

genosdb

Package Overview
Dependencies
Maintainers
1
Versions
139
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

genosdb - npm Package Compare versions

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

@@ -5,0 +5,0 @@ "main": "dist/index.js",

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