@hive-p2p/browser 1.0.67 → 1.0.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/unicast.mjs CHANGED
@@ -83,6 +83,7 @@ export class UnicastMessager {
83
83
  if (!builtResult.success) return false;
84
84
 
85
85
  // Caution: re-routing usage who can involve insane results
86
+ const destinations = [];
86
87
  const createdMessagePromises = [];
87
88
  const finalSpread = builtResult.success === 'blind' ? 1 : spread; // Spread only if re-routing is false
88
89
  for (let i = 0; i < Math.min(finalSpread, builtResult.routes.length); i++) {
@@ -91,11 +92,14 @@ export class UnicastMessager {
91
92
  if (this.verbose > 1) console.warn(`Cannot send unicast message to ${remoteId} as route exceeds maxHops (${UNICAST.MAX_HOPS}). BFS incurred.`);
92
93
  continue; // too long route
93
94
  }
95
+
96
+ destinations.push(route[1]); // send to next peer
94
97
  createdMessagePromises.push(this.cryptoCodex.createUnicastMessage(type, data, route, this.peerStore.neighborsList));
95
98
  }
96
-
99
+
97
100
  const createdMessages = await Promise.all(createdMessagePromises);
98
- for (const message of createdMessages) this.#sendMessageToPeer(message.route[1], message);
101
+ for (let i = 0; i < createdMessages.length; i++)
102
+ this.#sendMessageToPeer(destinations[i], createdMessages[i]);
99
103
  return true;
100
104
  }
101
105
  /** @param {string} targetId @param {Uint8Array} serialized */
package/hive-p2p.min.js CHANGED
@@ -1,6 +1,6 @@
1
1
  var kn=Object.create;var ye=Object.defineProperty;var Mn=Object.getOwnPropertyDescriptor;var Un=Object.getOwnPropertyNames;var Gn=Object.getPrototypeOf,Ln=Object.prototype.hasOwnProperty;var Xt=(p=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(p,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):p)(function(p){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+p+'" is not supported')});var Yt=(p,t)=>()=>(p&&(t=p(p=0)),t);var On=(p,t)=>()=>(t||p((t={exports:{}}).exports,t),t.exports),we=(p,t)=>{for(var n in t)ye(p,n,{get:t[n],enumerable:!0})},xn=(p,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Un(t))!Ln.call(p,s)&&s!==n&&ye(p,s,{get:()=>t[s],enumerable:!(r=Mn(t,s))||r.enumerable});return p};var Pn=(p,t,n)=>(n=p!=null?kn(Gn(p)):{},xn(t||!p||!p.__esModule?ye(n,"default",{value:p,enumerable:!0}):n,p));var Hn={};var Ve=Yt(()=>{(function(p){if(typeof exports=="object"&&typeof module<"u")module.exports=p();else if(typeof define=="function"&&define.amd)define([],p);else{var t;t=typeof window>"u"?typeof global>"u"?typeof self>"u"?this:self:global:window,t.SimplePeer=p()}})(function(){var p=Math.floor,t=Math.abs,n=Math.pow;return(function(){function r(s,o,a){function g(u,l){if(!o[u]){if(!s[u]){var f=typeof Xt=="function"&&Xt;if(!l&&f)return f(u,!0);if(I)return I(u,!0);var y=new Error("Cannot find module '"+u+"'");throw y.code="MODULE_NOT_FOUND",y}var w=o[u]={exports:{}};s[u][0].call(w.exports,function(m){var v=s[u][1][m];return g(v||m)},w,w.exports,r,s,o,a)}return o[u].exports}for(var I=typeof Xt=="function"&&Xt,A=0;A<a.length;A++)g(a[A]);return g}return r})()({1:[function(r,s,o){"use strict";function a(C){var E=C.length;if(0<E%4)throw new Error("Invalid string. Length must be a multiple of 4");var S=C.indexOf("=");S===-1&&(S=E);var Q=S===E?0:4-S%4;return[S,Q]}function g(C,E,S){return 3*(E+S)/4-S}function I(C){var E,S,Q=a(C),_=Q[0],M=Q[1],b=new w(g(C,_,M)),R=0,U=0<M?_-4:_;for(S=0;S<U;S+=4)E=y[C.charCodeAt(S)]<<18|y[C.charCodeAt(S+1)]<<12|y[C.charCodeAt(S+2)]<<6|y[C.charCodeAt(S+3)],b[R++]=255&E>>16,b[R++]=255&E>>8,b[R++]=255&E;return M===2&&(E=y[C.charCodeAt(S)]<<2|y[C.charCodeAt(S+1)]>>4,b[R++]=255&E),M===1&&(E=y[C.charCodeAt(S)]<<10|y[C.charCodeAt(S+1)]<<4|y[C.charCodeAt(S+2)]>>2,b[R++]=255&E>>8,b[R++]=255&E),b}function A(C){return f[63&C>>18]+f[63&C>>12]+f[63&C>>6]+f[63&C]}function u(C,E,S){for(var Q,_=[],M=E;M<S;M+=3)Q=(16711680&C[M]<<16)+(65280&C[M+1]<<8)+(255&C[M+2]),_.push(A(Q));return _.join("")}function l(C){for(var E,S=C.length,Q=S%3,_=[],M=16383,b=0,R=S-Q;b<R;b+=M)_.push(u(C,b,b+M>R?R:b+M));return Q===1?(E=C[S-1],_.push(f[E>>2]+f[63&E<<4]+"==")):Q===2&&(E=(C[S-2]<<8)+C[S-1],_.push(f[E>>10]+f[63&E>>4]+f[63&E<<2]+"=")),_.join("")}o.byteLength=function(C){var E=a(C),S=E[0],Q=E[1];return 3*(S+Q)/4-Q},o.toByteArray=I,o.fromByteArray=l;for(var f=[],y=[],w=typeof Uint8Array>"u"?Array:Uint8Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,h=m.length;v<h;++v)f[v]=m[v],y[m.charCodeAt(v)]=v;y[45]=62,y[95]=63},{}],2:[function(){},{}],3:[function(r,s,o){(function(){(function(){"use strict";var a=String.fromCharCode,g=Math.min;function I(e){if(2147483647<e)throw new RangeError('The value "'+e+'" is invalid for option "size"');var i=new Uint8Array(e);return i.__proto__=A.prototype,i}function A(e,i,c){if(typeof e=="number"){if(typeof i=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return y(e)}return u(e,i,c)}function u(e,i,c){if(typeof e=="string")return w(e,i);if(ArrayBuffer.isView(e))return m(e);if(e==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(N(e,ArrayBuffer)||e&&N(e.buffer,ArrayBuffer))return v(e,i,c);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var B=e.valueOf&&e.valueOf();if(B!=null&&B!==e)return A.from(B,i,c);var D=h(e);if(D)return D;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return A.from(e[Symbol.toPrimitive]("string"),i,c);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(0>e)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function f(e,i,c){return l(e),0>=e||i===void 0?I(e):typeof c=="string"?I(e).fill(i,c):I(e).fill(i)}function y(e){return l(e),I(0>e?0:0|C(e))}function w(e,i){if((typeof i!="string"||i==="")&&(i="utf8"),!A.isEncoding(i))throw new TypeError("Unknown encoding: "+i);var c=0|E(e,i),B=I(c),D=B.write(e,i);return D!==c&&(B=B.slice(0,D)),B}function m(e){for(var i=0>e.length?0:0|C(e.length),c=I(i),B=0;B<i;B+=1)c[B]=255&e[B];return c}function v(e,i,c){if(0>i||e.byteLength<i)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<i+(c||0))throw new RangeError('"length" is outside of buffer bounds');var B;return B=i===void 0&&c===void 0?new Uint8Array(e):c===void 0?new Uint8Array(e,i):new Uint8Array(e,i,c),B.__proto__=A.prototype,B}function h(e){if(A.isBuffer(e)){var i=0|C(e.length),c=I(i);return c.length===0||e.copy(c,0,0,i),c}return e.length===void 0?e.type==="Buffer"&&Array.isArray(e.data)?m(e.data):void 0:typeof e.length!="number"||k(e.length)?I(0):m(e)}function C(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function E(e,i){if(A.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||N(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var c=e.length,B=2<arguments.length&&arguments[2]===!0;if(!B&&c===0)return 0;for(var D=!1;;)switch(i){case"ascii":case"latin1":case"binary":return c;case"utf8":case"utf-8":return yt(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*c;case"hex":return c>>>1;case"base64":return It(e).length;default:if(D)return B?-1:yt(e).length;i=(""+i).toLowerCase(),D=!0}}function S(e,i,c){var B=!1;if((i===void 0||0>i)&&(i=0),i>this.length||((c===void 0||c>this.length)&&(c=this.length),0>=c)||(c>>>=0,i>>>=0,c<=i))return"";for(e||(e="utf8");;)switch(e){case"hex":return ot(this,i,c);case"utf8":case"utf-8":return V(this,i,c);case"ascii":return Y(this,i,c);case"latin1":case"binary":return bt(this,i,c);case"base64":return K(this,i,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return gt(this,i,c);default:if(B)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),B=!0}}function Q(e,i,c){var B=e[i];e[i]=e[c],e[c]=B}function _(e,i,c,B,D){if(e.length===0)return-1;if(typeof c=="string"?(B=c,c=0):2147483647<c?c=2147483647:-2147483648>c&&(c=-2147483648),c=+c,k(c)&&(c=D?0:e.length-1),0>c&&(c=e.length+c),c>=e.length){if(D)return-1;c=e.length-1}else if(0>c)if(D)c=0;else return-1;if(typeof i=="string"&&(i=A.from(i,B)),A.isBuffer(i))return i.length===0?-1:M(e,i,c,B,D);if(typeof i=="number")return i&=255,typeof Uint8Array.prototype.indexOf=="function"?D?Uint8Array.prototype.indexOf.call(e,i,c):Uint8Array.prototype.lastIndexOf.call(e,i,c):M(e,[i],c,B,D);throw new TypeError("val must be string, number or Buffer")}function M(e,i,c,B,D){function T(jt,xt){return L===1?jt[xt]:jt.readUInt16BE(xt*L)}var L=1,q=e.length,nt=i.length;if(B!==void 0&&(B=(B+"").toLowerCase(),B==="ucs2"||B==="ucs-2"||B==="utf16le"||B==="utf-16le")){if(2>e.length||2>i.length)return-1;L=2,q/=2,nt/=2,c/=2}var $;if(D){var Z=-1;for($=c;$<q;$++)if(T(e,$)!==T(i,Z===-1?0:$-Z))Z!==-1&&($-=$-Z),Z=-1;else if(Z===-1&&(Z=$),$-Z+1===nt)return Z*L}else for(c+nt>q&&(c=q-nt),$=c;0<=$;$--){for(var z=!0,Ot=0;Ot<nt;Ot++)if(T(e,$+Ot)!==T(i,Ot)){z=!1;break}if(z)return $}return-1}function b(e,i,c,B){c=+c||0;var D=e.length-c;B?(B=+B,B>D&&(B=D)):B=D;var T=i.length;B>T/2&&(B=T/2);for(var L,q=0;q<B;++q){if(L=parseInt(i.substr(2*q,2),16),k(L))return q;e[c+q]=L}return q}function R(e,i,c,B){return Qt(yt(i,e.length-c),e,c,B)}function U(e,i,c,B){return Qt(Mt(i),e,c,B)}function O(e,i,c,B){return U(e,i,c,B)}function H(e,i,c,B){return Qt(It(i),e,c,B)}function J(e,i,c,B){return Qt(_t(i,e.length-c),e,c,B)}function K(e,i,c){return i===0&&c===e.length?x.fromByteArray(e):x.fromByteArray(e.slice(i,c))}function V(e,i,c){c=g(e.length,c);for(var B=[],D=i;D<c;){var T=e[D],L=null,q=239<T?4:223<T?3:191<T?2:1;if(D+q<=c){var nt,$,Z,z;q===1?128>T&&(L=T):q===2?(nt=e[D+1],(192&nt)==128&&(z=(31&T)<<6|63&nt,127<z&&(L=z))):q===3?(nt=e[D+1],$=e[D+2],(192&nt)==128&&(192&$)==128&&(z=(15&T)<<12|(63&nt)<<6|63&$,2047<z&&(55296>z||57343<z)&&(L=z))):q===4&&(nt=e[D+1],$=e[D+2],Z=e[D+3],(192&nt)==128&&(192&$)==128&&(192&Z)==128&&(z=(15&T)<<18|(63&nt)<<12|(63&$)<<6|63&Z,65535<z&&1114112>z&&(L=z)))}L===null?(L=65533,q=1):65535<L&&(L-=65536,B.push(55296|1023&L>>>10),L=56320|1023&L),B.push(L),D+=q}return rt(B)}function rt(e){var i=e.length;if(i<=4096)return a.apply(String,e);for(var c="",B=0;B<i;)c+=a.apply(String,e.slice(B,B+=4096));return c}function Y(e,i,c){var B="";c=g(e.length,c);for(var D=i;D<c;++D)B+=a(127&e[D]);return B}function bt(e,i,c){var B="";c=g(e.length,c);for(var D=i;D<c;++D)B+=a(e[D]);return B}function ot(e,i,c){var B=e.length;(!i||0>i)&&(i=0),(!c||0>c||c>B)&&(c=B);for(var D="",T=i;T<c;++T)D+=St(e[T]);return D}function gt(e,i,c){for(var B=e.slice(i,c),D="",T=0;T<B.length;T+=2)D+=a(B[T]+256*B[T+1]);return D}function W(e,i,c){if(e%1!=0||0>e)throw new RangeError("offset is not uint");if(e+i>c)throw new RangeError("Trying to access beyond buffer length")}function j(e,i,c,B,D,T){if(!A.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(i>D||i<T)throw new RangeError('"value" argument is out of bounds');if(c+B>e.length)throw new RangeError("Index out of range")}function dt(e,i,c,B){if(c+B>e.length)throw new RangeError("Index out of range");if(0>c)throw new RangeError("Index out of range")}function st(e,i,c,B,D){return i=+i,c>>>=0,D||dt(e,i,c,4,34028234663852886e22,-34028234663852886e22),F.write(e,i,c,B,23,4),c+4}function pt(e,i,c,B,D){return i=+i,c>>>=0,D||dt(e,i,c,8,17976931348623157e292,-17976931348623157e292),F.write(e,i,c,B,52,8),c+8}function et(e){if(e=e.split("=")[0],e=e.trim().replace(G,""),2>e.length)return"";for(;e.length%4!=0;)e+="=";return e}function St(e){return 16>e?"0"+e.toString(16):e.toString(16)}function yt(e,i){i=i||1/0;for(var c,B=e.length,D=null,T=[],L=0;L<B;++L){if(c=e.charCodeAt(L),55295<c&&57344>c){if(!D){if(56319<c){-1<(i-=3)&&T.push(239,191,189);continue}else if(L+1===B){-1<(i-=3)&&T.push(239,191,189);continue}D=c;continue}if(56320>c){-1<(i-=3)&&T.push(239,191,189),D=c;continue}c=(D-55296<<10|c-56320)+65536}else D&&-1<(i-=3)&&T.push(239,191,189);if(D=null,128>c){if(0>(i-=1))break;T.push(c)}else if(2048>c){if(0>(i-=2))break;T.push(192|c>>6,128|63&c)}else if(65536>c){if(0>(i-=3))break;T.push(224|c>>12,128|63&c>>6,128|63&c)}else if(1114112>c){if(0>(i-=4))break;T.push(240|c>>18,128|63&c>>12,128|63&c>>6,128|63&c)}else throw new Error("Invalid code point")}return T}function Mt(e){for(var i=[],c=0;c<e.length;++c)i.push(255&e.charCodeAt(c));return i}function _t(e,i){for(var c,B,D,T=[],L=0;L<e.length&&!(0>(i-=2));++L)c=e.charCodeAt(L),B=c>>8,D=c%256,T.push(D),T.push(B);return T}function It(e){return x.toByteArray(et(e))}function Qt(e,i,c,B){for(var D=0;D<B&&!(D+c>=i.length||D>=e.length);++D)i[D+c]=e[D];return D}function N(e,i){return e instanceof i||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===i.name}function k(e){return e!==e}var x=r("base64-js"),F=r("ieee754");o.Buffer=A,o.SlowBuffer=function(e){return+e!=e&&(e=0),A.alloc(+e)},o.INSPECT_MAX_BYTES=50,o.kMaxLength=2147483647,A.TYPED_ARRAY_SUPPORT=(function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},e.foo()===42}catch{return!1}})(),A.TYPED_ARRAY_SUPPORT||typeof console>"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(A.prototype,"parent",{enumerable:!0,get:function(){return A.isBuffer(this)?this.buffer:void 0}}),Object.defineProperty(A.prototype,"offset",{enumerable:!0,get:function(){return A.isBuffer(this)?this.byteOffset:void 0}}),typeof Symbol<"u"&&Symbol.species!=null&&A[Symbol.species]===A&&Object.defineProperty(A,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),A.poolSize=8192,A.from=function(e,i,c){return u(e,i,c)},A.prototype.__proto__=Uint8Array.prototype,A.__proto__=Uint8Array,A.alloc=function(e,i,c){return f(e,i,c)},A.allocUnsafe=function(e){return y(e)},A.allocUnsafeSlow=function(e){return y(e)},A.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==A.prototype},A.compare=function(e,i){if(N(e,Uint8Array)&&(e=A.from(e,e.offset,e.byteLength)),N(i,Uint8Array)&&(i=A.from(i,i.offset,i.byteLength)),!A.isBuffer(e)||!A.isBuffer(i))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===i)return 0;for(var c=e.length,B=i.length,D=0,T=g(c,B);D<T;++D)if(e[D]!==i[D]){c=e[D],B=i[D];break}return c<B?-1:B<c?1:0},A.isEncoding=function(e){switch((e+"").toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},A.concat=function(e,i){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return A.alloc(0);var c;if(i===void 0)for(i=0,c=0;c<e.length;++c)i+=e[c].length;var B=A.allocUnsafe(i),D=0;for(c=0;c<e.length;++c){var T=e[c];if(N(T,Uint8Array)&&(T=A.from(T)),!A.isBuffer(T))throw new TypeError('"list" argument must be an Array of Buffers');T.copy(B,D),D+=T.length}return B},A.byteLength=E,A.prototype._isBuffer=!0,A.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var i=0;i<e;i+=2)Q(this,i,i+1);return this},A.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var i=0;i<e;i+=4)Q(this,i,i+3),Q(this,i+1,i+2);return this},A.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var i=0;i<e;i+=8)Q(this,i,i+7),Q(this,i+1,i+6),Q(this,i+2,i+5),Q(this,i+3,i+4);return this},A.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?V(this,0,e):S.apply(this,arguments)},A.prototype.toLocaleString=A.prototype.toString,A.prototype.equals=function(e){if(!A.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||A.compare(this,e)===0},A.prototype.inspect=function(){var e="",i=o.INSPECT_MAX_BYTES;return e=this.toString("hex",0,i).replace(/(.{2})/g,"$1 ").trim(),this.length>i&&(e+=" ... "),"<Buffer "+e+">"},A.prototype.compare=function(e,i,c,B,D){if(N(e,Uint8Array)&&(e=A.from(e,e.offset,e.byteLength)),!A.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(i===void 0&&(i=0),c===void 0&&(c=e?e.length:0),B===void 0&&(B=0),D===void 0&&(D=this.length),0>i||c>e.length||0>B||D>this.length)throw new RangeError("out of range index");if(B>=D&&i>=c)return 0;if(B>=D)return-1;if(i>=c)return 1;if(i>>>=0,c>>>=0,B>>>=0,D>>>=0,this===e)return 0;for(var T=D-B,L=c-i,q=g(T,L),nt=this.slice(B,D),$=e.slice(i,c),Z=0;Z<q;++Z)if(nt[Z]!==$[Z]){T=nt[Z],L=$[Z];break}return T<L?-1:L<T?1:0},A.prototype.includes=function(e,i,c){return this.indexOf(e,i,c)!==-1},A.prototype.indexOf=function(e,i,c){return _(this,e,i,c,!0)},A.prototype.lastIndexOf=function(e,i,c){return _(this,e,i,c,!1)},A.prototype.write=function(e,i,c,B){if(i===void 0)B="utf8",c=this.length,i=0;else if(c===void 0&&typeof i=="string")B=i,c=this.length,i=0;else if(isFinite(i))i>>>=0,isFinite(c)?(c>>>=0,B===void 0&&(B="utf8")):(B=c,c=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var D=this.length-i;if((c===void 0||c>D)&&(c=D),0<e.length&&(0>c||0>i)||i>this.length)throw new RangeError("Attempt to write outside buffer bounds");B||(B="utf8");for(var T=!1;;)switch(B){case"hex":return b(this,e,i,c);case"utf8":case"utf-8":return R(this,e,i,c);case"ascii":return U(this,e,i,c);case"latin1":case"binary":return O(this,e,i,c);case"base64":return H(this,e,i,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return J(this,e,i,c);default:if(T)throw new TypeError("Unknown encoding: "+B);B=(""+B).toLowerCase(),T=!0}},A.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},A.prototype.slice=function(e,i){var c=this.length;e=~~e,i=i===void 0?c:~~i,0>e?(e+=c,0>e&&(e=0)):e>c&&(e=c),0>i?(i+=c,0>i&&(i=0)):i>c&&(i=c),i<e&&(i=e);var B=this.subarray(e,i);return B.__proto__=A.prototype,B},A.prototype.readUIntLE=function(e,i,c){e>>>=0,i>>>=0,c||W(e,i,this.length);for(var B=this[e],D=1,T=0;++T<i&&(D*=256);)B+=this[e+T]*D;return B},A.prototype.readUIntBE=function(e,i,c){e>>>=0,i>>>=0,c||W(e,i,this.length);for(var B=this[e+--i],D=1;0<i&&(D*=256);)B+=this[e+--i]*D;return B},A.prototype.readUInt8=function(e,i){return e>>>=0,i||W(e,1,this.length),this[e]},A.prototype.readUInt16LE=function(e,i){return e>>>=0,i||W(e,2,this.length),this[e]|this[e+1]<<8},A.prototype.readUInt16BE=function(e,i){return e>>>=0,i||W(e,2,this.length),this[e]<<8|this[e+1]},A.prototype.readUInt32LE=function(e,i){return e>>>=0,i||W(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},A.prototype.readUInt32BE=function(e,i){return e>>>=0,i||W(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},A.prototype.readIntLE=function(e,i,c){e>>>=0,i>>>=0,c||W(e,i,this.length);for(var B=this[e],D=1,T=0;++T<i&&(D*=256);)B+=this[e+T]*D;return D*=128,B>=D&&(B-=n(2,8*i)),B},A.prototype.readIntBE=function(e,i,c){e>>>=0,i>>>=0,c||W(e,i,this.length);for(var B=i,D=1,T=this[e+--B];0<B&&(D*=256);)T+=this[e+--B]*D;return D*=128,T>=D&&(T-=n(2,8*i)),T},A.prototype.readInt8=function(e,i){return e>>>=0,i||W(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},A.prototype.readInt16LE=function(e,i){e>>>=0,i||W(e,2,this.length);var c=this[e]|this[e+1]<<8;return 32768&c?4294901760|c:c},A.prototype.readInt16BE=function(e,i){e>>>=0,i||W(e,2,this.length);var c=this[e+1]|this[e]<<8;return 32768&c?4294901760|c:c},A.prototype.readInt32LE=function(e,i){return e>>>=0,i||W(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},A.prototype.readInt32BE=function(e,i){return e>>>=0,i||W(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},A.prototype.readFloatLE=function(e,i){return e>>>=0,i||W(e,4,this.length),F.read(this,e,!0,23,4)},A.prototype.readFloatBE=function(e,i){return e>>>=0,i||W(e,4,this.length),F.read(this,e,!1,23,4)},A.prototype.readDoubleLE=function(e,i){return e>>>=0,i||W(e,8,this.length),F.read(this,e,!0,52,8)},A.prototype.readDoubleBE=function(e,i){return e>>>=0,i||W(e,8,this.length),F.read(this,e,!1,52,8)},A.prototype.writeUIntLE=function(e,i,c,B){if(e=+e,i>>>=0,c>>>=0,!B){var D=n(2,8*c)-1;j(this,e,i,c,D,0)}var T=1,L=0;for(this[i]=255&e;++L<c&&(T*=256);)this[i+L]=255&e/T;return i+c},A.prototype.writeUIntBE=function(e,i,c,B){if(e=+e,i>>>=0,c>>>=0,!B){var D=n(2,8*c)-1;j(this,e,i,c,D,0)}var T=c-1,L=1;for(this[i+T]=255&e;0<=--T&&(L*=256);)this[i+T]=255&e/L;return i+c},A.prototype.writeUInt8=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,1,255,0),this[i]=255&e,i+1},A.prototype.writeUInt16LE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,2,65535,0),this[i]=255&e,this[i+1]=e>>>8,i+2},A.prototype.writeUInt16BE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,2,65535,0),this[i]=e>>>8,this[i+1]=255&e,i+2},A.prototype.writeUInt32LE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,4,4294967295,0),this[i+3]=e>>>24,this[i+2]=e>>>16,this[i+1]=e>>>8,this[i]=255&e,i+4},A.prototype.writeUInt32BE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,4,4294967295,0),this[i]=e>>>24,this[i+1]=e>>>16,this[i+2]=e>>>8,this[i+3]=255&e,i+4},A.prototype.writeIntLE=function(e,i,c,B){if(e=+e,i>>>=0,!B){var D=n(2,8*c-1);j(this,e,i,c,D-1,-D)}var T=0,L=1,q=0;for(this[i]=255&e;++T<c&&(L*=256);)0>e&&q===0&&this[i+T-1]!==0&&(q=1),this[i+T]=255&(e/L>>0)-q;return i+c},A.prototype.writeIntBE=function(e,i,c,B){if(e=+e,i>>>=0,!B){var D=n(2,8*c-1);j(this,e,i,c,D-1,-D)}var T=c-1,L=1,q=0;for(this[i+T]=255&e;0<=--T&&(L*=256);)0>e&&q===0&&this[i+T+1]!==0&&(q=1),this[i+T]=255&(e/L>>0)-q;return i+c},A.prototype.writeInt8=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,1,127,-128),0>e&&(e=255+e+1),this[i]=255&e,i+1},A.prototype.writeInt16LE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,2,32767,-32768),this[i]=255&e,this[i+1]=e>>>8,i+2},A.prototype.writeInt16BE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,2,32767,-32768),this[i]=e>>>8,this[i+1]=255&e,i+2},A.prototype.writeInt32LE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,4,2147483647,-2147483648),this[i]=255&e,this[i+1]=e>>>8,this[i+2]=e>>>16,this[i+3]=e>>>24,i+4},A.prototype.writeInt32BE=function(e,i,c){return e=+e,i>>>=0,c||j(this,e,i,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),this[i]=e>>>24,this[i+1]=e>>>16,this[i+2]=e>>>8,this[i+3]=255&e,i+4},A.prototype.writeFloatLE=function(e,i,c){return st(this,e,i,!0,c)},A.prototype.writeFloatBE=function(e,i,c){return st(this,e,i,!1,c)},A.prototype.writeDoubleLE=function(e,i,c){return pt(this,e,i,!0,c)},A.prototype.writeDoubleBE=function(e,i,c){return pt(this,e,i,!1,c)},A.prototype.copy=function(e,i,c,B){if(!A.isBuffer(e))throw new TypeError("argument should be a Buffer");if(c||(c=0),B||B===0||(B=this.length),i>=e.length&&(i=e.length),i||(i=0),0<B&&B<c&&(B=c),B===c||e.length===0||this.length===0)return 0;if(0>i)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("Index out of range");if(0>B)throw new RangeError("sourceEnd out of bounds");B>this.length&&(B=this.length),e.length-i<B-c&&(B=e.length-i+c);var D=B-c;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(i,c,B);else if(this===e&&c<i&&i<B)for(var T=D-1;0<=T;--T)e[T+i]=this[T+c];else Uint8Array.prototype.set.call(e,this.subarray(c,B),i);return D},A.prototype.fill=function(e,i,c,B){if(typeof e=="string"){if(typeof i=="string"?(B=i,i=0,c=this.length):typeof c=="string"&&(B=c,c=this.length),B!==void 0&&typeof B!="string")throw new TypeError("encoding must be a string");if(typeof B=="string"&&!A.isEncoding(B))throw new TypeError("Unknown encoding: "+B);if(e.length===1){var D=e.charCodeAt(0);(B==="utf8"&&128>D||B==="latin1")&&(e=D)}}else typeof e=="number"&&(e&=255);if(0>i||this.length<i||this.length<c)throw new RangeError("Out of range index");if(c<=i)return this;i>>>=0,c=c===void 0?this.length:c>>>0,e||(e=0);var T;if(typeof e=="number")for(T=i;T<c;++T)this[T]=e;else{var L=A.isBuffer(e)?e:A.from(e,B),q=L.length;if(q===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(T=0;T<c-i;++T)this[T+i]=L[T%q]}return this};var G=/[^+/0-9A-Za-z-_]/g}).call(this)}).call(this,r("buffer").Buffer)},{"base64-js":1,buffer:3,ieee754:9}],4:[function(r,s,o){(function(a){(function(){function g(){let A;try{A=o.storage.getItem("debug")}catch{}return!A&&typeof a<"u"&&"env"in a&&(A=a.env.DEBUG),A}o.formatArgs=function(A){if(A[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+A[0]+(this.useColors?"%c ":" ")+"+"+s.exports.humanize(this.diff),!this.useColors)return;let u="color: "+this.color;A.splice(1,0,u,"color: inherit");let l=0,f=0;A[0].replace(/%[a-zA-Z%]/g,y=>{y==="%%"||(l++,y==="%c"&&(f=l))}),A.splice(f,0,u)},o.save=function(A){try{A?o.storage.setItem("debug",A):o.storage.removeItem("debug")}catch{}},o.load=g,o.useColors=function(){return!!(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))||!(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&(typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&31<=parseInt(RegExp.$1,10)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},o.storage=(function(){try{return localStorage}catch{}})(),o.destroy=(()=>{let A=!1;return()=>{A||(A=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),o.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],o.log=console.debug||console.log||(()=>{}),s.exports=r("./common")(o);let{formatters:I}=s.exports;I.j=function(A){try{return JSON.stringify(A)}catch(u){return"[UnexpectedJSONParseError]: "+u.message}}}).call(this)}).call(this,r("_process"))},{"./common":5,_process:12}],5:[function(r,s){s.exports=function(o){function a(A){function u(...y){if(!u.enabled)return;let w=u,m=+new Date,v=m-(l||m);w.diff=v,w.prev=l,w.curr=m,l=m,y[0]=a.coerce(y[0]),typeof y[0]!="string"&&y.unshift("%O");let h=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(E,S)=>{if(E==="%%")return"%";h++;let Q=a.formatters[S];if(typeof Q=="function"){let _=y[h];E=Q.call(w,_),y.splice(h,1),h--}return E}),a.formatArgs.call(w,y),(w.log||a.log).apply(w,y)}let l,f=null;return u.namespace=A,u.useColors=a.useColors(),u.color=a.selectColor(A),u.extend=g,u.destroy=a.destroy,Object.defineProperty(u,"enabled",{enumerable:!0,configurable:!1,get:()=>f===null?a.enabled(A):f,set:y=>{f=y}}),typeof a.init=="function"&&a.init(u),u}function g(A,u){let l=a(this.namespace+(typeof u>"u"?":":u)+A);return l.log=this.log,l}function I(A){return A.toString().substring(2,A.toString().length-2).replace(/\.\*\?$/,"*")}return a.debug=a,a.default=a,a.coerce=function(A){return A instanceof Error?A.stack||A.message:A},a.disable=function(){let A=[...a.names.map(I),...a.skips.map(I).map(u=>"-"+u)].join(",");return a.enable(""),A},a.enable=function(A){a.save(A),a.names=[],a.skips=[];let u,l=(typeof A=="string"?A:"").split(/[\s,]+/),f=l.length;for(u=0;u<f;u++)l[u]&&(A=l[u].replace(/\*/g,".*?"),A[0]==="-"?a.skips.push(new RegExp("^"+A.substr(1)+"$")):a.names.push(new RegExp("^"+A+"$")))},a.enabled=function(A){if(A[A.length-1]==="*")return!0;let u,l;for(u=0,l=a.skips.length;u<l;u++)if(a.skips[u].test(A))return!1;for(u=0,l=a.names.length;u<l;u++)if(a.names[u].test(A))return!0;return!1},a.humanize=r("ms"),a.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(o).forEach(A=>{a[A]=o[A]}),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(A){let u=0;for(let l=0;l<A.length;l++)u=(u<<5)-u+A.charCodeAt(l),u|=0;return a.colors[t(u)%a.colors.length]},a.enable(a.load()),a}},{ms:11}],6:[function(r,s){"use strict";function o(a,g){for(let I in g)Object.defineProperty(a,I,{value:g[I],enumerable:!0,configurable:!0});return a}s.exports=function(a,g,I){if(!a||typeof a=="string")throw new TypeError("Please pass an Error to err-code");I||(I={}),typeof g=="object"&&(I=g,g=""),g&&(I.code=g);try{return o(a,I)}catch{I.message=a.message,I.stack=a.stack;let u=function(){};return u.prototype=Object.create(Object.getPrototypeOf(a)),o(new u,I)}}},{}],7:[function(r,s){"use strict";function o(b){console&&console.warn&&console.warn(b)}function a(){a.init.call(this)}function g(b){if(typeof b!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof b)}function I(b){return b._maxListeners===void 0?a.defaultMaxListeners:b._maxListeners}function A(b,R,U,O){var H,J,K;if(g(U),J=b._events,J===void 0?(J=b._events=Object.create(null),b._eventsCount=0):(J.newListener!==void 0&&(b.emit("newListener",R,U.listener?U.listener:U),J=b._events),K=J[R]),K===void 0)K=J[R]=U,++b._eventsCount;else if(typeof K=="function"?K=J[R]=O?[U,K]:[K,U]:O?K.unshift(U):K.push(U),H=I(b),0<H&&K.length>H&&!K.warned){K.warned=!0;var V=new Error("Possible EventEmitter memory leak detected. "+K.length+" "+(R+" listeners added. Use emitter.setMaxListeners() to increase limit"));V.name="MaxListenersExceededWarning",V.emitter=b,V.type=R,V.count=K.length,o(V)}return b}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(b,R,U){var O={fired:!1,wrapFn:void 0,target:b,type:R,listener:U},H=u.bind(O);return H.listener=U,O.wrapFn=H,H}function f(b,R,U){var O=b._events;if(O===void 0)return[];var H=O[R];return H===void 0?[]:typeof H=="function"?U?[H.listener||H]:[H]:U?v(H):w(H,H.length)}function y(b){var R=this._events;if(R!==void 0){var U=R[b];if(typeof U=="function")return 1;if(U!==void 0)return U.length}return 0}function w(b,R){for(var U=Array(R),O=0;O<R;++O)U[O]=b[O];return U}function m(b,R){for(;R+1<b.length;R++)b[R]=b[R+1];b.pop()}function v(b){for(var R=Array(b.length),U=0;U<R.length;++U)R[U]=b[U].listener||b[U];return R}function h(b,R,U){typeof b.on=="function"&&C(b,"error",R,U)}function C(b,R,U,O){if(typeof b.on=="function")O.once?b.once(R,U):b.on(R,U);else if(typeof b.addEventListener=="function")b.addEventListener(R,function H(J){O.once&&b.removeEventListener(R,H),U(J)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof b)}var E,S=typeof Reflect=="object"?Reflect:null,Q=S&&typeof S.apply=="function"?S.apply:function(b,R,U){return Function.prototype.apply.call(b,R,U)};E=S&&typeof S.ownKeys=="function"?S.ownKeys:Object.getOwnPropertySymbols?function(b){return Object.getOwnPropertyNames(b).concat(Object.getOwnPropertySymbols(b))}:function(b){return Object.getOwnPropertyNames(b)};var _=Number.isNaN||function(b){return b!==b};s.exports=a,s.exports.once=function(b,R){return new Promise(function(U,O){function H(K){b.removeListener(R,J),O(K)}function J(){typeof b.removeListener=="function"&&b.removeListener("error",H),U([].slice.call(arguments))}C(b,R,J,{once:!0}),R!=="error"&&h(b,H,{once:!0})})},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var M=10;Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return M},set:function(b){if(typeof b!="number"||0>b||_(b))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+b+".");M=b}}),a.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(b){if(typeof b!="number"||0>b||_(b))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+b+".");return this._maxListeners=b,this},a.prototype.getMaxListeners=function(){return I(this)},a.prototype.emit=function(b){for(var R=[],U=1;U<arguments.length;U++)R.push(arguments[U]);var O=b==="error",H=this._events;if(H!==void 0)O=O&&H.error===void 0;else if(!O)return!1;if(O){var J;if(0<R.length&&(J=R[0]),J instanceof Error)throw J;var K=new Error("Unhandled error."+(J?" ("+J.message+")":""));throw K.context=J,K}var V=H[b];if(V===void 0)return!1;if(typeof V=="function")Q(V,this,R);else for(var rt=V.length,Y=w(V,rt),U=0;U<rt;++U)Q(Y[U],this,R);return!0},a.prototype.addListener=function(b,R){return A(this,b,R,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(b,R){return A(this,b,R,!0)},a.prototype.once=function(b,R){return g(R),this.on(b,l(this,b,R)),this},a.prototype.prependOnceListener=function(b,R){return g(R),this.prependListener(b,l(this,b,R)),this},a.prototype.removeListener=function(b,R){var U,O,H,J,K;if(g(R),O=this._events,O===void 0)return this;if(U=O[b],U===void 0)return this;if(U===R||U.listener===R)--this._eventsCount==0?this._events=Object.create(null):(delete O[b],O.removeListener&&this.emit("removeListener",b,U.listener||R));else if(typeof U!="function"){for(H=-1,J=U.length-1;0<=J;J--)if(U[J]===R||U[J].listener===R){K=U[J].listener,H=J;break}if(0>H)return this;H===0?U.shift():m(U,H),U.length===1&&(O[b]=U[0]),O.removeListener!==void 0&&this.emit("removeListener",b,K||R)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(b){var R,U,O;if(U=this._events,U===void 0)return this;if(U.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):U[b]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete U[b]),this;if(arguments.length===0){var H,J=Object.keys(U);for(O=0;O<J.length;++O)H=J[O],H!=="removeListener"&&this.removeAllListeners(H);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(R=U[b],typeof R=="function")this.removeListener(b,R);else if(R!==void 0)for(O=R.length-1;0<=O;O--)this.removeListener(b,R[O]);return this},a.prototype.listeners=function(b){return f(this,b,!0)},a.prototype.rawListeners=function(b){return f(this,b,!1)},a.listenerCount=function(b,R){return typeof b.listenerCount=="function"?b.listenerCount(R):y.call(b,R)},a.prototype.listenerCount=y,a.prototype.eventNames=function(){return 0<this._eventsCount?E(this._events):[]}},{}],8:[function(r,s){s.exports=function(){if(typeof globalThis>"u")return null;var o={RTCPeerConnection:globalThis.RTCPeerConnection||globalThis.mozRTCPeerConnection||globalThis.webkitRTCPeerConnection,RTCSessionDescription:globalThis.RTCSessionDescription||globalThis.mozRTCSessionDescription||globalThis.webkitRTCSessionDescription,RTCIceCandidate:globalThis.RTCIceCandidate||globalThis.mozRTCIceCandidate||globalThis.webkitRTCIceCandidate};return o.RTCPeerConnection?o:null}},{}],9:[function(r,s,o){o.read=function(a,g,I,A,u){var l,f,y=8*u-A-1,w=(1<<y)-1,m=w>>1,v=-7,h=I?u-1:0,C=I?-1:1,E=a[g+h];for(h+=C,l=E&(1<<-v)-1,E>>=-v,v+=y;0<v;l=256*l+a[g+h],h+=C,v-=8);for(f=l&(1<<-v)-1,l>>=-v,v+=A;0<v;f=256*f+a[g+h],h+=C,v-=8);if(l===0)l=1-m;else{if(l===w)return f?NaN:(E?-1:1)*(1/0);f+=n(2,A),l-=m}return(E?-1:1)*f*n(2,l-A)},o.write=function(a,g,I,A,u,l){var f,y,w,m=Math.LN2,v=Math.log,h=8*l-u-1,C=(1<<h)-1,E=C>>1,S=u===23?n(2,-24)-n(2,-77):0,Q=A?0:l-1,_=A?1:-1,M=0>g||g===0&&0>1/g?1:0;for(g=t(g),isNaN(g)||g===1/0?(y=isNaN(g)?1:0,f=C):(f=p(v(g)/m),1>g*(w=n(2,-f))&&(f--,w*=2),g+=1<=f+E?S/w:S*n(2,1-E),2<=g*w&&(f++,w/=2),f+E>=C?(y=0,f=C):1<=f+E?(y=(g*w-1)*n(2,u),f+=E):(y=g*n(2,E-1)*n(2,u),f=0));8<=u;a[I+Q]=255&y,Q+=_,y/=256,u-=8);for(f=f<<u|y,h+=u;0<h;a[I+Q]=255&f,Q+=_,f/=256,h-=8);a[I+Q-_]|=128*M}},{}],10:[function(r,s){s.exports=typeof Object.create=="function"?function(o,a){a&&(o.super_=a,o.prototype=Object.create(a.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}))}:function(o,a){if(a){o.super_=a;var g=function(){};g.prototype=a.prototype,o.prototype=new g,o.prototype.constructor=o}}},{}],11:[function(r,s){var o=Math.round;function a(l){if(l+="",!(100<l.length)){var f=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(l);if(f){var y=parseFloat(f[1]),w=(f[2]||"ms").toLowerCase();return w==="years"||w==="year"||w==="yrs"||w==="yr"||w==="y"?315576e5*y:w==="weeks"||w==="week"||w==="w"?6048e5*y:w==="days"||w==="day"||w==="d"?864e5*y:w==="hours"||w==="hour"||w==="hrs"||w==="hr"||w==="h"?36e5*y:w==="minutes"||w==="minute"||w==="mins"||w==="min"||w==="m"?6e4*y:w==="seconds"||w==="second"||w==="secs"||w==="sec"||w==="s"?1e3*y:w==="milliseconds"||w==="millisecond"||w==="msecs"||w==="msec"||w==="ms"?y:void 0}}}function g(l){var f=t(l);return 864e5<=f?o(l/864e5)+"d":36e5<=f?o(l/36e5)+"h":6e4<=f?o(l/6e4)+"m":1e3<=f?o(l/1e3)+"s":l+"ms"}function I(l){var f=t(l);return 864e5<=f?A(l,f,864e5,"day"):36e5<=f?A(l,f,36e5,"hour"):6e4<=f?A(l,f,6e4,"minute"):1e3<=f?A(l,f,1e3,"second"):l+" ms"}function A(l,f,y,w){return o(l/y)+" "+w+(f>=1.5*y?"s":"")}var u=24*(60*6e4);s.exports=function(l,f){f=f||{};var y=typeof l;if(y=="string"&&0<l.length)return a(l);if(y==="number"&&isFinite(l))return f.long?I(l):g(l);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(l))}},{}],12:[function(r,s){function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function g(S){if(y===setTimeout)return setTimeout(S,0);if((y===o||!y)&&setTimeout)return y=setTimeout,setTimeout(S,0);try{return y(S,0)}catch{try{return y.call(null,S,0)}catch{return y.call(this,S,0)}}}function I(S){if(w===clearTimeout)return clearTimeout(S);if((w===a||!w)&&clearTimeout)return w=clearTimeout,clearTimeout(S);try{return w(S)}catch{try{return w.call(null,S)}catch{return w.call(this,S)}}}function A(){C&&v&&(C=!1,v.length?h=v.concat(h):E=-1,h.length&&u())}function u(){if(!C){var S=g(A);C=!0;for(var Q=h.length;Q;){for(v=h,h=[];++E<Q;)v&&v[E].run();E=-1,Q=h.length}v=null,C=!1,I(S)}}function l(S,Q){this.fun=S,this.array=Q}function f(){}var y,w,m=s.exports={};(function(){try{y=typeof setTimeout=="function"?setTimeout:o}catch{y=o}try{w=typeof clearTimeout=="function"?clearTimeout:a}catch{w=a}})();var v,h=[],C=!1,E=-1;m.nextTick=function(S){var Q=Array(arguments.length-1);if(1<arguments.length)for(var _=1;_<arguments.length;_++)Q[_-1]=arguments[_];h.push(new l(S,Q)),h.length!==1||C||g(u)},l.prototype.run=function(){this.fun.apply(null,this.array)},m.title="browser",m.browser=!0,m.env={},m.argv=[],m.version="",m.versions={},m.on=f,m.addListener=f,m.once=f,m.off=f,m.removeListener=f,m.removeAllListeners=f,m.emit=f,m.prependListener=f,m.prependOnceListener=f,m.listeners=function(){return[]},m.binding=function(){throw new Error("process.binding is not supported")},m.cwd=function(){return"/"},m.chdir=function(){throw new Error("process.chdir is not supported")},m.umask=function(){return 0}},{}],13:[function(r,s){(function(o){(function(){let a;s.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window>"u"?o:window):g=>(a||(a=Promise.resolve())).then(g).catch(I=>setTimeout(()=>{throw I},0))}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],14:[function(r,s){(function(o,a){(function(){"use strict";var g=r("safe-buffer").Buffer,I=a.crypto||a.msCrypto;s.exports=I&&I.getRandomValues?function(A,u){if(A>4294967295)throw new RangeError("requested too many random bytes");var l=g.allocUnsafe(A);if(0<A)if(65536<A)for(var f=0;f<A;f+=65536)I.getRandomValues(l.slice(f,f+65536));else I.getRandomValues(l);return typeof u=="function"?o.nextTick(function(){u(null,l)}):l}:function(){throw new Error(`Secure random number generation is not supported by this browser.
2
2
  Use Chrome, Firefox or Internet Explorer 11`)}}).call(this)}).call(this,r("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{_process:12,"safe-buffer":30}],15:[function(r,s){"use strict";function o(f,y){f.prototype=Object.create(y.prototype),f.prototype.constructor=f,f.__proto__=y}function a(f,y,w){function m(h,C,E){return typeof y=="string"?y:y(h,C,E)}w||(w=Error);var v=(function(h){function C(E,S,Q){return h.call(this,m(E,S,Q))||this}return o(C,h),C})(w);v.prototype.name=w.name,v.prototype.code=f,l[f]=v}function g(f,y){if(Array.isArray(f)){var w=f.length;return f=f.map(function(m){return m+""}),2<w?"one of ".concat(y," ").concat(f.slice(0,w-1).join(", "),", or ")+f[w-1]:w===2?"one of ".concat(y," ").concat(f[0]," or ").concat(f[1]):"of ".concat(y," ").concat(f[0])}return"of ".concat(y," ").concat(f+"")}function I(f,y,w){return f.substr(!w||0>w?0:+w,y.length)===y}function A(f,y,w){return(w===void 0||w>f.length)&&(w=f.length),f.substring(w-y.length,w)===y}function u(f,y,w){return typeof w!="number"&&(w=0),!(w+y.length>f.length)&&f.indexOf(y,w)!==-1}var l={};a("ERR_INVALID_OPT_VALUE",function(f,y){return'The value "'+y+'" is invalid for option "'+f+'"'},TypeError),a("ERR_INVALID_ARG_TYPE",function(f,y,w){var m;typeof y=="string"&&I(y,"not ")?(m="must not be",y=y.replace(/^not /,"")):m="must be";var v;if(A(f," argument"))v="The ".concat(f," ").concat(m," ").concat(g(y,"type"));else{var h=u(f,".")?"property":"argument";v='The "'.concat(f,'" ').concat(h," ").concat(m," ").concat(g(y,"type"))}return v+=". Received type ".concat(typeof w),v},TypeError),a("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),a("ERR_METHOD_NOT_IMPLEMENTED",function(f){return"The "+f+" method is not implemented"}),a("ERR_STREAM_PREMATURE_CLOSE","Premature close"),a("ERR_STREAM_DESTROYED",function(f){return"Cannot call "+f+" after a stream was destroyed"}),a("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),a("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),a("ERR_STREAM_WRITE_AFTER_END","write after end"),a("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),a("ERR_UNKNOWN_ENCODING",function(f){return"Unknown encoding: "+f},TypeError),a("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),s.exports.codes=l},{}],16:[function(r,s){(function(o){(function(){"use strict";function a(m){return this instanceof a?(u.call(this,m),l.call(this,m),this.allowHalfOpen=!0,void(m&&(m.readable===!1&&(this.readable=!1),m.writable===!1&&(this.writable=!1),m.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",g))))):new a(m)}function g(){this._writableState.ended||o.nextTick(I,this)}function I(m){m.end()}var A=Object.keys||function(m){var v=[];for(var h in m)v.push(h);return v};s.exports=a;var u=r("./_stream_readable"),l=r("./_stream_writable");r("inherits")(a,u);for(var f,y=A(l.prototype),w=0;w<y.length;w++)f=y[w],a.prototype[f]||(a.prototype[f]=l.prototype[f]);Object.defineProperty(a.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(a.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(a.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(a.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState!==void 0&&this._writableState!==void 0&&this._readableState.destroyed&&this._writableState.destroyed},set:function(m){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=m,this._writableState.destroyed=m)}})}).call(this)}).call(this,r("_process"))},{"./_stream_readable":18,"./_stream_writable":20,_process:12,inherits:10}],17:[function(r,s){"use strict";function o(g){return this instanceof o?void a.call(this,g):new o(g)}s.exports=o;var a=r("./_stream_transform");r("inherits")(o,a),o.prototype._transform=function(g,I,A){A(null,g)}},{"./_stream_transform":19,inherits:10}],18:[function(r,s){(function(o,a){(function(){"use strict";function g(e){return W.from(e)}function I(e){return W.isBuffer(e)||e instanceof j}function A(e,i,c){return typeof e.prependListener=="function"?e.prependListener(i,c):void(e._events&&e._events[i]?Array.isArray(e._events[i])?e._events[i].unshift(c):e._events[i]=[c,e._events[i]]:e.on(i,c))}function u(e,i,c){rt=rt||r("./_stream_duplex"),e=e||{},typeof c!="boolean"&&(c=i instanceof rt),this.objectMode=!!e.objectMode,c&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=_t(this,e,"readableHighWaterMark",c),this.buffer=new St,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(!st&&(st=r("string_decoder/").StringDecoder),this.decoder=new st(e.encoding),this.encoding=e.encoding)}function l(e){if(rt=rt||r("./_stream_duplex"),!(this instanceof l))return new l(e);var i=this instanceof rt;this._readableState=new u(e,this,i),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),gt.call(this)}function f(e,i,c,B,D){Y("readableAddChunk",i);var T=e._readableState;if(i===null)T.reading=!1,h(e,T);else{var L;if(D||(L=w(T,i)),L)F(e,L);else if(!(T.objectMode||i&&0<i.length))B||(T.reading=!1,S(e,T));else if(typeof i=="string"||T.objectMode||Object.getPrototypeOf(i)===W.prototype||(i=g(i)),B)T.endEmitted?F(e,new x):y(e,T,i,!0);else if(T.ended)F(e,new N);else{if(T.destroyed)return!1;T.reading=!1,T.decoder&&!c?(i=T.decoder.write(i),T.objectMode||i.length!==0?y(e,T,i,!1):S(e,T)):y(e,T,i,!1)}}return!T.ended&&(T.length<T.highWaterMark||T.length===0)}function y(e,i,c,B){i.flowing&&i.length===0&&!i.sync?(i.awaitDrain=0,e.emit("data",c)):(i.length+=i.objectMode?1:c.length,B?i.buffer.unshift(c):i.buffer.push(c),i.needReadable&&C(e)),S(e,i)}function w(e,i){var c;return I(i)||typeof i=="string"||i===void 0||e.objectMode||(c=new Qt("chunk",["string","Buffer","Uint8Array"],i)),c}function m(e){return 1073741824<=e?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function v(e,i){return 0>=e||i.length===0&&i.ended?0:i.objectMode?1:e===e?(e>i.highWaterMark&&(i.highWaterMark=m(e)),e<=i.length?e:i.ended?i.length:(i.needReadable=!0,0)):i.flowing&&i.length?i.buffer.head.data.length:i.length}function h(e,i){if(Y("onEofChunk"),!i.ended){if(i.decoder){var c=i.decoder.end();c&&c.length&&(i.buffer.push(c),i.length+=i.objectMode?1:c.length)}i.ended=!0,i.sync?C(e):(i.needReadable=!1,!i.emittedReadable&&(i.emittedReadable=!0,E(e)))}}function C(e){var i=e._readableState;Y("emitReadable",i.needReadable,i.emittedReadable),i.needReadable=!1,i.emittedReadable||(Y("emitReadable",i.flowing),i.emittedReadable=!0,o.nextTick(E,e))}function E(e){var i=e._readableState;Y("emitReadable_",i.destroyed,i.length,i.ended),!i.destroyed&&(i.length||i.ended)&&(e.emit("readable"),i.emittedReadable=!1),i.needReadable=!i.flowing&&!i.ended&&i.length<=i.highWaterMark,O(e)}function S(e,i){i.readingMore||(i.readingMore=!0,o.nextTick(Q,e,i))}function Q(e,i){for(;!i.reading&&!i.ended&&(i.length<i.highWaterMark||i.flowing&&i.length===0);){var c=i.length;if(Y("maybeReadMore read 0"),e.read(0),c===i.length)break}i.readingMore=!1}function _(e){return function(){var i=e._readableState;Y("pipeOnDrain",i.awaitDrain),i.awaitDrain&&i.awaitDrain--,i.awaitDrain===0&&ot(e,"data")&&(i.flowing=!0,O(e))}}function M(e){var i=e._readableState;i.readableListening=0<e.listenerCount("readable"),i.resumeScheduled&&!i.paused?i.flowing=!0:0<e.listenerCount("data")&&e.resume()}function b(e){Y("readable nexttick read 0"),e.read(0)}function R(e,i){i.resumeScheduled||(i.resumeScheduled=!0,o.nextTick(U,e,i))}function U(e,i){Y("resume",i.reading),i.reading||e.read(0),i.resumeScheduled=!1,e.emit("resume"),O(e),i.flowing&&!i.reading&&e.read(0)}function O(e){var i=e._readableState;for(Y("flow",i.flowing);i.flowing&&e.read()!==null;);}function H(e,i){if(i.length===0)return null;var c;return i.objectMode?c=i.buffer.shift():!e||e>=i.length?(c=i.decoder?i.buffer.join(""):i.buffer.length===1?i.buffer.first():i.buffer.concat(i.length),i.buffer.clear()):c=i.buffer.consume(e,i.decoder),c}function J(e){var i=e._readableState;Y("endReadable",i.endEmitted),i.endEmitted||(i.ended=!0,o.nextTick(K,i,e))}function K(e,i){if(Y("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,i.readable=!1,i.emit("end"),e.autoDestroy)){var c=i._writableState;(!c||c.autoDestroy&&c.finished)&&i.destroy()}}function V(e,i){for(var c=0,B=e.length;c<B;c++)if(e[c]===i)return c;return-1}s.exports=l;var rt;l.ReadableState=u;var Y,bt=r("events").EventEmitter,ot=function(e,i){return e.listeners(i).length},gt=r("./internal/streams/stream"),W=r("buffer").Buffer,j=a.Uint8Array||function(){},dt=r("util");Y=dt&&dt.debuglog?dt.debuglog("stream"):function(){};var st,pt,et,St=r("./internal/streams/buffer_list"),yt=r("./internal/streams/destroy"),Mt=r("./internal/streams/state"),_t=Mt.getHighWaterMark,It=r("../errors").codes,Qt=It.ERR_INVALID_ARG_TYPE,N=It.ERR_STREAM_PUSH_AFTER_EOF,k=It.ERR_METHOD_NOT_IMPLEMENTED,x=It.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r("inherits")(l,gt);var F=yt.errorOrDestroy,G=["error","close","destroy","pause","resume"];Object.defineProperty(l.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState!==void 0&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),l.prototype.destroy=yt.destroy,l.prototype._undestroy=yt.undestroy,l.prototype._destroy=function(e,i){i(e)},l.prototype.push=function(e,i){var c,B=this._readableState;return B.objectMode?c=!0:typeof e=="string"&&(i=i||B.defaultEncoding,i!==B.encoding&&(e=W.from(e,i),i=""),c=!0),f(this,e,i,!1,c)},l.prototype.unshift=function(e){return f(this,e,null,!0,!1)},l.prototype.isPaused=function(){return this._readableState.flowing===!1},l.prototype.setEncoding=function(e){st||(st=r("string_decoder/").StringDecoder);var i=new st(e);this._readableState.decoder=i,this._readableState.encoding=this._readableState.decoder.encoding;for(var c=this._readableState.buffer.head,B="";c!==null;)B+=i.write(c.data),c=c.next;return this._readableState.buffer.clear(),B!==""&&this._readableState.buffer.push(B),this._readableState.length=B.length,this},l.prototype.read=function(e){Y("read",e),e=parseInt(e,10);var i=this._readableState,c=e;if(e!==0&&(i.emittedReadable=!1),e===0&&i.needReadable&&((i.highWaterMark===0?0<i.length:i.length>=i.highWaterMark)||i.ended))return Y("read: emitReadable",i.length,i.ended),i.length===0&&i.ended?J(this):C(this),null;if(e=v(e,i),e===0&&i.ended)return i.length===0&&J(this),null;var B=i.needReadable;Y("need readable",B),(i.length===0||i.length-e<i.highWaterMark)&&(B=!0,Y("length less than watermark",B)),i.ended||i.reading?(B=!1,Y("reading or ended",B)):B&&(Y("do read"),i.reading=!0,i.sync=!0,i.length===0&&(i.needReadable=!0),this._read(i.highWaterMark),i.sync=!1,!i.reading&&(e=v(c,i)));var D;return D=0<e?H(e,i):null,D===null?(i.needReadable=i.length<=i.highWaterMark,e=0):(i.length-=e,i.awaitDrain=0),i.length===0&&(!i.ended&&(i.needReadable=!0),c!==e&&i.ended&&J(this)),D!==null&&this.emit("data",D),D},l.prototype._read=function(){F(this,new k("_read()"))},l.prototype.pipe=function(e,i){function c(Pt,Ht){Y("onunpipe"),Pt===Z&&Ht&&Ht.hasUnpiped===!1&&(Ht.hasUnpiped=!0,D())}function B(){Y("onend"),e.end()}function D(){Y("cleanup"),e.removeListener("close",q),e.removeListener("finish",nt),e.removeListener("drain",xt),e.removeListener("error",L),e.removeListener("unpipe",c),Z.removeListener("end",B),Z.removeListener("end",$),Z.removeListener("data",T),Xe=!0,z.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&xt()}function T(Pt){Y("ondata");var Ht=e.write(Pt);Y("dest.write",Ht),Ht===!1&&((z.pipesCount===1&&z.pipes===e||1<z.pipesCount&&V(z.pipes,e)!==-1)&&!Xe&&(Y("false write response, pause",z.awaitDrain),z.awaitDrain++),Z.pause())}function L(Pt){Y("onerror",Pt),$(),e.removeListener("error",L),ot(e,"error")===0&&F(e,Pt)}function q(){e.removeListener("finish",nt),$()}function nt(){Y("onfinish"),e.removeListener("close",q),$()}function $(){Y("unpipe"),Z.unpipe(e)}var Z=this,z=this._readableState;switch(z.pipesCount){case 0:z.pipes=e;break;case 1:z.pipes=[z.pipes,e];break;default:z.pipes.push(e)}z.pipesCount+=1,Y("pipe count=%d opts=%j",z.pipesCount,i);var Ot=(!i||i.end!==!1)&&e!==o.stdout&&e!==o.stderr,jt=Ot?B:$;z.endEmitted?o.nextTick(jt):Z.once("end",jt),e.on("unpipe",c);var xt=_(Z);e.on("drain",xt);var Xe=!1;return Z.on("data",T),A(e,"error",L),e.once("close",q),e.once("finish",nt),e.emit("pipe",Z),z.flowing||(Y("pipe resume"),Z.resume()),e},l.prototype.unpipe=function(e){var i=this._readableState,c={hasUnpiped:!1};if(i.pipesCount===0)return this;if(i.pipesCount===1)return e&&e!==i.pipes?this:(e||(e=i.pipes),i.pipes=null,i.pipesCount=0,i.flowing=!1,e&&e.emit("unpipe",this,c),this);if(!e){var B=i.pipes,D=i.pipesCount;i.pipes=null,i.pipesCount=0,i.flowing=!1;for(var T=0;T<D;T++)B[T].emit("unpipe",this,{hasUnpiped:!1});return this}var L=V(i.pipes,e);return L===-1?this:(i.pipes.splice(L,1),i.pipesCount-=1,i.pipesCount===1&&(i.pipes=i.pipes[0]),e.emit("unpipe",this,c),this)},l.prototype.on=function(e,i){var c=gt.prototype.on.call(this,e,i),B=this._readableState;return e==="data"?(B.readableListening=0<this.listenerCount("readable"),B.flowing!==!1&&this.resume()):e=="readable"&&!B.endEmitted&&!B.readableListening&&(B.readableListening=B.needReadable=!0,B.flowing=!1,B.emittedReadable=!1,Y("on readable",B.length,B.reading),B.length?C(this):!B.reading&&o.nextTick(b,this)),c},l.prototype.addListener=l.prototype.on,l.prototype.removeListener=function(e,i){var c=gt.prototype.removeListener.call(this,e,i);return e==="readable"&&o.nextTick(M,this),c},l.prototype.removeAllListeners=function(e){var i=gt.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&o.nextTick(M,this),i},l.prototype.resume=function(){var e=this._readableState;return e.flowing||(Y("resume"),e.flowing=!e.readableListening,R(this,e)),e.paused=!1,this},l.prototype.pause=function(){return Y("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Y("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},l.prototype.wrap=function(e){var i=this,c=this._readableState,B=!1;for(var D in e.on("end",function(){if(Y("wrapped end"),c.decoder&&!c.ended){var L=c.decoder.end();L&&L.length&&i.push(L)}i.push(null)}),e.on("data",function(L){if(Y("wrapped data"),c.decoder&&(L=c.decoder.write(L)),!(c.objectMode&&L==null)&&(c.objectMode||L&&L.length)){var q=i.push(L);q||(B=!0,e.pause())}}),e)this[D]===void 0&&typeof e[D]=="function"&&(this[D]=(function(L){return function(){return e[L].apply(e,arguments)}})(D));for(var T=0;T<G.length;T++)e.on(G[T],this.emit.bind(this,G[T]));return this._read=function(L){Y("wrapped _read",L),B&&(B=!1,e.resume())},this},typeof Symbol=="function"&&(l.prototype[Symbol.asyncIterator]=function(){return pt===void 0&&(pt=r("./internal/streams/async_iterator")),pt(this)}),Object.defineProperty(l.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(l.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(l.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}}),l._fromList=H,Object.defineProperty(l.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),typeof Symbol=="function"&&(l.from=function(e,i){return et===void 0&&(et=r("./internal/streams/from")),et(l,e,i)})}).call(this)}).call(this,r("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{"../errors":15,"./_stream_duplex":16,"./internal/streams/async_iterator":21,"./internal/streams/buffer_list":22,"./internal/streams/destroy":23,"./internal/streams/from":25,"./internal/streams/state":27,"./internal/streams/stream":28,_process:12,buffer:3,events:7,inherits:10,"string_decoder/":31,util:2}],19:[function(r,s){"use strict";function o(m,v){var h=this._transformState;h.transforming=!1;var C=h.writecb;if(C===null)return this.emit("error",new l);h.writechunk=null,h.writecb=null,v!=null&&this.push(v),C(m);var E=this._readableState;E.reading=!1,(E.needReadable||E.length<E.highWaterMark)&&this._read(E.highWaterMark)}function a(m){return this instanceof a?(w.call(this,m),this._transformState={afterTransform:o.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,m&&(typeof m.transform=="function"&&(this._transform=m.transform),typeof m.flush=="function"&&(this._flush=m.flush)),void this.on("prefinish",g)):new a(m)}function g(){var m=this;typeof this._flush!="function"||this._readableState.destroyed?I(this,null,null):this._flush(function(v,h){I(m,v,h)})}function I(m,v,h){if(v)return m.emit("error",v);if(h!=null&&m.push(h),m._writableState.length)throw new y;if(m._transformState.transforming)throw new f;return m.push(null)}s.exports=a;var A=r("../errors").codes,u=A.ERR_METHOD_NOT_IMPLEMENTED,l=A.ERR_MULTIPLE_CALLBACK,f=A.ERR_TRANSFORM_ALREADY_TRANSFORMING,y=A.ERR_TRANSFORM_WITH_LENGTH_0,w=r("./_stream_duplex");r("inherits")(a,w),a.prototype.push=function(m,v){return this._transformState.needTransform=!1,w.prototype.push.call(this,m,v)},a.prototype._transform=function(m,v,h){h(new u("_transform()"))},a.prototype._write=function(m,v,h){var C=this._transformState;if(C.writecb=h,C.writechunk=m,C.writeencoding=v,!C.transforming){var E=this._readableState;(C.needTransform||E.needReadable||E.length<E.highWaterMark)&&this._read(E.highWaterMark)}},a.prototype._read=function(){var m=this._transformState;m.writechunk===null||m.transforming?m.needTransform=!0:(m.transforming=!0,this._transform(m.writechunk,m.writeencoding,m.afterTransform))},a.prototype._destroy=function(m,v){w.prototype._destroy.call(this,m,function(h){v(h)})}},{"../errors":15,"./_stream_duplex":16,inherits:10}],20:[function(r,s){(function(o,a){(function(){"use strict";function g(N){var k=this;this.next=null,this.entry=null,this.finish=function(){J(k,N)}}function I(N){return Y.from(N)}function A(N){return Y.isBuffer(N)||N instanceof bt}function u(){}function l(N,k,x){K=K||r("./_stream_duplex"),N=N||{},typeof x!="boolean"&&(x=k instanceof K),this.objectMode=!!N.objectMode,x&&(this.objectMode=this.objectMode||!!N.writableObjectMode),this.highWaterMark=W(this,N,"writableHighWaterMark",x),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var F=N.decodeStrings===!1;this.decodeStrings=!F,this.defaultEncoding=N.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(G){S(k,G)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=N.emitClose!==!1,this.autoDestroy=!!N.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new g(this)}function f(N){K=K||r("./_stream_duplex");var k=this instanceof K;return k||Qt.call(f,this)?(this._writableState=new l(N,this,k),this.writable=!0,N&&(typeof N.write=="function"&&(this._write=N.write),typeof N.writev=="function"&&(this._writev=N.writev),typeof N.destroy=="function"&&(this._destroy=N.destroy),typeof N.final=="function"&&(this._final=N.final)),void rt.call(this)):new f(N)}function y(N,k){var x=new Mt;It(N,x),o.nextTick(k,x)}function w(N,k,x,F){var G;return x===null?G=new yt:typeof x!="string"&&!k.objectMode&&(G=new dt("chunk",["string","Buffer"],x)),!G||(It(N,G),o.nextTick(F,G),!1)}function m(N,k,x){return N.objectMode||N.decodeStrings===!1||typeof k!="string"||(k=Y.from(k,x)),k}function v(N,k,x,F,G,e){if(!x){var i=m(k,F,G);F!==i&&(x=!0,G="buffer",F=i)}var c=k.objectMode?1:F.length;k.length+=c;var B=k.length<k.highWaterMark;if(B||(k.needDrain=!0),k.writing||k.corked){var D=k.lastBufferedRequest;k.lastBufferedRequest={chunk:F,encoding:G,isBuf:x,callback:e,next:null},D?D.next=k.lastBufferedRequest:k.bufferedRequest=k.lastBufferedRequest,k.bufferedRequestCount+=1}else h(N,k,!1,c,F,G,e);return B}function h(N,k,x,F,G,e,i){k.writelen=F,k.writecb=i,k.writing=!0,k.sync=!0,k.destroyed?k.onwrite(new St("write")):x?N._writev(G,k.onwrite):N._write(G,e,k.onwrite),k.sync=!1}function C(N,k,x,F,G){--k.pendingcb,x?(o.nextTick(G,F),o.nextTick(O,N,k),N._writableState.errorEmitted=!0,It(N,F)):(G(F),N._writableState.errorEmitted=!0,It(N,F),O(N,k))}function E(N){N.writing=!1,N.writecb=null,N.length-=N.writelen,N.writelen=0}function S(N,k){var x=N._writableState,F=x.sync,G=x.writecb;if(typeof G!="function")throw new pt;if(E(x),k)C(N,x,F,k,G);else{var e=b(x)||N.destroyed;e||x.corked||x.bufferProcessing||!x.bufferedRequest||M(N,x),F?o.nextTick(Q,N,x,e,G):Q(N,x,e,G)}}function Q(N,k,x,F){x||_(N,k),k.pendingcb--,F(),O(N,k)}function _(N,k){k.length===0&&k.needDrain&&(k.needDrain=!1,N.emit("drain"))}function M(N,k){k.bufferProcessing=!0;var x=k.bufferedRequest;if(N._writev&&x&&x.next){var F=k.bufferedRequestCount,G=Array(F),e=k.corkedRequestsFree;e.entry=x;for(var i=0,c=!0;x;)G[i]=x,x.isBuf||(c=!1),x=x.next,i+=1;G.allBuffers=c,h(N,k,!0,k.length,G,"",e.finish),k.pendingcb++,k.lastBufferedRequest=null,e.next?(k.corkedRequestsFree=e.next,e.next=null):k.corkedRequestsFree=new g(k),k.bufferedRequestCount=0}else{for(;x;){var B=x.chunk,D=x.encoding,T=x.callback,L=k.objectMode?1:B.length;if(h(N,k,!1,L,B,D,T),x=x.next,k.bufferedRequestCount--,k.writing)break}x===null&&(k.lastBufferedRequest=null)}k.bufferedRequest=x,k.bufferProcessing=!1}function b(N){return N.ending&&N.length===0&&N.bufferedRequest===null&&!N.finished&&!N.writing}function R(N,k){N._final(function(x){k.pendingcb--,x&&It(N,x),k.prefinished=!0,N.emit("prefinish"),O(N,k)})}function U(N,k){k.prefinished||k.finalCalled||(typeof N._final!="function"||k.destroyed?(k.prefinished=!0,N.emit("prefinish")):(k.pendingcb++,k.finalCalled=!0,o.nextTick(R,N,k)))}function O(N,k){var x=b(k);if(x&&(U(N,k),k.pendingcb===0&&(k.finished=!0,N.emit("finish"),k.autoDestroy))){var F=N._readableState;(!F||F.autoDestroy&&F.endEmitted)&&N.destroy()}return x}function H(N,k,x){k.ending=!0,O(N,k),x&&(k.finished?o.nextTick(x):N.once("finish",x)),k.ended=!0,N.writable=!1}function J(N,k,x){var F=N.entry;for(N.entry=null;F;){var G=F.callback;k.pendingcb--,G(x),F=F.next}k.corkedRequestsFree.next=N}s.exports=f;var K;f.WritableState=l;var V={deprecate:r("util-deprecate")},rt=r("./internal/streams/stream"),Y=r("buffer").Buffer,bt=a.Uint8Array||function(){},ot=r("./internal/streams/destroy"),gt=r("./internal/streams/state"),W=gt.getHighWaterMark,j=r("../errors").codes,dt=j.ERR_INVALID_ARG_TYPE,st=j.ERR_METHOD_NOT_IMPLEMENTED,pt=j.ERR_MULTIPLE_CALLBACK,et=j.ERR_STREAM_CANNOT_PIPE,St=j.ERR_STREAM_DESTROYED,yt=j.ERR_STREAM_NULL_VALUES,Mt=j.ERR_STREAM_WRITE_AFTER_END,_t=j.ERR_UNKNOWN_ENCODING,It=ot.errorOrDestroy;r("inherits")(f,rt),l.prototype.getBuffer=function(){for(var N=this.bufferedRequest,k=[];N;)k.push(N),N=N.next;return k},(function(){try{Object.defineProperty(l.prototype,"buffer",{get:V.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var Qt;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Qt=Function.prototype[Symbol.hasInstance],Object.defineProperty(f,Symbol.hasInstance,{value:function(N){return!!Qt.call(this,N)||this===f&&N&&N._writableState instanceof l}})):Qt=function(N){return N instanceof this},f.prototype.pipe=function(){It(this,new et)},f.prototype.write=function(N,k,x){var F=this._writableState,G=!1,e=!F.objectMode&&A(N);return e&&!Y.isBuffer(N)&&(N=I(N)),typeof k=="function"&&(x=k,k=null),e?k="buffer":!k&&(k=F.defaultEncoding),typeof x!="function"&&(x=u),F.ending?y(this,x):(e||w(this,F,N,x))&&(F.pendingcb++,G=v(this,F,e,N,k,x)),G},f.prototype.cork=function(){this._writableState.corked++},f.prototype.uncork=function(){var N=this._writableState;N.corked&&(N.corked--,!N.writing&&!N.corked&&!N.bufferProcessing&&N.bufferedRequest&&M(this,N))},f.prototype.setDefaultEncoding=function(N){if(typeof N=="string"&&(N=N.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((N+"").toLowerCase())))throw new _t(N);return this._writableState.defaultEncoding=N,this},Object.defineProperty(f.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(f.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),f.prototype._write=function(N,k,x){x(new st("_write()"))},f.prototype._writev=null,f.prototype.end=function(N,k,x){var F=this._writableState;return typeof N=="function"?(x=N,N=null,k=null):typeof k=="function"&&(x=k,k=null),N!=null&&this.write(N,k),F.corked&&(F.corked=1,this.uncork()),F.ending||H(this,F,x),this},Object.defineProperty(f.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(f.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState!==void 0&&this._writableState.destroyed},set:function(N){this._writableState&&(this._writableState.destroyed=N)}}),f.prototype.destroy=ot.destroy,f.prototype._undestroy=ot.undestroy,f.prototype._destroy=function(N,k){k(N)}}).call(this)}).call(this,r("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{"../errors":15,"./_stream_duplex":16,"./internal/streams/destroy":23,"./internal/streams/state":27,"./internal/streams/stream":28,_process:12,buffer:3,inherits:10,"util-deprecate":32}],21:[function(r,s){(function(o){(function(){"use strict";function a(_,M,b){return M in _?Object.defineProperty(_,M,{value:b,enumerable:!0,configurable:!0,writable:!0}):_[M]=b,_}function g(_,M){return{value:_,done:M}}function I(_){var M=_[y];if(M!==null){var b=_[E].read();b!==null&&(_[h]=null,_[y]=null,_[w]=null,M(g(b,!1)))}}function A(_){o.nextTick(I,_)}function u(_,M){return function(b,R){_.then(function(){return M[v]?void b(g(void 0,!0)):void M[C](b,R)},R)}}var l,f=r("./end-of-stream"),y=Symbol("lastResolve"),w=Symbol("lastReject"),m=Symbol("error"),v=Symbol("ended"),h=Symbol("lastPromise"),C=Symbol("handlePromise"),E=Symbol("stream"),S=Object.getPrototypeOf(function(){}),Q=Object.setPrototypeOf((l={get stream(){return this[E]},next:function(){var _=this,M=this[m];if(M!==null)return Promise.reject(M);if(this[v])return Promise.resolve(g(void 0,!0));if(this[E].destroyed)return new Promise(function(O,H){o.nextTick(function(){_[m]?H(_[m]):O(g(void 0,!0))})});var b,R=this[h];if(R)b=new Promise(u(R,this));else{var U=this[E].read();if(U!==null)return Promise.resolve(g(U,!1));b=new Promise(this[C])}return this[h]=b,b}},a(l,Symbol.asyncIterator,function(){return this}),a(l,"return",function(){var _=this;return new Promise(function(M,b){_[E].destroy(null,function(R){return R?void b(R):void M(g(void 0,!0))})})}),l),S);s.exports=function(_){var M,b=Object.create(Q,(M={},a(M,E,{value:_,writable:!0}),a(M,y,{value:null,writable:!0}),a(M,w,{value:null,writable:!0}),a(M,m,{value:null,writable:!0}),a(M,v,{value:_._readableState.endEmitted,writable:!0}),a(M,C,{value:function(R,U){var O=b[E].read();O?(b[h]=null,b[y]=null,b[w]=null,R(g(O,!1))):(b[y]=R,b[w]=U)},writable:!0}),M));return b[h]=null,f(_,function(R){if(R&&R.code!=="ERR_STREAM_PREMATURE_CLOSE"){var U=b[w];return U!==null&&(b[h]=null,b[y]=null,b[w]=null,U(R)),void(b[m]=R)}var O=b[y];O!==null&&(b[h]=null,b[y]=null,b[w]=null,O(g(void 0,!0))),b[v]=!0}),_.on("readable",A.bind(null,b)),b}}).call(this)}).call(this,r("_process"))},{"./end-of-stream":24,_process:12}],22:[function(r,s){"use strict";function o(h,C){var E=Object.keys(h);if(Object.getOwnPropertySymbols){var S=Object.getOwnPropertySymbols(h);C&&(S=S.filter(function(Q){return Object.getOwnPropertyDescriptor(h,Q).enumerable})),E.push.apply(E,S)}return E}function a(h){for(var C,E=1;E<arguments.length;E++)C=arguments[E]==null?{}:arguments[E],E%2?o(Object(C),!0).forEach(function(S){g(h,S,C[S])}):Object.getOwnPropertyDescriptors?Object.defineProperties(h,Object.getOwnPropertyDescriptors(C)):o(Object(C)).forEach(function(S){Object.defineProperty(h,S,Object.getOwnPropertyDescriptor(C,S))});return h}function g(h,C,E){return C in h?Object.defineProperty(h,C,{value:E,enumerable:!0,configurable:!0,writable:!0}):h[C]=E,h}function I(h,C){if(!(h instanceof C))throw new TypeError("Cannot call a class as a function")}function A(h,C){for(var E,S=0;S<C.length;S++)E=C[S],E.enumerable=E.enumerable||!1,E.configurable=!0,"value"in E&&(E.writable=!0),Object.defineProperty(h,E.key,E)}function u(h,C,E){return C&&A(h.prototype,C),E&&A(h,E),h}function l(h,C,E){y.prototype.copy.call(h,C,E)}var f=r("buffer"),y=f.Buffer,w=r("util"),m=w.inspect,v=m&&m.custom||"inspect";s.exports=(function(){function h(){I(this,h),this.head=null,this.tail=null,this.length=0}return u(h,[{key:"push",value:function(C){var E={data:C,next:null};0<this.length?this.tail.next=E:this.head=E,this.tail=E,++this.length}},{key:"unshift",value:function(C){var E={data:C,next:this.head};this.length===0&&(this.tail=E),this.head=E,++this.length}},{key:"shift",value:function(){if(this.length!==0){var C=this.head.data;return this.head=this.length===1?this.tail=null:this.head.next,--this.length,C}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(C){if(this.length===0)return"";for(var E=this.head,S=""+E.data;E=E.next;)S+=C+E.data;return S}},{key:"concat",value:function(C){if(this.length===0)return y.alloc(0);for(var E=y.allocUnsafe(C>>>0),S=this.head,Q=0;S;)l(S.data,E,Q),Q+=S.data.length,S=S.next;return E}},{key:"consume",value:function(C,E){var S;return C<this.head.data.length?(S=this.head.data.slice(0,C),this.head.data=this.head.data.slice(C)):C===this.head.data.length?S=this.shift():S=E?this._getString(C):this._getBuffer(C),S}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(C){var E=this.head,S=1,Q=E.data;for(C-=Q.length;E=E.next;){var _=E.data,M=C>_.length?_.length:C;if(Q+=M===_.length?_:_.slice(0,C),C-=M,C===0){M===_.length?(++S,this.head=E.next?E.next:this.tail=null):(this.head=E,E.data=_.slice(M));break}++S}return this.length-=S,Q}},{key:"_getBuffer",value:function(C){var E=y.allocUnsafe(C),S=this.head,Q=1;for(S.data.copy(E),C-=S.data.length;S=S.next;){var _=S.data,M=C>_.length?_.length:C;if(_.copy(E,E.length-C,0,M),C-=M,C===0){M===_.length?(++Q,this.head=S.next?S.next:this.tail=null):(this.head=S,S.data=_.slice(M));break}++Q}return this.length-=Q,E}},{key:v,value:function(C,E){return m(this,a({},E,{depth:0,customInspect:!1}))}}]),h})()},{buffer:3,util:2}],23:[function(r,s){(function(o){(function(){"use strict";function a(A,u){I(A,u),g(A)}function g(A){A._writableState&&!A._writableState.emitClose||A._readableState&&!A._readableState.emitClose||A.emit("close")}function I(A,u){A.emit("error",u)}s.exports={destroy:function(A,u){var l=this,f=this._readableState&&this._readableState.destroyed,y=this._writableState&&this._writableState.destroyed;return f||y?(u?u(A):A&&(this._writableState?!this._writableState.errorEmitted&&(this._writableState.errorEmitted=!0,o.nextTick(I,this,A)):o.nextTick(I,this,A)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(A||null,function(w){!u&&w?l._writableState?l._writableState.errorEmitted?o.nextTick(g,l):(l._writableState.errorEmitted=!0,o.nextTick(a,l,w)):o.nextTick(a,l,w):u?(o.nextTick(g,l),u(w)):o.nextTick(g,l)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(A,u){var l=A._readableState,f=A._writableState;l&&l.autoDestroy||f&&f.autoDestroy?A.destroy(u):A.emit("error",u)}}}).call(this)}).call(this,r("_process"))},{_process:12}],24:[function(r,s){"use strict";function o(u){var l=!1;return function(){if(!l){l=!0;for(var f=arguments.length,y=Array(f),w=0;w<f;w++)y[w]=arguments[w];u.apply(this,y)}}}function a(){}function g(u){return u.setHeader&&typeof u.abort=="function"}function I(u,l,f){if(typeof l=="function")return I(u,null,l);l||(l={}),f=o(f||a);var y=l.readable||l.readable!==!1&&u.readable,w=l.writable||l.writable!==!1&&u.writable,m=function(){u.writable||h()},v=u._writableState&&u._writableState.finished,h=function(){w=!1,v=!0,y||f.call(u)},C=u._readableState&&u._readableState.endEmitted,E=function(){y=!1,C=!0,w||f.call(u)},S=function(M){f.call(u,M)},Q=function(){var M;return y&&!C?(u._readableState&&u._readableState.ended||(M=new A),f.call(u,M)):w&&!v?(u._writableState&&u._writableState.ended||(M=new A),f.call(u,M)):void 0},_=function(){u.req.on("finish",h)};return g(u)?(u.on("complete",h),u.on("abort",Q),u.req?_():u.on("request",_)):w&&!u._writableState&&(u.on("end",m),u.on("close",m)),u.on("end",E),u.on("finish",h),l.error!==!1&&u.on("error",S),u.on("close",Q),function(){u.removeListener("complete",h),u.removeListener("abort",Q),u.removeListener("request",_),u.req&&u.req.removeListener("finish",h),u.removeListener("end",m),u.removeListener("close",m),u.removeListener("finish",h),u.removeListener("end",E),u.removeListener("error",S),u.removeListener("close",Q)}}var A=r("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;s.exports=I},{"../../../errors":15}],25:[function(r,s){s.exports=function(){throw new Error("Readable.from is not available in the browser")}},{}],26:[function(r,s){"use strict";function o(v){var h=!1;return function(){h||(h=!0,v.apply(void 0,arguments))}}function a(v){if(v)throw v}function g(v){return v.setHeader&&typeof v.abort=="function"}function I(v,h,C,E){E=o(E);var S=!1;v.on("close",function(){S=!0}),f===void 0&&(f=r("./end-of-stream")),f(v,{readable:h,writable:C},function(_){return _?E(_):(S=!0,void E())});var Q=!1;return function(_){if(!S)return Q?void 0:(Q=!0,g(v)?v.abort():typeof v.destroy=="function"?v.destroy():void E(_||new m("pipe")))}}function A(v){v()}function u(v,h){return v.pipe(h)}function l(v){return v.length&&typeof v[v.length-1]=="function"?v.pop():a}var f,y=r("../../../errors").codes,w=y.ERR_MISSING_ARGS,m=y.ERR_STREAM_DESTROYED;s.exports=function(){for(var v=arguments.length,h=Array(v),C=0;C<v;C++)h[C]=arguments[C];var E=l(h);if(Array.isArray(h[0])&&(h=h[0]),2>h.length)throw new w("streams");var S,Q=h.map(function(_,M){var b=M<h.length-1;return I(_,b,0<M,function(R){S||(S=R),R&&Q.forEach(A),b||(Q.forEach(A),E(S))})});return h.reduce(u)}},{"../../../errors":15,"./end-of-stream":24}],27:[function(r,s){"use strict";function o(g,I,A){return g.highWaterMark==null?I?g[A]:null:g.highWaterMark}var a=r("../../../errors").codes.ERR_INVALID_OPT_VALUE;s.exports={getHighWaterMark:function(g,I,A,u){var l=o(I,u,A);if(l!=null){if(!(isFinite(l)&&p(l)===l)||0>l){var f=u?A:"highWaterMark";throw new a(f,l)}return p(l)}return g.objectMode?16:16384}}},{"../../../errors":15}],28:[function(r,s){s.exports=r("events").EventEmitter},{events:7}],29:[function(r,s,o){o=s.exports=r("./lib/_stream_readable.js"),o.Stream=o,o.Readable=o,o.Writable=r("./lib/_stream_writable.js"),o.Duplex=r("./lib/_stream_duplex.js"),o.Transform=r("./lib/_stream_transform.js"),o.PassThrough=r("./lib/_stream_passthrough.js"),o.finished=r("./lib/internal/streams/end-of-stream.js"),o.pipeline=r("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":16,"./lib/_stream_passthrough.js":17,"./lib/_stream_readable.js":18,"./lib/_stream_transform.js":19,"./lib/_stream_writable.js":20,"./lib/internal/streams/end-of-stream.js":24,"./lib/internal/streams/pipeline.js":26}],30:[function(r,s,o){function a(u,l){for(var f in u)l[f]=u[f]}function g(u,l,f){return A(u,l,f)}var I=r("buffer"),A=I.Buffer;A.from&&A.alloc&&A.allocUnsafe&&A.allocUnsafeSlow?s.exports=I:(a(I,o),o.Buffer=g),g.prototype=Object.create(A.prototype),a(A,g),g.from=function(u,l,f){if(typeof u=="number")throw new TypeError("Argument must not be a number");return A(u,l,f)},g.alloc=function(u,l,f){if(typeof u!="number")throw new TypeError("Argument must be a number");var y=A(u);return l===void 0?y.fill(0):typeof f=="string"?y.fill(l,f):y.fill(l),y},g.allocUnsafe=function(u){if(typeof u!="number")throw new TypeError("Argument must be a number");return A(u)},g.allocUnsafeSlow=function(u){if(typeof u!="number")throw new TypeError("Argument must be a number");return I.SlowBuffer(u)}},{buffer:3}],31:[function(r,s,o){"use strict";function a(Q){if(!Q)return"utf8";for(var _;;)switch(Q){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return Q;default:if(_)return;Q=(""+Q).toLowerCase(),_=!0}}function g(Q){var _=a(Q);if(typeof _!="string"&&(E.isEncoding===S||!S(Q)))throw new Error("Unknown encoding: "+Q);return _||Q}function I(Q){this.encoding=g(Q);var _;switch(this.encoding){case"utf16le":this.text=y,this.end=w,_=4;break;case"utf8":this.fillLast=f,_=4;break;case"base64":this.text=m,this.end=v,_=3;break;default:return this.write=h,void(this.end=C)}this.lastNeed=0,this.lastTotal=0,this.lastChar=E.allocUnsafe(_)}function A(Q){return 127>=Q?0:Q>>5==6?2:Q>>4==14?3:Q>>3==30?4:Q>>6==2?-1:-2}function u(Q,_,M){var b=_.length-1;if(b<M)return 0;var R=A(_[b]);return 0<=R?(0<R&&(Q.lastNeed=R-1),R):--b<M||R===-2?0:(R=A(_[b]),0<=R?(0<R&&(Q.lastNeed=R-2),R):--b<M||R===-2?0:(R=A(_[b]),0<=R?(0<R&&(R===2?R=0:Q.lastNeed=R-3),R):0))}function l(Q,_){if((192&_[0])!=128)return Q.lastNeed=0,"\uFFFD";if(1<Q.lastNeed&&1<_.length){if((192&_[1])!=128)return Q.lastNeed=1,"\uFFFD";if(2<Q.lastNeed&&2<_.length&&(192&_[2])!=128)return Q.lastNeed=2,"\uFFFD"}}function f(Q){var _=this.lastTotal-this.lastNeed,M=l(this,Q,_);return M===void 0?this.lastNeed<=Q.length?(Q.copy(this.lastChar,_,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(Q.copy(this.lastChar,_,0,Q.length),void(this.lastNeed-=Q.length)):M}function y(Q,_){if((Q.length-_)%2==0){var M=Q.toString("utf16le",_);if(M){var b=M.charCodeAt(M.length-1);if(55296<=b&&56319>=b)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=Q[Q.length-2],this.lastChar[1]=Q[Q.length-1],M.slice(0,-1)}return M}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=Q[Q.length-1],Q.toString("utf16le",_,Q.length-1)}function w(Q){var _=Q&&Q.length?this.write(Q):"";if(this.lastNeed){var M=this.lastTotal-this.lastNeed;return _+this.lastChar.toString("utf16le",0,M)}return _}function m(Q,_){var M=(Q.length-_)%3;return M==0?Q.toString("base64",_):(this.lastNeed=3-M,this.lastTotal=3,M==1?this.lastChar[0]=Q[Q.length-1]:(this.lastChar[0]=Q[Q.length-2],this.lastChar[1]=Q[Q.length-1]),Q.toString("base64",_,Q.length-M))}function v(Q){var _=Q&&Q.length?this.write(Q):"";return this.lastNeed?_+this.lastChar.toString("base64",0,3-this.lastNeed):_}function h(Q){return Q.toString(this.encoding)}function C(Q){return Q&&Q.length?this.write(Q):""}var E=r("safe-buffer").Buffer,S=E.isEncoding||function(Q){switch(Q=""+Q,Q&&Q.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};o.StringDecoder=I,I.prototype.write=function(Q){if(Q.length===0)return"";var _,M;if(this.lastNeed){if(_=this.fillLast(Q),_===void 0)return"";M=this.lastNeed,this.lastNeed=0}else M=0;return M<Q.length?_?_+this.text(Q,M):this.text(Q,M):_||""},I.prototype.end=function(Q){var _=Q&&Q.length?this.write(Q):"";return this.lastNeed?_+"\uFFFD":_},I.prototype.text=function(Q,_){var M=u(this,Q,_);if(!this.lastNeed)return Q.toString("utf8",_);this.lastTotal=M;var b=Q.length-(M-this.lastNeed);return Q.copy(this.lastChar,0,b),Q.toString("utf8",_,b)},I.prototype.fillLast=function(Q){return this.lastNeed<=Q.length?(Q.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(Q.copy(this.lastChar,this.lastTotal-this.lastNeed,0,Q.length),void(this.lastNeed-=Q.length))}},{"safe-buffer":30}],32:[function(r,s){(function(o){(function(){function a(g){try{if(!o.localStorage)return!1}catch{return!1}var I=o.localStorage[g];return I!=null&&(I+"").toLowerCase()==="true"}s.exports=function(g,I){function A(){if(!u){if(a("throwDeprecation"))throw new Error(I);a("traceDeprecation")?console.trace(I):console.warn(I),u=!0}return g.apply(this,arguments)}if(a("noDeprecation"))return g;var u=!1;return A}}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],"/":[function(r,s){function o(v){return v.replace(/a=ice-options:trickle\s\n/g,"")}function a(v){console.warn(v)}let g=r("debug")("simple-peer"),I=r("get-browser-rtc"),A=r("randombytes"),u=r("readable-stream"),l=r("queue-microtask"),f=r("err-code"),{Buffer:y}=r("buffer"),w=65536;class m extends u.Duplex{constructor(h){if(h=Object.assign({allowHalfOpen:!1},h),super(h),this._id=A(4).toString("hex").slice(0,7),this._debug("new peer %o",h),this.channelName=h.initiator?h.channelName||A(20).toString("hex"):null,this.initiator=h.initiator||!1,this.channelConfig=h.channelConfig||m.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},m.config,h.config),this.offerOptions=h.offerOptions||{},this.answerOptions=h.answerOptions||{},this.sdpTransform=h.sdpTransform||(C=>C),this.streams=h.streams||(h.stream?[h.stream]:[]),this.trickle=h.trickle===void 0||h.trickle,this.allowHalfTrickle=h.allowHalfTrickle!==void 0&&h.allowHalfTrickle,this.iceCompleteTimeout=h.iceCompleteTimeout||5e3,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=h.wrtc&&typeof h.wrtc=="object"?h.wrtc:I(),!this._wrtc)throw f(typeof window>"u"?new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"):new Error("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(C){return void this.destroy(f(C,"ERR_PC_CONSTRUCTOR"))}this._isReactNativeWebrtc=typeof this._pc._peerConnectionId=="number",this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=C=>{this._onIceCandidate(C)},typeof this._pc.peerIdentity=="object"&&this._pc.peerIdentity.catch(C=>{this.destroy(f(C,"ERR_PC_PEER_IDENTITY"))}),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=C=>{this._setupData(C)},this.streams&&this.streams.forEach(C=>{this.addStream(C)}),this._pc.ontrack=C=>{this._onTrack(C)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&this._channel.readyState==="open"}address(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(h){if(!this.destroying){if(this.destroyed)throw f(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if(typeof h=="string")try{h=JSON.parse(h)}catch{h={}}this._debug("signal()"),h.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),h.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(h.transceiverRequest.kind,h.transceiverRequest.init)),h.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(h.candidate):this._pendingCandidates.push(h.candidate)),h.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(h)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(C=>{this._addIceCandidate(C)}),this._pendingCandidates=[],this._pc.remoteDescription.type==="offer"&&this._createAnswer())}).catch(C=>{this.destroy(f(C,"ERR_SET_REMOTE_DESCRIPTION"))}),h.sdp||h.candidate||h.renegotiate||h.transceiverRequest||this.destroy(f(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(h){let C=new this._wrtc.RTCIceCandidate(h);this._pc.addIceCandidate(C).catch(E=>{!C.address||C.address.endsWith(".local")?a("Ignoring unsupported ICE candidate."):this.destroy(f(E,"ERR_ADD_ICE_CANDIDATE"))})}send(h){if(!this.destroying){if(this.destroyed)throw f(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(h)}}addTransceiver(h,C){if(!this.destroying){if(this.destroyed)throw f(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(h,C),this._needsNegotiation()}catch(E){this.destroy(f(E,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:h,init:C}})}}addStream(h){if(!this.destroying){if(this.destroyed)throw f(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),h.getTracks().forEach(C=>{this.addTrack(C,h)})}}addTrack(h,C){if(this.destroying)return;if(this.destroyed)throw f(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");let E=this._senderMap.get(h)||new Map,S=E.get(C);if(!S)S=this._pc.addTrack(h,C),E.set(C,S),this._senderMap.set(h,E),this._needsNegotiation();else throw S.removed?f(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):f(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED")}replaceTrack(h,C,E){if(this.destroying)return;if(this.destroyed)throw f(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");let S=this._senderMap.get(h),Q=S?S.get(E):null;if(!Q)throw f(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");C&&this._senderMap.set(C,S),Q.replaceTrack==null?this.destroy(f(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK")):Q.replaceTrack(C)}removeTrack(h,C){if(this.destroying)return;if(this.destroyed)throw f(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");let E=this._senderMap.get(h),S=E?E.get(C):null;if(!S)throw f(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{S.removed=!0,this._pc.removeTrack(S)}catch(Q){Q.name==="NS_ERROR_UNEXPECTED"?this._sendersAwaitingStable.push(S):this.destroy(f(Q,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(h){if(!this.destroying){if(this.destroyed)throw f(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),h.getTracks().forEach(C=>{this.removeTrack(C,h)})}}_needsNegotiation(){this._debug("_needsNegotiation"),this._batchedNegotiation||(this._batchedNegotiation=!0,l(()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1}))}negotiate(){if(!this.destroying){if(this.destroyed)throw f(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout(()=>{this._createOffer()},0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}destroy(h){this._destroy(h,()=>{})}_destroy(h,C){this.destroyed||this.destroying||(this.destroying=!0,this._debug("destroying (error: %s)",h&&(h.message||h)),l(()=>{if(this.destroyed=!0,this.destroying=!1,this._debug("destroy (error: %s)",h&&(h.message||h)),this.readable=this.writable=!1,this._readableState.ended||this.push(null),this._writableState.finished||this.end(),this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=null,this._channel){try{this._channel.close()}catch{}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch{}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,h&&this.emit("error",h),this.emit("close"),C()}))}_setupData(h){if(!h.channel)return this.destroy(f(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=h.channel,this._channel.binaryType="arraybuffer",typeof this._channel.bufferedAmountLowThreshold=="number"&&(this._channel.bufferedAmountLowThreshold=w),this.channelName=this._channel.label,this._channel.onmessage=E=>{this._onChannelMessage(E)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=E=>{let S=E.error instanceof Error?E.error:new Error(`Datachannel error: ${E.message} ${E.filename}:${E.lineno}:${E.colno}`);this.destroy(f(S,"ERR_DATA_CHANNEL"))};let C=!1;this._closingInterval=setInterval(()=>{this._channel&&this._channel.readyState==="closing"?(C&&this._onChannelClose(),C=!0):C=!1},5e3)}_read(){}_write(h,C,E){if(this.destroyed)return E(f(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(h)}catch(S){return this.destroy(f(S,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>w?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=E):E(null)}else this._debug("write before connect"),this._chunk=h,this._cb=E}_onFinish(){if(!this.destroyed){let h=()=>{setTimeout(()=>this.destroy(),1e3)};this._connected?h():this.once("connect",h)}}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimer=setTimeout(()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))},this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then(h=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(h.sdp=o(h.sdp)),h.sdp=this.sdpTransform(h.sdp);let C=()=>{if(!this.destroyed){let E=this._pc.localDescription||h;this._debug("signal"),this.emit("signal",{type:E.type,sdp:E.sdp})}};this._pc.setLocalDescription(h).then(()=>{this._debug("createOffer success"),this.destroyed||(this.trickle||this._iceComplete?C():this.once("_iceComplete",C))}).catch(E=>{this.destroy(f(E,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(h=>{this.destroy(f(h,"ERR_CREATE_OFFER"))})}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(h=>{h.mid||!h.sender.track||h.requested||(h.requested=!0,this.addTransceiver(h.sender.track.kind))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(h=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(h.sdp=o(h.sdp)),h.sdp=this.sdpTransform(h.sdp);let C=()=>{if(!this.destroyed){let E=this._pc.localDescription||h;this._debug("signal"),this.emit("signal",{type:E.type,sdp:E.sdp}),this.initiator||this._requestMissingTransceivers()}};this._pc.setLocalDescription(h).then(()=>{this.destroyed||(this.trickle||this._iceComplete?C():this.once("_iceComplete",C))}).catch(E=>{this.destroy(f(E,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(h=>{this.destroy(f(h,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||this._pc.connectionState==="failed"&&this.destroy(f(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;let h=this._pc.iceConnectionState,C=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",h,C),this.emit("iceStateChange",h,C),(h==="connected"||h==="completed")&&(this._pcReady=!0,this._maybeReady()),h==="failed"&&this.destroy(f(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),h==="closed"&&this.destroy(f(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(h){let C=E=>(Object.prototype.toString.call(E.values)==="[object Array]"&&E.values.forEach(S=>{Object.assign(E,S)}),E);this._pc.getStats.length===0||this._isReactNativeWebrtc?this._pc.getStats().then(E=>{let S=[];E.forEach(Q=>{S.push(C(Q))}),h(null,S)},E=>h(E)):0<this._pc.getStats.length?this._pc.getStats(E=>{if(this.destroyed)return;let S=[];E.result().forEach(Q=>{let _={};Q.names().forEach(M=>{_[M]=Q.stat(M)}),_.id=Q.id,_.type=Q.type,_.timestamp=Q.timestamp,S.push(C(_))}),h(null,S)},E=>h(E)):h(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;let h=()=>{this.destroyed||this.getStats((C,E)=>{if(this.destroyed)return;C&&(E=[]);let S={},Q={},_={},M=!1;E.forEach(R=>{(R.type==="remotecandidate"||R.type==="remote-candidate")&&(S[R.id]=R),(R.type==="localcandidate"||R.type==="local-candidate")&&(Q[R.id]=R),(R.type==="candidatepair"||R.type==="candidate-pair")&&(_[R.id]=R)});let b=R=>{M=!0;let U=Q[R.localCandidateId];U&&(U.ip||U.address)?(this.localAddress=U.ip||U.address,this.localPort=+U.port):U&&U.ipAddress?(this.localAddress=U.ipAddress,this.localPort=+U.portNumber):typeof R.googLocalAddress=="string"&&(U=R.googLocalAddress.split(":"),this.localAddress=U[0],this.localPort=+U[1]),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let O=S[R.remoteCandidateId];O&&(O.ip||O.address)?(this.remoteAddress=O.ip||O.address,this.remotePort=+O.port):O&&O.ipAddress?(this.remoteAddress=O.ipAddress,this.remotePort=+O.portNumber):typeof R.googRemoteAddress=="string"&&(O=R.googRemoteAddress.split(":"),this.remoteAddress=O[0],this.remotePort=+O[1]),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPort,this.remoteAddress,this.remotePort)};if(E.forEach(R=>{R.type==="transport"&&R.selectedCandidatePairId&&b(_[R.selectedCandidatePairId]),(R.type==="googCandidatePair"&&R.googActiveConnection==="true"||(R.type==="candidatepair"||R.type==="candidate-pair")&&R.selected)&&b(R)}),!M&&(!Object.keys(_).length||Object.keys(Q).length))return void setTimeout(h,100);if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(U){return this.destroy(f(U,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');let R=this._cb;this._cb=null,R(null)}typeof this._channel.bufferedAmountLowThreshold!="number"&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")})};h()}_onInterval(){this._cb&&this._channel&&!(this._channel.bufferedAmount>w)&&this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||(this._pc.signalingState==="stable"&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(h=>{this._pc.removeTrack(h),this._queuedNegotiation=!0}),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(h){this.destroyed||(h.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:h.candidate.candidate,sdpMLineIndex:h.candidate.sdpMLineIndex,sdpMid:h.candidate.sdpMid}}):!h.candidate&&!this._iceComplete&&(this._iceComplete=!0,this.emit("_iceComplete")),h.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(h){if(this.destroyed)return;let C=h.data;C instanceof ArrayBuffer&&(C=y.from(C)),this.push(C)}_onChannelBufferedAmountLow(){if(!this.destroyed&&this._cb){this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);let h=this._cb;this._cb=null,h(null)}}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.destroy())}_onTrack(h){this.destroyed||h.streams.forEach(C=>{this._debug("on track"),this.emit("track",h.track,C),this._remoteTracks.push({track:h.track,stream:C}),this._remoteStreams.some(E=>E.id===C.id)||(this._remoteStreams.push(C),l(()=>{this._debug("on stream"),this.emit("stream",C)}))})}_debug(){let h=[].slice.call(arguments);h[0]="["+this._id+"] "+h[0],g.apply(null,h)}}m.WEBRTC_SUPPORT=!!I(),m.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},m.channelConfig={},s.exports=m},{buffer:3,debug:4,"err-code":6,"get-browser-rtc":8,"queue-microtask":13,randombytes:14,"readable-stream":29}]},{},[])("/")})});var Ze=On((yi,$e)=>{"use strict";$e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}});var zt,Et,at,Rt,X,ft,At,ct,ut,it,ze,wt=Yt(async()=>{zt=typeof window>"u";zt||(await Promise.resolve().then(()=>(Ve(),Hn))).default;Et={AVOID_INTERVALS:!1,USE_TEST_TRANSPORTS:!1,ICE_DELAY:{min:250,max:3e3},ICE_OFFER_FAILURE_RATE:.2,ICE_ANSWER_FAILURE_RATE:.15,AVOID_FOLLOWERS_NODES:!1,AUTO_START:!0,PUBLIC_PEERS_COUNT:100,PEERS_COUNT:1860,BOOTSTRAPS_PER_PEER:10,DELAY_BETWEEN_INIT:10,RANDOM_UNICAST_PER_SEC:0,RANDOM_GOSSIP_PER_SEC:0,DIFFUSION_TEST_DELAY:1e4},at={DEFAULT_VERBOSE:2,CONNECTION_UPGRADE_TIMEOUT:15e3,IS_BROWSER:!zt,MANUAL_BAN_MODE:!1},Rt={PORT:8080,AUTO_KICK_DELAY:6e4,AUTO_KICK_DURATION:3e4,MAX_WS_IN_CONNS:20},X={DIFFICULTY:0,ARGON2_MEM:2**16,ARE_IDS_HEX:!0,PUBLIC_PREFIX:"0",STANDARD_PREFIX:"1",ID_LENGTH:16,PUBKEY_LENGTH:32,PRIVATEKEY_LENGTH:32,SIGNATURE_LENGTH:64},ft={CENTRALIZED_STUN_SERVERS:!1,MAX_SDP_OFFERS:2,ICE_COMPLETE_TIMEOUT:1e3,SIGNAL_CREATION_TIMEOUT:8e3,SDP_OFFER_EXPIRATION:4e4,WS_CLIENT:WebSocket,WS_SERVER:zt?(await Promise.resolve().then(()=>Pn(Ze(),1))).WebSocketServer:null,PEER:zt?(await import("simple-peer")).default:window.SimplePeer},At={PEER_LINK_DELAY:1e4,PEER_LINK_EXPIRATION:6e4,LOOP_DELAY:2500,TARGET_NEIGHBORS_COUNT:5,ON_CONNECT_DISPATCH:{DELAY:0,BROADCAST_EVENT:!1,OVER_NEIGHBORED:!0,SHARE_HISTORY:!1},ON_DISCONNECT_DISPATCH:{DELAY:0,BROADCAST_EVENT:!1},ON_UNICAST:{DIGEST_TRAVELED_ROUTE:!0}},ct={MAX_HOPS:8,MAX_NODES:256,MAX_ROUTES:5,MARKERS_BYTES:{message:0,0:"message",handshake:1,1:"handshake",signal_answer:2,2:"signal_answer",signal_offer:3,3:"signal_offer"}},ut={EXPIRATION:1e4,CACHE_DURATION:2e4,HOPS:{default:20,signal_offer:6,diffusion_test:100,over_neighbored:6},TRANSMISSION_RATE:{MIN_NEIGHBOURS_TO_APPLY_PONDERATION:2,NEIGHBOURS_PONDERATION:5,Default:1,signal_offer:.618},MARKERS_BYTES:{gossip:128,128:"gossip",signal_offer:129,129:"signal_offer",peer_connected:130,130:"peer_connected",peer_disconnected:131,131:"peer_disconnected",diffusion_test:132,132:"diffusion_test",over_neighbored:133,133:"over_neighbored"}},it={SIMULATOR:"color: yellow; font-weight: bold;",ARBITER:"color: white;",CRYPTO_CODEX:"color: green;",GOSSIP:"color: fuchsia;",UNICAST:"color: cyan;",PEER_STORE:"color: orange;",SERVICE:"color: teal;",PUNISHER:{BAN:"color: red; font-weight: bold;",KICK:"color: darkorange; font-weight: bold;"}},ze={SIMULATION:Et,NODE:at,TRANSPORTS:ft,DISCOVERY:At,IDENTITY:X,UNICAST:ct,GOSSIP:ut,LOG_CSS:it}});var ie,re,en=Yt(async()=>{await wt();ie=class{sandbox;SIGNAL_OFFER_TIMEOUT=3e4;SIGNAL_ANSWER_TIMEOUT=1e4;PENDING_OFFERS={};PENDING_ANSWERS={};sdpToBuild=[];signalsToDigest=[];constructor(t){this.sandbox=t}tick(){let t=Date.now();this.#e(t);let n=this.sdpToBuild;this.sdpToBuild=[];for(let{transportId:s,type:o,time:a}of n){if(a>t){this.sdpToBuild.push({transportId:s,type:o,time:a});continue}let g=this.sandbox.transportInstances[s];if(!g||g.destroying||g.destroyed)continue;let{success:I,signalData:A,reason:u}=this.#t(s,o);!I||!A?g.dispatchError(u||`Failed to build SDP for peer: ${this.id}`):g.callbacks.signal?.forEach(l=>l(A))}let r=this.signalsToDigest;this.signalsToDigest=[];for(let{signalData:s,receiverId:o}of r){let a=this.sandbox.transportInstances[o];if(!a||a.destroying||a.destroyed)continue;let{success:g,reason:I}=this.#n(s,o);g||a.dispatchError(I||`Failed to digest signal for peer: ${this.id}`)}}#e(t=Date.now()){for(let n in this.PENDING_OFFERS)for(let r in this.PENDING_OFFERS[n])t>this.PENDING_OFFERS[n][r].expiration&&delete this.PENDING_OFFERS[n][r];for(let n in this.PENDING_ANSWERS){let r=this.PENDING_ANSWERS[n];t>r.expiration&&delete this.PENDING_ANSWERS[n]}}#t(t,n){if(n!=="offer"&&n!=="answer")return{success:!1,signalData:null,reason:`Invalid signal type: ${n}.`};if(n==="answer"&&this.PENDING_ANSWERS[t])return{success:!1,signalData:null,reason:`There is already a pending answer for transport ID: ${t}`};let r=n==="offer"?this.SIGNAL_OFFER_TIMEOUT:this.SIGNAL_ANSWER_TIMEOUT||1e4,s=Math.random().toString(36).substring(2),o={transportId:t,expiration:Date.now()+r,type:n,sdp:{id:s,v:"0",o:`- ${Math.random().toString(36).substring(2)} ${Math.floor(Math.random()*1e6)} 2 IN IP4 127.0.0.1\r
3
- `,s:"-",t:"0 0",a:["group:BUNDLE..."]}};return n==="offer"&&this.PENDING_OFFERS[t]?.[s]?{success:!1,signalData:null,reason:`There is already a pending offer with the same SDP ID for transport ID: ${t} (extreme case)`}:(n==="offer"&&!this.PENDING_OFFERS[t]&&(this.PENDING_OFFERS[t]={}),n==="offer"&&(this.PENDING_OFFERS[t][s]=o),n==="answer"&&(this.PENDING_ANSWERS[t]=o),{success:!0,signalData:o,reason:"na"})}#n(t,n){let{transportId:r,type:s,sdp:o}=t;if(r===void 0)return{success:!1,reason:"Missing transportId in signal data."};if(s!=="offer"&&s!=="answer")return{success:!1,reason:`Invalid signal type: ${s}.`};if(s==="offer"&&(!this.PENDING_OFFERS[r]||!this.PENDING_OFFERS[r][o.id]))return{success:!1,reason:`No pending offer found for transport ID: ${r} with SDP ID: ${o.id}`};if(s==="answer"&&(!this.PENDING_ANSWERS[r]||this.PENDING_ANSWERS[r].sdp.id!==o.id))return{success:!1,reason:`No pending answer found for transport ID: ${r} with SDP ID: ${o.id}`};if(s==="offer"&&Math.random()<Et.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${r} to ${n}`};if(s==="answer"&&Math.random()<Et.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${r} to ${n}`};if(s==="offer")return this.buildSDP(n,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[n],delete this.PENDING_ANSWERS[r];let a=this.sandbox.linkInstances(n,r);return{success:!a,reason:a||"na"}}buildSDP(t,n){let r={min:Et.ICE_DELAY.min,max:Et.ICE_DELAY.max},s=Math.floor(Math.random()*(r.max-r.min+1))+r.min;this.sdpToBuild.push({transportId:t,type:n,time:Date.now()+s})}digestSignal(t,n){this.signalsToDigest.push({signalData:t,receiverId:n})}},re=class{verbose=at.DEFAULT_VERBOSE;wsGlobalIndex=1;tGlobalIndex=1;transportInstances={};wsConnections={};publicWsServers={};inscribeWebSocketServer(t,n){this.publicWsServers[t]=n}removeWebSocketServer(t){delete this.publicWsServers[t]}inscribeWsConnection(t){let n=(this.wsGlobalIndex++).toString();t.id=n,this.wsConnections[n]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed wsConnection: ${t.id}`)}connectToWebSocketServer(t,n,r){let s=this.wsConnections[n],o=this.publicWsServers[t];if(!s||!o||o.closing||o.clients.size>=o.maxClients)return;let a=new r(o,n);o.clients.add(a),a.init(s.id),o.callbacks.connection.forEach(g=>g(a)),s.init(a.id)}inscribeInstance(t){let n=(this.tGlobalIndex++).toString();t.id=n,this.transportInstances[n]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed transport: ${n}`)}linkInstances(t,n){let[r,s]=[this.transportInstances[t],this.transportInstances[n]];if(!r||!s)return`Missing transport instances: ${t}=>${!!r}, ${n}=>${!!s}`;if(r.initiator&&s.initiator)return`Both transport instances cannot be initiators: ${t}, ${n}`;if(r.destroying||s.destroying)return`One of the transport instances is destroying: ${t}=>${r.destroying}, ${n}=>${s.destroying}`;if(r.destroyed||s.destroyed)return`One of the transport instances is destroyed: ${t}=>${r.destroyed}, ${n}=>${s.destroyed}`;if(r.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${r.remoteId}`;if(s.remoteId)return`Transport instance tB: ${n} is already linked to remoteId: ${s.remoteId}`;r.remoteId=n,s.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${n}`),r.callbacks.connect.forEach(o=>o()),s.callbacks.connect.forEach(o=>o())}sendData(t,n,r){if(t===void 0)return{success:!1,reason:`Cannot send message from id: ${t}`};if(n===void 0)return{success:!1,reason:`Cannot send message to id: ${n}`};let s=this.transportInstances[t];if(!s)return{success:!1,reason:`No transport instance found for id: ${t}`};if(!s.remoteId)return{success:!1,reason:`Transport instance ${t} is not linked to any remoteId`};if(s.id!==t)return{success:!1,reason:`Wrong id for senderInstance ${t} !== ${s.id}`};if(s.remoteId!==n)return{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${n}`};let o=this.transportInstances[n];return o?o.remoteId?o.id!==n?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${n}`}:o.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${n}`}:(this.enqueueTransportData(t,n,r),{success:!0,reason:"na"}):{success:!1,reason:`Transport instance ${n} is not linked to any remoteId`}:{success:!1,reason:`No transport instance found for id: ${n}`}}destroyTransportAndAssociatedTransport(t){let n=this.transportInstances[t];if(!n)return;let r=n.remoteId,s=r?this.transportInstances[r]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),n&&s&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${r}`),delete this.transportInstances[r],s.destroy(`Remote transport instance ${t} closed the connection.`)),delete this.transportInstances[t],n.close()}batchSize=2500;messageQueueSync=[];queueIndex=0;messageQueue=new Array(1e5);queueStart=0;queueEnd=0;queueCount=0;processMessageQueueSync(){let t=this.messageQueueSync.length;if(t===0)return;let n=this.batchSize;t>this.batchSize*3&&(n=this.batchSize*1.5),t>this.batchSize*5&&(n=this.batchSize*2),t>this.batchSize*10&&(n=this.batchSize*3),t>this.batchSize*20&&(n=this.batchSize*5),n=Math.round(n);let r=Math.min(this.queueIndex+n,t);for(let o=this.queueIndex;o<r;o++){let[a,g,I,A]=this.messageQueueSync[o];a==="transport_data"?this.#e(g,I,A):a==="ws_message"&&this.#t(g,I,A)}if(this.queueIndex=r,this.queueIndex<5e3)return;let s=this.messageQueueSync.length>5e4;s&&console.warn(`[SANDBOX] Message queue is very long: ${this.messageQueueSync.length} messages pending.`),s&&(this.queueIndex+=this.batchSize),this.messageQueueSync=this.messageQueueSync.slice(this.queueIndex),this.queueIndex=0}async processMessageQueue(){if(this.queueCount===0)return;let t=this.batchSize;this.queueCount>this.batchSize*3&&(t=this.batchSize*1.5),this.queueCount>this.batchSize*5&&(t=this.batchSize*2),this.queueCount>this.batchSize*10&&(t=this.batchSize*3),this.queueCount>this.batchSize*20&&(t=this.batchSize*5);let n=Math.min(t,this.queueCount);for(let r=0;r<n;r++){let s=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[o,a,g,I]=s;o==="transport_data"?this.#e(a,g,I):o==="ws_message"&&this.#t(a,g,I)}await new Promise(r=>setTimeout(r,0)),this.queueCount-=n}#e(t,n,r){let[s,o]=[this.transportInstances[t],this.transportInstances[n]];if(!s||!o||s.destroying||o.destroying){s?.close(),o?.close();return}if(s.destroyed){o.close();return}if(o.destroyed){s.close();return}for(let a of o.callbacks.data)a(r)}#t(t,n,r){let[s,o]=[this.wsConnections[t],this.wsConnections[n]];if(!o||!s||o.readyState!==1||s.readyState!==1){o?.close(),s?.close();return}if(o.onmessage)o.onmessage({data:r});else for(let a of o.callbacks.message)a(r)}enqueueTransportDataSync(t,n,r){this.messageQueueSync.push(["transport_data",t,n,r])}enqueueWsMessageSync(t,n,r){this.messageQueueSync.push(["ws_message",t,n,r])}enqueueTransportData(t,n,r){this.messageQueue[this.queueEnd]=["transport_data",t,n,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}enqueueWsMessage(t,n,r){this.messageQueue[this.queueEnd]=["ws_message",t,n,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}}});var oe={};we(oe,{ICE_CANDIDATE_EMITTER:()=>Re,SANDBOX:()=>Ct,TEST_WS_EVENT_MANAGER:()=>se,TestTransport:()=>_e,TestWsConnection:()=>Ae,TestWsServer:()=>Se});var me,Ae,Se,_e,Ct,Re,se,ae=Yt(async()=>{await wt();await en();me=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),n=this.toInit;this.toInit=[];for(let{connId:r,time:s}of n)s>t?this.toInit.push({connId:r,time:s}):this.#e(r)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),n=this.toClose;this.toClose=[];for(let{wsId:r,remoteWsId:s,time:o}of n)o>t?this.toClose.push({wsId:r,remoteWsId:s,time:o}):this.#t(r,s)}cleanerTick(){let t=Date.now();for(let n of Object.values(Ct.publicWsServers))for(let r of n.clients)r.readyState===3&&n.clients.delete(r)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),n=this.toError;this.toError=[];for(let{wsId:r,error:s,time:o}of n)o>t?this.toError.push({wsId:r,error:s,time:o}):Ct.wsConnections[r]?.dispatchError(s)}#e(t){let n=Ct.wsConnections[t];n&&Ct.connectToWebSocketServer(n.url,n.id,Ae)}#t(t,n){let r=Ct.wsConnections[t],s=Ct.wsConnections[n];r?.onclose?.(),s?.onclose?.();for(let o of r?.callbacks?.close||[])o();for(let o of s?.callbacks?.close||[])o()}scheduleInit(t,n=500){this.toInit.push({connId:t,time:Date.now()+n})}scheduleClose(t,n,r=100){this.toClose.push({wsId:t,remoteWsId:n,time:Date.now()+r})}scheduleError(t,n,r=100){this.toError.push({wsId:t,error:n,time:Date.now()+r})}},Ae=class{id;isTestTransport=!0;remoteWsId=null;remoteId=!1;delayBeforeConnectionTry=500;readyState=0;url;callbacks={message:[],close:[],error:[]};onmessage;onopen;onclose;onerror;constructor(t="ws://...",n){Ct.inscribeWsConnection(this),!n&&(this.url=t,se.scheduleInit(this.id,this.delayBeforeConnectionTry))}init(t){if(!this.readyState===3||this.remoteWsId){this.close(),console.error(`WebSocket instance already closed or connected: ${this.id}`),se.scheduleError(this.id,`Failed to connect to WebSocket server at ${this.url}`,1e3);return}this.remoteWsId=t,this.readyState=1,this.onopen&&this.onopen()}on(t,n){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(n)}close(){if(this.readyState===3)return;this.readyState=3;let t=Ct.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&se.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}Ct.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(n=>n(t)),this.onerror&&this.onerror(t)}},Se=class{url;clients=new Set;maxClients=Rt.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,Ct.inscribeWebSocketServer(this.url,this)}on(t,n){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(n)}close(){if(!this.closing){this.closing=!0,Ct.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},_e=class{destroying;destroyed;id=null;isTestTransport=!0;remoteId=null;remoteWsId=!1;callbacks={connect:[],close:[],data:[],signal:[],error:[]};initiator;trickle;wrtc;constructor(t={initiator:!1,trickle:!0,wrtc:null,timeout:5e3}){Ct.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&Re.buildSDP(this.id,"offer")}on(t,n){this.callbacks[t]&&this.callbacks[t].push(n)}dispatchError(t){this.callbacks.error.forEach(n=>n(new Error(t)))}signal(t){if(!this.destroying){if(this.destroyed)throw new Error(`Transport instance already destroyed: ${this.id}`);if(this.remoteId)return this.dispatchError(`Transport instance already connected to a remote ID: ${this.remoteId}`);if(!t.sdp||!t.sdp.id)return this.dispatchError("Invalid remote SDP:",t);if(t.type==="answer"&&!this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an answer.");if(t.type==="offer"&&this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an offer.");Re.digestSignal(t,this.id)}}send(t){let{success:n,reason:r}=Ct.sendData(this.id,this.remoteId,t);n||this.destroy(r)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(n=>n()),Ct.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},Ct=new re,Re=new ie(Ct),se=new me});var Sn={};we(Sn,{Point:()=>vt,etc:()=>ci,getPublicKey:()=>pn,getPublicKeyAsync:()=>Bn,hash:()=>ni,hashes:()=>Ke,keygen:()=>hi,keygenAsync:()=>gi,sign:()=>Ai,signAsync:()=>si,utils:()=>fi,verify:()=>ai,verifyAsync:()=>oi});var cn,Bt,Ie,nn,rn,ve,Fe,Vn,Tt,$t,$n,ht,Zn,zn,ti,mt,pe,hn,gn,Ge,Ft,sn,Le,fn,ei,Lt,un,Ee,Gt,P,ln,dn,In,ni,ke,Me,vt,kt,Jt,En,Oe,Nt,ii,An,ri,Ce,xe,Pe,Cn,He,Ye,Bn,pn,Qn,yn,wn,si,Ai,Je,bn,oi,ai,ci,Ke,qe,hi,gi,fi,Be,ui,mn,Ue,li,on,an,di,_n=Yt(()=>{cn={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Bt,n:Ie,Gx:nn,Gy:rn,a:ve,d:Fe,h:Vn}=cn,Tt=32,$t=64,$n=(...p)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...p)},ht=(p="")=>{let t=new Error(p);throw $n(t,ht),t},Zn=p=>typeof p=="bigint",zn=p=>typeof p=="string",ti=p=>p instanceof Uint8Array||ArrayBuffer.isView(p)&&p.constructor.name==="Uint8Array",mt=(p,t,n="")=>{let r=ti(p),s=p?.length,o=t!==void 0;if(!r||o&&s!==t){let a=n&&`"${n}" `,g=o?` of length ${t}`:"",I=r?`length=${s}`:`type=${typeof p}`;ht(a+"expected Uint8Array"+g+", got "+I)}return p},pe=p=>new Uint8Array(p),hn=p=>Uint8Array.from(p),gn=(p,t)=>p.toString(16).padStart(t,"0"),Ge=p=>Array.from(mt(p)).map(t=>gn(t,2)).join(""),Ft={_0:48,_9:57,A:65,F:70,a:97,f:102},sn=p=>{if(p>=Ft._0&&p<=Ft._9)return p-Ft._0;if(p>=Ft.A&&p<=Ft.F)return p-(Ft.A-10);if(p>=Ft.a&&p<=Ft.f)return p-(Ft.a-10)},Le=p=>{let t="hex invalid";if(!zn(p))return ht(t);let n=p.length,r=n/2;if(n%2)return ht(t);let s=pe(r);for(let o=0,a=0;o<r;o++,a+=2){let g=sn(p.charCodeAt(a)),I=sn(p.charCodeAt(a+1));if(g===void 0||I===void 0)return ht(t);s[o]=g*16+I}return s},fn=()=>globalThis?.crypto,ei=()=>fn()?.subtle??ht("crypto.subtle must be defined, consider polyfill"),Lt=(...p)=>{let t=pe(p.reduce((r,s)=>r+mt(s).length,0)),n=0;return p.forEach(r=>{t.set(r,n),n+=r.length}),t},un=(p=Tt)=>fn().getRandomValues(pe(p)),Ee=BigInt,Gt=(p,t,n,r="bad number: out of range")=>Zn(p)&&t<=p&&p<n?p:ht(r),P=(p,t=Bt)=>{let n=p%t;return n>=0n?n:t+n},ln=p=>P(p,Ie),dn=(p,t)=>{(p===0n||t<=0n)&&ht("no inverse n="+p+" mod="+t);let n=P(p,t),r=t,s=0n,o=1n,a=1n,g=0n;for(;n!==0n;){let I=r/n,A=r%n,u=s-a*I,l=o-g*I;r=n,n=A,s=a,o=g,a=u,g=l}return r===1n?P(s,t):ht("no inverse")},In=p=>{let t=Ke[p];return typeof t!="function"&&ht("hashes."+p+" not set"),t},ni=p=>In("sha512")(p),ke=p=>p instanceof vt?p:ht("Point expected"),Me=2n**256n,vt=class p{static BASE;static ZERO;X;Y;Z;T;constructor(t,n,r,s){let o=Me;this.X=Gt(t,0n,o),this.Y=Gt(n,0n,o),this.Z=Gt(r,1n,o),this.T=Gt(s,0n,o),Object.freeze(this)}static CURVE(){return cn}static fromAffine(t){return new p(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){let r=Fe,s=hn(mt(t,Tt)),o=t[31];s[31]=o&-129;let a=Oe(s);Gt(a,0n,n?Me:Bt);let I=P(a*a),A=P(I-1n),u=P(r*I+1n),{isValid:l,value:f}=ri(A,u);l||ht("bad point: y not sqrt");let y=(f&1n)===1n,w=(o&128)!==0;return!n&&f===0n&&w&&ht("bad point: x==0, isLastByteOdd"),w!==y&&(f=P(-f)),new p(f,a,1n,P(f*a))}static fromHex(t,n){return p.fromBytes(Le(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=ve,n=Fe,r=this;if(r.is0())return ht("bad point: ZERO");let{X:s,Y:o,Z:a,T:g}=r,I=P(s*s),A=P(o*o),u=P(a*a),l=P(u*u),f=P(I*t),y=P(u*P(f+A)),w=P(l+P(n*P(I*A)));if(y!==w)return ht("bad point: equation left != right (1)");let m=P(s*o),v=P(a*g);return m!==v?ht("bad point: equation left != right (2)"):this}equals(t){let{X:n,Y:r,Z:s}=this,{X:o,Y:a,Z:g}=ke(t),I=P(n*g),A=P(o*s),u=P(r*g),l=P(a*s);return I===A&&u===l}is0(){return this.equals(Jt)}negate(){return new p(P(-this.X),this.Y,this.Z,P(-this.T))}double(){let{X:t,Y:n,Z:r}=this,s=ve,o=P(t*t),a=P(n*n),g=P(2n*P(r*r)),I=P(s*o),A=t+n,u=P(P(A*A)-o-a),l=I+a,f=l-g,y=I-a,w=P(u*f),m=P(l*y),v=P(u*y),h=P(f*l);return new p(w,m,h,v)}add(t){let{X:n,Y:r,Z:s,T:o}=this,{X:a,Y:g,Z:I,T:A}=ke(t),u=ve,l=Fe,f=P(n*a),y=P(r*g),w=P(o*l*A),m=P(s*I),v=P((n+r)*(a+g)-f-y),h=P(m-w),C=P(m+w),E=P(y-u*f),S=P(v*h),Q=P(C*E),_=P(v*E),M=P(h*C);return new p(S,Q,M,_)}subtract(t){return this.add(ke(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return Jt;if(Gt(t,1n,Ie),t===1n)return this;if(this.equals(kt))return di(t).p;let r=Jt,s=kt;for(let o=this;t>0n;o=o.double(),t>>=1n)t&1n?r=r.add(o):n&&(s=s.add(o));return r}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:n,Z:r}=this;if(this.equals(Jt))return{x:0n,y:1n};let s=dn(r,Bt);P(r*s)!==1n&&ht("invalid inverse");let o=P(t*s),a=P(n*s);return{x:o,y:a}}toBytes(){let{x:t,y:n}=this.assertValidity().toAffine(),r=En(n);return r[31]|=t&1n?128:0,r}toHex(){return Ge(this.toBytes())}clearCofactor(){return this.multiply(Ee(Vn),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Ie/2n,!1).double();return Ie%2n&&(t=t.add(this)),t.is0()}},kt=new vt(nn,rn,1n,P(nn*rn)),Jt=new vt(0n,1n,1n,0n);vt.BASE=kt;vt.ZERO=Jt;En=p=>Le(gn(Gt(p,0n,Me),$t)).reverse(),Oe=p=>Ee("0x"+Ge(hn(mt(p)).reverse())),Nt=(p,t)=>{let n=p;for(;t-- >0n;)n*=n,n%=Bt;return n},ii=p=>{let n=p*p%Bt*p%Bt,r=Nt(n,2n)*n%Bt,s=Nt(r,1n)*p%Bt,o=Nt(s,5n)*s%Bt,a=Nt(o,10n)*o%Bt,g=Nt(a,20n)*a%Bt,I=Nt(g,40n)*g%Bt,A=Nt(I,80n)*I%Bt,u=Nt(A,80n)*I%Bt,l=Nt(u,10n)*o%Bt;return{pow_p_5_8:Nt(l,2n)*p%Bt,b2:n}},An=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,ri=(p,t)=>{let n=P(t*t*t),r=P(n*n*t),s=ii(p*r).pow_p_5_8,o=P(p*n*s),a=P(t*o*o),g=o,I=P(o*An),A=a===p,u=a===P(-p),l=a===P(-p*An);return A&&(o=g),(u||l)&&(o=I),(P(o)&1n)===1n&&(o=P(-o)),{isValid:A||u,value:o}},Ce=p=>ln(Oe(p)),xe=(...p)=>Ke.sha512Async(Lt(...p)),Pe=(...p)=>In("sha512")(Lt(...p)),Cn=p=>{let t=p.slice(0,Tt);t[0]&=248,t[31]&=127,t[31]|=64;let n=p.slice(Tt,$t),r=Ce(t),s=kt.multiply(r),o=s.toBytes();return{head:t,prefix:n,scalar:r,point:s,pointBytes:o}},He=p=>xe(mt(p,Tt)).then(Cn),Ye=p=>Cn(Pe(mt(p,Tt))),Bn=p=>He(p).then(t=>t.pointBytes),pn=p=>Ye(p).pointBytes,Qn=p=>xe(p.hashable).then(p.finish),yn=p=>p.finish(Pe(p.hashable)),wn=(p,t,n)=>{let{pointBytes:r,scalar:s}=p,o=Ce(t),a=kt.multiply(o).toBytes();return{hashable:Lt(a,r,n),finish:A=>{let u=ln(o+Ce(A)*s);return mt(Lt(a,En(u)),$t)}}},si=async(p,t)=>{let n=mt(p),r=await He(t),s=await xe(r.prefix,n);return Qn(wn(r,s,n))},Ai=(p,t)=>{let n=mt(p),r=Ye(t),s=Pe(r.prefix,n);return yn(wn(r,s,n))},Je={zip215:!0},bn=(p,t,n,r=Je)=>{p=mt(p,$t),t=mt(t),n=mt(n,Tt);let{zip215:s}=r,o,a,g,I,A=Uint8Array.of();try{o=vt.fromBytes(n,s),a=vt.fromBytes(p.slice(0,Tt),s),g=Oe(p.slice(Tt,$t)),I=kt.multiply(g,!1),A=Lt(a.toBytes(),o.toBytes(),t)}catch{}return{hashable:A,finish:l=>{if(I==null||!s&&o.isSmallOrder())return!1;let f=Ce(l);return a.add(o.multiply(f,!1)).add(I.negate()).clearCofactor().is0()}}},oi=async(p,t,n,r=Je)=>Qn(bn(p,t,n,r)),ai=(p,t,n,r=Je)=>yn(bn(p,t,n,r)),ci={bytesToHex:Ge,hexToBytes:Le,concatBytes:Lt,mod:P,invert:dn,randomBytes:un},Ke={sha512Async:async p=>{let t=ei(),n=Lt(p);return pe(await t.digest("SHA-512",n.buffer))},sha512:void 0},qe=(p=un(Tt))=>p,hi=p=>{let t=qe(p),n=pn(t);return{secretKey:t,publicKey:n}},gi=async p=>{let t=qe(p),n=await Bn(t);return{secretKey:t,publicKey:n}},fi={getExtendedPublicKeyAsync:He,getExtendedPublicKey:Ye,randomSecretKey:qe},Be=8,ui=256,mn=Math.ceil(ui/Be)+1,Ue=2**(Be-1),li=()=>{let p=[],t=kt,n=t;for(let r=0;r<mn;r++){n=t,p.push(n);for(let s=1;s<Ue;s++)n=n.add(t),p.push(n);t=n.double()}return p},an=(p,t)=>{let n=t.negate();return p?n:t},di=p=>{let t=on||(on=li()),n=Jt,r=kt,s=2**Be,o=s,a=Ee(s-1),g=Ee(Be);for(let I=0;I<mn;I++){let A=Number(p&a);p>>=g,A>Ue&&(A-=o,p+=1n);let u=I*Ue,l=u,f=u+Math.abs(A)-1,y=I%2!==0,w=A<0;A===0?r=r.add(an(y,t[l])):n=n.add(an(w,t[f]))}return p!==0n&&ht("invalid wnaf"),{p:n,f:r}}});var Rn={};we(Rn,{default:()=>Ei});var Ii,Ei,Dn=Yt(()=>{Ii=(()=>{var p,t,n={773(o,a,g){var I,A=typeof self<"u"&&self.Module!==void 0?self.Module:{},u={};for(I in A)A.hasOwnProperty(I)&&(u[I]=A[I]);var l,f,y,w,m=[];l=typeof window=="object",f=typeof importScripts=="function",y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!l&&!y&&!f;var v,h,C,E,S,Q="";y?(Q=f?g(967).dirname(Q)+"/":"//",v=function(F,G){return E||(E=g(145)),S||(S=g(967)),F=S.normalize(F),E.readFileSync(F,G?null:"utf8")},C=function(F){var G=v(F,!0);return G.buffer||(G=new Uint8Array(G)),U(G.buffer),G},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),m=process.argv.slice(2),o.exports=A,process.on("uncaughtException",function(F){if(!(F instanceof k))throw F}),process.on("unhandledRejection",j),A.inspect=function(){return"[Emscripten Module object]"}):w?(typeof read<"u"&&(v=function(F){return read(F)}),C=function(F){var G;return typeof readbuffer=="function"?new Uint8Array(readbuffer(F)):(U(typeof(G=read(F,"binary"))=="object"),G)},typeof scriptArgs<"u"?m=scriptArgs:arguments!==void 0&&(m=arguments),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(l||f)&&(f?Q=self.location.href:typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),Q=Q.indexOf("blob:")!==0?Q.substr(0,Q.lastIndexOf("/")+1):"",v=function(F){var G=new XMLHttpRequest;return G.open("GET",F,!1),G.send(null),G.responseText},f&&(C=function(F){var G=new XMLHttpRequest;return G.open("GET",F,!1),G.responseType="arraybuffer",G.send(null),new Uint8Array(G.response)}),h=function(F,G,e){var i=new XMLHttpRequest;i.open("GET",F,!0),i.responseType="arraybuffer",i.onload=function(){i.status==200||i.status==0&&i.response?G(i.response):e()},i.onerror=e,i.send(null)}),A.print||console.log.bind(console);var _,M,b=A.printErr||console.warn.bind(console);for(I in u)u.hasOwnProperty(I)&&(A[I]=u[I]);u=null,A.arguments&&(m=A.arguments),A.thisProgram&&A.thisProgram,A.quit&&A.quit,A.wasmBinary&&(_=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&j("no native wasm support detected");var R=!1;function U(F,G){F||j("Assertion failed: "+G)}var O,H,J=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function K(F){O=F,A.HEAP8=new Int8Array(F),A.HEAP16=new Int16Array(F),A.HEAP32=new Int32Array(F),A.HEAPU8=H=new Uint8Array(F),A.HEAPU16=new Uint16Array(F),A.HEAPU32=new Uint32Array(F),A.HEAPF32=new Float32Array(F),A.HEAPF64=new Float64Array(F)}A.INITIAL_MEMORY;var V,rt=[],Y=[],bt=[],ot=0,gt=null,W=null;function j(F){throw A.onAbort&&A.onAbort(F),b(F+=""),R=!0,F="abort("+F+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(F)}function dt(F){return F.startsWith("data:application/octet-stream;base64,")}function st(F){return F.startsWith("file://")}A.preloadedImages={},A.preloadedAudios={};var pt,et="argon2.wasm";function St(F){try{if(F==et&&_)return new Uint8Array(_);if(C)return C(F);throw"both async and sync fetching of the wasm failed"}catch(G){j(G)}}function yt(F){for(;F.length>0;){var G=F.shift();if(typeof G!="function"){var e=G.func;typeof e=="number"?G.arg===void 0?V.get(e)():V.get(e)(G.arg):e(G.arg===void 0?null:G.arg)}else G(A)}}function Mt(F){try{return M.grow(F-O.byteLength+65535>>>16),K(M.buffer),1}catch{}}dt(et)||(pt=et,et=A.locateFile?A.locateFile(pt,Q):Q+pt);var _t,It={a:function(F,G,e){H.copyWithin(F,G,G+e)},b:function(F){var G,e=H.length;if((F>>>=0)>2147418112)return!1;for(var i=1;i<=4;i*=2){var c=e*(1+.2/i);if(c=Math.min(c,F+100663296),Mt(Math.min(2147418112,((G=Math.max(F,c))%65536>0&&(G+=65536-G%65536),G))))return!0}return!1}},Qt=((function(){var F={a:It};function G(c,B){var D,T=c.exports;A.asm=T,K((M=A.asm.c).buffer),V=A.asm.k,D=A.asm.d,Y.unshift(D),(function(L){if(ot--,A.monitorRunDependencies&&A.monitorRunDependencies(ot),ot==0&&(gt!==null&&(clearInterval(gt),gt=null),W)){var q=W;W=null,q()}})()}function e(c){G(c.instance)}function i(c){return(function(){if(!_&&(l||f)){if(typeof fetch=="function"&&!st(et))return fetch(et,{credentials:"same-origin"}).then(function(B){if(!B.ok)throw"failed to load wasm binary file at '"+et+"'";return B.arrayBuffer()}).catch(function(){return St(et)});if(h)return new Promise(function(B,D){h(et,function(T){B(new Uint8Array(T))},D)})}return Promise.resolve().then(function(){return St(et)})})().then(function(B){return WebAssembly.instantiate(B,F)}).then(c,function(B){b("failed to asynchronously prepare wasm: "+B),j(B)})}if(ot++,A.monitorRunDependencies&&A.monitorRunDependencies(ot),A.instantiateWasm)try{return A.instantiateWasm(F,G)}catch(c){return b("Module.instantiateWasm callback failed with error: "+c),!1}_||typeof WebAssembly.instantiateStreaming!="function"||dt(et)||st(et)||typeof fetch!="function"?i(e):fetch(et,{credentials:"same-origin"}).then(function(c){return WebAssembly.instantiateStreaming(c,F).then(e,function(B){return b("wasm streaming compile failed: "+B),b("falling back to ArrayBuffer instantiation"),i(e)})})})(),A.___wasm_call_ctors=function(){return(A.___wasm_call_ctors=A.asm.d).apply(null,arguments)},A._argon2_hash=function(){return(A._argon2_hash=A.asm.e).apply(null,arguments)},A._malloc=function(){return(Qt=A._malloc=A.asm.f).apply(null,arguments)}),N=(A._free=function(){return(A._free=A.asm.g).apply(null,arguments)},A._argon2_verify=function(){return(A._argon2_verify=A.asm.h).apply(null,arguments)},A._argon2_error_message=function(){return(A._argon2_error_message=A.asm.i).apply(null,arguments)},A._argon2_encodedlen=function(){return(A._argon2_encodedlen=A.asm.j).apply(null,arguments)},A._argon2_hash_ext=function(){return(A._argon2_hash_ext=A.asm.l).apply(null,arguments)},A._argon2_verify_ext=function(){return(A._argon2_verify_ext=A.asm.m).apply(null,arguments)},A.stackAlloc=function(){return(N=A.stackAlloc=A.asm.n).apply(null,arguments)});function k(F){this.name="ExitStatus",this.message="Program terminated with exit("+F+")",this.status=F}function x(F){function G(){_t||(_t=!0,A.calledRun=!0,R||(yt(Y),A.onRuntimeInitialized&&A.onRuntimeInitialized(),(function(){var e;if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)e=A.postRun.shift(),bt.unshift(e);yt(bt)})()))}F=F||m,ot>0||((function(){var e;if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)e=A.preRun.shift(),rt.unshift(e);yt(rt)})(),ot>0||(A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),G()},1)):G()))}if(A.allocate=function(F,G){var e;return e=G==1?N(F.length):Qt(F.length),F.subarray||F.slice?H.set(F,e):H.set(new Uint8Array(F),e),e},A.UTF8ToString=function(F,G){return F?(function(e,i,c){for(var B=i+c,D=i;e[D]&&!(D>=B);)++D;if(D-i>16&&e.subarray&&J)return J.decode(e.subarray(i,D));for(var T="";i<D;){var L=e[i++];if(128&L){var q=63&e[i++];if((224&L)!=192){var nt=63&e[i++];if((L=(240&L)==224?(15&L)<<12|q<<6|nt:(7&L)<<18|q<<12|nt<<6|63&e[i++])<65536)T+=String.fromCharCode(L);else{var $=L-65536;T+=String.fromCharCode(55296|$>>10,56320|1023&$)}}else T+=String.fromCharCode((31&L)<<6|q)}else T+=String.fromCharCode(L)}return T})(H,F,G):""},A.ALLOC_NORMAL=0,W=function F(){_t||x(),_t||(W=F)},A.run=x,A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();x(),o.exports=A,A.unloadRuntime=function(){typeof self<"u"&&delete self.Module,A=M=V=O=H=void 0,delete o.exports}},631:function(o,a,g){var I,A;typeof self<"u",(A=typeof(I=function(){let u=typeof self<"u"?self:this,l={Argon2d:0,Argon2i:1,Argon2id:2};function f(h){if(f._promise)return f._promise;if(f._module)return Promise.resolve(f._module);let C;return C=u.process&&u.process.versions&&u.process.versions.node?y().then(E=>new Promise(S=>{E.postRun=()=>S(E)})):(u.loadArgon2WasmBinary?u.loadArgon2WasmBinary():Promise.resolve(g(721)).then(E=>(function(S){let Q=atob(S),_=new Uint8Array(new ArrayBuffer(Q.length));for(let M=0;M<Q.length;M++)_[M]=Q.charCodeAt(M);return _})(E))).then(E=>{var S,Q;return S=E,Q=h?(function(_){let M=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*_/65536),256)+256,M),maximum:M})})(h):void 0,new Promise(_=>(u.Module={wasmBinary:S,wasmMemory:Q,postRun(){_(Module)}},y()))}),f._promise=C,C.then(E=>(f._module=E,delete f._promise,E))}function y(){return u.loadArgon2WasmModule?u.loadArgon2WasmModule():Promise.resolve(g(773))}function w(h,C){return h.allocate(C,"i8",h.ALLOC_NORMAL)}function m(h,C){return w(h,new Uint8Array([...C,0]))}function v(h){if(typeof h!="string")return h;if(typeof TextEncoder=="function")return new TextEncoder().encode(h);if(typeof Buffer=="function")return Buffer.from(h);throw Error("Don't know how to encode UTF8")}return{ArgonType:l,hash:function(h){let C=h.mem||1024;return f(C).then(E=>{let S=h.time||1,Q=h.parallelism||1,_=v(h.pass),M=m(E,_),b=_.length,R=v(h.salt),U=m(E,R),O=R.length,H=h.type||l.Argon2d,J=E.allocate(Array(h.hashLen||24),"i8",E.ALLOC_NORMAL),K=h.secret?w(E,h.secret):0,V=h.secret?h.secret.byteLength:0,rt=h.ad?w(E,h.ad):0,Y=h.ad?h.ad.byteLength:0,bt=h.hashLen||24,ot=E._argon2_encodedlen(S,C,Q,O,bt,H),gt=E.allocate(Array(ot+1),"i8",E.ALLOC_NORMAL),W,j,dt;try{j=E._argon2_hash_ext(S,C,Q,M,b,U,O,J,bt,gt,ot,H,K,V,rt,Y,19)}catch(st){W=st}if(j!==0||W){try{W||(W=E.UTF8ToString(E._argon2_error_message(j)))}catch{}dt={message:W,code:j}}else{let st="",pt=new Uint8Array(bt);for(let et=0;et<bt;et++){let St=E.HEAP8[J+et];pt[et]=St,st+=("0"+(255&St).toString(16)).slice(-2)}dt={hash:pt,hashHex:st,encoded:E.UTF8ToString(gt)}}try{E._free(M),E._free(U),E._free(J),E._free(gt),rt&&E._free(rt),K&&E._free(K)}catch{}if(W)throw dt;return dt})},verify:function(h){return f().then(C=>{let E=v(h.pass),S=m(C,E),Q=E.length,_=h.secret?w(C,h.secret):0,M=h.secret?h.secret.byteLength:0,b=h.ad?w(C,h.ad):0,R=h.ad?h.ad.byteLength:0,U=m(C,v(h.encoded)),O,H,J,K=h.type;if(K===void 0){let V=h.encoded.split("$")[1];V&&(K=l[V=V.replace("a","A")]||l.Argon2d)}try{H=C._argon2_verify_ext(U,S,Q,_,M,b,R,K)}catch(V){O=V}if(H||O){try{O||(O=C.UTF8ToString(C._argon2_error_message(H)))}catch{}J={message:O,code:H}}try{C._free(S),C._free(U)}catch{}if(O)throw J;return J})},unloadRuntime:function(){f._module&&(f._module.unloadRuntime(),delete f._promise,delete f._module)}}})=="function"?I.apply(a,[]):I)===void 0||(o.exports=A)},721:function(o,a){o.exports="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DwtBixEPC0GeEyEBCyABC48DAQF/IwBBgANrIgQkACAEQQA2AowBIARBjAFqIAEQBwJAIAFBwABNBEAgBEGQAWogARAYQQBIDQEgBEGQAWogBEGMAWpBBBAGQQBIDQEgBEGQAWogAiADEAZBAEgNASAEQZABaiAAIAEQEhoMAQsgBEGQAWpBwAAQGEEASA0AIARBkAFqIARBjAFqQQQQBkEASA0AIARBkAFqIAIgAxAGQQBIDQAgBEGQAWogBEFAa0HAABASQQBIDQAgACAEKQNANwAAIAAgBCkDSDcACCAAIAQpA1g3ABggACAEKQNQNwAQIABBIGohACABQSBrIgJBwQBPBEADQCAEIARBQGtBwAAQBSIBQUBrQcAAIAEQMUEASA0CIAAgASkDQDcAACAAIAEpA0g3AAggACAEKQNYNwAYIAAgBCkDUDcAECAAQSBqIQAgAkEgayICQcAASw0ACwsgBCAEQUBrQcAAEAUiAUFAayACIAEQMUEASA0AIAAgAUFAayACEAUaCyAEQZABakHwARAEIARBgANqJAALAwABC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGgHigCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0HcHkEZNgIAQX8FQQELDAELIAAgAToAAEEBCwtQAQN/AkAgACgCACwAABAPRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEA9FDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFB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AUHjFEEDEBANACABQQNqIANBDGoQFSIBRQ0AIAAgAygCDDYCKCABQecUQQMQEA0AIAFBA2ogA0EMahAVIgFFDQAgACADKAIMIgQ2AjAgACAENgI0IAEtAABBJEcNACADIAc2AgwgACgCECADQQxqIAFBAWoQLCIBRQ0AIAAgAygCDDYCFCABLQAAQSRHDQAgAyAGNgIMIAAoAgAgA0EMaiABQQFqECwiAUUNACAAIAMoAgw2AgQgAEEANgJEIABCADcCPCAAQgA3AhggAEIANwIgIAAQHCICDQBBYEEAIAEtAAAbIQILIANBEGokACACCykBAn8DQCAAIAJBA3QiA2ogASADaikAADcDACACQQFqIgJBgAFHDQALCwwAIABBAEGACBALGgtlAQJ/IAAgAhAeIgIEfyACBUFdQQACfyAAKAIAIQRBACECIAAoAgQiAAR/A0AgAyACIARqLQAAIAEgAmotAABzciEDIAJBAWoiAiAARw0ACyADQQFrQQh2QQFxQQFrBUEACwsbCwtdAQJ/IwBB8AFrIgMkAEF/IQQCQCACRSAARSABRXJyIAFBwABLcg0AIAMgARAYQQBIDQAgAyACQcAAEAZBAEgNACADIAAgARASIQQLIANB8AEQBCADQfABaiQAIAQLCQAgACABNwAACxAAIwAgAGtBcHEiACQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAUaIAAgACgCFCABajYCFCACC9oBAQR/IwBB0ABrIggkAAJAIABFBEBBYCEADAELIAggABAKIgk2AgwgCCAJNgIcIAggCRAJIgo2AhggCCAJEAkiCzYCCEEAIQkCQAJAIApFIAtFcg0AIAggAjYCFCAIIAE2AhAgCEEIaiAAIAcQLSIADQEgCCgCCCEJIAggCCgCDBAJIgA2AgggAEUNACAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAM2AiAgCEEIaiAJIAcQMCEADAELQWohAAsgCCgCGBAIIAgoAggQCCAJEAgLIAhB0ABqJAAgAAuQAgEDfyMAQdAAayIRJABBfiETAkAgCEEESQ0AIAgQCSISRQRAQWohEwwBCyARQQA2AkwgEUIANwJEIBEgAjYCPCARIAI2AjggESABNgI0IBEgADYCMCARIA82AiwgESAONgIoIBEgDTYCJCAR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IGxvbmcgb3IgdG9vIHNob3J0AE1pc3NpbmcgYXJndW1lbnRzAFRvbyBtYW55IGxhbmVzAFRvbyBmZXcgbGFuZXMAVG9vIG1hbnkgdGhyZWFkcwBOb3QgZW5vdWdoIHRocmVhZHMATWVtb3J5IGFsbG9jYXRpb24gZXJyb3IATWVtb3J5IGNvc3QgaXMgdG9vIHNtYWxsAFRpbWUgY29zdCBpcyB0b28gc21hbGwAYXJnb24yaQBBcmdvbjJpAFRoZSBwYXNzd29yZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgaGFzaABPdXRwdXQgcG9pbnRlciBtaXNtYXRjaABPdXRwdXQgaXMgdG9vIGxvbmcAU2FsdCBpcyB0b28gbG9uZwBTZWNyZXQgaXMgdG9vIGxvbmcAUGFzc3dvcmQgaXMgdG9vIGxvbmcAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBsb25nAFRocmVhZGluZyBmYWlsdXJlAE1lbW9yeSBjb3N0IGlzIHRvbyBsYXJnZQBUaW1lIGNvc3QgaXMgdG9vIGxhcmdlAFVua25vd24gZXJyb3IgY29kZQBhcmdvbjJpZABBcmdvbjJpZABFbmNvZGluZyBmYWlsZWQARGVjb2RpbmcgZmFpbGVkAGFyZ29uMmQAQXJnb24yZABBcmdvbjJfQ29udGV4dCBjb250ZXh0IGlzIE5VTEwAT3V0cHV0IHBvaW50ZXIgaXMgTlVMTABUaGUgYWxsb2NhdGUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAVGhlIGZyZWUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAT0sAJHY9ACx0PQAscD0AJG09AFRoZXJlIGlzIG5vIHN1Y2ggdmVyc2lvbiBvZiBBcmdvbjIAU2FsdCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBzYWx0IGxlbmd0aCBpcyBub3QgMABTZWNyZXQgcG9pbnRlciBpcyBOVUxMLCBidXQgc2VjcmV0IGxlbmd0aCBpcyBub3QgMABQYXNzd29yZCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBwYXNzd29yZCBsZW5ndGggaXMgbm90IDAAQXNzb2NpYXRlZCBkYXRhIHBvaW50ZXIgaXMgTlVMTCwgYnV0IGFkIGxlbmd0aCBpcyBub3QgMAAobnVsbCkAAACbCAAAuwcAAEkJAADACQAAsAkAAPAHAAAfCAAAMAgAAMkIAABvCgAA4AkAABYKAAA7CgAAQwgAACsLAADBCgAAkgoAAPQKAAACCAAAEQgAAFsJAABbCAAAdAkAAHQIAAAFCQAAdAcAAC0JAACeBwAA9AgAAGIHAAAYCQAAiAcAAOEIAABOBwAA/wkAAFwKAAABAEGkGAsBAgBByxgLBf//////AEGQGQtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQeEZCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQZsaCwEMAEGnGgsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEHVGgsBDgBB4RoLFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBjxsLARAAQZsbCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQdIbCw4SAAAAEhISAAAAAAAACQBBgxwLAQsAQY8cCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQb0cCwEMAEHJHAsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEHwHAsBAQBBoB4LAogPAEHYHgsDkBFQ"},145(){},967(){}},r={};function s(o){var a=r[o];if(a!==void 0)return a.exports;var g=r[o]={exports:{}};return n[o].call(g.exports,g,g.exports,s),g.exports}return s(631)})(),Ei=Ii});var be=class p{verbose;mockMode;static#e=null;#t=null;#n=!1;#i=0;#r=["time.google.com","time.cloudflare.com","pool.ntp.org"];constructor(t=0,n=!1){if(this.verbose=t,this.mockMode=n,p.#e)return p.#e;p.#e=this}static get instance(){return p.#e||new p}static get time(){return p.instance.time}get time(){return this.mockMode?Date.now():this.#t===null?null:Date.now()+Math.round(this.#t)}async sync(t){if(t!==void 0&&(this.verbose=t),this.mockMode)return Date.now();if(this.#n){for(;this.#n;)await new Promise(n=>setTimeout(n,50));return this.time}this.#n=!0;try{let n=await this.#s();return n.length===0?(console.warn("[Clock] All NTP sources failed, using local time"),this.#t=0,this.time):(this.#t=this.#o(n),this.#i=Date.now(),n.length<this.#r.length&&setTimeout(()=>this.#a(),100),this.time)}catch(n){return console.error("[Clock] Sync failed:",n),this.#t=0,this.time}finally{this.#n=!1}}get status(){return this.mockMode?{synchronized:!0,syncing:!1,offset:0,lastSync:Date.now(),age:0}:{synchronized:this.#t!==null,syncing:this.#n,offset:this.#t,lastSync:this.#i,age:this.#i?Date.now()-this.#i:null}}async#s(){let t=this.#r.map(s=>this.#A(s)),n=await Promise.allSettled(t),r=[];for(let s of n)s.status==="fulfilled"&&r.push(s.value);return r}async#A(t){let n=new AbortController,r=setTimeout(()=>n.abort(),2e3);try{let s=Date.now(),o=await fetch(`https://${t}`,{method:"HEAD",signal:n.signal,cache:"no-cache"}),a=(Date.now()-s)/2;if(!o.ok)throw new Error(`HTTP ${o.status}`);let g=new Date(o.headers.get("date")).getTime();if(isNaN(g))throw new Error("Invalid date header");return{source:t,serverTime:g+a,localTime:Date.now(),latency:a*2}}finally{clearTimeout(r)}}#o(t){if(t.length===1)return t[0].serverTime-t[0].localTime;t.sort((s,o)=>s.latency-o.latency);let n=[];for(let s of t)n.push(s.serverTime-s.localTime);n.sort((s,o)=>s-o);let r=Math.floor(n.length/2);return n.length%2===0?(n[r-1]+n[r])/2:n[r]}async#a(){if(!this.#n)try{let t=await this.#s();if(t.length===0)return;let n=this.#o(t);Math.abs(n-this.#t)>100&&(this.#t=n)}catch(t){this.verbose&&console.warn("[Clock] Background refine failed:",t)}}},tt=be.instance;await wt();await wt();var Yn=1e4,Jn=1e6,Kn=1e5,qn=36e5,lt={VALID_SIGNATURE:1e4,VALID_POW:3e5,UNICAST_RELAYED:5e3,WRONG_SIGNATURE:-6e5,WRONG_POW:-1e8,WRONG_SERIALIZATION:-6e4,GOSSIP_FLOOD:-6e4,UNICAST_FLOOD:-3e4,HOPS_EXCEEDED:-3e5,UNICAST_INVALID_ROUTE:-6e4,FAILED_HANDSHAKE:-6e5,WRONG_LENGTH:-6e5},te=class{id;cryptoCodex;verbose;trustBalances={};manualBanList=new Set;bytesCounters={gossip:{},unicast:{}};bytesCounterResetIn=0;constructor(t,n,r=0){this.id=t,this.cryptoCodex=n,this.verbose=r}tick(){for(let t in this.trustBalances){let n=this.trustBalances[t];n!==0&&(n=n<0?Math.min(0,n+1e3):Math.max(0,n-100))}this.bytesCounterResetIn-=1e3,!(this.bytesCounterResetIn>0)&&(this.bytesCounterResetIn=Yn,this.bytesCounters={gossip:{},unicast:{}})}countPeerAction(t,n){if(lt[n])return this.adjustTrust(t,lt[n])}adjustTrust(t,n,r="na"){t!==this.id&&(n&&(this.trustBalances[t]=Math.min(qn,(this.trustBalances[t]||0)+n)),n&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${n}ms (${r}). Updated: ${this.trustBalances[t]}ms.`,it.ARBITER),this.isBanished(t)&&this.verbose>1&&console.log(`%c(Arbiter: ${this.id}) Peer ${t} is now banished.`,it.ARBITER))}setBanished(t){this.manualBanList.has(t)||this.manualBanList.add(t)}isBanished(t){return at.MANUAL_BAN_MODE?this.manualBanList.has(t):(this.trustBalances[t]||0)<0}countMessageBytes(t,n,r){this.bytesCounters[r][t]||(this.bytesCounters[r][t]=0),this.bytesCounters[r][t]+=n;let[s,o]=r==="gossip"?[Kn,lt.GOSSIP_FLOOD]:[Jn,lt.UNICAST_FLOOD];return this.bytesCounters[r][t]<s?!0:this.adjustTrust(t,o,`Message ${r} flood detected`)}async digestMessage(t,n,r,s=.01){let{senderId:o,pubkey:a,topic:g,expectedEnd:I}=n;if(!(!await this.#e(t,n,r)||!this.#t(t,g?"gossip":"unicast",r,I)||!(g?this.#n(t,n):this.#i(t,n)))&&!(this.isBanished(t)||this.isBanished(o)))return this.trustBalances[o]>lt.VALID_POW||Math.random()<s&&await this.#r(o,a),!0}async#e(t,n,r){try{let{pubkey:s,signature:o,signatureStart:a}=n,g=r.subarray(0,a);if(!await this.cryptoCodex.verifySignature(s,g,o))throw new Error("Gossip signature invalid");return this.adjustTrust(t,lt.VALID_SIGNATURE,"Gossip signature valid"),!0}catch(s){this.verbose>1&&console.error(`%c(Arbiter: ${this.id}) Error during signature verification from ${t}: ${s.stack}`,it.ARBITER),this.verbose>2&&console.log(`%c(Arbiter) signatureControl() error details: ${n}`,it.ARBITER)}this.adjustTrust(t,lt.WRONG_SIGNATURE,"Gossip signature invalid")}#t(t,n,r,s){if(!s||r.length===s)return!0;this.adjustTrust(t,lt.WRONG_LENGTH,`${n} message length mismatch`)}#n(t,n){if(n.HOPS<=(ut.HOPS[n.topic]||ut.HOPS.default))return!0;this.adjustTrust(t,lt.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#i(t,n){if(n.route.length<=ct.MAX_HOPS)return!0;this.adjustTrust(t,lt.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#r(t,n){await this.cryptoCodex.pubkeyDifficultyCheck(n)?this.adjustTrust(t,lt.VALID_POW,"Gossip PoW valid"):this.adjustTrust(t,lt.WRONG_POW,"Gossip PoW invalid")}};await wt();var Wn;function ee(p,t=0){let n=typeof p=="string"?(Wn??=new TextEncoder).encode(p):p,r=n,s=t+374761393&4294967295,o=0;if(r.length>=16){let g=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],I=n,A=I.length-16,u=0;for(o=0;(o&4294967280)<=A;o+=4){let l=o,f=I[l+0]+(I[l+1]<<8),y=I[l+2]+(I[l+3]<<8),w=f*2246822519+(y*2246822519<<16),m=g[u]+w&4294967295;m=m<<13|m>>>19;let v=m&65535,h=m>>>16;g[u]=v*2654435761+(h*2654435761<<16)&4294967295,u=u+1&3}s=(g[0]<<1|g[0]>>>31)+(g[1]<<7|g[1]>>>25)+(g[2]<<12|g[2]>>>20)+(g[3]<<18|g[3]>>>14)&4294967295}s=s+n.length&4294967295;let a=n.length-4;for(;o<=a;o+=4){let g=o,I=r[g+0]+(r[g+1]<<8),A=r[g+2]+(r[g+3]<<8),u=I*3266489917+(A*3266489917<<16);s=s+u&4294967295,s=s<<17|s>>>15,s=(s&65535)*668265263+((s>>>16)*668265263<<16)&4294967295}for(;o<r.length;++o){let g=r[o];s=s+g*374761393,s=s<<11|s>>>21,s=(s&65535)*2654435761+((s>>>16)*2654435761<<16)&4294967295}return s=s^s>>>15,s=((s&65535)*2246822519&4294967295)+((s>>>16)*2246822519<<16),s=s^s>>>13,s=((s&65535)*3266489917&4294967295)+((s>>>16)*3266489917<<16),s=s^s>>>16,s<0?s+4294967296:s}async function jn(){if(!(typeof globalThis.RTCPeerConnection<"u"))return(await import("wrtc")).default}var tn=await jn(),ne=class{id;verbose;stunUrls;constructor(t,n,r=0){this.id=t,this.verbose=r,this.stunUrls=n}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=ft.MAX_SDP_OFFERS;offers={};tick(){let t=tt.time;for(let o in this.offerInstanceByExpiration){let a=this.offerInstanceByExpiration[o];t<o||(a?.destroy(),delete this.offerInstanceByExpiration[o],this.creatingOffer=!1)}for(let o in this.offers){let a=this.offers[o];if(a.offererInstance.destroyed){delete this.offers[o];continue}if(a.isUsed){delete this.offers[o];continue}a.timestamp+ft.SDP_OFFER_EXPIRATION>t||(a.offererInstance?.destroy(),delete this.offers[o])}let n=0;for(let o in this.offers){n++;let a=this.offers[o];if(a.isDigestingOneAnswer){a.isDigestingOneAnswer=!1;continue}if(a.offererInstance.destroyed)continue;let g=a.answers.filter(u=>!u.used);if(!g.length)continue;let I=g.reduce((u,l)=>u.timestamp>l.timestamp?u:l);if(!I)continue;I.used=!0;let A=t-I.timestamp;A>at.CONNECTION_UPGRADE_TIMEOUT/2||(a.offererInstance.signal(I.signal),a.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${I.peerId} for offer ${o} (received since ${A} ms)`))}if(this.creatingOffer||n>=this.offersToCreate)return;this.creatingOffer=!0;let r=t+(ft.SIGNAL_CREATION_TIMEOUT||8e3),s=this.#e(r);this.offerInstanceByExpiration[r]=s}#e(t){let n=ft.ICE_COMPLETE_TIMEOUT||1e3,r=new ft.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:n,wrtc:tn,config:{iceServers:this.stunUrls}});return r.on("error",s=>this.#n(s)),r.on("signal",s=>{let{candidate:o,type:a}=s;if(!s||o)throw new Error("Unexpected signal data from offerer instance: "+JSON.stringify(s));if(a!=="offer")throw new Error("Unexpected signal type from offerer instance: "+a);delete this.offerInstanceByExpiration[t];let g=ee(JSON.stringify(s));r.on("connect",()=>{this.offers[g]&&(this.offers[g].isUsed=!0),this.onConnect(void 0,r)}),this.offers[g]={timestamp:tt.time,sentCounter:0,signal:s,offererInstance:r,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),r}#t(t,n="",r=2,s="includes"){return s[0]==="i"&&!t.message.includes(n)?!1:t.message.startsWith(n)?(this.verbose>=r&&console.info(`%cOfferManager => ${t.message}`,it.PEER_STORE),!0):!1}#n=t=>{this.verbose<1||this.#t(t,"Ice connection failed",2)||this.#t(t,"Connection failed",2)||this.#t(t,"Remote transport instance",3,"startsWith")||this.#t(t,"Simulated failure",4,"startsWith")||this.#t(t,"No peer found",4,"startsWith")||this.#t(t,"Missing transport instance",2,"startsWith")||this.#t(t,"Failed to create answer",2,"startsWith")||this.#t(t,"Transport instance",3,"startsWith")||this.#t(t,"cannot signal after peer is destroyed",3,"startsWith")||this.#t(t,"No pending",3)||this.#t(t,"is already linked",3)||this.#t(t,"There is already a pending",3)||this.#t(t,"closed the connection",3)||this.#t(t,"No transport instance found for id:",3)||this.verbose>0&&console.error("transportInstance ERROR => ",t.stack)};bestReadyOffer(t=0,n=!0){let r=null,s=null,o=null;for(let a in this.offers){let g=this.offers[a],{isUsed:I,sentCounter:A,signal:u,timestamp:l}=g;if(I||A>t)continue;let f=tt.time-l;if(!(n&&f>ft.SDP_OFFER_EXPIRATION/2)&&!(o&&f>o)){r=g,s=a,o=f;break}}return{offerHash:s,readyOffer:r,since:o}}addSignalAnswer(t,n,r,s){!n||n.type!=="answer"||!r||!this.offers[r]||this.offers[r].answerers[t]||(this.offers[r].answerers[t]=!0,this.offers[r].answers.push({peerId:t,signal:n,timestamp:s}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${r}`))}getTransportInstanceForSignal(t,n,r){try{if(!n||!n.type||!n.sdp)throw new Error("Wrong remote SDP provided");let{type:s,sdp:o}=n;if(s!=="offer"&&s!=="answer")throw new Error("Invalid remote SDP type");if(s==="offer"&&!o)throw new Error("No SDP in the remote SDP offer");if(s==="answer"&&!o)throw new Error("No SDP in the remote SDP answer");if(s==="answer"){let I=r?this.offers[r]?.offererInstance:null;if(!I)throw new Error("No pending offer found for the given offer hash to accept the answer");return I}let a=ft.ICE_COMPLETE_TIMEOUT||1e3,g=new ft.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:a,wrtc:tn,config:{iceServers:this.stunUrls}});return g.on("error",I=>this.#n(I)),g.on("signal",I=>this.onSignalAnswer(t,I,r)),g.on("connect",()=>this.onConnect(t,g)),g}catch(s){if(s.message.startsWith("No pending offer found")&&this.verbose<2)return null;if(this.verbose>1&&s.message.startsWith("No pending offer found"))return console.info(`%c${s.message}`,it.PEER_STORE);this.verbose>0&&console.error(s.stack)}}destroy(){for(let t in this.offers)this.offers[t].offererInstance?.destroy()}};await wt();var{SANDBOX:Oi,ICE_CANDIDATE_EMITTER:xi,TEST_WS_EVENT_MANAGER:Pi}=Et.ENABLED?await ae().then(()=>oe):{},De=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,n=tt.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=n}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}},Ut=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,n,r,s=!1){this.peerId=t,this.transportInstance=n,this.isWebSocket=s,this.direction=r,this.pendingUntil=tt.time+at.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=tt.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?tt.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},ce=class{id;cryptoCodex;offerManager;arbiter;verbose;isDestroy=!1;neighborsList=[];connecting={};connected={};known={};knownCount=0;kick={};callbacks={connect:[(t,n)=>this.#e(t,n)],disconnect:[(t,n)=>this.#t(t,n)],signal:[],data:[]};constructor(t,n,r,s,o=0){this.id=t,this.cryptoCodex=n,this.offerManager=r,this.arbiter=s,this.verbose=o,this.offerManager.onSignalAnswer=(a,g,I)=>{if(!(this.isDestroy||this.isKicked(a)||this.arbiter.isBanished(a)))for(let A of this.callbacks.signal)A(a,{signal:g,offerHash:I})},this.offerManager.onConnect=(a,g)=>{if(this.isDestroy)return g?.destroy();if(a===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let I=a;if(g.on("close",()=>{if(I)for(let A of this.callbacks.disconnect)A(I,g.initiator?"out":"in")}),g.on("data",A=>{if(I)for(let u of this.callbacks.data)u(I,A);else{let u=new Uint8Array(A);if(u[0]>127)return;let{route:l,type:f,neighborsList:y}=n.readUnicastMessage(u)||{};if(f!=="handshake"||l.length!==2||l[1]!==this.id)return;I=l[0],this.digestPeerNeighbors(I,y);for(let w of this.callbacks.connect)w(I,"out")}}),a)for(let A of this.callbacks.connect)A(a,"in")}}get publicNeighborsList(){return this.neighborsList.filter(t=>this.cryptoCodex.isPublicNode(t))}get standardNeighborsList(){return this.neighborsList.filter(t=>!this.cryptoCodex.isPublicNode(t))}#e(t,n){if(!this.connecting[t]?.[n])return this.verbose>=3?console.info(`%cPeer with ID ${t} is not connecting.`,it.PEER_STORE):null;let r=this.connecting[t][n];if(this.#n(t,"connecting",n),this.isKicked(t))return this.verbose>=3&&console.info(`%c(${this.id}) Connect => Peer with ID ${t} is kicked. => close()`,it.PEER_STORE),r.close();if(this.connected[t])return this.verbose>1&&console.warn(`%c(${this.id}) Connect => Peer with ID ${t} is already connected. => close()`,it.PEER_STORE),r.close();r.setConnected(),this.connected[t]=r,this.neighborsList.push(t),this.#i(this.id,t)}#t(t,n){this.#n(t,"connected",n)}#n(t,n="both",r="both"){if(!t&&t===this.id)return;let[s,o]=[this.connecting[t],this.connected[t]];if(!s&&!o||(n!=="connecting"&&(o?.direction===r||r==="both")&&(o?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#r(this.id,t)),n==="connected"))return;let a=r==="both"?["out","in"]:[r];for(let g of a)delete s?.[g];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#i(t="toto",n="tutu"){for(let r of[t,n])this.known[r]||(this.known[r]=new De,this.knownCount++),this.known[r].setNeighbor(r===t?n:t)}#r(t="toto",n="tutu"){for(let r of[t,n])this.known[r]&&(this.known[r].unsetNeighbor(r===t?n:t),!(this.known[r].connectionsCount>0)&&(delete this.known[r],this.knownCount--))}cleanupExpired(t=!0){let n=tt.time;for(let r of["in","out"])for(let s in this.connecting){if(!this.connecting[s][r])continue;let o=this.connected[s]?1e4:0;this.connecting[s][r].pendingUntil+o>n||(this.verbose>=4&&!this.connected[s]&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired.`,it.PEER_STORE),this.verbose>0&&this.connected[s]?.direction===r&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired (already connected WARNING!).`,"color: white;"),this.connecting[s]?.out?.isWebSocket&&this.connecting[s].out.close(),this.connecting[s]?.in?.close(),this.#n(s,"connecting",r))}t&&(this.neighborsList=Object.keys(this.connected),this.digestPeerNeighbors(this.id,this.neighborsList))}on(t,n){if(!this.callbacks[t])throw new Error(`Unknown callback type: ${t}`);this.callbacks[t].push(n)}getUpdatedPeerConnectionsCount(t,n=!0){let r=tt.time,s=0,o=this.known[t]?.neighbors||{};for(let a in o){if(a!==this.id&&r-o[a]>At.PEER_LINK_EXPIRATION){this.#r(t,a);continue}n?s++:this.cryptoCodex.isPublicNode(a)||s++}return s}addConnectingPeer(t,n,r){if(t===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let s=n.type==="offer"?"in":"out";if(this.connecting[t]?.[s])return;let o=this.offerManager.getTransportInstanceForSignal(t,n,r);return o?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][s]=new Ut(t,o,s),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,it.PEER_STORE):null}assignSignal(t,n,r,s=tt.time){let o=this.connecting[t]?.[n.type==="offer"?"in":"out"];try{if(o?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);n.type==="answer"?this.offerManager.addSignalAnswer(t,n,r,s):o.transportInstance.signal(n)}catch(a){console.error(`Error signaling ${n?.type} for ${t}:`,a.stack)}}kickPeer(t,n=6e4,r){n&&(this.kick[t]=tt.time+n),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${n/1e3}s. ${r?"| Reason: "+r:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>tt.time}digestValidRoute(t=[]){for(let n=1;n<t.length;n++)this.#i(t[n-1],t[n])}digestPeerNeighbors(t,n=[]){if(!(!t||!Array.isArray(n))){for(let r in this.known[t]?.neighbors||{})n.includes(r)||this.#r(t,r);for(let r of n)this.#i(t,r)}}destroy(){this.isDestroy=!0;for(let[t,n]of Object.entries(this.connected))this.#n(t),n.close();for(let[t,n]of Object.entries(this.connecting))this.#n(t),n.in?.close(),n.out?.close();this.offerManager.destroy()}};await wt();var he=class{cache={};peerStore;constructor(t,n){this.id=t,this.peerStore=n}buildRoutes(t,n=5,r=3,s=1728,o=!0,a=3){if(this.id===t)throw new Error("Cannot build route to self");if(this.peerStore.connected[t])return{routes:[{path:[this.id,t]}],success:!0,nodesExplored:1};if(!this.peerStore.known[t])return this.#n(t);if(this.cache[t]&&this.#e(this.cache[t]))return{routes:this.cache[t],success:!0,nodesExplored:0};let g=this.#i(t,r,s,a);if(!g.success)return{routes:[],success:!1,nodesExplored:g.nodesExplored};let A=this.#t(g.paths,o).slice(0,n);return this.cache[t]=A,{routes:A,success:!0,nodesExplored:g.nodesExplored}}#e(t){for(let{path:n}of t)for(let r=1;r<n.length;r++){let s=n[r-1],o=n[r];if(s===this.id){if(!this.peerStore.connected[o])return!1}else if(!this.peerStore.known[s]?.neighbors?.[o])return!1}return!0}#t(t,n){let r=[];for(let s of t)r.push({path:s,hops:s.length-1});return n&&r.sort((s,o)=>s.hops-o.hops),r}#n(t){let n=[],r=this.peerStore.neighborsList,s=[...Array(r.length).keys()].sort(()=>Math.random()-.5);for(let o of s)n.push({path:[this.id,r[o],t],hops:0,score:0});return n.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:n,success:"blind",nodesExplored:n.length}}#i(t,n,r,s){let o=[],a=0,g=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],I=new Map;I.set(this.id,[this.id]);let A=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],u=new Map;u.set(t,[t]);let l=Math.ceil(n/2);for(;(g.length>0||A.length>0)&&a<r;){if(g.length>0){let f=this.#r(g,I,u,l);for(let y of f){let w=this.#s(I.get(y),u.get(y));if(o.push(w),!(w.length-1>s))return{success:!0,paths:o,nodesExplored:a}}a++}if(A.length>0){let f=this.#r(A,u,I,l);for(let y of f){let w=this.#s(I.get(y),u.get(y));if(o.push(w),!(w.length-1>s))return{success:!0,paths:o,nodesExplored:a}}a++}}return{success:o.length>0,paths:o,nodesExplored:a}}#r(t,n,r,s){if(t.length===0)return[];let{node:o,path:a,pathSet:g,depth:I}=t.shift();if(I>=s)return[];let A=[];function u(l){if(g.has(l))return;let f=I+1;if(r.has(l)&&A.push(l),n.has(l))return;let y=[...a,l],w=new Set(g).add(l);n.set(l,y),t.push({node:l,path:y,pathSet:w,depth:f})}if(o===this.id)for(let l of this.peerStore.neighborsList)u(l);else for(let l in this.peerStore.known[o]?.neighbors||{})u(l);return A}#s(t,n){let r=t.length+n.length-1,s=new Array(r),o=0;for(let a of t)s[o++]=a;for(let a=n.length-2;a>=0;a--)s[o++]=n[a];return s}};var{SANDBOX:Wi,ICE_CANDIDATE_EMITTER:ji,TEST_WS_EVENT_MANAGER:Xi}=Et.ENABLED?await ae().then(()=>oe):{},Xn=he,Vt=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,r,s,o,a,g,I,A){this.type=t,this.timestamp=n,this.neighborsList=r,this.route=s,this.pubkey=o,this.data=a,this.signature=g,this.signatureStart=I,this.expectedEnd=A}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let n=this.newRoute||this.route,r=[],s=-1;for(let A=0;A<n.length;A++)if(r.push(n[A]),n[A]===t){s=A;break}let o=n[0],a=n[n.length-1],g=s>0?n[s-1]:null,I=s!==-1?n[s+1]:null;return{traveledRoute:r,selfPosition:s,senderId:o,targetId:a,prevId:g,nextId:I,routeLength:n.length}}},ge=class extends Vt{rerouterPubkey;newRoute;rerouterSignature;constructor(t,n,r,s,o,a,g,I,A){super(t,n,r,s,o,a),this.rerouterPubkey=g,this.newRoute=I,this.rerouterSignature=A}getRerouterId(){return this.newRoute[0]}},fe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=ct.MAX_HOPS;maxRoutes=ct.MAX_ROUTES;maxNodes=ct.MAX_NODES;constructor(t,n,r,s,o=0){this.id=t,this.cryptoCodex=n,this.arbiter=r,this.peerStore=s,this.verbose=o,this.pathFinder=new Xn(this.id,this.peerStore)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}async sendUnicast(t,n,r="message",s=1){if(t===this.id)return!1;let o=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!o.success)return!1;let a=[],g=o.success==="blind"?1:s;for(let A=0;A<Math.min(g,o.routes.length);A++){let u=o.routes[A].path;if(u.length>ct.MAX_HOPS){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${ct.MAX_HOPS}). BFS incurred.`);continue}a.push(this.cryptoCodex.createUnicastMessage(r,n,u,this.peerStore.neighborsList))}let I=await Promise.all(a);for(let A of I)this.#e(A.route[1],A);return!0}#e(t,n){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return r.send(n),{success:!0}}catch(s){this.peerStore.kickPeer(t,0,"send-error"),this.verbose>0&&console.error(`Error sending message to ${t}:`,s.message)}return{success:!1,reason:`Error sending message to ${t}.`}}async handleDirectMessage(t,n){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived direct message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,n.byteLength,"unicast"))return;let r=this.cryptoCodex.readUnicastMessage(n);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,n)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{traveledRoute:o,selfPosition:a,senderId:g,targetId:I,prevId:A,nextId:u}=r.extractRouteInfo(this.id);if(t===g&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let y of this.callbacks.message_handle||[])y();if(a===-1)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Self not in route");if(A&&t!==A)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(g===this.id)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(g===t?`(${this.id}) Direct ${r.type} from ${g}: ${r.data}`:`(${this.id}) Direct ${r.type} from ${g} (lastRelay: ${t}): ${r.data}`),this.peerStore.digestPeerNeighbors(g,r.neighborsList),t!==g&&this.arbiter.adjustTrust(t,lt.UNICAST_RELAYED,"Relayed unicast message"),At.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(o),this.id===I){for(let y of this.callbacks[r.type]||[])y(g,r.data);return}let{success:l,reason:f}=this.#e(u,n);if(!l&&!r.rerouterSignature){let y=this.pathFinder.buildRoutes(I,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!y.success)return;let w=y.routes[0].path;if(w.length>ct.MAX_HOPS){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${I} as new route exceeds maxHops (${ct.MAX_HOPS}).`);return}let m=await this.cryptoCodex.createReroutedUnicastMessage(n,w),v=w[a+1];this.#e(v,m)}}};await wt();var ue=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,r,s,o,a,g,I,A,u){this.topic=t,this.timestamp=n,this.neighborsList=r,this.HOPS=s,this.senderId=o,this.pubkey=a,this.data=g,this.signature=I,this.signatureStart=A,this.expectedEnd=u}},Ne=class{cryptoCodex;xxHash32UsageCount=0;seenTimeouts={};cache=[];cleanupFrequency=100;cleanupIn=100;cleanupDurationWarning=10;constructor(t){this.cryptoCodex=t}getGossipHistoryByTime(t="asc"){let n=this.cache.map(r=>({senderId:r.senderId,topic:r.topic,data:r.serializedMessage}));return t==="asc"?n:n.reverse()}addMessage(t){let n=tt.time,{marker:r,neighLength:s,timestamp:o,dataLength:a,pubkey:g,associatedId:I}=this.cryptoCodex.readBufferHeader(t);if(n-o>ut.EXPIRATION)return;let A=t.subarray(0,47+s+a),u=ee(A);if(this.xxHash32UsageCount++,this.seenTimeouts[u])return;let l=ut.MARKERS_BYTES[r],f=I,y=n+ut.CACHE_DURATION;return this.cache.push({hash:u,senderId:f,topic:l,serializedMessage:t,timestamp:o,expiration:y}),this.seenTimeouts[u]=y,--this.cleanupIn<=0&&this.#e(n),{hash:u,isNew:!this.seenTimeouts[u]}}#e(t=tt.time){let n=-1;for(let r=0;r<this.cache.length;r++)this.cache[r].expiration<=t?delete this.seenTimeouts[this.cache[r].hash]:n===-1&&(n=r);n>0?this.cache=this.cache.slice(n):n===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},le=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,n,r,s,o=0){this.id=t,this.cryptoCodex=n,this.arbiter=r,this.peerStore=s,this.verbose=o,this.bloomFilter=new Ne(n)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}async broadcastToAll(t,n="gossip",r){let s=r||ut.HOPS[n]||ut.HOPS.default,o=await this.cryptoCodex.createGossipMessage(n,t,s,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(o)){this.verbose>3&&console.log(`(${this.id}) Gossip ${n}, to ${JSON.stringify(this.peerStore.neighborsList)}: ${t}`);for(let a of this.peerStore.neighborsList)this.#e(a,o)}}#e(t,n){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{r.send(n)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let n=this.bloomFilter.getGossipHistoryByTime("asc");for(let r of n)this.#e(t,r.data)}async handleGossipMessage(t,n){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived gossip message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,n.byteLength,"gossip"))return;for(let h of this.callbacks.message_handle||[])h(n);if(!this.bloomFilter.addMessage(n))return;let r=this.cryptoCodex.readGossipMessage(n);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,n)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{topic:o,timestamp:a,neighborsList:g,HOPS:I,senderId:A,data:u}=r;if(A===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(A===t?`(${this.id}) Gossip ${o} from ${A}: ${u}`:`(${this.id}) Gossip ${o} from ${A} (by: ${t}): ${u}`),this.peerStore.digestPeerNeighbors(A,g);for(let h of this.callbacks[o]||[])h(A,u,I,r);if(I<1)return;let l=this.peerStore.neighborsList.length,f=Math.max(1,l/ut.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),y=ut.TRANSMISSION_RATE[o]||ut.TRANSMISSION_RATE.default,w=Math.pow(y,f),m=l<ut.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,v=this.cryptoCodex.decrementGossipHops(n);for(let h of this.peerStore.neighborsList)if(h!==t){if(!m&&Math.random()>w)continue;this.#e(h,v)}}};await wt();var{SANDBOX:sr,ICE_CANDIDATE_EMITTER:Ar,TEST_WS_EVENT_MANAGER:or}=Et.ENABLED?await ae().then(()=>oe):{},Te=class{maxOffers=30;offers=[];orderingBy="neighborsCount";get size(){return this.offers.length}updateOrderingBy(t=!1){this.orderingBy=t?"overlap":"neighborsCount"}removeOlderThan(t=1e3){this.offers=this.offers.filter(n=>n.timestamp+t>=tt.time)}get bestOfferInfo(){let{senderId:t,overlap:n,neighborsCount:r,data:s,timestamp:o}=this.offers.shift()||{};return{senderId:t,data:s,timestamp:o,value:this.orderingBy==="overlap"?n:r}}pushSortTrim(t,n={min:.2,max:.8}){let{min:r,max:s}=n;Math.random()<Math.min(r,this.offers.size/this.maxOffers*s)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((o,a)=>this.orderingBy==="overlap"?o.overlap-a.overlap:a.neighborsCount-o.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},de=class{id;cryptoCodex;gossip;messager;peerStore;bootstraps;offersQueue=new Te;bootstrapsConnectionState=new Map;services;NEIGHBORS_TARGET;HALF_TARGET;TWICE_TARGET;setNeighborsTarget(t=At.TARGET_NEIGHBORS_COUNT){this.NEIGHBORS_TARGET=t,this.HALF_TARGET=Math.ceil(this.NEIGHBORS_TARGET/2),this.TWICE_TARGET=this.NEIGHBORS_TARGET*2}automation={incomingOffer:!0,incomingAnswer:!0,spreadOffers:!0,connectBootstraps:!0};phase=0;nextBootstrapIndex=0;maxBonus=at.CONNECTION_UPGRADE_TIMEOUT*.2;get isPublicNode(){return!!this.services?.publicUrl}constructor(t,n,r,s,o,a){this.setNeighborsTarget(At.TARGET_NEIGHBORS_COUNT),this.id=t,this.cryptoCodex=n,this.gossip=r,this.messager=s,this.peerStore=o;for(let g of a)this.bootstrapsConnectionState.set(g,!1);this.bootstraps=[...a].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:n,isEnough:r,isTooMany:s,isHalfReached:o}=this.#e,a=n>=this.NEIGHBORS_TARGET/3?1:ft.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=r?0:a,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(s)return Math.random()>.05?this.#o():null;r?Math.random()>.05&&this.#A():this.#A(),this.phase=this.phase?0:1,this.phase===0&&this.tryConnectNextBootstrap(t,n),this.phase===1&&this.#s(n,o)}handleIncomingSignal(t,n,r){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||n.signal?.type!=="offer"&&n.signal?.type!=="answer")return;let{signal:s,offerHash:o}=n||{},{connected:a,nonPublicNeighborsCount:g,isTooMany:I,isHalfReached:A}=this.#e;if(I||a[t])return;if(s.type==="answer"){if(!this.automation.incomingAnswer||this.peerStore.addConnectingPeer(t,s,o)!==!0)return;let y=Math.abs(g-this.#t(t).nonPublicCount),w=this.maxBonus/this.NEIGHBORS_TARGET,m=Math.round(Math.min(this.maxBonus,y*w));return this.peerStore.assignSignal(t,s,o,tt.time+m)}if(!this.automation.incomingOffer||g>this.TWICE_TARGET)return;let{overlap:u,nonPublicCount:l}=this.#t(t);if(l>this.TWICE_TARGET)return;let f={senderId:t,data:n,overlap:u,neighborsCount:l,timestamp:tt.time};this.offersQueue.updateOrderingBy(A),this.offersQueue.pushSortTrim(f)}tryConnectNextBootstrap(t=0,n=0){if(!this.automation.connectBootstraps||this.bootstraps.length===0)return;let r=t-n,s=0;for(let a in this.peerStore.connecting)s++;if(this.NEIGHBORS_TARGET||t){if(r>=this.HALF_TARGET)return;if(t>=this.NEIGHBORS_TARGET)return;if(s+n>this.TWICE_TARGET)return}let o=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.bootstrapsConnectionState.get(o)||this.#r(o)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=this.NEIGHBORS_TARGET,isTooMany:this.peerStore.standardNeighborsList.length>this.NEIGHBORS_TARGET,isHalfReached:this.peerStore.standardNeighborsList.length>=this.HALF_TARGET}}#t(t="toto"){let n=this.peerStore.known[t]?.neighbors||{},r={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let s in n)this.cryptoCodex.isPublicNode(s)||r.nonPublicCount++;for(let s of this.peerStore.standardNeighborsList)n[s]&&r.overlap++;return r}#n(t=[]){return t.map(n=>({id:n,...this.#t(n)}))}#i(t){let n=typeof window<"u",s=n&&window.location.protocol==="https:"?"wss://":"ws://",o=t.endsWith("/ws"),a=n&&!o?window.location.host:t;return t.startsWith("ws")?t:`${s}${a}`}#r(t="localhost:8080"){let n=null,r=new ft.WS_CLIENT(this.#i(t));r.binaryType="arraybuffer",r.onerror=s=>console.error("WebSocket error:",s.stack),r.onopen=async()=>{this.bootstrapsConnectionState.set(t,!0),r.onclose=()=>{this.bootstrapsConnectionState.set(t,!1);for(let o of this.peerStore.callbacks.disconnect)o(n,"out")},r.onmessage=async o=>{if(n)for(let a of this.peerStore.callbacks.data)a(n,o.data);else{let a=new Uint8Array(o.data);if(a[0]>127)return;let g=this.cryptoCodex.readUnicastMessage(a);if(!g)return;let{route:I,type:A,neighborsList:u}=g;if(A!=="handshake"||I.length!==2)return;let{signatureStart:l,pubkey:f,signature:y}=g,w=a.subarray(0,l);if(!await this.cryptoCodex.verifySignature(f,w,y))return;n=I[0],this.peerStore.digestPeerNeighbors(n,u),this.peerStore.connecting[n]?.in?.close(),this.peerStore.connecting[n]||(this.peerStore.connecting[n]={}),this.peerStore.connecting[n].out=new Ut(n,r,"out",!0);for(let m of this.peerStore.callbacks.connect)m(n,"out")}};let s=await this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList);r.send(s)}}#s(t=0,n=!1){if(!this.automation.spreadOffers||!this.peerStore.neighborsList.length)return;let s=Object.keys(this.peerStore.connecting).length+t,{offerHash:o,readyOffer:a}=this.peerStore.offerManager.bestReadyOffer(0,!0);if(!o||!a)return;if(!n&&s<=this.TWICE_TARGET){this.gossip.broadcastToAll({signal:a.signal,offerHash:o},"signal_offer"),a.sentCounter++;return}let g=null;for(let w of this.#n(this.peerStore.standardNeighborsList)){let m=w[n?"overlap":"nonPublicCount"];g===null&&(g=m),n&&m<g&&(g=m),!n&&m<=g&&(g=m)}let I=100,A=1e3,u=this.peerStore.knownCount,l=Math.max(Math.min(A/u,u/A),.127),f=[];for(let w in this.peerStore.known){if(Math.random()>l)continue;if(--A<=0)break;if(w===this.id||this.cryptoCodex.isPublicNode(w)||this.peerStore.isKicked(w))continue;if(this.peerStore.connected[w]||this.peerStore.connecting[w])continue;let{overlap:m,nonPublicCount:v}=this.#t(w);if(!(v>this.NEIGHBORS_TARGET)&&(g===null&&(g=n?m:v),!(n&&m>g)&&!(!n&&v<g)&&(f.push(w),--I<=0)))break}if(!f.length)return;let y=new Map;for(let w=0;w<Math.min(f.length,100);w++){let m=f[Math.floor(Math.random()*f.length)];if(!y.has(m)&&(y.size===0&&a.sentCounter++,y.set(m,!0),this.messager.sendUnicast(m,{signal:a.signal,offerHash:o},"signal_offer",1),y.size>=12))break}}#A(){let t=null,n=Object.keys(this.peerStore.connecting).length;this.offersQueue.updateOrderingBy(this.#e.isHalfReached),this.offersQueue.removeOlderThan(ft.SDP_OFFER_EXPIRATION/2);for(let r=0;r<this.offersQueue.size;r++){let{senderId:s,data:o,timestamp:a,value:g}=this.offersQueue.bestOfferInfo;if(!s||!o||!a)break;if(!(this.peerStore.connected[s]||this.peerStore.isKicked(s))&&!this.peerStore.connecting[s]?.in){if(t=t===null?g:t,t!==g)break;this.peerStore.addConnectingPeer(s,o.signal,o.offerHash)===!0&&(this.peerStore.assignSignal(s,o.signal,o.offerHash,a),n++)}}}#o(){let n=this.#n(this.peerStore.standardNeighborsList).sort((r,s)=>s.overlap-r.overlap||s.nonPublicCount-r.nonPublicCount);this.peerStore.kickPeer(n[0].id,6e4,"improveTopology")}};await wt();var Dt=class p{IS_BROWSER=typeof window<"u";FROMBASE64_AVAILABLE=typeof Uint8Array.fromBase64=="function";textEncoder=new TextEncoder;textDecoder=new TextDecoder;buffer2=new ArrayBuffer(2);view2=new DataView(this.buffer2);buffer4=new ArrayBuffer(4);view4=new DataView(this.buffer4);buffer8=new ArrayBuffer(8);view8=new DataView(this.buffer8);hexMap={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};numberTo2Bytes(t){return this.view2.setUint16(0,t,!0),new Uint8Array(this.buffer2)}numberTo4Bytes(t){return this.view4.setUint32(0,t,!0),new Uint8Array(this.buffer4)}numberTo8Bytes(t){return this.view8.setBigUint64(0,BigInt(t),!0),new Uint8Array(this.buffer8)}stringToBytes(t="toto"){return this.textEncoder.encode(t)}hexToBytes(t){let n=t.length/2,r=new Uint8Array(n);for(let s=0,o=0;s<n;++s,o+=2)r[s]=(this.hexMap[t[o]]<<4)+this.hexMap[t[o+1]];return r}base64toBytes(t){if(!this.IS_BROWSER)return new Uint8Array(Buffer.from(t,"base64"));if(this.FROMBASE64_AVAILABLE)return Uint8Array.fromBase64(t);let n=atob(t),r=new Uint8Array(n.length);for(let s=0;s<n.length;s++)r[s]=n.charCodeAt(s);return r}bytes2ToNumber(t){for(let n=0;n<2;n++)this.view2.setUint8(n,t[n]);return this.view2.getUint16(0,!0)}bytes4ToNumber(t){for(let n=0;n<4;n++)this.view4.setUint8(n,t[n]);return this.view4.getUint32(0,!0)}bytes8ToNumber(t){for(let n=0;n<8;n++)this.view8.setUint8(n,t[n]);return Number(this.view8.getBigUint64(0,!0))}bytesToString(t){return this.textDecoder.decode(t)}static bytesToHex(t,n=0){let r="";for(let s of t)r+=s<16?`0${s.toString(16)}`:s.toString(16);return n>0&&(r=r.padStart(n,"0")),r}bytesToHex(t,n=0){return p.bytesToHex(t,n)}static hexToBits(t="ffffff",n="string"){let r=[];if(n==="arrayOfNumbers")for(let s=0;s<t.length;s++)r.push(...parseInt(t[s],16).toString(2).padStart(4,"0").split("").map(o=>parseInt(o,10)));else for(let s=0;s<t.length;s++)r.push(parseInt(t[s],16).toString(2).padStart(4,"0"));return n==="string"?r.join(""):r}static bytesToBits(t,n="string"){return this.hexToBits(this.bytesToHex(t),n)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((n,r)=>(n<<8)+parseInt(r,10),0)}};var We=typeof window<"u",Nn=await Promise.resolve().then(()=>(_n(),Sn)),qt=Nn.default||Nn;var Kt=class{converter=new Dt;argon2;hash=async(t,n,r=2**16,s=1,o=1,a=2,g=32)=>{let I=this.#e(t,n,s,r,o,a,g),A=await this.getArgon2Lib(),u=We?await A.hash(I):await A.hash(t,I);if(!u)return!1;let l=u.encoded||u,f=this.#t(l);return f||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!We)try{let n=await import("argon2");this.argon2=n}catch{throw new Error("Please install argon2 package: npm install argon2")}if(this.argon2)return this.argon2;try{if(argon2)return console.log("Argon2 loaded as a global variable"),this.argon2=argon2,this.argon2}catch{}if(this.argon2)return this.argon2;console.log("trying import argon2 ES6 and inject in window");let t=await Promise.resolve().then(()=>(Dn(),Rn));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",n="saltsaltsaltsaltsalt",r=1,s=2**10,o=1,a=2,g=32){let I=n.padEnd(20,"0").substring(0,16);return{type:a,pass:t,parallelism:o,time:r,timeCost:r,mem:s,memoryCost:s,hashLen:g,hashLength:g,salt:We?I:Buffer.from(I)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let n=t.split("$").pop(),r=this.converter.base64toBytes(n),s=this.converter.bytesToHex(r),o=Dt.hexToBits(s,"string");return o?{encoded:t,hash:r,hex:s,bitsString:o}:!1}};var je=class{#e=[];#t=new Map;#n=null;#i=0;#r=10;#s=5;verifySignature(t,n,r){return new Promise(s=>{let o=this.#i++;if(this.#e.push({id:o,publicKey:t,dataToVerify:n,signature:r}),this.#t.set(o,s),this.#e.length>=this.#r){this.#A();return}this.#n||(this.#n=setTimeout(()=>this.#A(),this.#s))})}async#A(){if(this.#n&&(clearTimeout(this.#n),this.#n=null),this.#e.length===0)return;let t=this.#e.splice(0),n=await Promise.all(t.map(r=>qt.verifyAsync(r.signature,r.dataToVerify,r.publicKey)));for(let r=0;r<t.length;r++)this.#t.get(t[r].id)(n[r]),this.#t.delete(t[r].id)}},Wt=class p{argon2=new Kt;converter=new Dt;AVOID_CRYPTO=!1;verifier;verbose=at.DEFAULT_VERBOSE;id;publicKey;privateKey;constructor(t,n=at.DEFAULT_VERBOSE){if(this.verbose=n,!t)return;this.id=t.padEnd(X.ID_LENGTH," ").slice(0,X.ID_LENGTH),this.privateKey=new Uint8Array(32).fill(0),this.publicKey=new Uint8Array(32).fill(0);let r=new TextEncoder().encode(this.id);for(let s=0;s<X.ID_LENGTH;s++)this.publicKey[s]=r[s]}static async createCryptoCodex(t,n){let r=new p(void 0,this.verbose);return await r.generate(t,n),r}static isPublicNode(t){return(X.ARE_IDS_HEX?Dt.hexToBits(t[0]):t).startsWith(X.PUBLIC_PREFIX)}get idLength(){return X.ARE_IDS_HEX?X.ID_LENGTH/2:X.ID_LENGTH}isPublicNode(t){return p.isPublicNode(t)}async generate(t,n){if(!this.nodeId&&(await this.#t(n,t),this.AVOID_CRYPTO=!1,this.verifier=new je,!this.id))throw new Error("Failed to generate identity")}async pubkeyDifficultyCheck(t){if(this.AVOID_CRYPTO||!X.DIFFICULTY)return!0;let{bitsString:n}=await this.argon2.hash(t,"HiveP2P",X.ARGON2_MEM)||{};if(n&&n.startsWith("0".repeat(X.DIFFICULTY)))return!0}#e(t){return X.ARE_IDS_HEX?this.converter.bytesToHex(t.slice(0,this.idLength),X.ID_LENGTH):this.converter.bytesToString(t.slice(0,X.ID_LENGTH))}async#t(t,n){let r=2**X.DIFFICULTY*100;for(let s=0;s<r;s++){let{secretKey:o,publicKey:a}=await qt.keygenAsync(t),g=this.#e(a);if(!(n&&!this.isPublicNode(g))&&!(!n&&this.isPublicNode(g))&&await this.pubkeyDifficultyCheck(a)){this.id=g,this.privateKey=o,this.publicKey=a,this.verbose>2&&console.log(`%cNode generated id: ${this.id} (isPublic: ${n}, difficulty: ${X.DIFFICULTY}) after ${((s+1)/2).toFixed(1)} iterations`,it.CRYPTO_CODEX);return}}this.verbose>0&&console.log(`%cFAILED to generate id after ${r} iterations. Try lowering the difficulty.`,it.CRYPTO_CODEX)}async signBufferViewAndAppendSignature(t,n,r=t.length-X.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let s=t.subarray(0,r),o=await qt.signAsync(s,n);t.set(o,r)}async createGossipMessage(t,n,r=3,s=[],o=tt.time){let a=ut.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create gossip message: unknown topic '${t}'.`);let g=this.#n(s),{dataCode:I,dataBytes:A}=this.#i(n),u=47+g.length+A.length+X.SIGNATURE_LENGTH+1,l=new ArrayBuffer(u),f=new Uint8Array(l);return this.#r(f,a,I,s.length,o,A,this.publicKey),f.set(g,47),f.set(A,47+g.length),f.set([Math.min(255,r)],u-1),await this.signBufferViewAndAppendSignature(f,this.privateKey,u-X.SIGNATURE_LENGTH-1),f}decrementGossipHops(t){let n=new Uint8Array(t),r=t[t.length-1];return n[t.length-1]=Math.max(0,r-1),n}async createUnicastMessage(t,n,r,s=[],o=tt.time){let a=ct.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create unicast message: unknown type '${t}'.`);if(r.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(r.length>ct.MAX_HOPS)throw new Error(`Failed to create unicast message: route exceeds max hops (${ct.MAX_HOPS}).`);let g=this.#n(s),{dataCode:I,dataBytes:A}=this.#i(n),u=this.#n(r),l=47+g.length+1+u.length+A.length+X.SIGNATURE_LENGTH,f=new ArrayBuffer(l),y=new Uint8Array(f);this.#r(y,a,I,s.length,o,A,this.publicKey);let w=g.length+A.length;return y.set(g,47),y.set(A,47+g.length),y.set([r.length],47+w),y.set(u,48+w),await this.signBufferViewAndAppendSignature(y,this.privateKey,l-X.SIGNATURE_LENGTH),y}async createReroutedUnicastMessage(t,n){if(n.length<2)throw new Error("Failed to create rerouted unicast message: route must have at least 2 nodes (next hop and target).");if(n.length>ct.MAX_HOPS)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${ct.MAX_HOPS}).`);let r=n.map(g=>this.converter.stringToBytes(g)),s=t.length+32+X.ID_LENGTH*r.length+X.SIGNATURE_LENGTH,o=new ArrayBuffer(s),a=new Uint8Array(o);a.set(t,0),a.set(this.publicKey,t.length);for(let g=0;g<r.length;g++)a.set(r[g],t.length+32+g*X.ID_LENGTH);return await this.signBufferViewAndAppendSignature(a,this.privateKey,s-X.SIGNATURE_LENGTH),a}#n(t){return X.ARE_IDS_HEX?this.converter.hexToBytes(t.join(""),X.ID_LENGTH*t.length):this.converter.stringToBytes(t.join(""))}#i(t){return typeof t=="string"?{dataCode:1,dataBytes:this.converter.stringToBytes(t)}:t instanceof Uint8Array?{dataCode:2,dataBytes:t}:{dataCode:3,dataBytes:this.converter.stringToBytes(JSON.stringify(t))}}#r(t,n,r,s,o,a,g){let I=this.converter.numberTo8Bytes(o),A=this.converter.numberTo4Bytes(a.length);t.set([n],0),t.set([r],1),t.set([s],2),t.set(I,3),t.set(A,11),t.set(g,15)}async verifySignature(t,n,r){return this.AVOID_CRYPTO?!0:this.verifier.verifySignature(t,n,r)}readBufferHeader(t,n=!0){let r=t[0],s=t[1],o=t[2],a=t.slice(3,11),g=t.slice(11,15),I=t.slice(15,47),A=n?this.#e(I):null,u=o*this.idLength,l=this.converter.bytes8ToNumber(a),f=this.converter.bytes4ToNumber(g);return{marker:r,dataCode:s,neighLength:u,timestamp:l,dataLength:f,pubkey:I,associatedId:A}}readGossipMessage(t){this.verbose>3&&console.log(`%creadGossipMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:n,dataCode:r,neighLength:s,timestamp:o,dataLength:a,pubkey:g,associatedId:I}=this.readBufferHeader(t),A=ut.MARKERS_BYTES[n];if(A===void 0)throw new Error(`Failed to deserialize gossip message: unknown marker byte ${d[0]}.`);let u=s+a,l=this.#s(t.slice(47,47+s)),f=this.#A(r,t.slice(47+s,47+u)),y=47+u,w=t.slice(y,y+X.SIGNATURE_LENGTH),m=t[t.length-1],v=y+X.SIGNATURE_LENGTH+1,h=I;return new ue(A,o,l,m,h,g,f,w,y,v)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${topic||"unknown"} gossip message:`,n.stack)}return null}readUnicastMessage(t){this.verbose>3&&console.log(`%creadUnicastMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:n,dataCode:r,neighLength:s,timestamp:o,dataLength:a,pubkey:g}=this.readBufferHeader(t,!1),I=ct.MARKERS_BYTES[n];if(I===void 0)throw new Error(`Failed to deserialize unicast message: unknown marker byte ${d[0]}.`);let A=s+a,u=this.#s(t.slice(47,47+s)),l=this.#A(r,t.slice(47+s,47+A)),y=t[47+A]*this.idLength,w=47+A+1+y,m=t.slice(47+A+1,w),v=this.#s(m),h=w+X.SIGNATURE_LENGTH,C=t.slice(w,h);if(!(t.length>h))return new Vt(I,o,u,v,g,l,C,w,h);let S=t.slice(h,h+32),Q=this.#s(t.slice(h+32,t.length-X.SIGNATURE_LENGTH)),_=t.slice(t.length-X.SIGNATURE_LENGTH);return new ge(I,o,u,v,g,l,C,S,Q,_,t.length)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${type||"unknown"} unicast message:`,n.stack)}return null}#s(t){let n=[],r=this.idLength;if(t.length%r!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let s=0;s<t.length/r;s++){let o=t.slice(s*r,(s+1)*r);X.ARE_IDS_HEX?n.push(this.converter.bytesToHex(o,X.ID_LENGTH)):n.push(this.converter.bytesToString(o))}return n}#A(t,n){if(t===1)return this.converter.bytesToString(n);if(t===2)return n;if(t===3)return JSON.parse(this.converter.bytesToString(n));throw new Error(`Failed to parse data: unknown data code '${t}'.`)}};await wt();var Ci=at.IS_BROWSER?null:await import("dgram"),Qe=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,n,r=3,s=1){this.id=t.id,this.verbose=s,this.maxKick=r,this.peerStore=n,this.cryptoCodex=t}start(t="localhost",n=Rt.PORT){this.publicUrl=`ws://${t}:${n}`,this.#e(t,n),Et.USE_TEST_TRANSPORTS||this.#t(t,n+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-At.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let n=0,r=Rt.AUTO_KICK_DELAY;for(let s in this.peerStore.connected){let o=this.peerStore.connected[s],a=this.peerStore.getUpdatedPeerConnectionsCount(s,!1);if(a>At.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(s,Rt.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=At.TARGET_NEIGHBORS_COUNT)break;continue}if(!(o.getConnectionDuration()<(a>2?r:r*2))&&(this.peerStore.kickPeer(s,Rt.AUTO_KICK_DURATION,"freePublicNode"),++n>=t))break}}#e(t="localhost",n=Rt.PORT){this.wsServer=new ft.WS_SERVER({port:n,host:t}),this.wsServer.on("error",r=>console.error(`WebSocket error on Node #${this.id}:`,r)),this.wsServer.on("connection",async r=>{r.on("close",()=>{if(s)for(let a of this.peerStore.callbacks.disconnect)a(s,"in")}),r.on("error",a=>console.error(`WebSocket error on Node #${this.id} with peer ${s}:`,a.stack));let s;r.on("message",async a=>{if(s)for(let g of this.peerStore.callbacks.data)g(s,a);else{let g=new Uint8Array(a);if(g[0]>127)return;let I=this.cryptoCodex.readUnicastMessage(g);if(!I)return;let{route:A,type:u,neighborsList:l}=I;if(u!=="handshake"||A.length!==2)return;let{signatureStart:f,pubkey:y,signature:w}=I,m=g.subarray(0,f);if(!await this.cryptoCodex.verifySignature(y,m,w))return;s=A[0],this.peerStore.digestPeerNeighbors(s,l),this.peerStore.connecting[s]?.out?.close(),this.peerStore.connecting[s]||(this.peerStore.connecting[s]={}),this.peerStore.connecting[s].in=new Ut(s,r,"in",!0);for(let v of this.peerStore.callbacks.connect)v(s,"in")}});let o=await this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList);r.send(o)})}#t(t="localhost",n=Rt.PORT+1){this.stunServer=Ci.createSocket("udp4"),this.stunServer.on("message",(r,s)=>{this.verbose>2&&console.log(`%cSTUN message from ${s.address}:${s.port} - ${r.toString("hex")}`,it.SERVICE),this.#n(r)&&this.stunServer.send(this.#i(r,s),s.port,s.address)}),this.stunServer.bind(n,t),this.verbose>2&&console.log(`%cSTUN server listening on ${t}:${n}`,it.SERVICE)}#n(t){if(t.length<20)return!1;let n=t.readUInt16BE(0),r=t.readUInt32BE(4);return n===1&&r===554869826}#i(t,n){let r=t.subarray(8,20),s=Buffer.allocUnsafe(32);return s.writeUInt16BE(257,0),s.writeUInt16BE(12,2),s.writeUInt32BE(554869826,4),r.copy(s,8),s.writeUInt16BE(1,20),s.writeUInt16BE(8,22),s.writeUInt16BE(1,24),s.writeUInt16BE(n.port,26),s.writeUInt32BE(Dt.ipToInt(n.address),28),this.verbose>2&&console.log(`%cSTUN Response: client will discover IP ${n.address}:${n.port}`,"color: green;"),s}static deriveSTUNServers(t){let n=[];for(let r of t){if(!r.includes(":")||r.endsWith("/ws")||r.endsWith("/wss"))continue;let s=r.replace("ws://","stun:");s.replace("wss://","stun:"),s.includes("stun:")&&n.push({urls:s})}return ft.CENTRALIZED_STUN_SERVERS&&(n.push({urls:"stun:stun.l.google.com:5349"}),n.push({urls:"stun:stun.l.google.com:19302"}),n.push({urls:"stun:stun1.l.google.com:3478"}),n.push({urls:"stun:stun1.l.google.com:5349"})),n}};async function Tn(p={}){let t=p.verbose!==void 0?p.verbose:at.DEFAULT_VERBOSE,n=p.cryptoCodex||new Wt(void 0,t),r=tt.sync(t);n.publicKey||await n.generate(!1),await r;let s=new Zt(n,p.bootstraps||[],t);return p.autoStart!==!1&&await s.start(),s}var Zt=class{started=!1;id;cryptoCodex;verbose;offerManager;arbiter;peerStore;messager;gossip;topologist;services;constructor(t,n=[],r=at.DEFAULT_VERBOSE){this.verbose=r,this.topologist?.services&&(this.topologist.services.verbose=r),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let s=Qe.deriveSTUNServers(n||[]);this.offerManager=new ne(this.id,s,r),this.arbiter=new te(this.id,t,r),this.peerStore=new ce(this.id,this.cryptoCodex,this.offerManager,this.arbiter,r),this.messager=new fe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.gossip=new le(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.topologist=new de(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,n||[]);let{arbiter:o,peerStore:a,messager:g,gossip:I,topologist:A}=this;a.on("signal",(u,l)=>this.sendMessage(u,l,"signal_answer")),a.on("connect",(u,l)=>this.#e(u,l)),a.on("disconnect",(u,l)=>this.#t(u,l)),a.on("data",(u,l)=>this.#n(u,l)),g.on("signal_answer",(u,l)=>A.handleIncomingSignal(u,l)),g.on("signal_offer",(u,l)=>A.handleIncomingSignal(u,l)),I.on("signal_offer",(u,l,f)=>A.handleIncomingSignal(u,l,f)),r>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,n)=>{let r=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!r&&!this.cryptoCodex.isPublicNode(this.id)||n==="in")&&this.sendMessage(t,this.id,"handshake");let o=this.peerStore.neighborsList.length>=At.TARGET_NEIGHBORS_COUNT+this.halfTarget,a=()=>{At.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&o&&this.broadcast([],"over_neighbored"),At.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};At.ON_CONNECT_DISPATCH.DELAY?setTimeout(a,At.ON_CONNECT_DISPATCH.DELAY):a()};#t=(t,n)=>{if(!this.peerStore.neighborsList.length){for(let o in this.peerStore.connecting)this.peerStore.kickPeer(o,0,"no_neighbors_left");for(let o in this.offerManager.offers)this.offerManager.offers[o].timestamp=0}let r=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,n)=>{let r=new Uint8Array(n);r[0]>127?this.gossip.handleGossipMessage(t,r):this.messager.handleDirectMessage(t,r)};get publicUrl(){return this.services?.publicUrl}get time(){return tt.time}async start(){return await tt.sync(this.verbose),this.started=!0,Et.AVOID_INTERVALS||(this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500),this.publicUrl)||(this.enhancerInterval=setInterval(()=>this.topologist.tick(),At.LOOP_DELAY),this.topologist.tryConnectNextBootstrap()),!0}async broadcast(t,n,r){return this.gossip.broadcastToAll(t,n,r)}async sendMessage(t,n,r,s=1){return this.messager.sendUnicast(t,n,r,s)}async tryConnectToPeer(t="toto",n=10){if(!this.peerStore.connected[t])do{let{offerHash:r,readyOffer:s}=this.peerStore.offerManager.bestReadyOffer(100,!1);if(!r||!s)await new Promise(o=>setTimeout(o,1e3));else{this.messager.sendUnicast(t,{signal:s.signal,offerHash:r},"signal_offer",1);return}}while(n-- >0)}destroy(){this.enhancerInterval&&clearInterval(this.enhancerInterval),this.enhancerInterval=null,this.peerStoreInterval&&clearInterval(this.peerStoreInterval),this.peerStoreInterval=null,this.peerStore.destroy(),this.wsServer&&this.wsServer.close(),this.stunServer&&this.stunServer.close()}onPeerConnect(t){this.peerStore.on("connect",t)}onPeerDisconnect(t){this.peerStore.on("disconnect",t)}onMessageData(t){this.messager.on("message",t)}onGossipData(t){this.gossip.on("gossip",t)}onSignalOffer(t){this.messager.on("signal_offer",t),this.gossip.on("signal_offer",t)}onSignalAnswer(t){this.messager.on("signal_answer",t)}kickPeer(t,n="kicked_by_node"){this.peerStore.kickPeer(t,0,n)}banPeer(t,n=6e4,r="banished_by_node"){this.arbiter.trustBalances[t]=0,this.arbiter.adjustTrust(t,-n,r)}};await wt();function vn(p,t){for(let n in t)t[n]&&typeof t[n]=="object"&&!Array.isArray(t[n])?(p[n]=p[n]||{},vn(p[n],t[n])):p[n]=t[n]}var Fn={CLOCK:tt,CONFIG:ze,mergeConfig:vn,Node:Zt,createNode:Tn,CryptoCodex:Wt,ed25519:qt,Argon2Unified:Kt};var as=Fn;typeof window<"u"&&(window.HiveP2P=Fn);export{Kt as Argon2Unified,tt as CLOCK,ze as CONFIG,Wt as CryptoCodex,Zt as Node,Tn as createNode,as as default,qt as ed25519,vn as mergeConfig};
3
+ `,s:"-",t:"0 0",a:["group:BUNDLE..."]}};return n==="offer"&&this.PENDING_OFFERS[t]?.[s]?{success:!1,signalData:null,reason:`There is already a pending offer with the same SDP ID for transport ID: ${t} (extreme case)`}:(n==="offer"&&!this.PENDING_OFFERS[t]&&(this.PENDING_OFFERS[t]={}),n==="offer"&&(this.PENDING_OFFERS[t][s]=o),n==="answer"&&(this.PENDING_ANSWERS[t]=o),{success:!0,signalData:o,reason:"na"})}#n(t,n){let{transportId:r,type:s,sdp:o}=t;if(r===void 0)return{success:!1,reason:"Missing transportId in signal data."};if(s!=="offer"&&s!=="answer")return{success:!1,reason:`Invalid signal type: ${s}.`};if(s==="offer"&&(!this.PENDING_OFFERS[r]||!this.PENDING_OFFERS[r][o.id]))return{success:!1,reason:`No pending offer found for transport ID: ${r} with SDP ID: ${o.id}`};if(s==="answer"&&(!this.PENDING_ANSWERS[r]||this.PENDING_ANSWERS[r].sdp.id!==o.id))return{success:!1,reason:`No pending answer found for transport ID: ${r} with SDP ID: ${o.id}`};if(s==="offer"&&Math.random()<Et.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${r} to ${n}`};if(s==="answer"&&Math.random()<Et.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${r} to ${n}`};if(s==="offer")return this.buildSDP(n,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[n],delete this.PENDING_ANSWERS[r];let a=this.sandbox.linkInstances(n,r);return{success:!a,reason:a||"na"}}buildSDP(t,n){let r={min:Et.ICE_DELAY.min,max:Et.ICE_DELAY.max},s=Math.floor(Math.random()*(r.max-r.min+1))+r.min;this.sdpToBuild.push({transportId:t,type:n,time:Date.now()+s})}digestSignal(t,n){this.signalsToDigest.push({signalData:t,receiverId:n})}},re=class{verbose=at.DEFAULT_VERBOSE;wsGlobalIndex=1;tGlobalIndex=1;transportInstances={};wsConnections={};publicWsServers={};inscribeWebSocketServer(t,n){this.publicWsServers[t]=n}removeWebSocketServer(t){delete this.publicWsServers[t]}inscribeWsConnection(t){let n=(this.wsGlobalIndex++).toString();t.id=n,this.wsConnections[n]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed wsConnection: ${t.id}`)}connectToWebSocketServer(t,n,r){let s=this.wsConnections[n],o=this.publicWsServers[t];if(!s||!o||o.closing||o.clients.size>=o.maxClients)return;let a=new r(o,n);o.clients.add(a),a.init(s.id),o.callbacks.connection.forEach(g=>g(a)),s.init(a.id)}inscribeInstance(t){let n=(this.tGlobalIndex++).toString();t.id=n,this.transportInstances[n]=t,this.verbose>3&&console.log(`[SANDBOX] Inscribed transport: ${n}`)}linkInstances(t,n){let[r,s]=[this.transportInstances[t],this.transportInstances[n]];if(!r||!s)return`Missing transport instances: ${t}=>${!!r}, ${n}=>${!!s}`;if(r.initiator&&s.initiator)return`Both transport instances cannot be initiators: ${t}, ${n}`;if(r.destroying||s.destroying)return`One of the transport instances is destroying: ${t}=>${r.destroying}, ${n}=>${s.destroying}`;if(r.destroyed||s.destroyed)return`One of the transport instances is destroyed: ${t}=>${r.destroyed}, ${n}=>${s.destroyed}`;if(r.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${r.remoteId}`;if(s.remoteId)return`Transport instance tB: ${n} is already linked to remoteId: ${s.remoteId}`;r.remoteId=n,s.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${n}`),r.callbacks.connect.forEach(o=>o()),s.callbacks.connect.forEach(o=>o())}sendData(t,n,r){if(t===void 0)return{success:!1,reason:`Cannot send message from id: ${t}`};if(n===void 0)return{success:!1,reason:`Cannot send message to id: ${n}`};let s=this.transportInstances[t];if(!s)return{success:!1,reason:`No transport instance found for id: ${t}`};if(!s.remoteId)return{success:!1,reason:`Transport instance ${t} is not linked to any remoteId`};if(s.id!==t)return{success:!1,reason:`Wrong id for senderInstance ${t} !== ${s.id}`};if(s.remoteId!==n)return{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${n}`};let o=this.transportInstances[n];return o?o.remoteId?o.id!==n?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${n}`}:o.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${n}`}:(this.enqueueTransportData(t,n,r),{success:!0,reason:"na"}):{success:!1,reason:`Transport instance ${n} is not linked to any remoteId`}:{success:!1,reason:`No transport instance found for id: ${n}`}}destroyTransportAndAssociatedTransport(t){let n=this.transportInstances[t];if(!n)return;let r=n.remoteId,s=r?this.transportInstances[r]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),n&&s&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${r}`),delete this.transportInstances[r],s.destroy(`Remote transport instance ${t} closed the connection.`)),delete this.transportInstances[t],n.close()}batchSize=2500;messageQueueSync=[];queueIndex=0;messageQueue=new Array(1e5);queueStart=0;queueEnd=0;queueCount=0;processMessageQueueSync(){let t=this.messageQueueSync.length;if(t===0)return;let n=this.batchSize;t>this.batchSize*3&&(n=this.batchSize*1.5),t>this.batchSize*5&&(n=this.batchSize*2),t>this.batchSize*10&&(n=this.batchSize*3),t>this.batchSize*20&&(n=this.batchSize*5),n=Math.round(n);let r=Math.min(this.queueIndex+n,t);for(let o=this.queueIndex;o<r;o++){let[a,g,I,A]=this.messageQueueSync[o];a==="transport_data"?this.#e(g,I,A):a==="ws_message"&&this.#t(g,I,A)}if(this.queueIndex=r,this.queueIndex<5e3)return;let s=this.messageQueueSync.length>5e4;s&&console.warn(`[SANDBOX] Message queue is very long: ${this.messageQueueSync.length} messages pending.`),s&&(this.queueIndex+=this.batchSize),this.messageQueueSync=this.messageQueueSync.slice(this.queueIndex),this.queueIndex=0}async processMessageQueue(){if(this.queueCount===0)return;let t=this.batchSize;this.queueCount>this.batchSize*3&&(t=this.batchSize*1.5),this.queueCount>this.batchSize*5&&(t=this.batchSize*2),this.queueCount>this.batchSize*10&&(t=this.batchSize*3),this.queueCount>this.batchSize*20&&(t=this.batchSize*5);let n=Math.min(t,this.queueCount);for(let r=0;r<n;r++){let s=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[o,a,g,I]=s;o==="transport_data"?this.#e(a,g,I):o==="ws_message"&&this.#t(a,g,I)}await new Promise(r=>setTimeout(r,0)),this.queueCount-=n}#e(t,n,r){let[s,o]=[this.transportInstances[t],this.transportInstances[n]];if(!s||!o||s.destroying||o.destroying){s?.close(),o?.close();return}if(s.destroyed){o.close();return}if(o.destroyed){s.close();return}for(let a of o.callbacks.data)a(r)}#t(t,n,r){let[s,o]=[this.wsConnections[t],this.wsConnections[n]];if(!o||!s||o.readyState!==1||s.readyState!==1){o?.close(),s?.close();return}if(o.onmessage)o.onmessage({data:r});else for(let a of o.callbacks.message)a(r)}enqueueTransportDataSync(t,n,r){this.messageQueueSync.push(["transport_data",t,n,r])}enqueueWsMessageSync(t,n,r){this.messageQueueSync.push(["ws_message",t,n,r])}enqueueTransportData(t,n,r){this.messageQueue[this.queueEnd]=["transport_data",t,n,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}enqueueWsMessage(t,n,r){this.messageQueue[this.queueEnd]=["ws_message",t,n,r],this.queueEnd=(this.queueEnd+1)%this.messageQueue.length,this.queueCount++,this.queueCount===this.messageQueue.length&&(console.error("[SANDBOX] Message queue overflow, dropping oldest messages."),this.queueStart=(this.queueStart+this.batchSize)%this.messageQueue.length,this.queueCount-=this.batchSize)}}});var oe={};we(oe,{ICE_CANDIDATE_EMITTER:()=>Re,SANDBOX:()=>Ct,TEST_WS_EVENT_MANAGER:()=>se,TestTransport:()=>_e,TestWsConnection:()=>Ae,TestWsServer:()=>Se});var me,Ae,Se,_e,Ct,Re,se,ae=Yt(async()=>{await wt();await en();me=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),n=this.toInit;this.toInit=[];for(let{connId:r,time:s}of n)s>t?this.toInit.push({connId:r,time:s}):this.#e(r)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),n=this.toClose;this.toClose=[];for(let{wsId:r,remoteWsId:s,time:o}of n)o>t?this.toClose.push({wsId:r,remoteWsId:s,time:o}):this.#t(r,s)}cleanerTick(){let t=Date.now();for(let n of Object.values(Ct.publicWsServers))for(let r of n.clients)r.readyState===3&&n.clients.delete(r)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),n=this.toError;this.toError=[];for(let{wsId:r,error:s,time:o}of n)o>t?this.toError.push({wsId:r,error:s,time:o}):Ct.wsConnections[r]?.dispatchError(s)}#e(t){let n=Ct.wsConnections[t];n&&Ct.connectToWebSocketServer(n.url,n.id,Ae)}#t(t,n){let r=Ct.wsConnections[t],s=Ct.wsConnections[n];r?.onclose?.(),s?.onclose?.();for(let o of r?.callbacks?.close||[])o();for(let o of s?.callbacks?.close||[])o()}scheduleInit(t,n=500){this.toInit.push({connId:t,time:Date.now()+n})}scheduleClose(t,n,r=100){this.toClose.push({wsId:t,remoteWsId:n,time:Date.now()+r})}scheduleError(t,n,r=100){this.toError.push({wsId:t,error:n,time:Date.now()+r})}},Ae=class{id;isTestTransport=!0;remoteWsId=null;remoteId=!1;delayBeforeConnectionTry=500;readyState=0;url;callbacks={message:[],close:[],error:[]};onmessage;onopen;onclose;onerror;constructor(t="ws://...",n){Ct.inscribeWsConnection(this),!n&&(this.url=t,se.scheduleInit(this.id,this.delayBeforeConnectionTry))}init(t){if(!this.readyState===3||this.remoteWsId){this.close(),console.error(`WebSocket instance already closed or connected: ${this.id}`),se.scheduleError(this.id,`Failed to connect to WebSocket server at ${this.url}`,1e3);return}this.remoteWsId=t,this.readyState=1,this.onopen&&this.onopen()}on(t,n){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(n)}close(){if(this.readyState===3)return;this.readyState=3;let t=Ct.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&se.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}Ct.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(n=>n(t)),this.onerror&&this.onerror(t)}},Se=class{url;clients=new Set;maxClients=Rt.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,Ct.inscribeWebSocketServer(this.url,this)}on(t,n){if(!this.callbacks[t])return console.error(`Unknown event: ${t}`);this.callbacks[t].push(n)}close(){if(!this.closing){this.closing=!0,Ct.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},_e=class{destroying;destroyed;id=null;isTestTransport=!0;remoteId=null;remoteWsId=!1;callbacks={connect:[],close:[],data:[],signal:[],error:[]};initiator;trickle;wrtc;constructor(t={initiator:!1,trickle:!0,wrtc:null,timeout:5e3}){Ct.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&Re.buildSDP(this.id,"offer")}on(t,n){this.callbacks[t]&&this.callbacks[t].push(n)}dispatchError(t){this.callbacks.error.forEach(n=>n(new Error(t)))}signal(t){if(!this.destroying){if(this.destroyed)throw new Error(`Transport instance already destroyed: ${this.id}`);if(this.remoteId)return this.dispatchError(`Transport instance already connected to a remote ID: ${this.remoteId}`);if(!t.sdp||!t.sdp.id)return this.dispatchError("Invalid remote SDP:",t);if(t.type==="answer"&&!this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an answer.");if(t.type==="offer"&&this.initiator)return this.dispatchError("Invalid remote SDP type: expecting an offer.");Re.digestSignal(t,this.id)}}send(t){let{success:n,reason:r}=Ct.sendData(this.id,this.remoteId,t);n||this.destroy(r)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(n=>n()),Ct.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},Ct=new re,Re=new ie(Ct),se=new me});var Sn={};we(Sn,{Point:()=>vt,etc:()=>ci,getPublicKey:()=>pn,getPublicKeyAsync:()=>Bn,hash:()=>ni,hashes:()=>Ke,keygen:()=>hi,keygenAsync:()=>gi,sign:()=>Ai,signAsync:()=>si,utils:()=>fi,verify:()=>ai,verifyAsync:()=>oi});var cn,Bt,Ie,nn,rn,ve,Fe,Vn,Tt,$t,$n,ht,Zn,zn,ti,mt,pe,hn,gn,Ge,Ft,sn,Le,fn,ei,Lt,un,Ee,Gt,P,ln,dn,In,ni,ke,Me,vt,kt,Jt,En,Oe,Nt,ii,An,ri,Ce,xe,Pe,Cn,He,Ye,Bn,pn,Qn,yn,wn,si,Ai,Je,bn,oi,ai,ci,Ke,qe,hi,gi,fi,Be,ui,mn,Ue,li,on,an,di,_n=Yt(()=>{cn={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Bt,n:Ie,Gx:nn,Gy:rn,a:ve,d:Fe,h:Vn}=cn,Tt=32,$t=64,$n=(...p)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...p)},ht=(p="")=>{let t=new Error(p);throw $n(t,ht),t},Zn=p=>typeof p=="bigint",zn=p=>typeof p=="string",ti=p=>p instanceof Uint8Array||ArrayBuffer.isView(p)&&p.constructor.name==="Uint8Array",mt=(p,t,n="")=>{let r=ti(p),s=p?.length,o=t!==void 0;if(!r||o&&s!==t){let a=n&&`"${n}" `,g=o?` of length ${t}`:"",I=r?`length=${s}`:`type=${typeof p}`;ht(a+"expected Uint8Array"+g+", got "+I)}return p},pe=p=>new Uint8Array(p),hn=p=>Uint8Array.from(p),gn=(p,t)=>p.toString(16).padStart(t,"0"),Ge=p=>Array.from(mt(p)).map(t=>gn(t,2)).join(""),Ft={_0:48,_9:57,A:65,F:70,a:97,f:102},sn=p=>{if(p>=Ft._0&&p<=Ft._9)return p-Ft._0;if(p>=Ft.A&&p<=Ft.F)return p-(Ft.A-10);if(p>=Ft.a&&p<=Ft.f)return p-(Ft.a-10)},Le=p=>{let t="hex invalid";if(!zn(p))return ht(t);let n=p.length,r=n/2;if(n%2)return ht(t);let s=pe(r);for(let o=0,a=0;o<r;o++,a+=2){let g=sn(p.charCodeAt(a)),I=sn(p.charCodeAt(a+1));if(g===void 0||I===void 0)return ht(t);s[o]=g*16+I}return s},fn=()=>globalThis?.crypto,ei=()=>fn()?.subtle??ht("crypto.subtle must be defined, consider polyfill"),Lt=(...p)=>{let t=pe(p.reduce((r,s)=>r+mt(s).length,0)),n=0;return p.forEach(r=>{t.set(r,n),n+=r.length}),t},un=(p=Tt)=>fn().getRandomValues(pe(p)),Ee=BigInt,Gt=(p,t,n,r="bad number: out of range")=>Zn(p)&&t<=p&&p<n?p:ht(r),P=(p,t=Bt)=>{let n=p%t;return n>=0n?n:t+n},ln=p=>P(p,Ie),dn=(p,t)=>{(p===0n||t<=0n)&&ht("no inverse n="+p+" mod="+t);let n=P(p,t),r=t,s=0n,o=1n,a=1n,g=0n;for(;n!==0n;){let I=r/n,A=r%n,u=s-a*I,l=o-g*I;r=n,n=A,s=a,o=g,a=u,g=l}return r===1n?P(s,t):ht("no inverse")},In=p=>{let t=Ke[p];return typeof t!="function"&&ht("hashes."+p+" not set"),t},ni=p=>In("sha512")(p),ke=p=>p instanceof vt?p:ht("Point expected"),Me=2n**256n,vt=class p{static BASE;static ZERO;X;Y;Z;T;constructor(t,n,r,s){let o=Me;this.X=Gt(t,0n,o),this.Y=Gt(n,0n,o),this.Z=Gt(r,1n,o),this.T=Gt(s,0n,o),Object.freeze(this)}static CURVE(){return cn}static fromAffine(t){return new p(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){let r=Fe,s=hn(mt(t,Tt)),o=t[31];s[31]=o&-129;let a=Oe(s);Gt(a,0n,n?Me:Bt);let I=P(a*a),A=P(I-1n),u=P(r*I+1n),{isValid:l,value:f}=ri(A,u);l||ht("bad point: y not sqrt");let y=(f&1n)===1n,w=(o&128)!==0;return!n&&f===0n&&w&&ht("bad point: x==0, isLastByteOdd"),w!==y&&(f=P(-f)),new p(f,a,1n,P(f*a))}static fromHex(t,n){return p.fromBytes(Le(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=ve,n=Fe,r=this;if(r.is0())return ht("bad point: ZERO");let{X:s,Y:o,Z:a,T:g}=r,I=P(s*s),A=P(o*o),u=P(a*a),l=P(u*u),f=P(I*t),y=P(u*P(f+A)),w=P(l+P(n*P(I*A)));if(y!==w)return ht("bad point: equation left != right (1)");let m=P(s*o),v=P(a*g);return m!==v?ht("bad point: equation left != right (2)"):this}equals(t){let{X:n,Y:r,Z:s}=this,{X:o,Y:a,Z:g}=ke(t),I=P(n*g),A=P(o*s),u=P(r*g),l=P(a*s);return I===A&&u===l}is0(){return this.equals(Jt)}negate(){return new p(P(-this.X),this.Y,this.Z,P(-this.T))}double(){let{X:t,Y:n,Z:r}=this,s=ve,o=P(t*t),a=P(n*n),g=P(2n*P(r*r)),I=P(s*o),A=t+n,u=P(P(A*A)-o-a),l=I+a,f=l-g,y=I-a,w=P(u*f),m=P(l*y),v=P(u*y),h=P(f*l);return new p(w,m,h,v)}add(t){let{X:n,Y:r,Z:s,T:o}=this,{X:a,Y:g,Z:I,T:A}=ke(t),u=ve,l=Fe,f=P(n*a),y=P(r*g),w=P(o*l*A),m=P(s*I),v=P((n+r)*(a+g)-f-y),h=P(m-w),C=P(m+w),E=P(y-u*f),S=P(v*h),Q=P(C*E),_=P(v*E),M=P(h*C);return new p(S,Q,M,_)}subtract(t){return this.add(ke(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return Jt;if(Gt(t,1n,Ie),t===1n)return this;if(this.equals(kt))return di(t).p;let r=Jt,s=kt;for(let o=this;t>0n;o=o.double(),t>>=1n)t&1n?r=r.add(o):n&&(s=s.add(o));return r}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:n,Z:r}=this;if(this.equals(Jt))return{x:0n,y:1n};let s=dn(r,Bt);P(r*s)!==1n&&ht("invalid inverse");let o=P(t*s),a=P(n*s);return{x:o,y:a}}toBytes(){let{x:t,y:n}=this.assertValidity().toAffine(),r=En(n);return r[31]|=t&1n?128:0,r}toHex(){return Ge(this.toBytes())}clearCofactor(){return this.multiply(Ee(Vn),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Ie/2n,!1).double();return Ie%2n&&(t=t.add(this)),t.is0()}},kt=new vt(nn,rn,1n,P(nn*rn)),Jt=new vt(0n,1n,1n,0n);vt.BASE=kt;vt.ZERO=Jt;En=p=>Le(gn(Gt(p,0n,Me),$t)).reverse(),Oe=p=>Ee("0x"+Ge(hn(mt(p)).reverse())),Nt=(p,t)=>{let n=p;for(;t-- >0n;)n*=n,n%=Bt;return n},ii=p=>{let n=p*p%Bt*p%Bt,r=Nt(n,2n)*n%Bt,s=Nt(r,1n)*p%Bt,o=Nt(s,5n)*s%Bt,a=Nt(o,10n)*o%Bt,g=Nt(a,20n)*a%Bt,I=Nt(g,40n)*g%Bt,A=Nt(I,80n)*I%Bt,u=Nt(A,80n)*I%Bt,l=Nt(u,10n)*o%Bt;return{pow_p_5_8:Nt(l,2n)*p%Bt,b2:n}},An=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,ri=(p,t)=>{let n=P(t*t*t),r=P(n*n*t),s=ii(p*r).pow_p_5_8,o=P(p*n*s),a=P(t*o*o),g=o,I=P(o*An),A=a===p,u=a===P(-p),l=a===P(-p*An);return A&&(o=g),(u||l)&&(o=I),(P(o)&1n)===1n&&(o=P(-o)),{isValid:A||u,value:o}},Ce=p=>ln(Oe(p)),xe=(...p)=>Ke.sha512Async(Lt(...p)),Pe=(...p)=>In("sha512")(Lt(...p)),Cn=p=>{let t=p.slice(0,Tt);t[0]&=248,t[31]&=127,t[31]|=64;let n=p.slice(Tt,$t),r=Ce(t),s=kt.multiply(r),o=s.toBytes();return{head:t,prefix:n,scalar:r,point:s,pointBytes:o}},He=p=>xe(mt(p,Tt)).then(Cn),Ye=p=>Cn(Pe(mt(p,Tt))),Bn=p=>He(p).then(t=>t.pointBytes),pn=p=>Ye(p).pointBytes,Qn=p=>xe(p.hashable).then(p.finish),yn=p=>p.finish(Pe(p.hashable)),wn=(p,t,n)=>{let{pointBytes:r,scalar:s}=p,o=Ce(t),a=kt.multiply(o).toBytes();return{hashable:Lt(a,r,n),finish:A=>{let u=ln(o+Ce(A)*s);return mt(Lt(a,En(u)),$t)}}},si=async(p,t)=>{let n=mt(p),r=await He(t),s=await xe(r.prefix,n);return Qn(wn(r,s,n))},Ai=(p,t)=>{let n=mt(p),r=Ye(t),s=Pe(r.prefix,n);return yn(wn(r,s,n))},Je={zip215:!0},bn=(p,t,n,r=Je)=>{p=mt(p,$t),t=mt(t),n=mt(n,Tt);let{zip215:s}=r,o,a,g,I,A=Uint8Array.of();try{o=vt.fromBytes(n,s),a=vt.fromBytes(p.slice(0,Tt),s),g=Oe(p.slice(Tt,$t)),I=kt.multiply(g,!1),A=Lt(a.toBytes(),o.toBytes(),t)}catch{}return{hashable:A,finish:l=>{if(I==null||!s&&o.isSmallOrder())return!1;let f=Ce(l);return a.add(o.multiply(f,!1)).add(I.negate()).clearCofactor().is0()}}},oi=async(p,t,n,r=Je)=>Qn(bn(p,t,n,r)),ai=(p,t,n,r=Je)=>yn(bn(p,t,n,r)),ci={bytesToHex:Ge,hexToBytes:Le,concatBytes:Lt,mod:P,invert:dn,randomBytes:un},Ke={sha512Async:async p=>{let t=ei(),n=Lt(p);return pe(await t.digest("SHA-512",n.buffer))},sha512:void 0},qe=(p=un(Tt))=>p,hi=p=>{let t=qe(p),n=pn(t);return{secretKey:t,publicKey:n}},gi=async p=>{let t=qe(p),n=await Bn(t);return{secretKey:t,publicKey:n}},fi={getExtendedPublicKeyAsync:He,getExtendedPublicKey:Ye,randomSecretKey:qe},Be=8,ui=256,mn=Math.ceil(ui/Be)+1,Ue=2**(Be-1),li=()=>{let p=[],t=kt,n=t;for(let r=0;r<mn;r++){n=t,p.push(n);for(let s=1;s<Ue;s++)n=n.add(t),p.push(n);t=n.double()}return p},an=(p,t)=>{let n=t.negate();return p?n:t},di=p=>{let t=on||(on=li()),n=Jt,r=kt,s=2**Be,o=s,a=Ee(s-1),g=Ee(Be);for(let I=0;I<mn;I++){let A=Number(p&a);p>>=g,A>Ue&&(A-=o,p+=1n);let u=I*Ue,l=u,f=u+Math.abs(A)-1,y=I%2!==0,w=A<0;A===0?r=r.add(an(y,t[l])):n=n.add(an(w,t[f]))}return p!==0n&&ht("invalid wnaf"),{p:n,f:r}}});var Rn={};we(Rn,{default:()=>Ei});var Ii,Ei,Dn=Yt(()=>{Ii=(()=>{var p,t,n={773(o,a,g){var I,A=typeof self<"u"&&self.Module!==void 0?self.Module:{},u={};for(I in A)A.hasOwnProperty(I)&&(u[I]=A[I]);var l,f,y,w,m=[];l=typeof window=="object",f=typeof importScripts=="function",y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!l&&!y&&!f;var v,h,C,E,S,Q="";y?(Q=f?g(967).dirname(Q)+"/":"//",v=function(F,G){return E||(E=g(145)),S||(S=g(967)),F=S.normalize(F),E.readFileSync(F,G?null:"utf8")},C=function(F){var G=v(F,!0);return G.buffer||(G=new Uint8Array(G)),U(G.buffer),G},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),m=process.argv.slice(2),o.exports=A,process.on("uncaughtException",function(F){if(!(F instanceof k))throw F}),process.on("unhandledRejection",j),A.inspect=function(){return"[Emscripten Module object]"}):w?(typeof read<"u"&&(v=function(F){return read(F)}),C=function(F){var G;return typeof readbuffer=="function"?new Uint8Array(readbuffer(F)):(U(typeof(G=read(F,"binary"))=="object"),G)},typeof scriptArgs<"u"?m=scriptArgs:arguments!==void 0&&(m=arguments),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(l||f)&&(f?Q=self.location.href:typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),Q=Q.indexOf("blob:")!==0?Q.substr(0,Q.lastIndexOf("/")+1):"",v=function(F){var G=new XMLHttpRequest;return G.open("GET",F,!1),G.send(null),G.responseText},f&&(C=function(F){var G=new XMLHttpRequest;return G.open("GET",F,!1),G.responseType="arraybuffer",G.send(null),new Uint8Array(G.response)}),h=function(F,G,e){var i=new XMLHttpRequest;i.open("GET",F,!0),i.responseType="arraybuffer",i.onload=function(){i.status==200||i.status==0&&i.response?G(i.response):e()},i.onerror=e,i.send(null)}),A.print||console.log.bind(console);var _,M,b=A.printErr||console.warn.bind(console);for(I in u)u.hasOwnProperty(I)&&(A[I]=u[I]);u=null,A.arguments&&(m=A.arguments),A.thisProgram&&A.thisProgram,A.quit&&A.quit,A.wasmBinary&&(_=A.wasmBinary),A.noExitRuntime,typeof WebAssembly!="object"&&j("no native wasm support detected");var R=!1;function U(F,G){F||j("Assertion failed: "+G)}var O,H,J=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function K(F){O=F,A.HEAP8=new Int8Array(F),A.HEAP16=new Int16Array(F),A.HEAP32=new Int32Array(F),A.HEAPU8=H=new Uint8Array(F),A.HEAPU16=new Uint16Array(F),A.HEAPU32=new Uint32Array(F),A.HEAPF32=new Float32Array(F),A.HEAPF64=new Float64Array(F)}A.INITIAL_MEMORY;var V,rt=[],Y=[],bt=[],ot=0,gt=null,W=null;function j(F){throw A.onAbort&&A.onAbort(F),b(F+=""),R=!0,F="abort("+F+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(F)}function dt(F){return F.startsWith("data:application/octet-stream;base64,")}function st(F){return F.startsWith("file://")}A.preloadedImages={},A.preloadedAudios={};var pt,et="argon2.wasm";function St(F){try{if(F==et&&_)return new Uint8Array(_);if(C)return C(F);throw"both async and sync fetching of the wasm failed"}catch(G){j(G)}}function yt(F){for(;F.length>0;){var G=F.shift();if(typeof G!="function"){var e=G.func;typeof e=="number"?G.arg===void 0?V.get(e)():V.get(e)(G.arg):e(G.arg===void 0?null:G.arg)}else G(A)}}function Mt(F){try{return M.grow(F-O.byteLength+65535>>>16),K(M.buffer),1}catch{}}dt(et)||(pt=et,et=A.locateFile?A.locateFile(pt,Q):Q+pt);var _t,It={a:function(F,G,e){H.copyWithin(F,G,G+e)},b:function(F){var G,e=H.length;if((F>>>=0)>2147418112)return!1;for(var i=1;i<=4;i*=2){var c=e*(1+.2/i);if(c=Math.min(c,F+100663296),Mt(Math.min(2147418112,((G=Math.max(F,c))%65536>0&&(G+=65536-G%65536),G))))return!0}return!1}},Qt=((function(){var F={a:It};function G(c,B){var D,T=c.exports;A.asm=T,K((M=A.asm.c).buffer),V=A.asm.k,D=A.asm.d,Y.unshift(D),(function(L){if(ot--,A.monitorRunDependencies&&A.monitorRunDependencies(ot),ot==0&&(gt!==null&&(clearInterval(gt),gt=null),W)){var q=W;W=null,q()}})()}function e(c){G(c.instance)}function i(c){return(function(){if(!_&&(l||f)){if(typeof fetch=="function"&&!st(et))return fetch(et,{credentials:"same-origin"}).then(function(B){if(!B.ok)throw"failed to load wasm binary file at '"+et+"'";return B.arrayBuffer()}).catch(function(){return St(et)});if(h)return new Promise(function(B,D){h(et,function(T){B(new Uint8Array(T))},D)})}return Promise.resolve().then(function(){return St(et)})})().then(function(B){return WebAssembly.instantiate(B,F)}).then(c,function(B){b("failed to asynchronously prepare wasm: "+B),j(B)})}if(ot++,A.monitorRunDependencies&&A.monitorRunDependencies(ot),A.instantiateWasm)try{return A.instantiateWasm(F,G)}catch(c){return b("Module.instantiateWasm callback failed with error: "+c),!1}_||typeof WebAssembly.instantiateStreaming!="function"||dt(et)||st(et)||typeof fetch!="function"?i(e):fetch(et,{credentials:"same-origin"}).then(function(c){return WebAssembly.instantiateStreaming(c,F).then(e,function(B){return b("wasm streaming compile failed: "+B),b("falling back to ArrayBuffer instantiation"),i(e)})})})(),A.___wasm_call_ctors=function(){return(A.___wasm_call_ctors=A.asm.d).apply(null,arguments)},A._argon2_hash=function(){return(A._argon2_hash=A.asm.e).apply(null,arguments)},A._malloc=function(){return(Qt=A._malloc=A.asm.f).apply(null,arguments)}),N=(A._free=function(){return(A._free=A.asm.g).apply(null,arguments)},A._argon2_verify=function(){return(A._argon2_verify=A.asm.h).apply(null,arguments)},A._argon2_error_message=function(){return(A._argon2_error_message=A.asm.i).apply(null,arguments)},A._argon2_encodedlen=function(){return(A._argon2_encodedlen=A.asm.j).apply(null,arguments)},A._argon2_hash_ext=function(){return(A._argon2_hash_ext=A.asm.l).apply(null,arguments)},A._argon2_verify_ext=function(){return(A._argon2_verify_ext=A.asm.m).apply(null,arguments)},A.stackAlloc=function(){return(N=A.stackAlloc=A.asm.n).apply(null,arguments)});function k(F){this.name="ExitStatus",this.message="Program terminated with exit("+F+")",this.status=F}function x(F){function G(){_t||(_t=!0,A.calledRun=!0,R||(yt(Y),A.onRuntimeInitialized&&A.onRuntimeInitialized(),(function(){var e;if(A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;)e=A.postRun.shift(),bt.unshift(e);yt(bt)})()))}F=F||m,ot>0||((function(){var e;if(A.preRun)for(typeof A.preRun=="function"&&(A.preRun=[A.preRun]);A.preRun.length;)e=A.preRun.shift(),rt.unshift(e);yt(rt)})(),ot>0||(A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),G()},1)):G()))}if(A.allocate=function(F,G){var e;return e=G==1?N(F.length):Qt(F.length),F.subarray||F.slice?H.set(F,e):H.set(new Uint8Array(F),e),e},A.UTF8ToString=function(F,G){return F?(function(e,i,c){for(var B=i+c,D=i;e[D]&&!(D>=B);)++D;if(D-i>16&&e.subarray&&J)return J.decode(e.subarray(i,D));for(var T="";i<D;){var L=e[i++];if(128&L){var q=63&e[i++];if((224&L)!=192){var nt=63&e[i++];if((L=(240&L)==224?(15&L)<<12|q<<6|nt:(7&L)<<18|q<<12|nt<<6|63&e[i++])<65536)T+=String.fromCharCode(L);else{var $=L-65536;T+=String.fromCharCode(55296|$>>10,56320|1023&$)}}else T+=String.fromCharCode((31&L)<<6|q)}else T+=String.fromCharCode(L)}return T})(H,F,G):""},A.ALLOC_NORMAL=0,W=function F(){_t||x(),_t||(W=F)},A.run=x,A.preInit)for(typeof A.preInit=="function"&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();x(),o.exports=A,A.unloadRuntime=function(){typeof self<"u"&&delete self.Module,A=M=V=O=H=void 0,delete o.exports}},631:function(o,a,g){var I,A;typeof self<"u",(A=typeof(I=function(){let u=typeof self<"u"?self:this,l={Argon2d:0,Argon2i:1,Argon2id:2};function f(h){if(f._promise)return f._promise;if(f._module)return Promise.resolve(f._module);let C;return C=u.process&&u.process.versions&&u.process.versions.node?y().then(E=>new Promise(S=>{E.postRun=()=>S(E)})):(u.loadArgon2WasmBinary?u.loadArgon2WasmBinary():Promise.resolve(g(721)).then(E=>(function(S){let Q=atob(S),_=new Uint8Array(new ArrayBuffer(Q.length));for(let M=0;M<Q.length;M++)_[M]=Q.charCodeAt(M);return _})(E))).then(E=>{var S,Q;return S=E,Q=h?(function(_){let M=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*_/65536),256)+256,M),maximum:M})})(h):void 0,new Promise(_=>(u.Module={wasmBinary:S,wasmMemory:Q,postRun(){_(Module)}},y()))}),f._promise=C,C.then(E=>(f._module=E,delete f._promise,E))}function y(){return u.loadArgon2WasmModule?u.loadArgon2WasmModule():Promise.resolve(g(773))}function w(h,C){return h.allocate(C,"i8",h.ALLOC_NORMAL)}function m(h,C){return w(h,new Uint8Array([...C,0]))}function v(h){if(typeof h!="string")return h;if(typeof TextEncoder=="function")return new TextEncoder().encode(h);if(typeof Buffer=="function")return Buffer.from(h);throw Error("Don't know how to encode UTF8")}return{ArgonType:l,hash:function(h){let C=h.mem||1024;return f(C).then(E=>{let S=h.time||1,Q=h.parallelism||1,_=v(h.pass),M=m(E,_),b=_.length,R=v(h.salt),U=m(E,R),O=R.length,H=h.type||l.Argon2d,J=E.allocate(Array(h.hashLen||24),"i8",E.ALLOC_NORMAL),K=h.secret?w(E,h.secret):0,V=h.secret?h.secret.byteLength:0,rt=h.ad?w(E,h.ad):0,Y=h.ad?h.ad.byteLength:0,bt=h.hashLen||24,ot=E._argon2_encodedlen(S,C,Q,O,bt,H),gt=E.allocate(Array(ot+1),"i8",E.ALLOC_NORMAL),W,j,dt;try{j=E._argon2_hash_ext(S,C,Q,M,b,U,O,J,bt,gt,ot,H,K,V,rt,Y,19)}catch(st){W=st}if(j!==0||W){try{W||(W=E.UTF8ToString(E._argon2_error_message(j)))}catch{}dt={message:W,code:j}}else{let st="",pt=new Uint8Array(bt);for(let et=0;et<bt;et++){let St=E.HEAP8[J+et];pt[et]=St,st+=("0"+(255&St).toString(16)).slice(-2)}dt={hash:pt,hashHex:st,encoded:E.UTF8ToString(gt)}}try{E._free(M),E._free(U),E._free(J),E._free(gt),rt&&E._free(rt),K&&E._free(K)}catch{}if(W)throw dt;return dt})},verify:function(h){return f().then(C=>{let E=v(h.pass),S=m(C,E),Q=E.length,_=h.secret?w(C,h.secret):0,M=h.secret?h.secret.byteLength:0,b=h.ad?w(C,h.ad):0,R=h.ad?h.ad.byteLength:0,U=m(C,v(h.encoded)),O,H,J,K=h.type;if(K===void 0){let V=h.encoded.split("$")[1];V&&(K=l[V=V.replace("a","A")]||l.Argon2d)}try{H=C._argon2_verify_ext(U,S,Q,_,M,b,R,K)}catch(V){O=V}if(H||O){try{O||(O=C.UTF8ToString(C._argon2_error_message(H)))}catch{}J={message:O,code:H}}try{C._free(S),C._free(U)}catch{}if(O)throw J;return J})},unloadRuntime:function(){f._module&&(f._module.unloadRuntime(),delete f._promise,delete f._module)}}})=="function"?I.apply(a,[]):I)===void 0||(o.exports=A)},721:function(o,a){o.exports="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DwtBixEPC0GeEyEBCyABC48DAQF/IwBBgANrIgQkACAEQQA2AowBIARBjAFqIAEQBwJAIAFBwABNBEAgBEGQAWogARAYQQBIDQEgBEGQAWogBEGMAWpBBBAGQQBIDQEgBEGQAWogAiADEAZBAEgNASAEQZABaiAAIAEQEhoMAQsgBEGQAWpBwAAQGEEASA0AIARBkAFqIARBjAFqQQQQBkEASA0AIARBkAFqIAIgAxAGQQBIDQAgBEGQAWogBEFAa0HAABASQQBIDQAgACAEKQNANwAAIAAgBCkDSDcACCAAIAQpA1g3ABggACAEKQNQNwAQIABBIGohACABQSBrIgJBwQBPBEADQCAEIARBQGtBwAAQBSIBQUBrQcAAIAEQMUEASA0CIAAgASkDQDcAACAAIAEpA0g3AAggACAEKQNYNwAYIAAgBCkDUDcAECAAQSBqIQAgAkEgayICQcAASw0ACwsgBCAEQUBrQcAAEAUiAUFAayACIAEQMUEASA0AIAAgAUFAayACEAUaCyAEQZABakHwARAEIARBgANqJAALAwABC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGgHigCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0HcHkEZNgIAQX8FQQELDAELIAAgAToAAEEBCwtQAQN/AkAgACgCACwAABAPRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEA9FDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFB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AUHjFEEDEBANACABQQNqIANBDGoQFSIBRQ0AIAAgAygCDDYCKCABQecUQQMQEA0AIAFBA2ogA0EMahAVIgFFDQAgACADKAIMIgQ2AjAgACAENgI0IAEtAABBJEcNACADIAc2AgwgACgCECADQQxqIAFBAWoQLCIBRQ0AIAAgAygCDDYCFCABLQAAQSRHDQAgAyAGNgIMIAAoAgAgA0EMaiABQQFqECwiAUUNACAAIAMoAgw2AgQgAEEANgJEIABCADcCPCAAQgA3AhggAEIANwIgIAAQHCICDQBBYEEAIAEtAAAbIQILIANBEGokACACCykBAn8DQCAAIAJBA3QiA2ogASADaikAADcDACACQQFqIgJBgAFHDQALCwwAIABBAEGACBALGgtlAQJ/IAAgAhAeIgIEfyACBUFdQQACfyAAKAIAIQRBACECIAAoAgQiAAR/A0AgAyACIARqLQAAIAEgAmotAABzciEDIAJBAWoiAiAARw0ACyADQQFrQQh2QQFxQQFrBUEACwsbCwtdAQJ/IwBB8AFrIgMkAEF/IQQCQCACRSAARSABRXJyIAFBwABLcg0AIAMgARAYQQBIDQAgAyACQcAAEAZBAEgNACADIAAgARASIQQLIANB8AEQBCADQfABaiQAIAQLCQAgACABNwAACxAAIwAgAGtBcHEiACQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAUaIAAgACgCFCABajYCFCACC9oBAQR/IwBB0ABrIggkAAJAIABFBEBBYCEADAELIAggABAKIgk2AgwgCCAJNgIcIAggCRAJIgo2AhggCCAJEAkiCzYCCEEAIQkCQAJAIApFIAtFcg0AIAggAjYCFCAIIAE2AhAgCEEIaiAAIAcQLSIADQEgCCgCCCEJIAggCCgCDBAJIgA2AgggAEUNACAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAM2AiAgCEEIaiAJIAcQMCEADAELQWohAAsgCCgCGBAIIAgoAggQCCAJEAgLIAhB0ABqJAAgAAuQAgEDfyMAQdAAayIRJABBfiETAkAgCEEESQ0AIAgQCSISRQRAQWohEwwBCyARQQA2AkwgEUIANwJEIBEgAjYCPCARIAI2AjggESABNgI0IBEgADYCMCARIA82AiwgESAONgIoIBEgDTYCJCAR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IGxvbmcgb3IgdG9vIHNob3J0AE1pc3NpbmcgYXJndW1lbnRzAFRvbyBtYW55IGxhbmVzAFRvbyBmZXcgbGFuZXMAVG9vIG1hbnkgdGhyZWFkcwBOb3QgZW5vdWdoIHRocmVhZHMATWVtb3J5IGFsbG9jYXRpb24gZXJyb3IATWVtb3J5IGNvc3QgaXMgdG9vIHNtYWxsAFRpbWUgY29zdCBpcyB0b28gc21hbGwAYXJnb24yaQBBcmdvbjJpAFRoZSBwYXNzd29yZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgaGFzaABPdXRwdXQgcG9pbnRlciBtaXNtYXRjaABPdXRwdXQgaXMgdG9vIGxvbmcAU2FsdCBpcyB0b28gbG9uZwBTZWNyZXQgaXMgdG9vIGxvbmcAUGFzc3dvcmQgaXMgdG9vIGxvbmcAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBsb25nAFRocmVhZGluZyBmYWlsdXJlAE1lbW9yeSBjb3N0IGlzIHRvbyBsYXJnZQBUaW1lIGNvc3QgaXMgdG9vIGxhcmdlAFVua25vd24gZXJyb3IgY29kZQBhcmdvbjJpZABBcmdvbjJpZABFbmNvZGluZyBmYWlsZWQARGVjb2RpbmcgZmFpbGVkAGFyZ29uMmQAQXJnb24yZABBcmdvbjJfQ29udGV4dCBjb250ZXh0IGlzIE5VTEwAT3V0cHV0IHBvaW50ZXIgaXMgTlVMTABUaGUgYWxsb2NhdGUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAVGhlIGZyZWUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAT0sAJHY9ACx0PQAscD0AJG09AFRoZXJlIGlzIG5vIHN1Y2ggdmVyc2lvbiBvZiBBcmdvbjIAU2FsdCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBzYWx0IGxlbmd0aCBpcyBub3QgMABTZWNyZXQgcG9pbnRlciBpcyBOVUxMLCBidXQgc2VjcmV0IGxlbmd0aCBpcyBub3QgMABQYXNzd29yZCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBwYXNzd29yZCBsZW5ndGggaXMgbm90IDAAQXNzb2NpYXRlZCBkYXRhIHBvaW50ZXIgaXMgTlVMTCwgYnV0IGFkIGxlbmd0aCBpcyBub3QgMAAobnVsbCkAAACbCAAAuwcAAEkJAADACQAAsAkAAPAHAAAfCAAAMAgAAMkIAABvCgAA4AkAABYKAAA7CgAAQwgAACsLAADBCgAAkgoAAPQKAAACCAAAEQgAAFsJAABbCAAAdAkAAHQIAAAFCQAAdAcAAC0JAACeBwAA9AgAAGIHAAAYCQAAiAcAAOEIAABOBwAA/wkAAFwKAAABAEGkGAsBAgBByxgLBf//////AEGQGQtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQeEZCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQZsaCwEMAEGnGgsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEHVGgsBDgBB4RoLFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBjxsLARAAQZsbCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQdIbCw4SAAAAEhISAAAAAAAACQBBgxwLAQsAQY8cCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQb0cCwEMAEHJHAsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEHwHAsBAQBBoB4LAogPAEHYHgsDkBFQ"},145(){},967(){}},r={};function s(o){var a=r[o];if(a!==void 0)return a.exports;var g=r[o]={exports:{}};return n[o].call(g.exports,g,g.exports,s),g.exports}return s(631)})(),Ei=Ii});var be=class p{verbose;mockMode;static#e=null;#t=null;#n=!1;#i=0;#r=["time.google.com","time.cloudflare.com","pool.ntp.org"];constructor(t=0,n=!1){if(this.verbose=t,this.mockMode=n,p.#e)return p.#e;p.#e=this}static get instance(){return p.#e||new p}static get time(){return p.instance.time}get time(){return this.mockMode?Date.now():this.#t===null?null:Date.now()+Math.round(this.#t)}async sync(t){if(t!==void 0&&(this.verbose=t),this.mockMode)return Date.now();if(this.#n){for(;this.#n;)await new Promise(n=>setTimeout(n,50));return this.time}this.#n=!0;try{let n=await this.#s();return n.length===0?(console.warn("[Clock] All NTP sources failed, using local time"),this.#t=0,this.time):(this.#t=this.#o(n),this.#i=Date.now(),n.length<this.#r.length&&setTimeout(()=>this.#a(),100),this.time)}catch(n){return console.error("[Clock] Sync failed:",n),this.#t=0,this.time}finally{this.#n=!1}}get status(){return this.mockMode?{synchronized:!0,syncing:!1,offset:0,lastSync:Date.now(),age:0}:{synchronized:this.#t!==null,syncing:this.#n,offset:this.#t,lastSync:this.#i,age:this.#i?Date.now()-this.#i:null}}async#s(){let t=this.#r.map(s=>this.#A(s)),n=await Promise.allSettled(t),r=[];for(let s of n)s.status==="fulfilled"&&r.push(s.value);return r}async#A(t){let n=new AbortController,r=setTimeout(()=>n.abort(),2e3);try{let s=Date.now(),o=await fetch(`https://${t}`,{method:"HEAD",signal:n.signal,cache:"no-cache"}),a=(Date.now()-s)/2;if(!o.ok)throw new Error(`HTTP ${o.status}`);let g=new Date(o.headers.get("date")).getTime();if(isNaN(g))throw new Error("Invalid date header");return{source:t,serverTime:g+a,localTime:Date.now(),latency:a*2}}finally{clearTimeout(r)}}#o(t){if(t.length===1)return t[0].serverTime-t[0].localTime;t.sort((s,o)=>s.latency-o.latency);let n=[];for(let s of t)n.push(s.serverTime-s.localTime);n.sort((s,o)=>s-o);let r=Math.floor(n.length/2);return n.length%2===0?(n[r-1]+n[r])/2:n[r]}async#a(){if(!this.#n)try{let t=await this.#s();if(t.length===0)return;let n=this.#o(t);Math.abs(n-this.#t)>100&&(this.#t=n)}catch(t){this.verbose&&console.warn("[Clock] Background refine failed:",t)}}},tt=be.instance;await wt();await wt();var Yn=1e4,Jn=1e6,Kn=1e5,qn=36e5,lt={VALID_SIGNATURE:1e4,VALID_POW:3e5,UNICAST_RELAYED:5e3,WRONG_SIGNATURE:-6e5,WRONG_POW:-1e8,WRONG_SERIALIZATION:-6e4,GOSSIP_FLOOD:-6e4,UNICAST_FLOOD:-3e4,HOPS_EXCEEDED:-3e5,UNICAST_INVALID_ROUTE:-6e4,FAILED_HANDSHAKE:-6e5,WRONG_LENGTH:-6e5},te=class{id;cryptoCodex;verbose;trustBalances={};manualBanList=new Set;bytesCounters={gossip:{},unicast:{}};bytesCounterResetIn=0;constructor(t,n,r=0){this.id=t,this.cryptoCodex=n,this.verbose=r}tick(){for(let t in this.trustBalances){let n=this.trustBalances[t];n!==0&&(n=n<0?Math.min(0,n+1e3):Math.max(0,n-100))}this.bytesCounterResetIn-=1e3,!(this.bytesCounterResetIn>0)&&(this.bytesCounterResetIn=Yn,this.bytesCounters={gossip:{},unicast:{}})}countPeerAction(t,n){if(lt[n])return this.adjustTrust(t,lt[n])}adjustTrust(t,n,r="na"){t!==this.id&&(n&&(this.trustBalances[t]=Math.min(qn,(this.trustBalances[t]||0)+n)),n&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${n}ms (${r}). Updated: ${this.trustBalances[t]}ms.`,it.ARBITER),this.isBanished(t)&&this.verbose>1&&console.log(`%c(Arbiter: ${this.id}) Peer ${t} is now banished.`,it.ARBITER))}setBanished(t){this.manualBanList.has(t)||this.manualBanList.add(t)}isBanished(t){return at.MANUAL_BAN_MODE?this.manualBanList.has(t):(this.trustBalances[t]||0)<0}countMessageBytes(t,n,r){this.bytesCounters[r][t]||(this.bytesCounters[r][t]=0),this.bytesCounters[r][t]+=n;let[s,o]=r==="gossip"?[Kn,lt.GOSSIP_FLOOD]:[Jn,lt.UNICAST_FLOOD];return this.bytesCounters[r][t]<s?!0:this.adjustTrust(t,o,`Message ${r} flood detected`)}async digestMessage(t,n,r,s=.01){let{senderId:o,pubkey:a,topic:g,expectedEnd:I}=n;if(!(!await this.#e(t,n,r)||!this.#t(t,g?"gossip":"unicast",r,I)||!(g?this.#n(t,n):this.#i(t,n)))&&!(this.isBanished(t)||this.isBanished(o)))return this.trustBalances[o]>lt.VALID_POW||Math.random()<s&&await this.#r(o,a),!0}async#e(t,n,r){try{let{pubkey:s,signature:o,signatureStart:a}=n,g=r.subarray(0,a);if(!await this.cryptoCodex.verifySignature(s,g,o))throw new Error("Gossip signature invalid");return this.adjustTrust(t,lt.VALID_SIGNATURE,"Gossip signature valid"),!0}catch(s){this.verbose>1&&console.error(`%c(Arbiter: ${this.id}) Error during signature verification from ${t}: ${s.stack}`,it.ARBITER),this.verbose>2&&console.log(`%c(Arbiter) signatureControl() error details: ${n}`,it.ARBITER)}this.adjustTrust(t,lt.WRONG_SIGNATURE,"Gossip signature invalid")}#t(t,n,r,s){if(!s||r.length===s)return!0;this.adjustTrust(t,lt.WRONG_LENGTH,`${n} message length mismatch`)}#n(t,n){if(n.HOPS<=(ut.HOPS[n.topic]||ut.HOPS.default))return!0;this.adjustTrust(t,lt.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#i(t,n){if(n.route.length<=ct.MAX_HOPS)return!0;this.adjustTrust(t,lt.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#r(t,n){await this.cryptoCodex.pubkeyDifficultyCheck(n)?this.adjustTrust(t,lt.VALID_POW,"Gossip PoW valid"):this.adjustTrust(t,lt.WRONG_POW,"Gossip PoW invalid")}};await wt();var Wn;function ee(p,t=0){let n=typeof p=="string"?(Wn??=new TextEncoder).encode(p):p,r=n,s=t+374761393&4294967295,o=0;if(r.length>=16){let g=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],I=n,A=I.length-16,u=0;for(o=0;(o&4294967280)<=A;o+=4){let l=o,f=I[l+0]+(I[l+1]<<8),y=I[l+2]+(I[l+3]<<8),w=f*2246822519+(y*2246822519<<16),m=g[u]+w&4294967295;m=m<<13|m>>>19;let v=m&65535,h=m>>>16;g[u]=v*2654435761+(h*2654435761<<16)&4294967295,u=u+1&3}s=(g[0]<<1|g[0]>>>31)+(g[1]<<7|g[1]>>>25)+(g[2]<<12|g[2]>>>20)+(g[3]<<18|g[3]>>>14)&4294967295}s=s+n.length&4294967295;let a=n.length-4;for(;o<=a;o+=4){let g=o,I=r[g+0]+(r[g+1]<<8),A=r[g+2]+(r[g+3]<<8),u=I*3266489917+(A*3266489917<<16);s=s+u&4294967295,s=s<<17|s>>>15,s=(s&65535)*668265263+((s>>>16)*668265263<<16)&4294967295}for(;o<r.length;++o){let g=r[o];s=s+g*374761393,s=s<<11|s>>>21,s=(s&65535)*2654435761+((s>>>16)*2654435761<<16)&4294967295}return s=s^s>>>15,s=((s&65535)*2246822519&4294967295)+((s>>>16)*2246822519<<16),s=s^s>>>13,s=((s&65535)*3266489917&4294967295)+((s>>>16)*3266489917<<16),s=s^s>>>16,s<0?s+4294967296:s}async function jn(){if(!(typeof globalThis.RTCPeerConnection<"u"))return(await import("wrtc")).default}var tn=await jn(),ne=class{id;verbose;stunUrls;constructor(t,n,r=0){this.id=t,this.verbose=r,this.stunUrls=n}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=ft.MAX_SDP_OFFERS;offers={};tick(){let t=tt.time;for(let o in this.offerInstanceByExpiration){let a=this.offerInstanceByExpiration[o];t<o||(a?.destroy(),delete this.offerInstanceByExpiration[o],this.creatingOffer=!1)}for(let o in this.offers){let a=this.offers[o];if(a.offererInstance.destroyed){delete this.offers[o];continue}if(a.isUsed){delete this.offers[o];continue}a.timestamp+ft.SDP_OFFER_EXPIRATION>t||(a.offererInstance?.destroy(),delete this.offers[o])}let n=0;for(let o in this.offers){n++;let a=this.offers[o];if(a.isDigestingOneAnswer){a.isDigestingOneAnswer=!1;continue}if(a.offererInstance.destroyed)continue;let g=a.answers.filter(u=>!u.used);if(!g.length)continue;let I=g.reduce((u,l)=>u.timestamp>l.timestamp?u:l);if(!I)continue;I.used=!0;let A=t-I.timestamp;A>at.CONNECTION_UPGRADE_TIMEOUT/2||(a.offererInstance.signal(I.signal),a.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${I.peerId} for offer ${o} (received since ${A} ms)`))}if(this.creatingOffer||n>=this.offersToCreate)return;this.creatingOffer=!0;let r=t+(ft.SIGNAL_CREATION_TIMEOUT||8e3),s=this.#e(r);this.offerInstanceByExpiration[r]=s}#e(t){let n=ft.ICE_COMPLETE_TIMEOUT||1e3,r=new ft.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:n,wrtc:tn,config:{iceServers:this.stunUrls}});return r.on("error",s=>this.#n(s)),r.on("signal",s=>{let{candidate:o,type:a}=s;if(!s||o)throw new Error("Unexpected signal data from offerer instance: "+JSON.stringify(s));if(a!=="offer")throw new Error("Unexpected signal type from offerer instance: "+a);delete this.offerInstanceByExpiration[t];let g=ee(JSON.stringify(s));r.on("connect",()=>{this.offers[g]&&(this.offers[g].isUsed=!0),this.onConnect(void 0,r)}),this.offers[g]={timestamp:tt.time,sentCounter:0,signal:s,offererInstance:r,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),r}#t(t,n="",r=2,s="includes"){return s[0]==="i"&&!t.message.includes(n)?!1:t.message.startsWith(n)?(this.verbose>=r&&console.info(`%cOfferManager => ${t.message}`,it.PEER_STORE),!0):!1}#n=t=>{this.verbose<1||this.#t(t,"Ice connection failed",2)||this.#t(t,"Connection failed",2)||this.#t(t,"Remote transport instance",3,"startsWith")||this.#t(t,"Simulated failure",4,"startsWith")||this.#t(t,"No peer found",4,"startsWith")||this.#t(t,"Missing transport instance",2,"startsWith")||this.#t(t,"Failed to create answer",2,"startsWith")||this.#t(t,"Transport instance",3,"startsWith")||this.#t(t,"cannot signal after peer is destroyed",3,"startsWith")||this.#t(t,"No pending",3)||this.#t(t,"is already linked",3)||this.#t(t,"There is already a pending",3)||this.#t(t,"closed the connection",3)||this.#t(t,"No transport instance found for id:",3)||this.verbose>0&&console.error("transportInstance ERROR => ",t.stack)};bestReadyOffer(t=0,n=!0){let r=null,s=null,o=null;for(let a in this.offers){let g=this.offers[a],{isUsed:I,sentCounter:A,signal:u,timestamp:l}=g;if(I||A>t)continue;let f=tt.time-l;if(!(n&&f>ft.SDP_OFFER_EXPIRATION/2)&&!(o&&f>o)){r=g,s=a,o=f;break}}return{offerHash:s,readyOffer:r,since:o}}addSignalAnswer(t,n,r,s){!n||n.type!=="answer"||!r||!this.offers[r]||this.offers[r].answerers[t]||(this.offers[r].answerers[t]=!0,this.offers[r].answers.push({peerId:t,signal:n,timestamp:s}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${r}`))}getTransportInstanceForSignal(t,n,r){try{if(!n||!n.type||!n.sdp)throw new Error("Wrong remote SDP provided");let{type:s,sdp:o}=n;if(s!=="offer"&&s!=="answer")throw new Error("Invalid remote SDP type");if(s==="offer"&&!o)throw new Error("No SDP in the remote SDP offer");if(s==="answer"&&!o)throw new Error("No SDP in the remote SDP answer");if(s==="answer"){let I=r?this.offers[r]?.offererInstance:null;if(!I)throw new Error("No pending offer found for the given offer hash to accept the answer");return I}let a=ft.ICE_COMPLETE_TIMEOUT||1e3,g=new ft.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:a,wrtc:tn,config:{iceServers:this.stunUrls}});return g.on("error",I=>this.#n(I)),g.on("signal",I=>this.onSignalAnswer(t,I,r)),g.on("connect",()=>this.onConnect(t,g)),g}catch(s){if(s.message.startsWith("No pending offer found")&&this.verbose<2)return null;if(this.verbose>1&&s.message.startsWith("No pending offer found"))return console.info(`%c${s.message}`,it.PEER_STORE);this.verbose>0&&console.error(s.stack)}}destroy(){for(let t in this.offers)this.offers[t].offererInstance?.destroy()}};await wt();var{SANDBOX:Oi,ICE_CANDIDATE_EMITTER:xi,TEST_WS_EVENT_MANAGER:Pi}=Et.ENABLED?await ae().then(()=>oe):{},De=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,n=tt.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=n}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}},Ut=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,n,r,s=!1){this.peerId=t,this.transportInstance=n,this.isWebSocket=s,this.direction=r,this.pendingUntil=tt.time+at.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=tt.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?tt.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},ce=class{id;cryptoCodex;offerManager;arbiter;verbose;isDestroy=!1;neighborsList=[];connecting={};connected={};known={};knownCount=0;kick={};callbacks={connect:[(t,n)=>this.#e(t,n)],disconnect:[(t,n)=>this.#t(t,n)],signal:[],data:[]};constructor(t,n,r,s,o=0){this.id=t,this.cryptoCodex=n,this.offerManager=r,this.arbiter=s,this.verbose=o,this.offerManager.onSignalAnswer=(a,g,I)=>{if(!(this.isDestroy||this.isKicked(a)||this.arbiter.isBanished(a)))for(let A of this.callbacks.signal)A(a,{signal:g,offerHash:I})},this.offerManager.onConnect=(a,g)=>{if(this.isDestroy)return g?.destroy();if(a===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let I=a;if(g.on("close",()=>{if(I)for(let A of this.callbacks.disconnect)A(I,g.initiator?"out":"in")}),g.on("data",A=>{if(I)for(let u of this.callbacks.data)u(I,A);else{let u=new Uint8Array(A);if(u[0]>127)return;let{route:l,type:f,neighborsList:y}=n.readUnicastMessage(u)||{};if(f!=="handshake"||l.length!==2||l[1]!==this.id)return;I=l[0],this.digestPeerNeighbors(I,y);for(let w of this.callbacks.connect)w(I,"out")}}),a)for(let A of this.callbacks.connect)A(a,"in")}}get publicNeighborsList(){return this.neighborsList.filter(t=>this.cryptoCodex.isPublicNode(t))}get standardNeighborsList(){return this.neighborsList.filter(t=>!this.cryptoCodex.isPublicNode(t))}#e(t,n){if(!this.connecting[t]?.[n])return this.verbose>=3?console.info(`%cPeer with ID ${t} is not connecting.`,it.PEER_STORE):null;let r=this.connecting[t][n];if(this.#n(t,"connecting",n),this.isKicked(t))return this.verbose>=3&&console.info(`%c(${this.id}) Connect => Peer with ID ${t} is kicked. => close()`,it.PEER_STORE),r.close();if(this.connected[t])return this.verbose>1&&console.warn(`%c(${this.id}) Connect => Peer with ID ${t} is already connected. => close()`,it.PEER_STORE),r.close();r.setConnected(),this.connected[t]=r,this.neighborsList.push(t),this.#i(this.id,t)}#t(t,n){this.#n(t,"connected",n)}#n(t,n="both",r="both"){if(!t&&t===this.id)return;let[s,o]=[this.connecting[t],this.connected[t]];if(!s&&!o||(n!=="connecting"&&(o?.direction===r||r==="both")&&(o?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#r(this.id,t)),n==="connected"))return;let a=r==="both"?["out","in"]:[r];for(let g of a)delete s?.[g];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#i(t="toto",n="tutu"){for(let r of[t,n])this.known[r]||(this.known[r]=new De,this.knownCount++),this.known[r].setNeighbor(r===t?n:t)}#r(t="toto",n="tutu"){for(let r of[t,n])this.known[r]&&(this.known[r].unsetNeighbor(r===t?n:t),!(this.known[r].connectionsCount>0)&&(delete this.known[r],this.knownCount--))}cleanupExpired(t=!0){let n=tt.time;for(let r of["in","out"])for(let s in this.connecting){if(!this.connecting[s][r])continue;let o=this.connected[s]?1e4:0;this.connecting[s][r].pendingUntil+o>n||(this.verbose>=4&&!this.connected[s]&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired.`,it.PEER_STORE),this.verbose>0&&this.connected[s]?.direction===r&&console.info(`%c(${this.id}) Pending ${r} connection to peer ${s} expired (already connected WARNING!).`,"color: white;"),this.connecting[s]?.out?.isWebSocket&&this.connecting[s].out.close(),this.connecting[s]?.in?.close(),this.#n(s,"connecting",r))}t&&(this.neighborsList=Object.keys(this.connected),this.digestPeerNeighbors(this.id,this.neighborsList))}on(t,n){if(!this.callbacks[t])throw new Error(`Unknown callback type: ${t}`);this.callbacks[t].push(n)}getUpdatedPeerConnectionsCount(t,n=!0){let r=tt.time,s=0,o=this.known[t]?.neighbors||{};for(let a in o){if(a!==this.id&&r-o[a]>At.PEER_LINK_EXPIRATION){this.#r(t,a);continue}n?s++:this.cryptoCodex.isPublicNode(a)||s++}return s}addConnectingPeer(t,n,r){if(t===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let s=n.type==="offer"?"in":"out";if(this.connecting[t]?.[s])return;let o=this.offerManager.getTransportInstanceForSignal(t,n,r);return o?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][s]=new Ut(t,o,s),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,it.PEER_STORE):null}assignSignal(t,n,r,s=tt.time){let o=this.connecting[t]?.[n.type==="offer"?"in":"out"];try{if(o?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);n.type==="answer"?this.offerManager.addSignalAnswer(t,n,r,s):o.transportInstance.signal(n)}catch(a){console.error(`Error signaling ${n?.type} for ${t}:`,a.stack)}}kickPeer(t,n=6e4,r){n&&(this.kick[t]=tt.time+n),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${n/1e3}s. ${r?"| Reason: "+r:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>tt.time}digestValidRoute(t=[]){for(let n=1;n<t.length;n++)this.#i(t[n-1],t[n])}digestPeerNeighbors(t,n=[]){if(!(!t||!Array.isArray(n))){for(let r in this.known[t]?.neighbors||{})n.includes(r)||this.#r(t,r);for(let r of n)this.#i(t,r)}}destroy(){this.isDestroy=!0;for(let[t,n]of Object.entries(this.connected))this.#n(t),n.close();for(let[t,n]of Object.entries(this.connecting))this.#n(t),n.in?.close(),n.out?.close();this.offerManager.destroy()}};await wt();var he=class{cache={};peerStore;constructor(t,n){this.id=t,this.peerStore=n}buildRoutes(t,n=5,r=3,s=1728,o=!0,a=3){if(this.id===t)throw new Error("Cannot build route to self");if(this.peerStore.connected[t])return{routes:[{path:[this.id,t]}],success:!0,nodesExplored:1};if(!this.peerStore.known[t])return this.#n(t);if(this.cache[t]&&this.#e(this.cache[t]))return{routes:this.cache[t],success:!0,nodesExplored:0};let g=this.#i(t,r,s,a);if(!g.success)return{routes:[],success:!1,nodesExplored:g.nodesExplored};let A=this.#t(g.paths,o).slice(0,n);return this.cache[t]=A,{routes:A,success:!0,nodesExplored:g.nodesExplored}}#e(t){for(let{path:n}of t)for(let r=1;r<n.length;r++){let s=n[r-1],o=n[r];if(s===this.id){if(!this.peerStore.connected[o])return!1}else if(!this.peerStore.known[s]?.neighbors?.[o])return!1}return!0}#t(t,n){let r=[];for(let s of t)r.push({path:s,hops:s.length-1});return n&&r.sort((s,o)=>s.hops-o.hops),r}#n(t){let n=[],r=this.peerStore.neighborsList,s=[...Array(r.length).keys()].sort(()=>Math.random()-.5);for(let o of s)n.push({path:[this.id,r[o],t],hops:0,score:0});return n.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:n,success:"blind",nodesExplored:n.length}}#i(t,n,r,s){let o=[],a=0,g=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],I=new Map;I.set(this.id,[this.id]);let A=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],u=new Map;u.set(t,[t]);let l=Math.ceil(n/2);for(;(g.length>0||A.length>0)&&a<r;){if(g.length>0){let f=this.#r(g,I,u,l);for(let y of f){let w=this.#s(I.get(y),u.get(y));if(o.push(w),!(w.length-1>s))return{success:!0,paths:o,nodesExplored:a}}a++}if(A.length>0){let f=this.#r(A,u,I,l);for(let y of f){let w=this.#s(I.get(y),u.get(y));if(o.push(w),!(w.length-1>s))return{success:!0,paths:o,nodesExplored:a}}a++}}return{success:o.length>0,paths:o,nodesExplored:a}}#r(t,n,r,s){if(t.length===0)return[];let{node:o,path:a,pathSet:g,depth:I}=t.shift();if(I>=s)return[];let A=[];function u(l){if(g.has(l))return;let f=I+1;if(r.has(l)&&A.push(l),n.has(l))return;let y=[...a,l],w=new Set(g).add(l);n.set(l,y),t.push({node:l,path:y,pathSet:w,depth:f})}if(o===this.id)for(let l of this.peerStore.neighborsList)u(l);else for(let l in this.peerStore.known[o]?.neighbors||{})u(l);return A}#s(t,n){let r=t.length+n.length-1,s=new Array(r),o=0;for(let a of t)s[o++]=a;for(let a=n.length-2;a>=0;a--)s[o++]=n[a];return s}};var{SANDBOX:Wi,ICE_CANDIDATE_EMITTER:ji,TEST_WS_EVENT_MANAGER:Xi}=Et.ENABLED?await ae().then(()=>oe):{},Xn=he,Vt=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,r,s,o,a,g,I,A){this.type=t,this.timestamp=n,this.neighborsList=r,this.route=s,this.pubkey=o,this.data=a,this.signature=g,this.signatureStart=I,this.expectedEnd=A}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let n=this.newRoute||this.route,r=[],s=-1;for(let A=0;A<n.length;A++)if(r.push(n[A]),n[A]===t){s=A;break}let o=n[0],a=n[n.length-1],g=s>0?n[s-1]:null,I=s!==-1?n[s+1]:null;return{traveledRoute:r,selfPosition:s,senderId:o,targetId:a,prevId:g,nextId:I,routeLength:n.length}}},ge=class extends Vt{rerouterPubkey;newRoute;rerouterSignature;constructor(t,n,r,s,o,a,g,I,A){super(t,n,r,s,o,a),this.rerouterPubkey=g,this.newRoute=I,this.rerouterSignature=A}getRerouterId(){return this.newRoute[0]}},fe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=ct.MAX_HOPS;maxRoutes=ct.MAX_ROUTES;maxNodes=ct.MAX_NODES;constructor(t,n,r,s,o=0){this.id=t,this.cryptoCodex=n,this.arbiter=r,this.peerStore=s,this.verbose=o,this.pathFinder=new Xn(this.id,this.peerStore)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}async sendUnicast(t,n,r="message",s=1){if(t===this.id)return!1;let o=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!o.success)return!1;let a=[],g=[],I=o.success==="blind"?1:s;for(let u=0;u<Math.min(I,o.routes.length);u++){let l=o.routes[u].path;if(l.length>ct.MAX_HOPS){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${ct.MAX_HOPS}). BFS incurred.`);continue}a.push(l[1]),g.push(this.cryptoCodex.createUnicastMessage(r,n,l,this.peerStore.neighborsList))}let A=await Promise.all(g);for(let u=0;u<A.length;u++)this.#e(a[u],A[u]);return!0}#e(t,n){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return r.send(n),{success:!0}}catch(s){this.peerStore.kickPeer(t,0,"send-error"),this.verbose>0&&console.error(`Error sending message to ${t}:`,s.message)}return{success:!1,reason:`Error sending message to ${t}.`}}async handleDirectMessage(t,n){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived direct message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,n.byteLength,"unicast"))return;let r=this.cryptoCodex.readUnicastMessage(n);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,n)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{traveledRoute:o,selfPosition:a,senderId:g,targetId:I,prevId:A,nextId:u}=r.extractRouteInfo(this.id);if(t===g&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let y of this.callbacks.message_handle||[])y();if(a===-1)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Self not in route");if(A&&t!==A)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(g===this.id)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(g===t?`(${this.id}) Direct ${r.type} from ${g}: ${r.data}`:`(${this.id}) Direct ${r.type} from ${g} (lastRelay: ${t}): ${r.data}`),this.peerStore.digestPeerNeighbors(g,r.neighborsList),t!==g&&this.arbiter.adjustTrust(t,lt.UNICAST_RELAYED,"Relayed unicast message"),At.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(o),this.id===I){for(let y of this.callbacks[r.type]||[])y(g,r.data);return}let{success:l,reason:f}=this.#e(u,n);if(!l&&!r.rerouterSignature){let y=this.pathFinder.buildRoutes(I,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!y.success)return;let w=y.routes[0].path;if(w.length>ct.MAX_HOPS){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${I} as new route exceeds maxHops (${ct.MAX_HOPS}).`);return}let m=await this.cryptoCodex.createReroutedUnicastMessage(n,w),v=w[a+1];this.#e(v,m)}}};await wt();var ue=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,r,s,o,a,g,I,A,u){this.topic=t,this.timestamp=n,this.neighborsList=r,this.HOPS=s,this.senderId=o,this.pubkey=a,this.data=g,this.signature=I,this.signatureStart=A,this.expectedEnd=u}},Ne=class{cryptoCodex;xxHash32UsageCount=0;seenTimeouts={};cache=[];cleanupFrequency=100;cleanupIn=100;cleanupDurationWarning=10;constructor(t){this.cryptoCodex=t}getGossipHistoryByTime(t="asc"){let n=this.cache.map(r=>({senderId:r.senderId,topic:r.topic,data:r.serializedMessage}));return t==="asc"?n:n.reverse()}addMessage(t){let n=tt.time,{marker:r,neighLength:s,timestamp:o,dataLength:a,pubkey:g,associatedId:I}=this.cryptoCodex.readBufferHeader(t);if(n-o>ut.EXPIRATION)return;let A=t.subarray(0,47+s+a),u=ee(A);if(this.xxHash32UsageCount++,this.seenTimeouts[u])return;let l=ut.MARKERS_BYTES[r],f=I,y=n+ut.CACHE_DURATION;return this.cache.push({hash:u,senderId:f,topic:l,serializedMessage:t,timestamp:o,expiration:y}),this.seenTimeouts[u]=y,--this.cleanupIn<=0&&this.#e(n),{hash:u,isNew:!this.seenTimeouts[u]}}#e(t=tt.time){let n=-1;for(let r=0;r<this.cache.length;r++)this.cache[r].expiration<=t?delete this.seenTimeouts[this.cache[r].hash]:n===-1&&(n=r);n>0?this.cache=this.cache.slice(n):n===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},le=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,n,r,s,o=0){this.id=t,this.cryptoCodex=n,this.arbiter=r,this.peerStore=s,this.verbose=o,this.bloomFilter=new Ne(n)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}async broadcastToAll(t,n="gossip",r){let s=r||ut.HOPS[n]||ut.HOPS.default,o=await this.cryptoCodex.createGossipMessage(n,t,s,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(o)){this.verbose>3&&console.log(`(${this.id}) Gossip ${n}, to ${JSON.stringify(this.peerStore.neighborsList)}: ${t}`);for(let a of this.peerStore.neighborsList)this.#e(a,o)}}#e(t,n){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let r=this.peerStore.connected[t]?.transportInstance;if(!r)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{r.send(n)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let n=this.bloomFilter.getGossipHistoryByTime("asc");for(let r of n)this.#e(t,r.data)}async handleGossipMessage(t,n){if(this.arbiter.isBanished(t))return this.verbose>=3?console.info(`%cReceived gossip message from banned peer ${t}, ignoring.`,"color: red;"):null;if(!this.arbiter.countMessageBytes(t,n.byteLength,"gossip"))return;for(let h of this.callbacks.message_handle||[])h(n);if(!this.bloomFilter.addMessage(n))return;let r=this.cryptoCodex.readGossipMessage(n);if(!r)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(!await this.arbiter.digestMessage(t,r,n)||this.arbiter.isBanished(t)||this.arbiter.isBanished(r.senderId))return;let{topic:o,timestamp:a,neighborsList:g,HOPS:I,senderId:A,data:u}=r;if(A===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(A===t?`(${this.id}) Gossip ${o} from ${A}: ${u}`:`(${this.id}) Gossip ${o} from ${A} (by: ${t}): ${u}`),this.peerStore.digestPeerNeighbors(A,g);for(let h of this.callbacks[o]||[])h(A,u,I,r);if(I<1)return;let l=this.peerStore.neighborsList.length,f=Math.max(1,l/ut.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),y=ut.TRANSMISSION_RATE[o]||ut.TRANSMISSION_RATE.default,w=Math.pow(y,f),m=l<ut.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,v=this.cryptoCodex.decrementGossipHops(n);for(let h of this.peerStore.neighborsList)if(h!==t){if(!m&&Math.random()>w)continue;this.#e(h,v)}}};await wt();var{SANDBOX:sr,ICE_CANDIDATE_EMITTER:Ar,TEST_WS_EVENT_MANAGER:or}=Et.ENABLED?await ae().then(()=>oe):{},Te=class{maxOffers=30;offers=[];orderingBy="neighborsCount";get size(){return this.offers.length}updateOrderingBy(t=!1){this.orderingBy=t?"overlap":"neighborsCount"}removeOlderThan(t=1e3){this.offers=this.offers.filter(n=>n.timestamp+t>=tt.time)}get bestOfferInfo(){let{senderId:t,overlap:n,neighborsCount:r,data:s,timestamp:o}=this.offers.shift()||{};return{senderId:t,data:s,timestamp:o,value:this.orderingBy==="overlap"?n:r}}pushSortTrim(t,n={min:.2,max:.8}){let{min:r,max:s}=n;Math.random()<Math.min(r,this.offers.size/this.maxOffers*s)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((o,a)=>this.orderingBy==="overlap"?o.overlap-a.overlap:a.neighborsCount-o.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},de=class{id;cryptoCodex;gossip;messager;peerStore;bootstraps;offersQueue=new Te;bootstrapsConnectionState=new Map;services;NEIGHBORS_TARGET;HALF_TARGET;TWICE_TARGET;setNeighborsTarget(t=At.TARGET_NEIGHBORS_COUNT){this.NEIGHBORS_TARGET=t,this.HALF_TARGET=Math.ceil(this.NEIGHBORS_TARGET/2),this.TWICE_TARGET=this.NEIGHBORS_TARGET*2}automation={incomingOffer:!0,incomingAnswer:!0,spreadOffers:!0,connectBootstraps:!0};phase=0;nextBootstrapIndex=0;maxBonus=at.CONNECTION_UPGRADE_TIMEOUT*.2;get isPublicNode(){return!!this.services?.publicUrl}constructor(t,n,r,s,o,a){this.setNeighborsTarget(At.TARGET_NEIGHBORS_COUNT),this.id=t,this.cryptoCodex=n,this.gossip=r,this.messager=s,this.peerStore=o;for(let g of a)this.bootstrapsConnectionState.set(g,!1);this.bootstraps=[...a].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:n,isEnough:r,isTooMany:s,isHalfReached:o}=this.#e,a=n>=this.NEIGHBORS_TARGET/3?1:ft.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=r?0:a,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(s)return Math.random()>.05?this.#o():null;r?Math.random()>.05&&this.#A():this.#A(),this.phase=this.phase?0:1,this.phase===0&&this.tryConnectNextBootstrap(t,n),this.phase===1&&this.#s(n,o)}handleIncomingSignal(t,n,r){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||n.signal?.type!=="offer"&&n.signal?.type!=="answer")return;let{signal:s,offerHash:o}=n||{},{connected:a,nonPublicNeighborsCount:g,isTooMany:I,isHalfReached:A}=this.#e;if(I||a[t])return;if(s.type==="answer"){if(!this.automation.incomingAnswer||this.peerStore.addConnectingPeer(t,s,o)!==!0)return;let y=Math.abs(g-this.#t(t).nonPublicCount),w=this.maxBonus/this.NEIGHBORS_TARGET,m=Math.round(Math.min(this.maxBonus,y*w));return this.peerStore.assignSignal(t,s,o,tt.time+m)}if(!this.automation.incomingOffer||g>this.TWICE_TARGET)return;let{overlap:u,nonPublicCount:l}=this.#t(t);if(l>this.TWICE_TARGET)return;let f={senderId:t,data:n,overlap:u,neighborsCount:l,timestamp:tt.time};this.offersQueue.updateOrderingBy(A),this.offersQueue.pushSortTrim(f)}tryConnectNextBootstrap(t=0,n=0){if(!this.automation.connectBootstraps||this.bootstraps.length===0)return;let r=t-n,s=0;for(let a in this.peerStore.connecting)s++;if(this.NEIGHBORS_TARGET||t){if(r>=this.HALF_TARGET)return;if(t>=this.NEIGHBORS_TARGET)return;if(s+n>this.TWICE_TARGET)return}let o=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.bootstrapsConnectionState.get(o)||this.#r(o)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=this.NEIGHBORS_TARGET,isTooMany:this.peerStore.standardNeighborsList.length>this.NEIGHBORS_TARGET,isHalfReached:this.peerStore.standardNeighborsList.length>=this.HALF_TARGET}}#t(t="toto"){let n=this.peerStore.known[t]?.neighbors||{},r={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let s in n)this.cryptoCodex.isPublicNode(s)||r.nonPublicCount++;for(let s of this.peerStore.standardNeighborsList)n[s]&&r.overlap++;return r}#n(t=[]){return t.map(n=>({id:n,...this.#t(n)}))}#i(t){let n=typeof window<"u",s=n&&window.location.protocol==="https:"?"wss://":"ws://",o=t.endsWith("/ws"),a=n&&!o?window.location.host:t;return t.startsWith("ws")?t:`${s}${a}`}#r(t="localhost:8080"){let n=null,r=new ft.WS_CLIENT(this.#i(t));r.binaryType="arraybuffer",r.onerror=s=>console.error("WebSocket error:",s.stack),r.onopen=async()=>{this.bootstrapsConnectionState.set(t,!0),r.onclose=()=>{this.bootstrapsConnectionState.set(t,!1);for(let o of this.peerStore.callbacks.disconnect)o(n,"out")},r.onmessage=async o=>{if(n)for(let a of this.peerStore.callbacks.data)a(n,o.data);else{let a=new Uint8Array(o.data);if(a[0]>127)return;let g=this.cryptoCodex.readUnicastMessage(a);if(!g)return;let{route:I,type:A,neighborsList:u}=g;if(A!=="handshake"||I.length!==2)return;let{signatureStart:l,pubkey:f,signature:y}=g,w=a.subarray(0,l);if(!await this.cryptoCodex.verifySignature(f,w,y))return;n=I[0],this.peerStore.digestPeerNeighbors(n,u),this.peerStore.connecting[n]?.in?.close(),this.peerStore.connecting[n]||(this.peerStore.connecting[n]={}),this.peerStore.connecting[n].out=new Ut(n,r,"out",!0);for(let m of this.peerStore.callbacks.connect)m(n,"out")}};let s=await this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList);r.send(s)}}#s(t=0,n=!1){if(!this.automation.spreadOffers||!this.peerStore.neighborsList.length)return;let s=Object.keys(this.peerStore.connecting).length+t,{offerHash:o,readyOffer:a}=this.peerStore.offerManager.bestReadyOffer(0,!0);if(!o||!a)return;if(!n&&s<=this.TWICE_TARGET){this.gossip.broadcastToAll({signal:a.signal,offerHash:o},"signal_offer"),a.sentCounter++;return}let g=null;for(let w of this.#n(this.peerStore.standardNeighborsList)){let m=w[n?"overlap":"nonPublicCount"];g===null&&(g=m),n&&m<g&&(g=m),!n&&m<=g&&(g=m)}let I=100,A=1e3,u=this.peerStore.knownCount,l=Math.max(Math.min(A/u,u/A),.127),f=[];for(let w in this.peerStore.known){if(Math.random()>l)continue;if(--A<=0)break;if(w===this.id||this.cryptoCodex.isPublicNode(w)||this.peerStore.isKicked(w))continue;if(this.peerStore.connected[w]||this.peerStore.connecting[w])continue;let{overlap:m,nonPublicCount:v}=this.#t(w);if(!(v>this.NEIGHBORS_TARGET)&&(g===null&&(g=n?m:v),!(n&&m>g)&&!(!n&&v<g)&&(f.push(w),--I<=0)))break}if(!f.length)return;let y=new Map;for(let w=0;w<Math.min(f.length,100);w++){let m=f[Math.floor(Math.random()*f.length)];if(!y.has(m)&&(y.size===0&&a.sentCounter++,y.set(m,!0),this.messager.sendUnicast(m,{signal:a.signal,offerHash:o},"signal_offer",1),y.size>=12))break}}#A(){let t=null,n=Object.keys(this.peerStore.connecting).length;this.offersQueue.updateOrderingBy(this.#e.isHalfReached),this.offersQueue.removeOlderThan(ft.SDP_OFFER_EXPIRATION/2);for(let r=0;r<this.offersQueue.size;r++){let{senderId:s,data:o,timestamp:a,value:g}=this.offersQueue.bestOfferInfo;if(!s||!o||!a)break;if(!(this.peerStore.connected[s]||this.peerStore.isKicked(s))&&!this.peerStore.connecting[s]?.in){if(t=t===null?g:t,t!==g)break;this.peerStore.addConnectingPeer(s,o.signal,o.offerHash)===!0&&(this.peerStore.assignSignal(s,o.signal,o.offerHash,a),n++)}}}#o(){let n=this.#n(this.peerStore.standardNeighborsList).sort((r,s)=>s.overlap-r.overlap||s.nonPublicCount-r.nonPublicCount);this.peerStore.kickPeer(n[0].id,6e4,"improveTopology")}};await wt();var Dt=class p{IS_BROWSER=typeof window<"u";FROMBASE64_AVAILABLE=typeof Uint8Array.fromBase64=="function";textEncoder=new TextEncoder;textDecoder=new TextDecoder;buffer2=new ArrayBuffer(2);view2=new DataView(this.buffer2);buffer4=new ArrayBuffer(4);view4=new DataView(this.buffer4);buffer8=new ArrayBuffer(8);view8=new DataView(this.buffer8);hexMap={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};numberTo2Bytes(t){return this.view2.setUint16(0,t,!0),new Uint8Array(this.buffer2)}numberTo4Bytes(t){return this.view4.setUint32(0,t,!0),new Uint8Array(this.buffer4)}numberTo8Bytes(t){return this.view8.setBigUint64(0,BigInt(t),!0),new Uint8Array(this.buffer8)}stringToBytes(t="toto"){return this.textEncoder.encode(t)}hexToBytes(t){let n=t.length/2,r=new Uint8Array(n);for(let s=0,o=0;s<n;++s,o+=2)r[s]=(this.hexMap[t[o]]<<4)+this.hexMap[t[o+1]];return r}base64toBytes(t){if(!this.IS_BROWSER)return new Uint8Array(Buffer.from(t,"base64"));if(this.FROMBASE64_AVAILABLE)return Uint8Array.fromBase64(t);let n=atob(t),r=new Uint8Array(n.length);for(let s=0;s<n.length;s++)r[s]=n.charCodeAt(s);return r}bytes2ToNumber(t){for(let n=0;n<2;n++)this.view2.setUint8(n,t[n]);return this.view2.getUint16(0,!0)}bytes4ToNumber(t){for(let n=0;n<4;n++)this.view4.setUint8(n,t[n]);return this.view4.getUint32(0,!0)}bytes8ToNumber(t){for(let n=0;n<8;n++)this.view8.setUint8(n,t[n]);return Number(this.view8.getBigUint64(0,!0))}bytesToString(t){return this.textDecoder.decode(t)}static bytesToHex(t,n=0){let r="";for(let s of t)r+=s<16?`0${s.toString(16)}`:s.toString(16);return n>0&&(r=r.padStart(n,"0")),r}bytesToHex(t,n=0){return p.bytesToHex(t,n)}static hexToBits(t="ffffff",n="string"){let r=[];if(n==="arrayOfNumbers")for(let s=0;s<t.length;s++)r.push(...parseInt(t[s],16).toString(2).padStart(4,"0").split("").map(o=>parseInt(o,10)));else for(let s=0;s<t.length;s++)r.push(parseInt(t[s],16).toString(2).padStart(4,"0"));return n==="string"?r.join(""):r}static bytesToBits(t,n="string"){return this.hexToBits(this.bytesToHex(t),n)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((n,r)=>(n<<8)+parseInt(r,10),0)}};var We=typeof window<"u",Nn=await Promise.resolve().then(()=>(_n(),Sn)),qt=Nn.default||Nn;var Kt=class{converter=new Dt;argon2;hash=async(t,n,r=2**16,s=1,o=1,a=2,g=32)=>{let I=this.#e(t,n,s,r,o,a,g),A=await this.getArgon2Lib(),u=We?await A.hash(I):await A.hash(t,I);if(!u)return!1;let l=u.encoded||u,f=this.#t(l);return f||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!We)try{let n=await import("argon2");this.argon2=n}catch{throw new Error("Please install argon2 package: npm install argon2")}if(this.argon2)return this.argon2;try{if(argon2)return console.log("Argon2 loaded as a global variable"),this.argon2=argon2,this.argon2}catch{}if(this.argon2)return this.argon2;console.log("trying import argon2 ES6 and inject in window");let t=await Promise.resolve().then(()=>(Dn(),Rn));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",n="saltsaltsaltsaltsalt",r=1,s=2**10,o=1,a=2,g=32){let I=n.padEnd(20,"0").substring(0,16);return{type:a,pass:t,parallelism:o,time:r,timeCost:r,mem:s,memoryCost:s,hashLen:g,hashLength:g,salt:We?I:Buffer.from(I)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let n=t.split("$").pop(),r=this.converter.base64toBytes(n),s=this.converter.bytesToHex(r),o=Dt.hexToBits(s,"string");return o?{encoded:t,hash:r,hex:s,bitsString:o}:!1}};var je=class{#e=[];#t=new Map;#n=null;#i=0;#r=10;#s=5;verifySignature(t,n,r){return new Promise(s=>{let o=this.#i++;if(this.#e.push({id:o,publicKey:t,dataToVerify:n,signature:r}),this.#t.set(o,s),this.#e.length>=this.#r){this.#A();return}this.#n||(this.#n=setTimeout(()=>this.#A(),this.#s))})}async#A(){if(this.#n&&(clearTimeout(this.#n),this.#n=null),this.#e.length===0)return;let t=this.#e.splice(0),n=await Promise.all(t.map(r=>qt.verifyAsync(r.signature,r.dataToVerify,r.publicKey)));for(let r=0;r<t.length;r++)this.#t.get(t[r].id)(n[r]),this.#t.delete(t[r].id)}},Wt=class p{argon2=new Kt;converter=new Dt;AVOID_CRYPTO=!1;verifier;verbose=at.DEFAULT_VERBOSE;id;publicKey;privateKey;constructor(t,n=at.DEFAULT_VERBOSE){if(this.verbose=n,!t)return;this.id=t.padEnd(X.ID_LENGTH," ").slice(0,X.ID_LENGTH),this.privateKey=new Uint8Array(32).fill(0),this.publicKey=new Uint8Array(32).fill(0);let r=new TextEncoder().encode(this.id);for(let s=0;s<X.ID_LENGTH;s++)this.publicKey[s]=r[s]}static async createCryptoCodex(t,n){let r=new p(void 0,this.verbose);return await r.generate(t,n),r}static isPublicNode(t){return(X.ARE_IDS_HEX?Dt.hexToBits(t[0]):t).startsWith(X.PUBLIC_PREFIX)}get idLength(){return X.ARE_IDS_HEX?X.ID_LENGTH/2:X.ID_LENGTH}isPublicNode(t){return p.isPublicNode(t)}async generate(t,n){if(!this.nodeId&&(await this.#t(n,t),this.AVOID_CRYPTO=!1,this.verifier=new je,!this.id))throw new Error("Failed to generate identity")}async pubkeyDifficultyCheck(t){if(this.AVOID_CRYPTO||!X.DIFFICULTY)return!0;let{bitsString:n}=await this.argon2.hash(t,"HiveP2P",X.ARGON2_MEM)||{};if(n&&n.startsWith("0".repeat(X.DIFFICULTY)))return!0}#e(t){return X.ARE_IDS_HEX?this.converter.bytesToHex(t.slice(0,this.idLength),X.ID_LENGTH):this.converter.bytesToString(t.slice(0,X.ID_LENGTH))}async#t(t,n){let r=2**X.DIFFICULTY*100;for(let s=0;s<r;s++){let{secretKey:o,publicKey:a}=await qt.keygenAsync(t),g=this.#e(a);if(!(n&&!this.isPublicNode(g))&&!(!n&&this.isPublicNode(g))&&await this.pubkeyDifficultyCheck(a)){this.id=g,this.privateKey=o,this.publicKey=a,this.verbose>2&&console.log(`%cNode generated id: ${this.id} (isPublic: ${n}, difficulty: ${X.DIFFICULTY}) after ${((s+1)/2).toFixed(1)} iterations`,it.CRYPTO_CODEX);return}}this.verbose>0&&console.log(`%cFAILED to generate id after ${r} iterations. Try lowering the difficulty.`,it.CRYPTO_CODEX)}async signBufferViewAndAppendSignature(t,n,r=t.length-X.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let s=t.subarray(0,r),o=await qt.signAsync(s,n);t.set(o,r)}async createGossipMessage(t,n,r=3,s=[],o=tt.time){let a=ut.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create gossip message: unknown topic '${t}'.`);let g=this.#n(s),{dataCode:I,dataBytes:A}=this.#i(n),u=47+g.length+A.length+X.SIGNATURE_LENGTH+1,l=new ArrayBuffer(u),f=new Uint8Array(l);return this.#r(f,a,I,s.length,o,A,this.publicKey),f.set(g,47),f.set(A,47+g.length),f.set([Math.min(255,r)],u-1),await this.signBufferViewAndAppendSignature(f,this.privateKey,u-X.SIGNATURE_LENGTH-1),f}decrementGossipHops(t){let n=new Uint8Array(t),r=t[t.length-1];return n[t.length-1]=Math.max(0,r-1),n}async createUnicastMessage(t,n,r,s=[],o=tt.time){let a=ct.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create unicast message: unknown type '${t}'.`);if(r.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(r.length>ct.MAX_HOPS)throw new Error(`Failed to create unicast message: route exceeds max hops (${ct.MAX_HOPS}).`);let g=this.#n(s),{dataCode:I,dataBytes:A}=this.#i(n),u=this.#n(r),l=47+g.length+1+u.length+A.length+X.SIGNATURE_LENGTH,f=new ArrayBuffer(l),y=new Uint8Array(f);this.#r(y,a,I,s.length,o,A,this.publicKey);let w=g.length+A.length;return y.set(g,47),y.set(A,47+g.length),y.set([r.length],47+w),y.set(u,48+w),await this.signBufferViewAndAppendSignature(y,this.privateKey,l-X.SIGNATURE_LENGTH),y}async createReroutedUnicastMessage(t,n){if(n.length<2)throw new Error("Failed to create rerouted unicast message: route must have at least 2 nodes (next hop and target).");if(n.length>ct.MAX_HOPS)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${ct.MAX_HOPS}).`);let r=n.map(g=>this.converter.stringToBytes(g)),s=t.length+32+X.ID_LENGTH*r.length+X.SIGNATURE_LENGTH,o=new ArrayBuffer(s),a=new Uint8Array(o);a.set(t,0),a.set(this.publicKey,t.length);for(let g=0;g<r.length;g++)a.set(r[g],t.length+32+g*X.ID_LENGTH);return await this.signBufferViewAndAppendSignature(a,this.privateKey,s-X.SIGNATURE_LENGTH),a}#n(t){return X.ARE_IDS_HEX?this.converter.hexToBytes(t.join(""),X.ID_LENGTH*t.length):this.converter.stringToBytes(t.join(""))}#i(t){return typeof t=="string"?{dataCode:1,dataBytes:this.converter.stringToBytes(t)}:t instanceof Uint8Array?{dataCode:2,dataBytes:t}:{dataCode:3,dataBytes:this.converter.stringToBytes(JSON.stringify(t))}}#r(t,n,r,s,o,a,g){let I=this.converter.numberTo8Bytes(o),A=this.converter.numberTo4Bytes(a.length);t.set([n],0),t.set([r],1),t.set([s],2),t.set(I,3),t.set(A,11),t.set(g,15)}async verifySignature(t,n,r){return this.AVOID_CRYPTO?!0:this.verifier.verifySignature(t,n,r)}readBufferHeader(t,n=!0){let r=t[0],s=t[1],o=t[2],a=t.slice(3,11),g=t.slice(11,15),I=t.slice(15,47),A=n?this.#e(I):null,u=o*this.idLength,l=this.converter.bytes8ToNumber(a),f=this.converter.bytes4ToNumber(g);return{marker:r,dataCode:s,neighLength:u,timestamp:l,dataLength:f,pubkey:I,associatedId:A}}readGossipMessage(t){this.verbose>3&&console.log(`%creadGossipMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:n,dataCode:r,neighLength:s,timestamp:o,dataLength:a,pubkey:g,associatedId:I}=this.readBufferHeader(t),A=ut.MARKERS_BYTES[n];if(A===void 0)throw new Error(`Failed to deserialize gossip message: unknown marker byte ${d[0]}.`);let u=s+a,l=this.#s(t.slice(47,47+s)),f=this.#A(r,t.slice(47+s,47+u)),y=47+u,w=t.slice(y,y+X.SIGNATURE_LENGTH),m=t[t.length-1],v=y+X.SIGNATURE_LENGTH+1,h=I;return new ue(A,o,l,m,h,g,f,w,y,v)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${topic||"unknown"} gossip message:`,n.stack)}return null}readUnicastMessage(t){this.verbose>3&&console.log(`%creadUnicastMessage ${t.byteLength} bytes`,it.CRYPTO_CODEX),this.verbose>4&&console.log(`%c${t}`,it.CRYPTO_CODEX);try{let{marker:n,dataCode:r,neighLength:s,timestamp:o,dataLength:a,pubkey:g}=this.readBufferHeader(t,!1),I=ct.MARKERS_BYTES[n];if(I===void 0)throw new Error(`Failed to deserialize unicast message: unknown marker byte ${d[0]}.`);let A=s+a,u=this.#s(t.slice(47,47+s)),l=this.#A(r,t.slice(47+s,47+A)),y=t[47+A]*this.idLength,w=47+A+1+y,m=t.slice(47+A+1,w),v=this.#s(m),h=w+X.SIGNATURE_LENGTH,C=t.slice(w,h);if(!(t.length>h))return new Vt(I,o,u,v,g,l,C,w,h);let S=t.slice(h,h+32),Q=this.#s(t.slice(h+32,t.length-X.SIGNATURE_LENGTH)),_=t.slice(t.length-X.SIGNATURE_LENGTH);return new ge(I,o,u,v,g,l,C,S,Q,_,t.length)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${type||"unknown"} unicast message:`,n.stack)}return null}#s(t){let n=[],r=this.idLength;if(t.length%r!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let s=0;s<t.length/r;s++){let o=t.slice(s*r,(s+1)*r);X.ARE_IDS_HEX?n.push(this.converter.bytesToHex(o,X.ID_LENGTH)):n.push(this.converter.bytesToString(o))}return n}#A(t,n){if(t===1)return this.converter.bytesToString(n);if(t===2)return n;if(t===3)return JSON.parse(this.converter.bytesToString(n));throw new Error(`Failed to parse data: unknown data code '${t}'.`)}};await wt();var Ci=at.IS_BROWSER?null:await import("dgram"),Qe=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,n,r=3,s=1){this.id=t.id,this.verbose=s,this.maxKick=r,this.peerStore=n,this.cryptoCodex=t}start(t="localhost",n=Rt.PORT){this.publicUrl=`ws://${t}:${n}`,this.#e(t,n),Et.USE_TEST_TRANSPORTS||this.#t(t,n+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-At.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let n=0,r=Rt.AUTO_KICK_DELAY;for(let s in this.peerStore.connected){let o=this.peerStore.connected[s],a=this.peerStore.getUpdatedPeerConnectionsCount(s,!1);if(a>At.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(s,Rt.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=At.TARGET_NEIGHBORS_COUNT)break;continue}if(!(o.getConnectionDuration()<(a>2?r:r*2))&&(this.peerStore.kickPeer(s,Rt.AUTO_KICK_DURATION,"freePublicNode"),++n>=t))break}}#e(t="localhost",n=Rt.PORT){this.wsServer=new ft.WS_SERVER({port:n,host:t}),this.wsServer.on("error",r=>console.error(`WebSocket error on Node #${this.id}:`,r)),this.wsServer.on("connection",async r=>{r.on("close",()=>{if(s)for(let a of this.peerStore.callbacks.disconnect)a(s,"in")}),r.on("error",a=>console.error(`WebSocket error on Node #${this.id} with peer ${s}:`,a.stack));let s;r.on("message",async a=>{if(s)for(let g of this.peerStore.callbacks.data)g(s,a);else{let g=new Uint8Array(a);if(g[0]>127)return;let I=this.cryptoCodex.readUnicastMessage(g);if(!I)return;let{route:A,type:u,neighborsList:l}=I;if(u!=="handshake"||A.length!==2)return;let{signatureStart:f,pubkey:y,signature:w}=I,m=g.subarray(0,f);if(!await this.cryptoCodex.verifySignature(y,m,w))return;s=A[0],this.peerStore.digestPeerNeighbors(s,l),this.peerStore.connecting[s]?.out?.close(),this.peerStore.connecting[s]||(this.peerStore.connecting[s]={}),this.peerStore.connecting[s].in=new Ut(s,r,"in",!0);for(let v of this.peerStore.callbacks.connect)v(s,"in")}});let o=await this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList);r.send(o)})}#t(t="localhost",n=Rt.PORT+1){this.stunServer=Ci.createSocket("udp4"),this.stunServer.on("message",(r,s)=>{this.verbose>2&&console.log(`%cSTUN message from ${s.address}:${s.port} - ${r.toString("hex")}`,it.SERVICE),this.#n(r)&&this.stunServer.send(this.#i(r,s),s.port,s.address)}),this.stunServer.bind(n,t),this.verbose>2&&console.log(`%cSTUN server listening on ${t}:${n}`,it.SERVICE)}#n(t){if(t.length<20)return!1;let n=t.readUInt16BE(0),r=t.readUInt32BE(4);return n===1&&r===554869826}#i(t,n){let r=t.subarray(8,20),s=Buffer.allocUnsafe(32);return s.writeUInt16BE(257,0),s.writeUInt16BE(12,2),s.writeUInt32BE(554869826,4),r.copy(s,8),s.writeUInt16BE(1,20),s.writeUInt16BE(8,22),s.writeUInt16BE(1,24),s.writeUInt16BE(n.port,26),s.writeUInt32BE(Dt.ipToInt(n.address),28),this.verbose>2&&console.log(`%cSTUN Response: client will discover IP ${n.address}:${n.port}`,"color: green;"),s}static deriveSTUNServers(t){let n=[];for(let r of t){if(!r.includes(":")||r.endsWith("/ws")||r.endsWith("/wss"))continue;let s=r.replace("ws://","stun:");s.replace("wss://","stun:"),s.includes("stun:")&&n.push({urls:s})}return ft.CENTRALIZED_STUN_SERVERS&&(n.push({urls:"stun:stun.l.google.com:5349"}),n.push({urls:"stun:stun.l.google.com:19302"}),n.push({urls:"stun:stun1.l.google.com:3478"}),n.push({urls:"stun:stun1.l.google.com:5349"})),n}};async function Tn(p={}){let t=p.verbose!==void 0?p.verbose:at.DEFAULT_VERBOSE,n=p.cryptoCodex||new Wt(void 0,t),r=tt.sync(t);n.publicKey||await n.generate(!1),await r;let s=new Zt(n,p.bootstraps||[],t);return p.autoStart!==!1&&await s.start(),s}var Zt=class{started=!1;id;cryptoCodex;verbose;offerManager;arbiter;peerStore;messager;gossip;topologist;services;constructor(t,n=[],r=at.DEFAULT_VERBOSE){this.verbose=r,this.topologist?.services&&(this.topologist.services.verbose=r),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let s=Qe.deriveSTUNServers(n||[]);this.offerManager=new ne(this.id,s,r),this.arbiter=new te(this.id,t,r),this.peerStore=new ce(this.id,this.cryptoCodex,this.offerManager,this.arbiter,r),this.messager=new fe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.gossip=new le(this.id,this.cryptoCodex,this.arbiter,this.peerStore,r),this.topologist=new de(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,n||[]);let{arbiter:o,peerStore:a,messager:g,gossip:I,topologist:A}=this;a.on("signal",(u,l)=>this.sendMessage(u,l,"signal_answer")),a.on("connect",(u,l)=>this.#e(u,l)),a.on("disconnect",(u,l)=>this.#t(u,l)),a.on("data",(u,l)=>this.#n(u,l)),g.on("signal_answer",(u,l)=>A.handleIncomingSignal(u,l)),g.on("signal_offer",(u,l)=>A.handleIncomingSignal(u,l)),I.on("signal_offer",(u,l,f)=>A.handleIncomingSignal(u,l,f)),r>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,n)=>{let r=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!r&&!this.cryptoCodex.isPublicNode(this.id)||n==="in")&&this.sendMessage(t,this.id,"handshake");let o=this.peerStore.neighborsList.length>=At.TARGET_NEIGHBORS_COUNT+this.halfTarget,a=()=>{At.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&o&&this.broadcast([],"over_neighbored"),At.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};At.ON_CONNECT_DISPATCH.DELAY?setTimeout(a,At.ON_CONNECT_DISPATCH.DELAY):a()};#t=(t,n)=>{if(!this.peerStore.neighborsList.length){for(let o in this.peerStore.connecting)this.peerStore.kickPeer(o,0,"no_neighbors_left");for(let o in this.offerManager.offers)this.offerManager.offers[o].timestamp=0}let r=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||r?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,n)=>{let r=new Uint8Array(n);r[0]>127?this.gossip.handleGossipMessage(t,r):this.messager.handleDirectMessage(t,r)};get publicUrl(){return this.services?.publicUrl}get time(){return tt.time}async start(){return await tt.sync(this.verbose),this.started=!0,Et.AVOID_INTERVALS||(this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500),this.publicUrl)||(this.enhancerInterval=setInterval(()=>this.topologist.tick(),At.LOOP_DELAY),this.topologist.tryConnectNextBootstrap()),!0}async broadcast(t,n,r){return this.gossip.broadcastToAll(t,n,r)}async sendMessage(t,n,r,s=1){return this.messager.sendUnicast(t,n,r,s)}async tryConnectToPeer(t="toto",n=10){if(!this.peerStore.connected[t])do{let{offerHash:r,readyOffer:s}=this.peerStore.offerManager.bestReadyOffer(100,!1);if(!r||!s)await new Promise(o=>setTimeout(o,1e3));else{this.messager.sendUnicast(t,{signal:s.signal,offerHash:r},"signal_offer",1);return}}while(n-- >0)}destroy(){this.enhancerInterval&&clearInterval(this.enhancerInterval),this.enhancerInterval=null,this.peerStoreInterval&&clearInterval(this.peerStoreInterval),this.peerStoreInterval=null,this.peerStore.destroy(),this.wsServer&&this.wsServer.close(),this.stunServer&&this.stunServer.close()}onPeerConnect(t){this.peerStore.on("connect",t)}onPeerDisconnect(t){this.peerStore.on("disconnect",t)}onMessageData(t){this.messager.on("message",t)}onGossipData(t){this.gossip.on("gossip",t)}onSignalOffer(t){this.messager.on("signal_offer",t),this.gossip.on("signal_offer",t)}onSignalAnswer(t){this.messager.on("signal_answer",t)}kickPeer(t,n="kicked_by_node"){this.peerStore.kickPeer(t,0,n)}banPeer(t,n=6e4,r="banished_by_node"){this.arbiter.trustBalances[t]=0,this.arbiter.adjustTrust(t,-n,r)}};await wt();function vn(p,t){for(let n in t)t[n]&&typeof t[n]=="object"&&!Array.isArray(t[n])?(p[n]=p[n]||{},vn(p[n],t[n])):p[n]=t[n]}var Fn={CLOCK:tt,CONFIG:ze,mergeConfig:vn,Node:Zt,createNode:Tn,CryptoCodex:Wt,ed25519:qt,Argon2Unified:Kt};var as=Fn;typeof window<"u"&&(window.HiveP2P=Fn);export{Kt as Argon2Unified,tt as CLOCK,ze as CONFIG,Wt as CryptoCodex,Zt as Node,Tn as createNode,as as default,qt as ed25519,vn as mergeConfig};
4
4
  /*!
5
5
  * The buffer module from node.js, for the browser.
6
6
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hive-p2p/browser",
3
- "version": "1.0.67",
3
+ "version": "1.0.68",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },