@hive-p2p/browser 1.0.29 → 1.0.30
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/node-services.mjs +2 -2
- package/core/topologist.mjs +3 -2
- package/hive-p2p.min.js +1 -1
- package/package.json +1 -1
package/core/node-services.mjs
CHANGED
|
@@ -122,8 +122,8 @@ export class NodeServices {
|
|
|
122
122
|
/** @type {Array<{urls: string}>} */
|
|
123
123
|
const stunUrls = [];
|
|
124
124
|
for (const b of bootstraps) {
|
|
125
|
-
|
|
126
|
-
domain.replace('
|
|
125
|
+
if (!b.includes(':')) continue;
|
|
126
|
+
const domain = b.split(':')[1].replace('//', '');
|
|
127
127
|
const port = parseInt(b.split(':')[2]) + 1;
|
|
128
128
|
stunUrls.push({ urls: `stun:${domain}:${port}` });
|
|
129
129
|
}
|
package/core/topologist.mjs
CHANGED
|
@@ -149,8 +149,9 @@ export class Topologist {
|
|
|
149
149
|
const isBrowser = typeof window !== 'undefined';
|
|
150
150
|
const isSecure = isBrowser && window.location.protocol === 'https:';
|
|
151
151
|
const protocol = isSecure ? 'wss://' : 'ws://';
|
|
152
|
-
const
|
|
153
|
-
|
|
152
|
+
const hasWsSuffix = url.endsWith('/ws');
|
|
153
|
+
const host = isBrowser && !hasWsSuffix ? window.location.host : url;
|
|
154
|
+
|
|
154
155
|
// Build full URL if not already prefixed
|
|
155
156
|
return url.startsWith('ws') ? url : `${protocol}${host}`;
|
|
156
157
|
}
|
package/hive-p2p.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var Rr=Object.create;var tn=Object.defineProperty;var Dr=Object.getOwnPropertyDescriptor;var Nr=Object.getOwnPropertyNames;var Tr=Object.getPrototypeOf,vr=Object.prototype.hasOwnProperty;var he=(I=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(I,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):I)(function(I){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+I+'" is not supported')});var Tt=(I,t)=>()=>(I&&(t=I(I=0)),t);var xr=(I,t)=>()=>(t||I((t={exports:{}}).exports,t),t.exports),Be=(I,t)=>{for(var n in t)tn(I,n,{get:t[n],enumerable:!0})},Fr=(I,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Nr(t))!vr.call(I,s)&&s!==n&&tn(I,s,{get:()=>t[s],enumerable:!(i=Dr(t,s))||i.enumerable});return I};var kr=(I,t,n)=>(n=I!=null?Rr(Tr(I)):{},Fr(t||!I||!I.__esModule?tn(n,"default",{value:I,enumerable:!0}):n,I));var pe,Nn=Tt(()=>{pe=class I{verbose;mockMode;static#e=null;#t=null;#n=!1;#r=0;#i=["time.google.com","time.cloudflare.com","pool.ntp.org"];constructor(t=0,n=!1){if(this.verbose=t,this.mockMode=n,I.#e)return I.#e;I.#e=this}static get instance(){return I.#e||new I}static get time(){return I.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.#r=Date.now(),n.length<this.#i.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.#r,age:this.#r?Date.now()-this.#r:null}}async#s(){let t=this.#i.map(s=>this.#A(s)),n=await Promise.allSettled(t),i=[];for(let s of n)s.status==="fulfilled"&&i.push(s.value);return i}async#A(t){let n=new AbortController,i=setTimeout(()=>n.abort(),2e3);try{let s=Date.now(),A=await fetch(`https://${t}`,{method:"HEAD",signal:n.signal,cache:"no-cache"}),a=(Date.now()-s)/2;if(!A.ok)throw new Error(`HTTP ${A.status}`);let h=new Date(A.headers.get("date")).getTime();if(isNaN(h))throw new Error("Invalid date header");return{source:t,serverTime:h+a,localTime:Date.now(),latency:a*2}}finally{clearTimeout(i)}}#o(t){if(t.length===1)return t[0].serverTime-t[0].localTime;t.sort((s,A)=>s.latency-A.latency);let n=[];for(let s of t)n.push(s.serverTime-s.localTime);n.sort((s,A)=>s-A);let i=Math.floor(n.length/2);return n.length%2===0?(n[i-1]+n[i])/2:n[i]}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)}}}});var Ur={};var Tn=Tt(()=>{(function(I){if(typeof exports=="object"&&typeof module<"u")module.exports=I();else if(typeof define=="function"&&define.amd)define([],I);else{var t;t=typeof window>"u"?typeof global>"u"?typeof self>"u"?this:self:global:window,t.SimplePeer=I()}})(function(){var I=Math.floor,t=Math.abs,n=Math.pow;return(function(){function i(s,A,a){function h(l,u){if(!A[l]){if(!s[l]){var g=typeof he=="function"&&he;if(!u&&g)return g(l,!0);if(E)return E(l,!0);var Q=new Error("Cannot find module '"+l+"'");throw Q.code="MODULE_NOT_FOUND",Q}var b=A[l]={exports:{}};s[l][0].call(b.exports,function(m){var D=s[l][1][m];return h(D||m)},b,b.exports,i,s,A,a)}return A[l].exports}for(var E=typeof he=="function"&&he,o=0;o<a.length;o++)h(a[o]);return h}return i})()({1:[function(i,s,A){"use strict";function a(B){var C=B.length;if(0<C%4)throw new Error("Invalid string. Length must be a multiple of 4");var S=B.indexOf("=");S===-1&&(S=C);var y=S===C?0:4-S%4;return[S,y]}function h(B,C,S){return 3*(C+S)/4-S}function E(B){var C,S,y=a(B),R=y[0],F=y[1],w=new b(h(B,R,F)),_=0,U=0<F?R-4:R;for(S=0;S<U;S+=4)C=Q[B.charCodeAt(S)]<<18|Q[B.charCodeAt(S+1)]<<12|Q[B.charCodeAt(S+2)]<<6|Q[B.charCodeAt(S+3)],w[_++]=255&C>>16,w[_++]=255&C>>8,w[_++]=255&C;return F===2&&(C=Q[B.charCodeAt(S)]<<2|Q[B.charCodeAt(S+1)]>>4,w[_++]=255&C),F===1&&(C=Q[B.charCodeAt(S)]<<10|Q[B.charCodeAt(S+1)]<<4|Q[B.charCodeAt(S+2)]>>2,w[_++]=255&C>>8,w[_++]=255&C),w}function o(B){return g[63&B>>18]+g[63&B>>12]+g[63&B>>6]+g[63&B]}function l(B,C,S){for(var y,R=[],F=C;F<S;F+=3)y=(16711680&B[F]<<16)+(65280&B[F+1]<<8)+(255&B[F+2]),R.push(o(y));return R.join("")}function u(B){for(var C,S=B.length,y=S%3,R=[],F=16383,w=0,_=S-y;w<_;w+=F)R.push(l(B,w,w+F>_?_:w+F));return y===1?(C=B[S-1],R.push(g[C>>2]+g[63&C<<4]+"==")):y===2&&(C=(B[S-2]<<8)+B[S-1],R.push(g[C>>10]+g[63&C>>4]+g[63&C<<2]+"=")),R.join("")}A.byteLength=function(B){var C=a(B),S=C[0],y=C[1];return 3*(S+y)/4-y},A.toByteArray=E,A.fromByteArray=u;for(var g=[],Q=[],b=typeof Uint8Array>"u"?Array:Uint8Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",D=0,f=m.length;D<f;++D)g[D]=m[D],Q[m.charCodeAt(D)]=D;Q[45]=62,Q[95]=63},{}],2:[function(){},{}],3:[function(i,s,A){(function(){(function(){"use strict";var a=String.fromCharCode,h=Math.min;function E(e){if(2147483647<e)throw new RangeError('The value "'+e+'" is invalid for option "size"');var r=new Uint8Array(e);return r.__proto__=o.prototype,r}function o(e,r,c){if(typeof e=="number"){if(typeof r=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return Q(e)}return l(e,r,c)}function l(e,r,c){if(typeof e=="string")return b(e,r);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(T(e,ArrayBuffer)||e&&T(e.buffer,ArrayBuffer))return D(e,r,c);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var p=e.valueOf&&e.valueOf();if(p!=null&&p!==e)return o.from(p,r,c);var N=f(e);if(N)return N;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return o.from(e[Symbol.toPrimitive]("string"),r,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 u(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 g(e,r,c){return u(e),0>=e||r===void 0?E(e):typeof c=="string"?E(e).fill(r,c):E(e).fill(r)}function Q(e){return u(e),E(0>e?0:0|B(e))}function b(e,r){if((typeof r!="string"||r==="")&&(r="utf8"),!o.isEncoding(r))throw new TypeError("Unknown encoding: "+r);var c=0|C(e,r),p=E(c),N=p.write(e,r);return N!==c&&(p=p.slice(0,N)),p}function m(e){for(var r=0>e.length?0:0|B(e.length),c=E(r),p=0;p<r;p+=1)c[p]=255&e[p];return c}function D(e,r,c){if(0>r||e.byteLength<r)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<r+(c||0))throw new RangeError('"length" is outside of buffer bounds');var p;return p=r===void 0&&c===void 0?new Uint8Array(e):c===void 0?new Uint8Array(e,r):new Uint8Array(e,r,c),p.__proto__=o.prototype,p}function f(e){if(o.isBuffer(e)){var r=0|B(e.length),c=E(r);return c.length===0||e.copy(c,0,0,r),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)?E(0):m(e)}function B(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function C(e,r){if(o.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||T(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,p=2<arguments.length&&arguments[2]===!0;if(!p&&c===0)return 0;for(var N=!1;;)switch(r){case"ascii":case"latin1":case"binary":return c;case"utf8":case"utf-8":return St(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*c;case"hex":return c>>>1;case"base64":return Ct(e).length;default:if(N)return p?-1:St(e).length;r=(""+r).toLowerCase(),N=!0}}function S(e,r,c){var p=!1;if((r===void 0||0>r)&&(r=0),r>this.length||((c===void 0||c>this.length)&&(c=this.length),0>=c)||(c>>>=0,r>>>=0,c<=r))return"";for(e||(e="utf8");;)switch(e){case"hex":return ot(this,r,c);case"utf8":case"utf-8":return j(this,r,c);case"ascii":return J(this,r,c);case"latin1":case"binary":return Rt(this,r,c);case"base64":return K(this,r,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ht(this,r,c);default:if(p)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),p=!0}}function y(e,r,c){var p=e[r];e[r]=e[c],e[c]=p}function R(e,r,c,p,N){if(e.length===0)return-1;if(typeof c=="string"?(p=c,c=0):2147483647<c?c=2147483647:-2147483648>c&&(c=-2147483648),c=+c,k(c)&&(c=N?0:e.length-1),0>c&&(c=e.length+c),c>=e.length){if(N)return-1;c=e.length-1}else if(0>c)if(N)c=0;else return-1;if(typeof r=="string"&&(r=o.from(r,p)),o.isBuffer(r))return r.length===0?-1:F(e,r,c,p,N);if(typeof r=="number")return r&=255,typeof Uint8Array.prototype.indexOf=="function"?N?Uint8Array.prototype.indexOf.call(e,r,c):Uint8Array.prototype.lastIndexOf.call(e,r,c):F(e,[r],c,p,N);throw new TypeError("val must be string, number or Buffer")}function F(e,r,c,p,N){function v(ce,re){return G===1?ce[re]:ce.readUInt16BE(re*G)}var G=1,q=e.length,rt=r.length;if(p!==void 0&&(p=(p+"").toLowerCase(),p==="ucs2"||p==="ucs-2"||p==="utf16le"||p==="utf-16le")){if(2>e.length||2>r.length)return-1;G=2,q/=2,rt/=2,c/=2}var $;if(N){var Z=-1;for($=c;$<q;$++)if(v(e,$)!==v(r,Z===-1?0:$-Z))Z!==-1&&($-=$-Z),Z=-1;else if(Z===-1&&(Z=$),$-Z+1===rt)return Z*G}else for(c+rt>q&&(c=q-rt),$=c;0<=$;$--){for(var z=!0,ne=0;ne<rt;ne++)if(v(e,$+ne)!==v(r,ne)){z=!1;break}if(z)return $}return-1}function w(e,r,c,p){c=+c||0;var N=e.length-c;p?(p=+p,p>N&&(p=N)):p=N;var v=r.length;p>v/2&&(p=v/2);for(var G,q=0;q<p;++q){if(G=parseInt(r.substr(2*q,2),16),k(G))return q;e[c+q]=G}return q}function _(e,r,c,p){return mt(St(r,e.length-c),e,c,p)}function U(e,r,c,p){return mt(Wt(r),e,c,p)}function M(e,r,c,p){return U(e,r,c,p)}function H(e,r,c,p){return mt(Ct(r),e,c,p)}function Y(e,r,c,p){return mt(xt(r,e.length-c),e,c,p)}function K(e,r,c){return r===0&&c===e.length?O.fromByteArray(e):O.fromByteArray(e.slice(r,c))}function j(e,r,c){c=h(e.length,c);for(var p=[],N=r;N<c;){var v=e[N],G=null,q=239<v?4:223<v?3:191<v?2:1;if(N+q<=c){var rt,$,Z,z;q===1?128>v&&(G=v):q===2?(rt=e[N+1],(192&rt)==128&&(z=(31&v)<<6|63&rt,127<z&&(G=z))):q===3?(rt=e[N+1],$=e[N+2],(192&rt)==128&&(192&$)==128&&(z=(15&v)<<12|(63&rt)<<6|63&$,2047<z&&(55296>z||57343<z)&&(G=z))):q===4&&(rt=e[N+1],$=e[N+2],Z=e[N+3],(192&rt)==128&&(192&$)==128&&(192&Z)==128&&(z=(15&v)<<18|(63&rt)<<12|(63&$)<<6|63&Z,65535<z&&1114112>z&&(G=z)))}G===null?(G=65533,q=1):65535<G&&(G-=65536,p.push(55296|1023&G>>>10),G=56320|1023&G),p.push(G),N+=q}return st(p)}function st(e){var r=e.length;if(r<=4096)return a.apply(String,e);for(var c="",p=0;p<r;)c+=a.apply(String,e.slice(p,p+=4096));return c}function J(e,r,c){var p="";c=h(e.length,c);for(var N=r;N<c;++N)p+=a(127&e[N]);return p}function Rt(e,r,c){var p="";c=h(e.length,c);for(var N=r;N<c;++N)p+=a(e[N]);return p}function ot(e,r,c){var p=e.length;(!r||0>r)&&(r=0),(!c||0>c||c>p)&&(c=p);for(var N="",v=r;v<c;++v)N+=Nt(e[v]);return N}function ht(e,r,c){for(var p=e.slice(r,c),N="",v=0;v<p.length;v+=2)N+=a(p[v]+256*p[v+1]);return N}function W(e,r,c){if(e%1!=0||0>e)throw new RangeError("offset is not uint");if(e+r>c)throw new RangeError("Trying to access beyond buffer length")}function V(e,r,c,p,N,v){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>N||r<v)throw new RangeError('"value" argument is out of bounds');if(c+p>e.length)throw new RangeError("Index out of range")}function Et(e,r,c,p){if(c+p>e.length)throw new RangeError("Index out of range");if(0>c)throw new RangeError("Index out of range")}function At(e,r,c,p,N){return r=+r,c>>>=0,N||Et(e,r,c,4,34028234663852886e22,-34028234663852886e22),x.write(e,r,c,p,23,4),c+4}function wt(e,r,c,p,N){return r=+r,c>>>=0,N||Et(e,r,c,8,17976931348623157e292,-17976931348623157e292),x.write(e,r,c,p,52,8),c+8}function et(e){if(e=e.split("=")[0],e=e.trim().replace(L,""),2>e.length)return"";for(;e.length%4!=0;)e+="=";return e}function Nt(e){return 16>e?"0"+e.toString(16):e.toString(16)}function St(e,r){r=r||1/0;for(var c,p=e.length,N=null,v=[],G=0;G<p;++G){if(c=e.charCodeAt(G),55295<c&&57344>c){if(!N){if(56319<c){-1<(r-=3)&&v.push(239,191,189);continue}else if(G+1===p){-1<(r-=3)&&v.push(239,191,189);continue}N=c;continue}if(56320>c){-1<(r-=3)&&v.push(239,191,189),N=c;continue}c=(N-55296<<10|c-56320)+65536}else N&&-1<(r-=3)&&v.push(239,191,189);if(N=null,128>c){if(0>(r-=1))break;v.push(c)}else if(2048>c){if(0>(r-=2))break;v.push(192|c>>6,128|63&c)}else if(65536>c){if(0>(r-=3))break;v.push(224|c>>12,128|63&c>>6,128|63&c)}else if(1114112>c){if(0>(r-=4))break;v.push(240|c>>18,128|63&c>>12,128|63&c>>6,128|63&c)}else throw new Error("Invalid code point")}return v}function Wt(e){for(var r=[],c=0;c<e.length;++c)r.push(255&e.charCodeAt(c));return r}function xt(e,r){for(var c,p,N,v=[],G=0;G<e.length&&!(0>(r-=2));++G)c=e.charCodeAt(G),p=c>>8,N=c%256,v.push(N),v.push(p);return v}function Ct(e){return O.toByteArray(et(e))}function mt(e,r,c,p){for(var N=0;N<p&&!(N+c>=r.length||N>=e.length);++N)r[N+c]=e[N];return N}function T(e,r){return e instanceof r||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===r.name}function k(e){return e!==e}var O=i("base64-js"),x=i("ieee754");A.Buffer=o,A.SlowBuffer=function(e){return+e!=e&&(e=0),o.alloc(+e)},A.INSPECT_MAX_BYTES=50,A.kMaxLength=2147483647,o.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}})(),o.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(o.prototype,"parent",{enumerable:!0,get:function(){return o.isBuffer(this)?this.buffer:void 0}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){return o.isBuffer(this)?this.byteOffset:void 0}}),typeof Symbol<"u"&&Symbol.species!=null&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),o.poolSize=8192,o.from=function(e,r,c){return l(e,r,c)},o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,o.alloc=function(e,r,c){return g(e,r,c)},o.allocUnsafe=function(e){return Q(e)},o.allocUnsafeSlow=function(e){return Q(e)},o.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==o.prototype},o.compare=function(e,r){if(T(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),T(r,Uint8Array)&&(r=o.from(r,r.offset,r.byteLength)),!o.isBuffer(e)||!o.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;for(var c=e.length,p=r.length,N=0,v=h(c,p);N<v;++N)if(e[N]!==r[N]){c=e[N],p=r[N];break}return c<p?-1:p<c?1:0},o.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}},o.concat=function(e,r){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return o.alloc(0);var c;if(r===void 0)for(r=0,c=0;c<e.length;++c)r+=e[c].length;var p=o.allocUnsafe(r),N=0;for(c=0;c<e.length;++c){var v=e[c];if(T(v,Uint8Array)&&(v=o.from(v)),!o.isBuffer(v))throw new TypeError('"list" argument must be an Array of Buffers');v.copy(p,N),N+=v.length}return p},o.byteLength=C,o.prototype._isBuffer=!0,o.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 r=0;r<e;r+=2)y(this,r,r+1);return this},o.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 r=0;r<e;r+=4)y(this,r,r+3),y(this,r+1,r+2);return this},o.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 r=0;r<e;r+=8)y(this,r,r+7),y(this,r+1,r+6),y(this,r+2,r+5),y(this,r+3,r+4);return this},o.prototype.toString=function(){var e=this.length;return e===0?"":arguments.length===0?j(this,0,e):S.apply(this,arguments)},o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||o.compare(this,e)===0},o.prototype.inspect=function(){var e="",r=A.INSPECT_MAX_BYTES;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},o.prototype.compare=function(e,r,c,p,N){if(T(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),!o.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(r===void 0&&(r=0),c===void 0&&(c=e?e.length:0),p===void 0&&(p=0),N===void 0&&(N=this.length),0>r||c>e.length||0>p||N>this.length)throw new RangeError("out of range index");if(p>=N&&r>=c)return 0;if(p>=N)return-1;if(r>=c)return 1;if(r>>>=0,c>>>=0,p>>>=0,N>>>=0,this===e)return 0;for(var v=N-p,G=c-r,q=h(v,G),rt=this.slice(p,N),$=e.slice(r,c),Z=0;Z<q;++Z)if(rt[Z]!==$[Z]){v=rt[Z],G=$[Z];break}return v<G?-1:G<v?1:0},o.prototype.includes=function(e,r,c){return this.indexOf(e,r,c)!==-1},o.prototype.indexOf=function(e,r,c){return R(this,e,r,c,!0)},o.prototype.lastIndexOf=function(e,r,c){return R(this,e,r,c,!1)},o.prototype.write=function(e,r,c,p){if(r===void 0)p="utf8",c=this.length,r=0;else if(c===void 0&&typeof r=="string")p=r,c=this.length,r=0;else if(isFinite(r))r>>>=0,isFinite(c)?(c>>>=0,p===void 0&&(p="utf8")):(p=c,c=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var N=this.length-r;if((c===void 0||c>N)&&(c=N),0<e.length&&(0>c||0>r)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");p||(p="utf8");for(var v=!1;;)switch(p){case"hex":return w(this,e,r,c);case"utf8":case"utf-8":return _(this,e,r,c);case"ascii":return U(this,e,r,c);case"latin1":case"binary":return M(this,e,r,c);case"base64":return H(this,e,r,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Y(this,e,r,c);default:if(v)throw new TypeError("Unknown encoding: "+p);p=(""+p).toLowerCase(),v=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},o.prototype.slice=function(e,r){var c=this.length;e=~~e,r=r===void 0?c:~~r,0>e?(e+=c,0>e&&(e=0)):e>c&&(e=c),0>r?(r+=c,0>r&&(r=0)):r>c&&(r=c),r<e&&(r=e);var p=this.subarray(e,r);return p.__proto__=o.prototype,p},o.prototype.readUIntLE=function(e,r,c){e>>>=0,r>>>=0,c||W(e,r,this.length);for(var p=this[e],N=1,v=0;++v<r&&(N*=256);)p+=this[e+v]*N;return p},o.prototype.readUIntBE=function(e,r,c){e>>>=0,r>>>=0,c||W(e,r,this.length);for(var p=this[e+--r],N=1;0<r&&(N*=256);)p+=this[e+--r]*N;return p},o.prototype.readUInt8=function(e,r){return e>>>=0,r||W(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,r){return e>>>=0,r||W(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,r){return e>>>=0,r||W(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,r){return e>>>=0,r||W(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,r){return e>>>=0,r||W(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,r,c){e>>>=0,r>>>=0,c||W(e,r,this.length);for(var p=this[e],N=1,v=0;++v<r&&(N*=256);)p+=this[e+v]*N;return N*=128,p>=N&&(p-=n(2,8*r)),p},o.prototype.readIntBE=function(e,r,c){e>>>=0,r>>>=0,c||W(e,r,this.length);for(var p=r,N=1,v=this[e+--p];0<p&&(N*=256);)v+=this[e+--p]*N;return N*=128,v>=N&&(v-=n(2,8*r)),v},o.prototype.readInt8=function(e,r){return e>>>=0,r||W(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,r){e>>>=0,r||W(e,2,this.length);var c=this[e]|this[e+1]<<8;return 32768&c?4294901760|c:c},o.prototype.readInt16BE=function(e,r){e>>>=0,r||W(e,2,this.length);var c=this[e+1]|this[e]<<8;return 32768&c?4294901760|c:c},o.prototype.readInt32LE=function(e,r){return e>>>=0,r||W(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,r){return e>>>=0,r||W(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,r){return e>>>=0,r||W(e,4,this.length),x.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,r){return e>>>=0,r||W(e,4,this.length),x.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,r){return e>>>=0,r||W(e,8,this.length),x.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,r){return e>>>=0,r||W(e,8,this.length),x.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,r,c,p){if(e=+e,r>>>=0,c>>>=0,!p){var N=n(2,8*c)-1;V(this,e,r,c,N,0)}var v=1,G=0;for(this[r]=255&e;++G<c&&(v*=256);)this[r+G]=255&e/v;return r+c},o.prototype.writeUIntBE=function(e,r,c,p){if(e=+e,r>>>=0,c>>>=0,!p){var N=n(2,8*c)-1;V(this,e,r,c,N,0)}var v=c-1,G=1;for(this[r+v]=255&e;0<=--v&&(G*=256);)this[r+v]=255&e/G;return r+c},o.prototype.writeUInt8=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,1,255,0),this[r]=255&e,r+1},o.prototype.writeUInt16LE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,2,65535,0),this[r]=255&e,this[r+1]=e>>>8,r+2},o.prototype.writeUInt16BE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,2,65535,0),this[r]=e>>>8,this[r+1]=255&e,r+2},o.prototype.writeUInt32LE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,4,4294967295,0),this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e,r+4},o.prototype.writeUInt32BE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,4,4294967295,0),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e,r+4},o.prototype.writeIntLE=function(e,r,c,p){if(e=+e,r>>>=0,!p){var N=n(2,8*c-1);V(this,e,r,c,N-1,-N)}var v=0,G=1,q=0;for(this[r]=255&e;++v<c&&(G*=256);)0>e&&q===0&&this[r+v-1]!==0&&(q=1),this[r+v]=255&(e/G>>0)-q;return r+c},o.prototype.writeIntBE=function(e,r,c,p){if(e=+e,r>>>=0,!p){var N=n(2,8*c-1);V(this,e,r,c,N-1,-N)}var v=c-1,G=1,q=0;for(this[r+v]=255&e;0<=--v&&(G*=256);)0>e&&q===0&&this[r+v+1]!==0&&(q=1),this[r+v]=255&(e/G>>0)-q;return r+c},o.prototype.writeInt8=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,1,127,-128),0>e&&(e=255+e+1),this[r]=255&e,r+1},o.prototype.writeInt16LE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,2,32767,-32768),this[r]=255&e,this[r+1]=e>>>8,r+2},o.prototype.writeInt16BE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,2,32767,-32768),this[r]=e>>>8,this[r+1]=255&e,r+2},o.prototype.writeInt32LE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,4,2147483647,-2147483648),this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24,r+4},o.prototype.writeInt32BE=function(e,r,c){return e=+e,r>>>=0,c||V(this,e,r,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e,r+4},o.prototype.writeFloatLE=function(e,r,c){return At(this,e,r,!0,c)},o.prototype.writeFloatBE=function(e,r,c){return At(this,e,r,!1,c)},o.prototype.writeDoubleLE=function(e,r,c){return wt(this,e,r,!0,c)},o.prototype.writeDoubleBE=function(e,r,c){return wt(this,e,r,!1,c)},o.prototype.copy=function(e,r,c,p){if(!o.isBuffer(e))throw new TypeError("argument should be a Buffer");if(c||(c=0),p||p===0||(p=this.length),r>=e.length&&(r=e.length),r||(r=0),0<p&&p<c&&(p=c),p===c||e.length===0||this.length===0)return 0;if(0>r)throw new RangeError("targetStart out of bounds");if(0>c||c>=this.length)throw new RangeError("Index out of range");if(0>p)throw new RangeError("sourceEnd out of bounds");p>this.length&&(p=this.length),e.length-r<p-c&&(p=e.length-r+c);var N=p-c;if(this===e&&typeof Uint8Array.prototype.copyWithin=="function")this.copyWithin(r,c,p);else if(this===e&&c<r&&r<p)for(var v=N-1;0<=v;--v)e[v+r]=this[v+c];else Uint8Array.prototype.set.call(e,this.subarray(c,p),r);return N},o.prototype.fill=function(e,r,c,p){if(typeof e=="string"){if(typeof r=="string"?(p=r,r=0,c=this.length):typeof c=="string"&&(p=c,c=this.length),p!==void 0&&typeof p!="string")throw new TypeError("encoding must be a string");if(typeof p=="string"&&!o.isEncoding(p))throw new TypeError("Unknown encoding: "+p);if(e.length===1){var N=e.charCodeAt(0);(p==="utf8"&&128>N||p==="latin1")&&(e=N)}}else typeof e=="number"&&(e&=255);if(0>r||this.length<r||this.length<c)throw new RangeError("Out of range index");if(c<=r)return this;r>>>=0,c=c===void 0?this.length:c>>>0,e||(e=0);var v;if(typeof e=="number")for(v=r;v<c;++v)this[v]=e;else{var G=o.isBuffer(e)?e:o.from(e,p),q=G.length;if(q===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(v=0;v<c-r;++v)this[v+r]=G[v%q]}return this};var L=/[^+/0-9A-Za-z-_]/g}).call(this)}).call(this,i("buffer").Buffer)},{"base64-js":1,buffer:3,ieee754:9}],4:[function(i,s,A){(function(a){(function(){function h(){let o;try{o=A.storage.getItem("debug")}catch{}return!o&&typeof a<"u"&&"env"in a&&(o=a.env.DEBUG),o}A.formatArgs=function(o){if(o[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+o[0]+(this.useColors?"%c ":" ")+"+"+s.exports.humanize(this.diff),!this.useColors)return;let l="color: "+this.color;o.splice(1,0,l,"color: inherit");let u=0,g=0;o[0].replace(/%[a-zA-Z%]/g,Q=>{Q==="%%"||(u++,Q==="%c"&&(g=u))}),o.splice(g,0,l)},A.save=function(o){try{o?A.storage.setItem("debug",o):A.storage.removeItem("debug")}catch{}},A.load=h,A.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+)/))},A.storage=(function(){try{return localStorage}catch{}})(),A.destroy=(()=>{let o=!1;return()=>{o||(o=!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`."))}})(),A.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"],A.log=console.debug||console.log||(()=>{}),s.exports=i("./common")(A);let{formatters:E}=s.exports;E.j=function(o){try{return JSON.stringify(o)}catch(l){return"[UnexpectedJSONParseError]: "+l.message}}}).call(this)}).call(this,i("_process"))},{"./common":5,_process:12}],5:[function(i,s){s.exports=function(A){function a(o){function l(...Q){if(!l.enabled)return;let b=l,m=+new Date,D=m-(u||m);b.diff=D,b.prev=u,b.curr=m,u=m,Q[0]=a.coerce(Q[0]),typeof Q[0]!="string"&&Q.unshift("%O");let f=0;Q[0]=Q[0].replace(/%([a-zA-Z%])/g,(C,S)=>{if(C==="%%")return"%";f++;let y=a.formatters[S];if(typeof y=="function"){let R=Q[f];C=y.call(b,R),Q.splice(f,1),f--}return C}),a.formatArgs.call(b,Q),(b.log||a.log).apply(b,Q)}let u,g=null;return l.namespace=o,l.useColors=a.useColors(),l.color=a.selectColor(o),l.extend=h,l.destroy=a.destroy,Object.defineProperty(l,"enabled",{enumerable:!0,configurable:!1,get:()=>g===null?a.enabled(o):g,set:Q=>{g=Q}}),typeof a.init=="function"&&a.init(l),l}function h(o,l){let u=a(this.namespace+(typeof l>"u"?":":l)+o);return u.log=this.log,u}function E(o){return o.toString().substring(2,o.toString().length-2).replace(/\.\*\?$/,"*")}return a.debug=a,a.default=a,a.coerce=function(o){return o instanceof Error?o.stack||o.message:o},a.disable=function(){let o=[...a.names.map(E),...a.skips.map(E).map(l=>"-"+l)].join(",");return a.enable(""),o},a.enable=function(o){a.save(o),a.names=[],a.skips=[];let l,u=(typeof o=="string"?o:"").split(/[\s,]+/),g=u.length;for(l=0;l<g;l++)u[l]&&(o=u[l].replace(/\*/g,".*?"),o[0]==="-"?a.skips.push(new RegExp("^"+o.substr(1)+"$")):a.names.push(new RegExp("^"+o+"$")))},a.enabled=function(o){if(o[o.length-1]==="*")return!0;let l,u;for(l=0,u=a.skips.length;l<u;l++)if(a.skips[l].test(o))return!1;for(l=0,u=a.names.length;l<u;l++)if(a.names[l].test(o))return!0;return!1},a.humanize=i("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(A).forEach(o=>{a[o]=A[o]}),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(o){let l=0;for(let u=0;u<o.length;u++)l=(l<<5)-l+o.charCodeAt(u),l|=0;return a.colors[t(l)%a.colors.length]},a.enable(a.load()),a}},{ms:11}],6:[function(i,s){"use strict";function A(a,h){for(let E in h)Object.defineProperty(a,E,{value:h[E],enumerable:!0,configurable:!0});return a}s.exports=function(a,h,E){if(!a||typeof a=="string")throw new TypeError("Please pass an Error to err-code");E||(E={}),typeof h=="object"&&(E=h,h=""),h&&(E.code=h);try{return A(a,E)}catch{E.message=a.message,E.stack=a.stack;let l=function(){};return l.prototype=Object.create(Object.getPrototypeOf(a)),A(new l,E)}}},{}],7:[function(i,s){"use strict";function A(w){console&&console.warn&&console.warn(w)}function a(){a.init.call(this)}function h(w){if(typeof w!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof w)}function E(w){return w._maxListeners===void 0?a.defaultMaxListeners:w._maxListeners}function o(w,_,U,M){var H,Y,K;if(h(U),Y=w._events,Y===void 0?(Y=w._events=Object.create(null),w._eventsCount=0):(Y.newListener!==void 0&&(w.emit("newListener",_,U.listener?U.listener:U),Y=w._events),K=Y[_]),K===void 0)K=Y[_]=U,++w._eventsCount;else if(typeof K=="function"?K=Y[_]=M?[U,K]:[K,U]:M?K.unshift(U):K.push(U),H=E(w),0<H&&K.length>H&&!K.warned){K.warned=!0;var j=new Error("Possible EventEmitter memory leak detected. "+K.length+" "+(_+" listeners added. Use emitter.setMaxListeners() to increase limit"));j.name="MaxListenersExceededWarning",j.emitter=w,j.type=_,j.count=K.length,A(j)}return w}function l(){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 u(w,_,U){var M={fired:!1,wrapFn:void 0,target:w,type:_,listener:U},H=l.bind(M);return H.listener=U,M.wrapFn=H,H}function g(w,_,U){var M=w._events;if(M===void 0)return[];var H=M[_];return H===void 0?[]:typeof H=="function"?U?[H.listener||H]:[H]:U?D(H):b(H,H.length)}function Q(w){var _=this._events;if(_!==void 0){var U=_[w];if(typeof U=="function")return 1;if(U!==void 0)return U.length}return 0}function b(w,_){for(var U=Array(_),M=0;M<_;++M)U[M]=w[M];return U}function m(w,_){for(;_+1<w.length;_++)w[_]=w[_+1];w.pop()}function D(w){for(var _=Array(w.length),U=0;U<_.length;++U)_[U]=w[U].listener||w[U];return _}function f(w,_,U){typeof w.on=="function"&&B(w,"error",_,U)}function B(w,_,U,M){if(typeof w.on=="function")M.once?w.once(_,U):w.on(_,U);else if(typeof w.addEventListener=="function")w.addEventListener(_,function H(Y){M.once&&w.removeEventListener(_,H),U(Y)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof w)}var C,S=typeof Reflect=="object"?Reflect:null,y=S&&typeof S.apply=="function"?S.apply:function(w,_,U){return Function.prototype.apply.call(w,_,U)};C=S&&typeof S.ownKeys=="function"?S.ownKeys:Object.getOwnPropertySymbols?function(w){return Object.getOwnPropertyNames(w).concat(Object.getOwnPropertySymbols(w))}:function(w){return Object.getOwnPropertyNames(w)};var R=Number.isNaN||function(w){return w!==w};s.exports=a,s.exports.once=function(w,_){return new Promise(function(U,M){function H(K){w.removeListener(_,Y),M(K)}function Y(){typeof w.removeListener=="function"&&w.removeListener("error",H),U([].slice.call(arguments))}B(w,_,Y,{once:!0}),_!=="error"&&f(w,H,{once:!0})})},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var F=10;Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return F},set:function(w){if(typeof w!="number"||0>w||R(w))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+w+".");F=w}}),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(w){if(typeof w!="number"||0>w||R(w))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+w+".");return this._maxListeners=w,this},a.prototype.getMaxListeners=function(){return E(this)},a.prototype.emit=function(w){for(var _=[],U=1;U<arguments.length;U++)_.push(arguments[U]);var M=w==="error",H=this._events;if(H!==void 0)M=M&&H.error===void 0;else if(!M)return!1;if(M){var Y;if(0<_.length&&(Y=_[0]),Y instanceof Error)throw Y;var K=new Error("Unhandled error."+(Y?" ("+Y.message+")":""));throw K.context=Y,K}var j=H[w];if(j===void 0)return!1;if(typeof j=="function")y(j,this,_);else for(var st=j.length,J=b(j,st),U=0;U<st;++U)y(J[U],this,_);return!0},a.prototype.addListener=function(w,_){return o(this,w,_,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(w,_){return o(this,w,_,!0)},a.prototype.once=function(w,_){return h(_),this.on(w,u(this,w,_)),this},a.prototype.prependOnceListener=function(w,_){return h(_),this.prependListener(w,u(this,w,_)),this},a.prototype.removeListener=function(w,_){var U,M,H,Y,K;if(h(_),M=this._events,M===void 0)return this;if(U=M[w],U===void 0)return this;if(U===_||U.listener===_)--this._eventsCount==0?this._events=Object.create(null):(delete M[w],M.removeListener&&this.emit("removeListener",w,U.listener||_));else if(typeof U!="function"){for(H=-1,Y=U.length-1;0<=Y;Y--)if(U[Y]===_||U[Y].listener===_){K=U[Y].listener,H=Y;break}if(0>H)return this;H===0?U.shift():m(U,H),U.length===1&&(M[w]=U[0]),M.removeListener!==void 0&&this.emit("removeListener",w,K||_)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(w){var _,U,M;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[w]!==void 0&&(--this._eventsCount==0?this._events=Object.create(null):delete U[w]),this;if(arguments.length===0){var H,Y=Object.keys(U);for(M=0;M<Y.length;++M)H=Y[M],H!=="removeListener"&&this.removeAllListeners(H);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(_=U[w],typeof _=="function")this.removeListener(w,_);else if(_!==void 0)for(M=_.length-1;0<=M;M--)this.removeListener(w,_[M]);return this},a.prototype.listeners=function(w){return g(this,w,!0)},a.prototype.rawListeners=function(w){return g(this,w,!1)},a.listenerCount=function(w,_){return typeof w.listenerCount=="function"?w.listenerCount(_):Q.call(w,_)},a.prototype.listenerCount=Q,a.prototype.eventNames=function(){return 0<this._eventsCount?C(this._events):[]}},{}],8:[function(i,s){s.exports=function(){if(typeof globalThis>"u")return null;var A={RTCPeerConnection:globalThis.RTCPeerConnection||globalThis.mozRTCPeerConnection||globalThis.webkitRTCPeerConnection,RTCSessionDescription:globalThis.RTCSessionDescription||globalThis.mozRTCSessionDescription||globalThis.webkitRTCSessionDescription,RTCIceCandidate:globalThis.RTCIceCandidate||globalThis.mozRTCIceCandidate||globalThis.webkitRTCIceCandidate};return A.RTCPeerConnection?A:null}},{}],9:[function(i,s,A){A.read=function(a,h,E,o,l){var u,g,Q=8*l-o-1,b=(1<<Q)-1,m=b>>1,D=-7,f=E?l-1:0,B=E?-1:1,C=a[h+f];for(f+=B,u=C&(1<<-D)-1,C>>=-D,D+=Q;0<D;u=256*u+a[h+f],f+=B,D-=8);for(g=u&(1<<-D)-1,u>>=-D,D+=o;0<D;g=256*g+a[h+f],f+=B,D-=8);if(u===0)u=1-m;else{if(u===b)return g?NaN:(C?-1:1)*(1/0);g+=n(2,o),u-=m}return(C?-1:1)*g*n(2,u-o)},A.write=function(a,h,E,o,l,u){var g,Q,b,m=Math.LN2,D=Math.log,f=8*u-l-1,B=(1<<f)-1,C=B>>1,S=l===23?n(2,-24)-n(2,-77):0,y=o?0:u-1,R=o?1:-1,F=0>h||h===0&&0>1/h?1:0;for(h=t(h),isNaN(h)||h===1/0?(Q=isNaN(h)?1:0,g=B):(g=I(D(h)/m),1>h*(b=n(2,-g))&&(g--,b*=2),h+=1<=g+C?S/b:S*n(2,1-C),2<=h*b&&(g++,b/=2),g+C>=B?(Q=0,g=B):1<=g+C?(Q=(h*b-1)*n(2,l),g+=C):(Q=h*n(2,C-1)*n(2,l),g=0));8<=l;a[E+y]=255&Q,y+=R,Q/=256,l-=8);for(g=g<<l|Q,f+=l;0<f;a[E+y]=255&g,y+=R,g/=256,f-=8);a[E+y-R]|=128*F}},{}],10:[function(i,s){s.exports=typeof Object.create=="function"?function(A,a){a&&(A.super_=a,A.prototype=Object.create(a.prototype,{constructor:{value:A,enumerable:!1,writable:!0,configurable:!0}}))}:function(A,a){if(a){A.super_=a;var h=function(){};h.prototype=a.prototype,A.prototype=new h,A.prototype.constructor=A}}},{}],11:[function(i,s){var A=Math.round;function a(u){if(u+="",!(100<u.length)){var g=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(u);if(g){var Q=parseFloat(g[1]),b=(g[2]||"ms").toLowerCase();return b==="years"||b==="year"||b==="yrs"||b==="yr"||b==="y"?315576e5*Q:b==="weeks"||b==="week"||b==="w"?6048e5*Q:b==="days"||b==="day"||b==="d"?864e5*Q:b==="hours"||b==="hour"||b==="hrs"||b==="hr"||b==="h"?36e5*Q:b==="minutes"||b==="minute"||b==="mins"||b==="min"||b==="m"?6e4*Q:b==="seconds"||b==="second"||b==="secs"||b==="sec"||b==="s"?1e3*Q:b==="milliseconds"||b==="millisecond"||b==="msecs"||b==="msec"||b==="ms"?Q:void 0}}}function h(u){var g=t(u);return 864e5<=g?A(u/864e5)+"d":36e5<=g?A(u/36e5)+"h":6e4<=g?A(u/6e4)+"m":1e3<=g?A(u/1e3)+"s":u+"ms"}function E(u){var g=t(u);return 864e5<=g?o(u,g,864e5,"day"):36e5<=g?o(u,g,36e5,"hour"):6e4<=g?o(u,g,6e4,"minute"):1e3<=g?o(u,g,1e3,"second"):u+" ms"}function o(u,g,Q,b){return A(u/Q)+" "+b+(g>=1.5*Q?"s":"")}var l=24*(60*6e4);s.exports=function(u,g){g=g||{};var Q=typeof u;if(Q=="string"&&0<u.length)return a(u);if(Q==="number"&&isFinite(u))return g.long?E(u):h(u);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(u))}},{}],12:[function(i,s){function A(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function h(S){if(Q===setTimeout)return setTimeout(S,0);if((Q===A||!Q)&&setTimeout)return Q=setTimeout,setTimeout(S,0);try{return Q(S,0)}catch{try{return Q.call(null,S,0)}catch{return Q.call(this,S,0)}}}function E(S){if(b===clearTimeout)return clearTimeout(S);if((b===a||!b)&&clearTimeout)return b=clearTimeout,clearTimeout(S);try{return b(S)}catch{try{return b.call(null,S)}catch{return b.call(this,S)}}}function o(){B&&D&&(B=!1,D.length?f=D.concat(f):C=-1,f.length&&l())}function l(){if(!B){var S=h(o);B=!0;for(var y=f.length;y;){for(D=f,f=[];++C<y;)D&&D[C].run();C=-1,y=f.length}D=null,B=!1,E(S)}}function u(S,y){this.fun=S,this.array=y}function g(){}var Q,b,m=s.exports={};(function(){try{Q=typeof setTimeout=="function"?setTimeout:A}catch{Q=A}try{b=typeof clearTimeout=="function"?clearTimeout:a}catch{b=a}})();var D,f=[],B=!1,C=-1;m.nextTick=function(S){var y=Array(arguments.length-1);if(1<arguments.length)for(var R=1;R<arguments.length;R++)y[R-1]=arguments[R];f.push(new u(S,y)),f.length!==1||B||h(l)},u.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=g,m.addListener=g,m.once=g,m.off=g,m.removeListener=g,m.removeAllListeners=g,m.emit=g,m.prependListener=g,m.prependOnceListener=g,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(i,s){(function(A){(function(){let a;s.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window>"u"?A:window):h=>(a||(a=Promise.resolve())).then(h).catch(E=>setTimeout(()=>{throw E},0))}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],14:[function(i,s){(function(A,a){(function(){"use strict";var h=i("safe-buffer").Buffer,E=a.crypto||a.msCrypto;s.exports=E&&E.getRandomValues?function(o,l){if(o>4294967295)throw new RangeError("requested too many random bytes");var u=h.allocUnsafe(o);if(0<o)if(65536<o)for(var g=0;g<o;g+=65536)E.getRandomValues(u.slice(g,g+65536));else E.getRandomValues(u);return typeof l=="function"?A.nextTick(function(){l(null,u)}):u}: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,i("_process"),typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{_process:12,"safe-buffer":30}],15:[function(i,s){"use strict";function A(g,Q){g.prototype=Object.create(Q.prototype),g.prototype.constructor=g,g.__proto__=Q}function a(g,Q,b){function m(f,B,C){return typeof Q=="string"?Q:Q(f,B,C)}b||(b=Error);var D=(function(f){function B(C,S,y){return f.call(this,m(C,S,y))||this}return A(B,f),B})(b);D.prototype.name=b.name,D.prototype.code=g,u[g]=D}function h(g,Q){if(Array.isArray(g)){var b=g.length;return g=g.map(function(m){return m+""}),2<b?"one of ".concat(Q," ").concat(g.slice(0,b-1).join(", "),", or ")+g[b-1]:b===2?"one of ".concat(Q," ").concat(g[0]," or ").concat(g[1]):"of ".concat(Q," ").concat(g[0])}return"of ".concat(Q," ").concat(g+"")}function E(g,Q,b){return g.substr(!b||0>b?0:+b,Q.length)===Q}function o(g,Q,b){return(b===void 0||b>g.length)&&(b=g.length),g.substring(b-Q.length,b)===Q}function l(g,Q,b){return typeof b!="number"&&(b=0),!(b+Q.length>g.length)&&g.indexOf(Q,b)!==-1}var u={};a("ERR_INVALID_OPT_VALUE",function(g,Q){return'The value "'+Q+'" is invalid for option "'+g+'"'},TypeError),a("ERR_INVALID_ARG_TYPE",function(g,Q,b){var m;typeof Q=="string"&&E(Q,"not ")?(m="must not be",Q=Q.replace(/^not /,"")):m="must be";var D;if(o(g," argument"))D="The ".concat(g," ").concat(m," ").concat(h(Q,"type"));else{var f=l(g,".")?"property":"argument";D='The "'.concat(g,'" ').concat(f," ").concat(m," ").concat(h(Q,"type"))}return D+=". Received type ".concat(typeof b),D},TypeError),a("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),a("ERR_METHOD_NOT_IMPLEMENTED",function(g){return"The "+g+" method is not implemented"}),a("ERR_STREAM_PREMATURE_CLOSE","Premature close"),a("ERR_STREAM_DESTROYED",function(g){return"Cannot call "+g+" 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(g){return"Unknown encoding: "+g},TypeError),a("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),s.exports.codes=u},{}],16:[function(i,s){(function(A){(function(){"use strict";function a(m){return this instanceof a?(l.call(this,m),u.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",h))))):new a(m)}function h(){this._writableState.ended||A.nextTick(E,this)}function E(m){m.end()}var o=Object.keys||function(m){var D=[];for(var f in m)D.push(f);return D};s.exports=a;var l=i("./_stream_readable"),u=i("./_stream_writable");i("inherits")(a,l);for(var g,Q=o(u.prototype),b=0;b<Q.length;b++)g=Q[b],a.prototype[g]||(a.prototype[g]=u.prototype[g]);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,i("_process"))},{"./_stream_readable":18,"./_stream_writable":20,_process:12,inherits:10}],17:[function(i,s){"use strict";function A(h){return this instanceof A?void a.call(this,h):new A(h)}s.exports=A;var a=i("./_stream_transform");i("inherits")(A,a),A.prototype._transform=function(h,E,o){o(null,h)}},{"./_stream_transform":19,inherits:10}],18:[function(i,s){(function(A,a){(function(){"use strict";function h(e){return W.from(e)}function E(e){return W.isBuffer(e)||e instanceof V}function o(e,r,c){return typeof e.prependListener=="function"?e.prependListener(r,c):void(e._events&&e._events[r]?Array.isArray(e._events[r])?e._events[r].unshift(c):e._events[r]=[c,e._events[r]]:e.on(r,c))}function l(e,r,c){st=st||i("./_stream_duplex"),e=e||{},typeof c!="boolean"&&(c=r instanceof st),this.objectMode=!!e.objectMode,c&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=xt(this,e,"readableHighWaterMark",c),this.buffer=new Nt,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&&(!At&&(At=i("string_decoder/").StringDecoder),this.decoder=new At(e.encoding),this.encoding=e.encoding)}function u(e){if(st=st||i("./_stream_duplex"),!(this instanceof u))return new u(e);var r=this instanceof st;this._readableState=new l(e,this,r),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),ht.call(this)}function g(e,r,c,p,N){J("readableAddChunk",r);var v=e._readableState;if(r===null)v.reading=!1,f(e,v);else{var G;if(N||(G=b(v,r)),G)x(e,G);else if(!(v.objectMode||r&&0<r.length))p||(v.reading=!1,S(e,v));else if(typeof r=="string"||v.objectMode||Object.getPrototypeOf(r)===W.prototype||(r=h(r)),p)v.endEmitted?x(e,new O):Q(e,v,r,!0);else if(v.ended)x(e,new T);else{if(v.destroyed)return!1;v.reading=!1,v.decoder&&!c?(r=v.decoder.write(r),v.objectMode||r.length!==0?Q(e,v,r,!1):S(e,v)):Q(e,v,r,!1)}}return!v.ended&&(v.length<v.highWaterMark||v.length===0)}function Q(e,r,c,p){r.flowing&&r.length===0&&!r.sync?(r.awaitDrain=0,e.emit("data",c)):(r.length+=r.objectMode?1:c.length,p?r.buffer.unshift(c):r.buffer.push(c),r.needReadable&&B(e)),S(e,r)}function b(e,r){var c;return E(r)||typeof r=="string"||r===void 0||e.objectMode||(c=new mt("chunk",["string","Buffer","Uint8Array"],r)),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 D(e,r){return 0>=e||r.length===0&&r.ended?0:r.objectMode?1:e===e?(e>r.highWaterMark&&(r.highWaterMark=m(e)),e<=r.length?e:r.ended?r.length:(r.needReadable=!0,0)):r.flowing&&r.length?r.buffer.head.data.length:r.length}function f(e,r){if(J("onEofChunk"),!r.ended){if(r.decoder){var c=r.decoder.end();c&&c.length&&(r.buffer.push(c),r.length+=r.objectMode?1:c.length)}r.ended=!0,r.sync?B(e):(r.needReadable=!1,!r.emittedReadable&&(r.emittedReadable=!0,C(e)))}}function B(e){var r=e._readableState;J("emitReadable",r.needReadable,r.emittedReadable),r.needReadable=!1,r.emittedReadable||(J("emitReadable",r.flowing),r.emittedReadable=!0,A.nextTick(C,e))}function C(e){var r=e._readableState;J("emitReadable_",r.destroyed,r.length,r.ended),!r.destroyed&&(r.length||r.ended)&&(e.emit("readable"),r.emittedReadable=!1),r.needReadable=!r.flowing&&!r.ended&&r.length<=r.highWaterMark,M(e)}function S(e,r){r.readingMore||(r.readingMore=!0,A.nextTick(y,e,r))}function y(e,r){for(;!r.reading&&!r.ended&&(r.length<r.highWaterMark||r.flowing&&r.length===0);){var c=r.length;if(J("maybeReadMore read 0"),e.read(0),c===r.length)break}r.readingMore=!1}function R(e){return function(){var r=e._readableState;J("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&ot(e,"data")&&(r.flowing=!0,M(e))}}function F(e){var r=e._readableState;r.readableListening=0<e.listenerCount("readable"),r.resumeScheduled&&!r.paused?r.flowing=!0:0<e.listenerCount("data")&&e.resume()}function w(e){J("readable nexttick read 0"),e.read(0)}function _(e,r){r.resumeScheduled||(r.resumeScheduled=!0,A.nextTick(U,e,r))}function U(e,r){J("resume",r.reading),r.reading||e.read(0),r.resumeScheduled=!1,e.emit("resume"),M(e),r.flowing&&!r.reading&&e.read(0)}function M(e){var r=e._readableState;for(J("flow",r.flowing);r.flowing&&e.read()!==null;);}function H(e,r){if(r.length===0)return null;var c;return r.objectMode?c=r.buffer.shift():!e||e>=r.length?(c=r.decoder?r.buffer.join(""):r.buffer.length===1?r.buffer.first():r.buffer.concat(r.length),r.buffer.clear()):c=r.buffer.consume(e,r.decoder),c}function Y(e){var r=e._readableState;J("endReadable",r.endEmitted),r.endEmitted||(r.ended=!0,A.nextTick(K,r,e))}function K(e,r){if(J("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,r.readable=!1,r.emit("end"),e.autoDestroy)){var c=r._writableState;(!c||c.autoDestroy&&c.finished)&&r.destroy()}}function j(e,r){for(var c=0,p=e.length;c<p;c++)if(e[c]===r)return c;return-1}s.exports=u;var st;u.ReadableState=l;var J,Rt=i("events").EventEmitter,ot=function(e,r){return e.listeners(r).length},ht=i("./internal/streams/stream"),W=i("buffer").Buffer,V=a.Uint8Array||function(){},Et=i("util");J=Et&&Et.debuglog?Et.debuglog("stream"):function(){};var At,wt,et,Nt=i("./internal/streams/buffer_list"),St=i("./internal/streams/destroy"),Wt=i("./internal/streams/state"),xt=Wt.getHighWaterMark,Ct=i("../errors").codes,mt=Ct.ERR_INVALID_ARG_TYPE,T=Ct.ERR_STREAM_PUSH_AFTER_EOF,k=Ct.ERR_METHOD_NOT_IMPLEMENTED,O=Ct.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;i("inherits")(u,ht);var x=St.errorOrDestroy,L=["error","close","destroy","pause","resume"];Object.defineProperty(u.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState!==void 0&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),u.prototype.destroy=St.destroy,u.prototype._undestroy=St.undestroy,u.prototype._destroy=function(e,r){r(e)},u.prototype.push=function(e,r){var c,p=this._readableState;return p.objectMode?c=!0:typeof e=="string"&&(r=r||p.defaultEncoding,r!==p.encoding&&(e=W.from(e,r),r=""),c=!0),g(this,e,r,!1,c)},u.prototype.unshift=function(e){return g(this,e,null,!0,!1)},u.prototype.isPaused=function(){return this._readableState.flowing===!1},u.prototype.setEncoding=function(e){At||(At=i("string_decoder/").StringDecoder);var r=new At(e);this._readableState.decoder=r,this._readableState.encoding=this._readableState.decoder.encoding;for(var c=this._readableState.buffer.head,p="";c!==null;)p+=r.write(c.data),c=c.next;return this._readableState.buffer.clear(),p!==""&&this._readableState.buffer.push(p),this._readableState.length=p.length,this},u.prototype.read=function(e){J("read",e),e=parseInt(e,10);var r=this._readableState,c=e;if(e!==0&&(r.emittedReadable=!1),e===0&&r.needReadable&&((r.highWaterMark===0?0<r.length:r.length>=r.highWaterMark)||r.ended))return J("read: emitReadable",r.length,r.ended),r.length===0&&r.ended?Y(this):B(this),null;if(e=D(e,r),e===0&&r.ended)return r.length===0&&Y(this),null;var p=r.needReadable;J("need readable",p),(r.length===0||r.length-e<r.highWaterMark)&&(p=!0,J("length less than watermark",p)),r.ended||r.reading?(p=!1,J("reading or ended",p)):p&&(J("do read"),r.reading=!0,r.sync=!0,r.length===0&&(r.needReadable=!0),this._read(r.highWaterMark),r.sync=!1,!r.reading&&(e=D(c,r)));var N;return N=0<e?H(e,r):null,N===null?(r.needReadable=r.length<=r.highWaterMark,e=0):(r.length-=e,r.awaitDrain=0),r.length===0&&(!r.ended&&(r.needReadable=!0),c!==e&&r.ended&&Y(this)),N!==null&&this.emit("data",N),N},u.prototype._read=function(){x(this,new k("_read()"))},u.prototype.pipe=function(e,r){function c(ie,se){J("onunpipe"),ie===Z&&se&&se.hasUnpiped===!1&&(se.hasUnpiped=!0,N())}function p(){J("onend"),e.end()}function N(){J("cleanup"),e.removeListener("close",q),e.removeListener("finish",rt),e.removeListener("drain",re),e.removeListener("error",G),e.removeListener("unpipe",c),Z.removeListener("end",p),Z.removeListener("end",$),Z.removeListener("data",v),Dn=!0,z.awaitDrain&&(!e._writableState||e._writableState.needDrain)&&re()}function v(ie){J("ondata");var se=e.write(ie);J("dest.write",se),se===!1&&((z.pipesCount===1&&z.pipes===e||1<z.pipesCount&&j(z.pipes,e)!==-1)&&!Dn&&(J("false write response, pause",z.awaitDrain),z.awaitDrain++),Z.pause())}function G(ie){J("onerror",ie),$(),e.removeListener("error",G),ot(e,"error")===0&&x(e,ie)}function q(){e.removeListener("finish",rt),$()}function rt(){J("onfinish"),e.removeListener("close",q),$()}function $(){J("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,J("pipe count=%d opts=%j",z.pipesCount,r);var ne=(!r||r.end!==!1)&&e!==A.stdout&&e!==A.stderr,ce=ne?p:$;z.endEmitted?A.nextTick(ce):Z.once("end",ce),e.on("unpipe",c);var re=R(Z);e.on("drain",re);var Dn=!1;return Z.on("data",v),o(e,"error",G),e.once("close",q),e.once("finish",rt),e.emit("pipe",Z),z.flowing||(J("pipe resume"),Z.resume()),e},u.prototype.unpipe=function(e){var r=this._readableState,c={hasUnpiped:!1};if(r.pipesCount===0)return this;if(r.pipesCount===1)return e&&e!==r.pipes?this:(e||(e=r.pipes),r.pipes=null,r.pipesCount=0,r.flowing=!1,e&&e.emit("unpipe",this,c),this);if(!e){var p=r.pipes,N=r.pipesCount;r.pipes=null,r.pipesCount=0,r.flowing=!1;for(var v=0;v<N;v++)p[v].emit("unpipe",this,{hasUnpiped:!1});return this}var G=j(r.pipes,e);return G===-1?this:(r.pipes.splice(G,1),r.pipesCount-=1,r.pipesCount===1&&(r.pipes=r.pipes[0]),e.emit("unpipe",this,c),this)},u.prototype.on=function(e,r){var c=ht.prototype.on.call(this,e,r),p=this._readableState;return e==="data"?(p.readableListening=0<this.listenerCount("readable"),p.flowing!==!1&&this.resume()):e=="readable"&&!p.endEmitted&&!p.readableListening&&(p.readableListening=p.needReadable=!0,p.flowing=!1,p.emittedReadable=!1,J("on readable",p.length,p.reading),p.length?B(this):!p.reading&&A.nextTick(w,this)),c},u.prototype.addListener=u.prototype.on,u.prototype.removeListener=function(e,r){var c=ht.prototype.removeListener.call(this,e,r);return e==="readable"&&A.nextTick(F,this),c},u.prototype.removeAllListeners=function(e){var r=ht.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&A.nextTick(F,this),r},u.prototype.resume=function(){var e=this._readableState;return e.flowing||(J("resume"),e.flowing=!e.readableListening,_(this,e)),e.paused=!1,this},u.prototype.pause=function(){return J("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(J("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},u.prototype.wrap=function(e){var r=this,c=this._readableState,p=!1;for(var N in e.on("end",function(){if(J("wrapped end"),c.decoder&&!c.ended){var G=c.decoder.end();G&&G.length&&r.push(G)}r.push(null)}),e.on("data",function(G){if(J("wrapped data"),c.decoder&&(G=c.decoder.write(G)),!(c.objectMode&&G==null)&&(c.objectMode||G&&G.length)){var q=r.push(G);q||(p=!0,e.pause())}}),e)this[N]===void 0&&typeof e[N]=="function"&&(this[N]=(function(G){return function(){return e[G].apply(e,arguments)}})(N));for(var v=0;v<L.length;v++)e.on(L[v],this.emit.bind(this,L[v]));return this._read=function(G){J("wrapped _read",G),p&&(p=!1,e.resume())},this},typeof Symbol=="function"&&(u.prototype[Symbol.asyncIterator]=function(){return wt===void 0&&(wt=i("./internal/streams/async_iterator")),wt(this)}),Object.defineProperty(u.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(u.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(u.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}}),u._fromList=H,Object.defineProperty(u.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),typeof Symbol=="function"&&(u.from=function(e,r){return et===void 0&&(et=i("./internal/streams/from")),et(u,e,r)})}).call(this)}).call(this,i("_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(i,s){"use strict";function A(m,D){var f=this._transformState;f.transforming=!1;var B=f.writecb;if(B===null)return this.emit("error",new u);f.writechunk=null,f.writecb=null,D!=null&&this.push(D),B(m);var C=this._readableState;C.reading=!1,(C.needReadable||C.length<C.highWaterMark)&&this._read(C.highWaterMark)}function a(m){return this instanceof a?(b.call(this,m),this._transformState={afterTransform:A.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",h)):new a(m)}function h(){var m=this;typeof this._flush!="function"||this._readableState.destroyed?E(this,null,null):this._flush(function(D,f){E(m,D,f)})}function E(m,D,f){if(D)return m.emit("error",D);if(f!=null&&m.push(f),m._writableState.length)throw new Q;if(m._transformState.transforming)throw new g;return m.push(null)}s.exports=a;var o=i("../errors").codes,l=o.ERR_METHOD_NOT_IMPLEMENTED,u=o.ERR_MULTIPLE_CALLBACK,g=o.ERR_TRANSFORM_ALREADY_TRANSFORMING,Q=o.ERR_TRANSFORM_WITH_LENGTH_0,b=i("./_stream_duplex");i("inherits")(a,b),a.prototype.push=function(m,D){return this._transformState.needTransform=!1,b.prototype.push.call(this,m,D)},a.prototype._transform=function(m,D,f){f(new l("_transform()"))},a.prototype._write=function(m,D,f){var B=this._transformState;if(B.writecb=f,B.writechunk=m,B.writeencoding=D,!B.transforming){var C=this._readableState;(B.needTransform||C.needReadable||C.length<C.highWaterMark)&&this._read(C.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,D){b.prototype._destroy.call(this,m,function(f){D(f)})}},{"../errors":15,"./_stream_duplex":16,inherits:10}],20:[function(i,s){(function(A,a){(function(){"use strict";function h(T){var k=this;this.next=null,this.entry=null,this.finish=function(){Y(k,T)}}function E(T){return J.from(T)}function o(T){return J.isBuffer(T)||T instanceof Rt}function l(){}function u(T,k,O){K=K||i("./_stream_duplex"),T=T||{},typeof O!="boolean"&&(O=k instanceof K),this.objectMode=!!T.objectMode,O&&(this.objectMode=this.objectMode||!!T.writableObjectMode),this.highWaterMark=W(this,T,"writableHighWaterMark",O),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var x=T.decodeStrings===!1;this.decodeStrings=!x,this.defaultEncoding=T.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(L){S(k,L)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=T.emitClose!==!1,this.autoDestroy=!!T.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new h(this)}function g(T){K=K||i("./_stream_duplex");var k=this instanceof K;return k||mt.call(g,this)?(this._writableState=new u(T,this,k),this.writable=!0,T&&(typeof T.write=="function"&&(this._write=T.write),typeof T.writev=="function"&&(this._writev=T.writev),typeof T.destroy=="function"&&(this._destroy=T.destroy),typeof T.final=="function"&&(this._final=T.final)),void st.call(this)):new g(T)}function Q(T,k){var O=new Wt;Ct(T,O),A.nextTick(k,O)}function b(T,k,O,x){var L;return O===null?L=new St:typeof O!="string"&&!k.objectMode&&(L=new Et("chunk",["string","Buffer"],O)),!L||(Ct(T,L),A.nextTick(x,L),!1)}function m(T,k,O){return T.objectMode||T.decodeStrings===!1||typeof k!="string"||(k=J.from(k,O)),k}function D(T,k,O,x,L,e){if(!O){var r=m(k,x,L);x!==r&&(O=!0,L="buffer",x=r)}var c=k.objectMode?1:x.length;k.length+=c;var p=k.length<k.highWaterMark;if(p||(k.needDrain=!0),k.writing||k.corked){var N=k.lastBufferedRequest;k.lastBufferedRequest={chunk:x,encoding:L,isBuf:O,callback:e,next:null},N?N.next=k.lastBufferedRequest:k.bufferedRequest=k.lastBufferedRequest,k.bufferedRequestCount+=1}else f(T,k,!1,c,x,L,e);return p}function f(T,k,O,x,L,e,r){k.writelen=x,k.writecb=r,k.writing=!0,k.sync=!0,k.destroyed?k.onwrite(new Nt("write")):O?T._writev(L,k.onwrite):T._write(L,e,k.onwrite),k.sync=!1}function B(T,k,O,x,L){--k.pendingcb,O?(A.nextTick(L,x),A.nextTick(M,T,k),T._writableState.errorEmitted=!0,Ct(T,x)):(L(x),T._writableState.errorEmitted=!0,Ct(T,x),M(T,k))}function C(T){T.writing=!1,T.writecb=null,T.length-=T.writelen,T.writelen=0}function S(T,k){var O=T._writableState,x=O.sync,L=O.writecb;if(typeof L!="function")throw new wt;if(C(O),k)B(T,O,x,k,L);else{var e=w(O)||T.destroyed;e||O.corked||O.bufferProcessing||!O.bufferedRequest||F(T,O),x?A.nextTick(y,T,O,e,L):y(T,O,e,L)}}function y(T,k,O,x){O||R(T,k),k.pendingcb--,x(),M(T,k)}function R(T,k){k.length===0&&k.needDrain&&(k.needDrain=!1,T.emit("drain"))}function F(T,k){k.bufferProcessing=!0;var O=k.bufferedRequest;if(T._writev&&O&&O.next){var x=k.bufferedRequestCount,L=Array(x),e=k.corkedRequestsFree;e.entry=O;for(var r=0,c=!0;O;)L[r]=O,O.isBuf||(c=!1),O=O.next,r+=1;L.allBuffers=c,f(T,k,!0,k.length,L,"",e.finish),k.pendingcb++,k.lastBufferedRequest=null,e.next?(k.corkedRequestsFree=e.next,e.next=null):k.corkedRequestsFree=new h(k),k.bufferedRequestCount=0}else{for(;O;){var p=O.chunk,N=O.encoding,v=O.callback,G=k.objectMode?1:p.length;if(f(T,k,!1,G,p,N,v),O=O.next,k.bufferedRequestCount--,k.writing)break}O===null&&(k.lastBufferedRequest=null)}k.bufferedRequest=O,k.bufferProcessing=!1}function w(T){return T.ending&&T.length===0&&T.bufferedRequest===null&&!T.finished&&!T.writing}function _(T,k){T._final(function(O){k.pendingcb--,O&&Ct(T,O),k.prefinished=!0,T.emit("prefinish"),M(T,k)})}function U(T,k){k.prefinished||k.finalCalled||(typeof T._final!="function"||k.destroyed?(k.prefinished=!0,T.emit("prefinish")):(k.pendingcb++,k.finalCalled=!0,A.nextTick(_,T,k)))}function M(T,k){var O=w(k);if(O&&(U(T,k),k.pendingcb===0&&(k.finished=!0,T.emit("finish"),k.autoDestroy))){var x=T._readableState;(!x||x.autoDestroy&&x.endEmitted)&&T.destroy()}return O}function H(T,k,O){k.ending=!0,M(T,k),O&&(k.finished?A.nextTick(O):T.once("finish",O)),k.ended=!0,T.writable=!1}function Y(T,k,O){var x=T.entry;for(T.entry=null;x;){var L=x.callback;k.pendingcb--,L(O),x=x.next}k.corkedRequestsFree.next=T}s.exports=g;var K;g.WritableState=u;var j={deprecate:i("util-deprecate")},st=i("./internal/streams/stream"),J=i("buffer").Buffer,Rt=a.Uint8Array||function(){},ot=i("./internal/streams/destroy"),ht=i("./internal/streams/state"),W=ht.getHighWaterMark,V=i("../errors").codes,Et=V.ERR_INVALID_ARG_TYPE,At=V.ERR_METHOD_NOT_IMPLEMENTED,wt=V.ERR_MULTIPLE_CALLBACK,et=V.ERR_STREAM_CANNOT_PIPE,Nt=V.ERR_STREAM_DESTROYED,St=V.ERR_STREAM_NULL_VALUES,Wt=V.ERR_STREAM_WRITE_AFTER_END,xt=V.ERR_UNKNOWN_ENCODING,Ct=ot.errorOrDestroy;i("inherits")(g,st),u.prototype.getBuffer=function(){for(var T=this.bufferedRequest,k=[];T;)k.push(T),T=T.next;return k},(function(){try{Object.defineProperty(u.prototype,"buffer",{get:j.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var mt;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(mt=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(T){return!!mt.call(this,T)||this===g&&T&&T._writableState instanceof u}})):mt=function(T){return T instanceof this},g.prototype.pipe=function(){Ct(this,new et)},g.prototype.write=function(T,k,O){var x=this._writableState,L=!1,e=!x.objectMode&&o(T);return e&&!J.isBuffer(T)&&(T=E(T)),typeof k=="function"&&(O=k,k=null),e?k="buffer":!k&&(k=x.defaultEncoding),typeof O!="function"&&(O=l),x.ending?Q(this,O):(e||b(this,x,T,O))&&(x.pendingcb++,L=D(this,x,e,T,k,O)),L},g.prototype.cork=function(){this._writableState.corked++},g.prototype.uncork=function(){var T=this._writableState;T.corked&&(T.corked--,!T.writing&&!T.corked&&!T.bufferProcessing&&T.bufferedRequest&&F(this,T))},g.prototype.setDefaultEncoding=function(T){if(typeof T=="string"&&(T=T.toLowerCase()),!(-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((T+"").toLowerCase())))throw new xt(T);return this._writableState.defaultEncoding=T,this},Object.defineProperty(g.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(T,k,O){O(new At("_write()"))},g.prototype._writev=null,g.prototype.end=function(T,k,O){var x=this._writableState;return typeof T=="function"?(O=T,T=null,k=null):typeof k=="function"&&(O=k,k=null),T!=null&&this.write(T,k),x.corked&&(x.corked=1,this.uncork()),x.ending||H(this,x,O),this},Object.defineProperty(g.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(g.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState!==void 0&&this._writableState.destroyed},set:function(T){this._writableState&&(this._writableState.destroyed=T)}}),g.prototype.destroy=ot.destroy,g.prototype._undestroy=ot.undestroy,g.prototype._destroy=function(T,k){k(T)}}).call(this)}).call(this,i("_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(i,s){(function(A){(function(){"use strict";function a(R,F,w){return F in R?Object.defineProperty(R,F,{value:w,enumerable:!0,configurable:!0,writable:!0}):R[F]=w,R}function h(R,F){return{value:R,done:F}}function E(R){var F=R[Q];if(F!==null){var w=R[C].read();w!==null&&(R[f]=null,R[Q]=null,R[b]=null,F(h(w,!1)))}}function o(R){A.nextTick(E,R)}function l(R,F){return function(w,_){R.then(function(){return F[D]?void w(h(void 0,!0)):void F[B](w,_)},_)}}var u,g=i("./end-of-stream"),Q=Symbol("lastResolve"),b=Symbol("lastReject"),m=Symbol("error"),D=Symbol("ended"),f=Symbol("lastPromise"),B=Symbol("handlePromise"),C=Symbol("stream"),S=Object.getPrototypeOf(function(){}),y=Object.setPrototypeOf((u={get stream(){return this[C]},next:function(){var R=this,F=this[m];if(F!==null)return Promise.reject(F);if(this[D])return Promise.resolve(h(void 0,!0));if(this[C].destroyed)return new Promise(function(M,H){A.nextTick(function(){R[m]?H(R[m]):M(h(void 0,!0))})});var w,_=this[f];if(_)w=new Promise(l(_,this));else{var U=this[C].read();if(U!==null)return Promise.resolve(h(U,!1));w=new Promise(this[B])}return this[f]=w,w}},a(u,Symbol.asyncIterator,function(){return this}),a(u,"return",function(){var R=this;return new Promise(function(F,w){R[C].destroy(null,function(_){return _?void w(_):void F(h(void 0,!0))})})}),u),S);s.exports=function(R){var F,w=Object.create(y,(F={},a(F,C,{value:R,writable:!0}),a(F,Q,{value:null,writable:!0}),a(F,b,{value:null,writable:!0}),a(F,m,{value:null,writable:!0}),a(F,D,{value:R._readableState.endEmitted,writable:!0}),a(F,B,{value:function(_,U){var M=w[C].read();M?(w[f]=null,w[Q]=null,w[b]=null,_(h(M,!1))):(w[Q]=_,w[b]=U)},writable:!0}),F));return w[f]=null,g(R,function(_){if(_&&_.code!=="ERR_STREAM_PREMATURE_CLOSE"){var U=w[b];return U!==null&&(w[f]=null,w[Q]=null,w[b]=null,U(_)),void(w[m]=_)}var M=w[Q];M!==null&&(w[f]=null,w[Q]=null,w[b]=null,M(h(void 0,!0))),w[D]=!0}),R.on("readable",o.bind(null,w)),w}}).call(this)}).call(this,i("_process"))},{"./end-of-stream":24,_process:12}],22:[function(i,s){"use strict";function A(f,B){var C=Object.keys(f);if(Object.getOwnPropertySymbols){var S=Object.getOwnPropertySymbols(f);B&&(S=S.filter(function(y){return Object.getOwnPropertyDescriptor(f,y).enumerable})),C.push.apply(C,S)}return C}function a(f){for(var B,C=1;C<arguments.length;C++)B=arguments[C]==null?{}:arguments[C],C%2?A(Object(B),!0).forEach(function(S){h(f,S,B[S])}):Object.getOwnPropertyDescriptors?Object.defineProperties(f,Object.getOwnPropertyDescriptors(B)):A(Object(B)).forEach(function(S){Object.defineProperty(f,S,Object.getOwnPropertyDescriptor(B,S))});return f}function h(f,B,C){return B in f?Object.defineProperty(f,B,{value:C,enumerable:!0,configurable:!0,writable:!0}):f[B]=C,f}function E(f,B){if(!(f instanceof B))throw new TypeError("Cannot call a class as a function")}function o(f,B){for(var C,S=0;S<B.length;S++)C=B[S],C.enumerable=C.enumerable||!1,C.configurable=!0,"value"in C&&(C.writable=!0),Object.defineProperty(f,C.key,C)}function l(f,B,C){return B&&o(f.prototype,B),C&&o(f,C),f}function u(f,B,C){Q.prototype.copy.call(f,B,C)}var g=i("buffer"),Q=g.Buffer,b=i("util"),m=b.inspect,D=m&&m.custom||"inspect";s.exports=(function(){function f(){E(this,f),this.head=null,this.tail=null,this.length=0}return l(f,[{key:"push",value:function(B){var C={data:B,next:null};0<this.length?this.tail.next=C:this.head=C,this.tail=C,++this.length}},{key:"unshift",value:function(B){var C={data:B,next:this.head};this.length===0&&(this.tail=C),this.head=C,++this.length}},{key:"shift",value:function(){if(this.length!==0){var B=this.head.data;return this.head=this.length===1?this.tail=null:this.head.next,--this.length,B}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(B){if(this.length===0)return"";for(var C=this.head,S=""+C.data;C=C.next;)S+=B+C.data;return S}},{key:"concat",value:function(B){if(this.length===0)return Q.alloc(0);for(var C=Q.allocUnsafe(B>>>0),S=this.head,y=0;S;)u(S.data,C,y),y+=S.data.length,S=S.next;return C}},{key:"consume",value:function(B,C){var S;return B<this.head.data.length?(S=this.head.data.slice(0,B),this.head.data=this.head.data.slice(B)):B===this.head.data.length?S=this.shift():S=C?this._getString(B):this._getBuffer(B),S}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(B){var C=this.head,S=1,y=C.data;for(B-=y.length;C=C.next;){var R=C.data,F=B>R.length?R.length:B;if(y+=F===R.length?R:R.slice(0,B),B-=F,B===0){F===R.length?(++S,this.head=C.next?C.next:this.tail=null):(this.head=C,C.data=R.slice(F));break}++S}return this.length-=S,y}},{key:"_getBuffer",value:function(B){var C=Q.allocUnsafe(B),S=this.head,y=1;for(S.data.copy(C),B-=S.data.length;S=S.next;){var R=S.data,F=B>R.length?R.length:B;if(R.copy(C,C.length-B,0,F),B-=F,B===0){F===R.length?(++y,this.head=S.next?S.next:this.tail=null):(this.head=S,S.data=R.slice(F));break}++y}return this.length-=y,C}},{key:D,value:function(B,C){return m(this,a({},C,{depth:0,customInspect:!1}))}}]),f})()},{buffer:3,util:2}],23:[function(i,s){(function(A){(function(){"use strict";function a(o,l){E(o,l),h(o)}function h(o){o._writableState&&!o._writableState.emitClose||o._readableState&&!o._readableState.emitClose||o.emit("close")}function E(o,l){o.emit("error",l)}s.exports={destroy:function(o,l){var u=this,g=this._readableState&&this._readableState.destroyed,Q=this._writableState&&this._writableState.destroyed;return g||Q?(l?l(o):o&&(this._writableState?!this._writableState.errorEmitted&&(this._writableState.errorEmitted=!0,A.nextTick(E,this,o)):A.nextTick(E,this,o)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(o||null,function(b){!l&&b?u._writableState?u._writableState.errorEmitted?A.nextTick(h,u):(u._writableState.errorEmitted=!0,A.nextTick(a,u,b)):A.nextTick(a,u,b):l?(A.nextTick(h,u),l(b)):A.nextTick(h,u)}),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(o,l){var u=o._readableState,g=o._writableState;u&&u.autoDestroy||g&&g.autoDestroy?o.destroy(l):o.emit("error",l)}}}).call(this)}).call(this,i("_process"))},{_process:12}],24:[function(i,s){"use strict";function A(l){var u=!1;return function(){if(!u){u=!0;for(var g=arguments.length,Q=Array(g),b=0;b<g;b++)Q[b]=arguments[b];l.apply(this,Q)}}}function a(){}function h(l){return l.setHeader&&typeof l.abort=="function"}function E(l,u,g){if(typeof u=="function")return E(l,null,u);u||(u={}),g=A(g||a);var Q=u.readable||u.readable!==!1&&l.readable,b=u.writable||u.writable!==!1&&l.writable,m=function(){l.writable||f()},D=l._writableState&&l._writableState.finished,f=function(){b=!1,D=!0,Q||g.call(l)},B=l._readableState&&l._readableState.endEmitted,C=function(){Q=!1,B=!0,b||g.call(l)},S=function(F){g.call(l,F)},y=function(){var F;return Q&&!B?(l._readableState&&l._readableState.ended||(F=new o),g.call(l,F)):b&&!D?(l._writableState&&l._writableState.ended||(F=new o),g.call(l,F)):void 0},R=function(){l.req.on("finish",f)};return h(l)?(l.on("complete",f),l.on("abort",y),l.req?R():l.on("request",R)):b&&!l._writableState&&(l.on("end",m),l.on("close",m)),l.on("end",C),l.on("finish",f),u.error!==!1&&l.on("error",S),l.on("close",y),function(){l.removeListener("complete",f),l.removeListener("abort",y),l.removeListener("request",R),l.req&&l.req.removeListener("finish",f),l.removeListener("end",m),l.removeListener("close",m),l.removeListener("finish",f),l.removeListener("end",C),l.removeListener("error",S),l.removeListener("close",y)}}var o=i("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;s.exports=E},{"../../../errors":15}],25:[function(i,s){s.exports=function(){throw new Error("Readable.from is not available in the browser")}},{}],26:[function(i,s){"use strict";function A(D){var f=!1;return function(){f||(f=!0,D.apply(void 0,arguments))}}function a(D){if(D)throw D}function h(D){return D.setHeader&&typeof D.abort=="function"}function E(D,f,B,C){C=A(C);var S=!1;D.on("close",function(){S=!0}),g===void 0&&(g=i("./end-of-stream")),g(D,{readable:f,writable:B},function(R){return R?C(R):(S=!0,void C())});var y=!1;return function(R){if(!S)return y?void 0:(y=!0,h(D)?D.abort():typeof D.destroy=="function"?D.destroy():void C(R||new m("pipe")))}}function o(D){D()}function l(D,f){return D.pipe(f)}function u(D){return D.length&&typeof D[D.length-1]=="function"?D.pop():a}var g,Q=i("../../../errors").codes,b=Q.ERR_MISSING_ARGS,m=Q.ERR_STREAM_DESTROYED;s.exports=function(){for(var D=arguments.length,f=Array(D),B=0;B<D;B++)f[B]=arguments[B];var C=u(f);if(Array.isArray(f[0])&&(f=f[0]),2>f.length)throw new b("streams");var S,y=f.map(function(R,F){var w=F<f.length-1;return E(R,w,0<F,function(_){S||(S=_),_&&y.forEach(o),w||(y.forEach(o),C(S))})});return f.reduce(l)}},{"../../../errors":15,"./end-of-stream":24}],27:[function(i,s){"use strict";function A(h,E,o){return h.highWaterMark==null?E?h[o]:null:h.highWaterMark}var a=i("../../../errors").codes.ERR_INVALID_OPT_VALUE;s.exports={getHighWaterMark:function(h,E,o,l){var u=A(E,l,o);if(u!=null){if(!(isFinite(u)&&I(u)===u)||0>u){var g=l?o:"highWaterMark";throw new a(g,u)}return I(u)}return h.objectMode?16:16384}}},{"../../../errors":15}],28:[function(i,s){s.exports=i("events").EventEmitter},{events:7}],29:[function(i,s,A){A=s.exports=i("./lib/_stream_readable.js"),A.Stream=A,A.Readable=A,A.Writable=i("./lib/_stream_writable.js"),A.Duplex=i("./lib/_stream_duplex.js"),A.Transform=i("./lib/_stream_transform.js"),A.PassThrough=i("./lib/_stream_passthrough.js"),A.finished=i("./lib/internal/streams/end-of-stream.js"),A.pipeline=i("./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(i,s,A){function a(l,u){for(var g in l)u[g]=l[g]}function h(l,u,g){return o(l,u,g)}var E=i("buffer"),o=E.Buffer;o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?s.exports=E:(a(E,A),A.Buffer=h),h.prototype=Object.create(o.prototype),a(o,h),h.from=function(l,u,g){if(typeof l=="number")throw new TypeError("Argument must not be a number");return o(l,u,g)},h.alloc=function(l,u,g){if(typeof l!="number")throw new TypeError("Argument must be a number");var Q=o(l);return u===void 0?Q.fill(0):typeof g=="string"?Q.fill(u,g):Q.fill(u),Q},h.allocUnsafe=function(l){if(typeof l!="number")throw new TypeError("Argument must be a number");return o(l)},h.allocUnsafeSlow=function(l){if(typeof l!="number")throw new TypeError("Argument must be a number");return E.SlowBuffer(l)}},{buffer:3}],31:[function(i,s,A){"use strict";function a(y){if(!y)return"utf8";for(var R;;)switch(y){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 y;default:if(R)return;y=(""+y).toLowerCase(),R=!0}}function h(y){var R=a(y);if(typeof R!="string"&&(C.isEncoding===S||!S(y)))throw new Error("Unknown encoding: "+y);return R||y}function E(y){this.encoding=h(y);var R;switch(this.encoding){case"utf16le":this.text=Q,this.end=b,R=4;break;case"utf8":this.fillLast=g,R=4;break;case"base64":this.text=m,this.end=D,R=3;break;default:return this.write=f,void(this.end=B)}this.lastNeed=0,this.lastTotal=0,this.lastChar=C.allocUnsafe(R)}function o(y){return 127>=y?0:y>>5==6?2:y>>4==14?3:y>>3==30?4:y>>6==2?-1:-2}function l(y,R,F){var w=R.length-1;if(w<F)return 0;var _=o(R[w]);return 0<=_?(0<_&&(y.lastNeed=_-1),_):--w<F||_===-2?0:(_=o(R[w]),0<=_?(0<_&&(y.lastNeed=_-2),_):--w<F||_===-2?0:(_=o(R[w]),0<=_?(0<_&&(_===2?_=0:y.lastNeed=_-3),_):0))}function u(y,R){if((192&R[0])!=128)return y.lastNeed=0,"\uFFFD";if(1<y.lastNeed&&1<R.length){if((192&R[1])!=128)return y.lastNeed=1,"\uFFFD";if(2<y.lastNeed&&2<R.length&&(192&R[2])!=128)return y.lastNeed=2,"\uFFFD"}}function g(y){var R=this.lastTotal-this.lastNeed,F=u(this,y,R);return F===void 0?this.lastNeed<=y.length?(y.copy(this.lastChar,R,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(y.copy(this.lastChar,R,0,y.length),void(this.lastNeed-=y.length)):F}function Q(y,R){if((y.length-R)%2==0){var F=y.toString("utf16le",R);if(F){var w=F.charCodeAt(F.length-1);if(55296<=w&&56319>=w)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=y[y.length-2],this.lastChar[1]=y[y.length-1],F.slice(0,-1)}return F}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=y[y.length-1],y.toString("utf16le",R,y.length-1)}function b(y){var R=y&&y.length?this.write(y):"";if(this.lastNeed){var F=this.lastTotal-this.lastNeed;return R+this.lastChar.toString("utf16le",0,F)}return R}function m(y,R){var F=(y.length-R)%3;return F==0?y.toString("base64",R):(this.lastNeed=3-F,this.lastTotal=3,F==1?this.lastChar[0]=y[y.length-1]:(this.lastChar[0]=y[y.length-2],this.lastChar[1]=y[y.length-1]),y.toString("base64",R,y.length-F))}function D(y){var R=y&&y.length?this.write(y):"";return this.lastNeed?R+this.lastChar.toString("base64",0,3-this.lastNeed):R}function f(y){return y.toString(this.encoding)}function B(y){return y&&y.length?this.write(y):""}var C=i("safe-buffer").Buffer,S=C.isEncoding||function(y){switch(y=""+y,y&&y.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}};A.StringDecoder=E,E.prototype.write=function(y){if(y.length===0)return"";var R,F;if(this.lastNeed){if(R=this.fillLast(y),R===void 0)return"";F=this.lastNeed,this.lastNeed=0}else F=0;return F<y.length?R?R+this.text(y,F):this.text(y,F):R||""},E.prototype.end=function(y){var R=y&&y.length?this.write(y):"";return this.lastNeed?R+"\uFFFD":R},E.prototype.text=function(y,R){var F=l(this,y,R);if(!this.lastNeed)return y.toString("utf8",R);this.lastTotal=F;var w=y.length-(F-this.lastNeed);return y.copy(this.lastChar,0,w),y.toString("utf8",R,w)},E.prototype.fillLast=function(y){return this.lastNeed<=y.length?(y.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(y.copy(this.lastChar,this.lastTotal-this.lastNeed,0,y.length),void(this.lastNeed-=y.length))}},{"safe-buffer":30}],32:[function(i,s){(function(A){(function(){function a(h){try{if(!A.localStorage)return!1}catch{return!1}var E=A.localStorage[h];return E!=null&&(E+"").toLowerCase()==="true"}s.exports=function(h,E){function o(){if(!l){if(a("throwDeprecation"))throw new Error(E);a("traceDeprecation")?console.trace(E):console.warn(E),l=!0}return h.apply(this,arguments)}if(a("noDeprecation"))return h;var l=!1;return o}}).call(this)}).call(this,typeof global>"u"?typeof self>"u"?typeof window>"u"?{}:window:self:global)},{}],"/":[function(i,s){function A(D){return D.replace(/a=ice-options:trickle\s\n/g,"")}function a(D){console.warn(D)}let h=i("debug")("simple-peer"),E=i("get-browser-rtc"),o=i("randombytes"),l=i("readable-stream"),u=i("queue-microtask"),g=i("err-code"),{Buffer:Q}=i("buffer"),b=65536;class m extends l.Duplex{constructor(f){if(f=Object.assign({allowHalfOpen:!1},f),super(f),this._id=o(4).toString("hex").slice(0,7),this._debug("new peer %o",f),this.channelName=f.initiator?f.channelName||o(20).toString("hex"):null,this.initiator=f.initiator||!1,this.channelConfig=f.channelConfig||m.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},m.config,f.config),this.offerOptions=f.offerOptions||{},this.answerOptions=f.answerOptions||{},this.sdpTransform=f.sdpTransform||(B=>B),this.streams=f.streams||(f.stream?[f.stream]:[]),this.trickle=f.trickle===void 0||f.trickle,this.allowHalfTrickle=f.allowHalfTrickle!==void 0&&f.allowHalfTrickle,this.iceCompleteTimeout=f.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=f.wrtc&&typeof f.wrtc=="object"?f.wrtc:E(),!this._wrtc)throw g(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(B){return void this.destroy(g(B,"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=B=>{this._onIceCandidate(B)},typeof this._pc.peerIdentity=="object"&&this._pc.peerIdentity.catch(B=>{this.destroy(g(B,"ERR_PC_PEER_IDENTITY"))}),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=B=>{this._setupData(B)},this.streams&&this.streams.forEach(B=>{this.addStream(B)}),this._pc.ontrack=B=>{this._onTrack(B)},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(f){if(!this.destroying){if(this.destroyed)throw g(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if(typeof f=="string")try{f=JSON.parse(f)}catch{f={}}this._debug("signal()"),f.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),f.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(f.transceiverRequest.kind,f.transceiverRequest.init)),f.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(f.candidate):this._pendingCandidates.push(f.candidate)),f.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(f)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(B=>{this._addIceCandidate(B)}),this._pendingCandidates=[],this._pc.remoteDescription.type==="offer"&&this._createAnswer())}).catch(B=>{this.destroy(g(B,"ERR_SET_REMOTE_DESCRIPTION"))}),f.sdp||f.candidate||f.renegotiate||f.transceiverRequest||this.destroy(g(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(f){let B=new this._wrtc.RTCIceCandidate(f);this._pc.addIceCandidate(B).catch(C=>{!B.address||B.address.endsWith(".local")?a("Ignoring unsupported ICE candidate."):this.destroy(g(C,"ERR_ADD_ICE_CANDIDATE"))})}send(f){if(!this.destroying){if(this.destroyed)throw g(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(f)}}addTransceiver(f,B){if(!this.destroying){if(this.destroyed)throw g(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(f,B),this._needsNegotiation()}catch(C){this.destroy(g(C,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:f,init:B}})}}addStream(f){if(!this.destroying){if(this.destroyed)throw g(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),f.getTracks().forEach(B=>{this.addTrack(B,f)})}}addTrack(f,B){if(this.destroying)return;if(this.destroyed)throw g(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");let C=this._senderMap.get(f)||new Map,S=C.get(B);if(!S)S=this._pc.addTrack(f,B),C.set(B,S),this._senderMap.set(f,C),this._needsNegotiation();else throw S.removed?g(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):g(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED")}replaceTrack(f,B,C){if(this.destroying)return;if(this.destroyed)throw g(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");let S=this._senderMap.get(f),y=S?S.get(C):null;if(!y)throw g(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");B&&this._senderMap.set(B,S),y.replaceTrack==null?this.destroy(g(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK")):y.replaceTrack(B)}removeTrack(f,B){if(this.destroying)return;if(this.destroyed)throw g(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");let C=this._senderMap.get(f),S=C?C.get(B):null;if(!S)throw g(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{S.removed=!0,this._pc.removeTrack(S)}catch(y){y.name==="NS_ERROR_UNEXPECTED"?this._sendersAwaitingStable.push(S):this.destroy(g(y,"ERR_REMOVE_TRACK"))}this._needsNegotiation()}removeStream(f){if(!this.destroying){if(this.destroyed)throw g(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),f.getTracks().forEach(B=>{this.removeTrack(B,f)})}}_needsNegotiation(){this._debug("_needsNegotiation"),this._batchedNegotiation||(this._batchedNegotiation=!0,u(()=>{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 g(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(f){this._destroy(f,()=>{})}_destroy(f,B){this.destroyed||this.destroying||(this.destroying=!0,this._debug("destroying (error: %s)",f&&(f.message||f)),u(()=>{if(this.destroyed=!0,this.destroying=!1,this._debug("destroy (error: %s)",f&&(f.message||f)),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,f&&this.emit("error",f),this.emit("close"),B()}))}_setupData(f){if(!f.channel)return this.destroy(g(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=f.channel,this._channel.binaryType="arraybuffer",typeof this._channel.bufferedAmountLowThreshold=="number"&&(this._channel.bufferedAmountLowThreshold=b),this.channelName=this._channel.label,this._channel.onmessage=C=>{this._onChannelMessage(C)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=C=>{let S=C.error instanceof Error?C.error:new Error(`Datachannel error: ${C.message} ${C.filename}:${C.lineno}:${C.colno}`);this.destroy(g(S,"ERR_DATA_CHANNEL"))};let B=!1;this._closingInterval=setInterval(()=>{this._channel&&this._channel.readyState==="closing"?(B&&this._onChannelClose(),B=!0):B=!1},5e3)}_read(){}_write(f,B,C){if(this.destroyed)return C(g(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(f)}catch(S){return this.destroy(g(S,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>b?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=C):C(null)}else this._debug("write before connect"),this._chunk=f,this._cb=C}_onFinish(){if(!this.destroyed){let f=()=>{setTimeout(()=>this.destroy(),1e3)};this._connected?f():this.once("connect",f)}}_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(f=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(f.sdp=A(f.sdp)),f.sdp=this.sdpTransform(f.sdp);let B=()=>{if(!this.destroyed){let C=this._pc.localDescription||f;this._debug("signal"),this.emit("signal",{type:C.type,sdp:C.sdp})}};this._pc.setLocalDescription(f).then(()=>{this._debug("createOffer success"),this.destroyed||(this.trickle||this._iceComplete?B():this.once("_iceComplete",B))}).catch(C=>{this.destroy(g(C,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(f=>{this.destroy(g(f,"ERR_CREATE_OFFER"))})}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(f=>{f.mid||!f.sender.track||f.requested||(f.requested=!0,this.addTransceiver(f.sender.track.kind))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(f=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(f.sdp=A(f.sdp)),f.sdp=this.sdpTransform(f.sdp);let B=()=>{if(!this.destroyed){let C=this._pc.localDescription||f;this._debug("signal"),this.emit("signal",{type:C.type,sdp:C.sdp}),this.initiator||this._requestMissingTransceivers()}};this._pc.setLocalDescription(f).then(()=>{this.destroyed||(this.trickle||this._iceComplete?B():this.once("_iceComplete",B))}).catch(C=>{this.destroy(g(C,"ERR_SET_LOCAL_DESCRIPTION"))})}).catch(f=>{this.destroy(g(f,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||this._pc.connectionState==="failed"&&this.destroy(g(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;let f=this._pc.iceConnectionState,B=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",f,B),this.emit("iceStateChange",f,B),(f==="connected"||f==="completed")&&(this._pcReady=!0,this._maybeReady()),f==="failed"&&this.destroy(g(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),f==="closed"&&this.destroy(g(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(f){let B=C=>(Object.prototype.toString.call(C.values)==="[object Array]"&&C.values.forEach(S=>{Object.assign(C,S)}),C);this._pc.getStats.length===0||this._isReactNativeWebrtc?this._pc.getStats().then(C=>{let S=[];C.forEach(y=>{S.push(B(y))}),f(null,S)},C=>f(C)):0<this._pc.getStats.length?this._pc.getStats(C=>{if(this.destroyed)return;let S=[];C.result().forEach(y=>{let R={};y.names().forEach(F=>{R[F]=y.stat(F)}),R.id=y.id,R.type=y.type,R.timestamp=y.timestamp,S.push(B(R))}),f(null,S)},C=>f(C)):f(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 f=()=>{this.destroyed||this.getStats((B,C)=>{if(this.destroyed)return;B&&(C=[]);let S={},y={},R={},F=!1;C.forEach(_=>{(_.type==="remotecandidate"||_.type==="remote-candidate")&&(S[_.id]=_),(_.type==="localcandidate"||_.type==="local-candidate")&&(y[_.id]=_),(_.type==="candidatepair"||_.type==="candidate-pair")&&(R[_.id]=_)});let w=_=>{F=!0;let U=y[_.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 _.googLocalAddress=="string"&&(U=_.googLocalAddress.split(":"),this.localAddress=U[0],this.localPort=+U[1]),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let M=S[_.remoteCandidateId];M&&(M.ip||M.address)?(this.remoteAddress=M.ip||M.address,this.remotePort=+M.port):M&&M.ipAddress?(this.remoteAddress=M.ipAddress,this.remotePort=+M.portNumber):typeof _.googRemoteAddress=="string"&&(M=_.googRemoteAddress.split(":"),this.remoteAddress=M[0],this.remotePort=+M[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(C.forEach(_=>{_.type==="transport"&&_.selectedCandidatePairId&&w(R[_.selectedCandidatePairId]),(_.type==="googCandidatePair"&&_.googActiveConnection==="true"||(_.type==="candidatepair"||_.type==="candidate-pair")&&_.selected)&&w(_)}),!F&&(!Object.keys(R).length||Object.keys(y).length))return void setTimeout(f,100);if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(U){return this.destroy(g(U,"ERR_DATA_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');let _=this._cb;this._cb=null,_(null)}typeof this._channel.bufferedAmountLowThreshold!="number"&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")})};f()}_onInterval(){this._cb&&this._channel&&!(this._channel.bufferedAmount>b)&&this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||(this._pc.signalingState==="stable"&&(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(f=>{this._pc.removeTrack(f),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(f){this.destroyed||(f.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:f.candidate.candidate,sdpMLineIndex:f.candidate.sdpMLineIndex,sdpMid:f.candidate.sdpMid}}):!f.candidate&&!this._iceComplete&&(this._iceComplete=!0,this.emit("_iceComplete")),f.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(f){if(this.destroyed)return;let B=f.data;B instanceof ArrayBuffer&&(B=Q.from(B)),this.push(B)}_onChannelBufferedAmountLow(){if(!this.destroyed&&this._cb){this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);let f=this._cb;this._cb=null,f(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(f){this.destroyed||f.streams.forEach(B=>{this._debug("on track"),this.emit("track",f.track,B),this._remoteTracks.push({track:f.track,stream:B}),this._remoteStreams.some(C=>C.id===B.id)||(this._remoteStreams.push(B),u(()=>{this._debug("on stream"),this.emit("stream",B)}))})}_debug(){let f=[].slice.call(arguments);f[0]="["+this._id+"] "+f[0],h.apply(null,f)}}m.WEBRTC_SUPPORT=!!E(),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 xn=xr((Di,vn)=>{"use strict";vn.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}});var Qe,nt,Bt,gt,Ft,X,ft,tt,at,ut,it,Fn,_t=Tt(async()=>{Nn();Qe=typeof window>"u";Qe||(await Promise.resolve().then(()=>(Tn(),Ur))).default;nt=pe.instance,Bt={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},gt={DEFAULT_VERBOSE:1,CONNECTION_UPGRADE_TIMEOUT:15e3,IS_BROWSER:!Qe},Ft={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:Qe?(await Promise.resolve().then(()=>kr(xn(),1))).WebSocketServer:null,PEER:Qe?(await import("simple-peer")).default:window.SimplePeer},tt={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}},at={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;"}},Fn={CLOCK:nt,SIMULATION:Bt,NODE:gt,TRANSPORTS:ft,DISCOVERY:tt,IDENTITY:X,UNICAST:at,GOSSIP:ut,LOG_CSS:it}});var me,Se,Un=Tt(async()=>{await _t();me=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:A,time:a}of n){if(a>t){this.sdpToBuild.push({transportId:s,type:A,time:a});continue}let h=this.sandbox.transportInstances[s];if(!h||h.destroying||h.destroyed)continue;let{success:E,signalData:o,reason:l}=this.#t(s,A);!E||!o?h.dispatchError(l||`Failed to build SDP for peer: ${this.id}`):h.callbacks.signal?.forEach(u=>u(o))}let i=this.signalsToDigest;this.signalsToDigest=[];for(let{signalData:s,receiverId:A}of i){let a=this.sandbox.transportInstances[A];if(!a||a.destroying||a.destroyed)continue;let{success:h,reason:E}=this.#n(s,A);h||a.dispatchError(E||`Failed to digest signal for peer: ${this.id}`)}}#e(t=Date.now()){for(let n in this.PENDING_OFFERS)for(let i in this.PENDING_OFFERS[n])t>this.PENDING_OFFERS[n][i].expiration&&delete this.PENDING_OFFERS[n][i];for(let n in this.PENDING_ANSWERS){let i=this.PENDING_ANSWERS[n];t>i.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 i=n==="offer"?this.SIGNAL_OFFER_TIMEOUT:this.SIGNAL_ANSWER_TIMEOUT||1e4,s=Math.random().toString(36).substring(2),A={transportId:t,expiration:Date.now()+i,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]=A),n==="answer"&&(this.PENDING_ANSWERS[t]=A),{success:!0,signalData:A,reason:"na"})}#n(t,n){let{transportId:i,type:s,sdp:A}=t;if(i===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[i]||!this.PENDING_OFFERS[i][A.id]))return{success:!1,reason:`No pending offer found for transport ID: ${i} with SDP ID: ${A.id}`};if(s==="answer"&&(!this.PENDING_ANSWERS[i]||this.PENDING_ANSWERS[i].sdp.id!==A.id))return{success:!1,reason:`No pending answer found for transport ID: ${i} with SDP ID: ${A.id}`};if(s==="offer"&&Math.random()<Bt.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${i} to ${n}`};if(s==="answer"&&Math.random()<Bt.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${i} to ${n}`};if(s==="offer")return this.buildSDP(n,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[n],delete this.PENDING_ANSWERS[i];let a=this.sandbox.linkInstances(n,i);return{success:!a,reason:a||"na"}}buildSDP(t,n){let i={min:Bt.ICE_DELAY.min,max:Bt.ICE_DELAY.max},s=Math.floor(Math.random()*(i.max-i.min+1))+i.min;this.sdpToBuild.push({transportId:t,type:n,time:Date.now()+s})}digestSignal(t,n){this.signalsToDigest.push({signalData:t,receiverId:n})}},Se=class{verbose=gt.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,i){let s=this.wsConnections[n],A=this.publicWsServers[t];if(!s||!A||A.closing||A.clients.size>=A.maxClients)return;let a=new i(A,n);A.clients.add(a),a.init(s.id),A.callbacks.connection.forEach(h=>h(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[i,s]=[this.transportInstances[t],this.transportInstances[n]];if(!i||!s)return`Missing transport instances: ${t}=>${!!i}, ${n}=>${!!s}`;if(i.initiator&&s.initiator)return`Both transport instances cannot be initiators: ${t}, ${n}`;if(i.destroying||s.destroying)return`One of the transport instances is destroying: ${t}=>${i.destroying}, ${n}=>${s.destroying}`;if(i.destroyed||s.destroyed)return`One of the transport instances is destroyed: ${t}=>${i.destroyed}, ${n}=>${s.destroyed}`;if(i.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${i.remoteId}`;if(s.remoteId)return`Transport instance tB: ${n} is already linked to remoteId: ${s.remoteId}`;i.remoteId=n,s.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${n}`),i.callbacks.connect.forEach(A=>A()),s.callbacks.connect.forEach(A=>A())}sendData(t,n,i){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 A=this.transportInstances[n];return A?A.remoteId?A.id!==n?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${n}`}:A.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${n}`}:(this.enqueueTransportData(t,n,i),{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 i=n.remoteId,s=i?this.transportInstances[i]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),n&&s&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${i}`),delete this.transportInstances[i],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 i=Math.min(this.queueIndex+n,t);for(let A=this.queueIndex;A<i;A++){let[a,h,E,o]=this.messageQueueSync[A];a==="transport_data"?this.#e(h,E,o):a==="ws_message"&&this.#t(h,E,o)}if(this.queueIndex=i,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 i=0;i<n;i++){let s=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[A,a,h,E]=s;A==="transport_data"?this.#e(a,h,E):A==="ws_message"&&this.#t(a,h,E)}await new Promise(i=>setTimeout(i,0)),this.queueCount-=n}#e(t,n,i){let[s,A]=[this.transportInstances[t],this.transportInstances[n]];if(!s||!A||s.destroying||A.destroying){s?.close(),A?.close();return}if(s.destroyed){A.close();return}if(A.destroyed){s.close();return}for(let a of A.callbacks.data)a(i)}#t(t,n,i){let[s,A]=[this.wsConnections[t],this.wsConnections[n]];if(!A||!s||A.readyState!==1||s.readyState!==1){A?.close(),s?.close();return}if(A.onmessage)A.onmessage({data:i});else for(let a of A.callbacks.message)a(i)}enqueueTransportDataSync(t,n,i){this.messageQueueSync.push(["transport_data",t,n,i])}enqueueWsMessageSync(t,n,i){this.messageQueueSync.push(["ws_message",t,n,i])}enqueueTransportData(t,n,i){this.messageQueue[this.queueEnd]=["transport_data",t,n,i],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,i){this.messageQueue[this.queueEnd]=["ws_message",t,n,i],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 De={};Be(De,{ICE_CANDIDATE_EMITTER:()=>sn,SANDBOX:()=>pt,TEST_WS_EVENT_MANAGER:()=>_e,TestTransport:()=>rn,TestWsConnection:()=>Re,TestWsServer:()=>nn});var en,Re,nn,rn,pt,sn,_e,Ne=Tt(async()=>{await _t();await Un();en=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),n=this.toInit;this.toInit=[];for(let{connId:i,time:s}of n)s>t?this.toInit.push({connId:i,time:s}):this.#e(i)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),n=this.toClose;this.toClose=[];for(let{wsId:i,remoteWsId:s,time:A}of n)A>t?this.toClose.push({wsId:i,remoteWsId:s,time:A}):this.#t(i,s)}cleanerTick(){let t=Date.now();for(let n of Object.values(pt.publicWsServers))for(let i of n.clients)i.readyState===3&&n.clients.delete(i)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),n=this.toError;this.toError=[];for(let{wsId:i,error:s,time:A}of n)A>t?this.toError.push({wsId:i,error:s,time:A}):pt.wsConnections[i]?.dispatchError(s)}#e(t){let n=pt.wsConnections[t];n&&pt.connectToWebSocketServer(n.url,n.id,Re)}#t(t,n){let i=pt.wsConnections[t],s=pt.wsConnections[n];i?.onclose?.(),s?.onclose?.();for(let A of i?.callbacks?.close||[])A();for(let A of s?.callbacks?.close||[])A()}scheduleInit(t,n=500){this.toInit.push({connId:t,time:Date.now()+n})}scheduleClose(t,n,i=100){this.toClose.push({wsId:t,remoteWsId:n,time:Date.now()+i})}scheduleError(t,n,i=100){this.toError.push({wsId:t,error:n,time:Date.now()+i})}},Re=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){pt.inscribeWsConnection(this),!n&&(this.url=t,_e.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}`),_e.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=pt.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&_e.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}pt.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(n=>n(t)),this.onerror&&this.onerror(t)}},nn=class{url;clients=new Set;maxClients=Ft.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,pt.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,pt.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},rn=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}){pt.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&sn.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.");sn.digestSignal(t,this.id)}}send(t){let{success:n,reason:i}=pt.sendData(this.id,this.remoteId,t);n||this.destroy(i)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(n=>n()),pt.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},pt=new Se,sn=new me(pt),_e=new en});var Ar={};Be(Ar,{Point:()=>Lt,etc:()=>ni,getPublicKey:()=>tr,getPublicKeyAsync:()=>zn,hash:()=>Vr,hashes:()=>yn,keygen:()=>ri,keygenAsync:()=>ii,sign:()=>zr,signAsync:()=>Zr,utils:()=>si,verify:()=>ei,verifyAsync:()=>ti});var Yn,Qt,Le,Mn,Ln,cn,hn,Yr,Mt,fe,Jr,ct,Kr,qr,Wr,Dt,Pe,Jn,Kn,ln,Ot,Gn,dn,qn,jr,Xt,Wn,Ge,Vt,P,jn,Vn,Xn,Vr,gn,fn,Lt,Yt,Ae,$n,In,Ut,Xr,On,$r,Oe,En,Cn,Zn,Bn,pn,zn,tr,er,nr,rr,Zr,zr,Qn,ir,ti,ei,ni,yn,bn,ri,ii,si,He,Ai,sr,un,oi,Hn,Pn,ai,or=Tt(()=>{Yn={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Qt,n:Le,Gx:Mn,Gy:Ln,a:cn,d:hn,h:Yr}=Yn,Mt=32,fe=64,Jr=(...I)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...I)},ct=(I="")=>{let t=new Error(I);throw Jr(t,ct),t},Kr=I=>typeof I=="bigint",qr=I=>typeof I=="string",Wr=I=>I instanceof Uint8Array||ArrayBuffer.isView(I)&&I.constructor.name==="Uint8Array",Dt=(I,t,n="")=>{let i=Wr(I),s=I?.length,A=t!==void 0;if(!i||A&&s!==t){let a=n&&`"${n}" `,h=A?` of length ${t}`:"",E=i?`length=${s}`:`type=${typeof I}`;ct(a+"expected Uint8Array"+h+", got "+E)}return I},Pe=I=>new Uint8Array(I),Jn=I=>Uint8Array.from(I),Kn=(I,t)=>I.toString(16).padStart(t,"0"),ln=I=>Array.from(Dt(I)).map(t=>Kn(t,2)).join(""),Ot={_0:48,_9:57,A:65,F:70,a:97,f:102},Gn=I=>{if(I>=Ot._0&&I<=Ot._9)return I-Ot._0;if(I>=Ot.A&&I<=Ot.F)return I-(Ot.A-10);if(I>=Ot.a&&I<=Ot.f)return I-(Ot.a-10)},dn=I=>{let t="hex invalid";if(!qr(I))return ct(t);let n=I.length,i=n/2;if(n%2)return ct(t);let s=Pe(i);for(let A=0,a=0;A<i;A++,a+=2){let h=Gn(I.charCodeAt(a)),E=Gn(I.charCodeAt(a+1));if(h===void 0||E===void 0)return ct(t);s[A]=h*16+E}return s},qn=()=>globalThis?.crypto,jr=()=>qn()?.subtle??ct("crypto.subtle must be defined, consider polyfill"),Xt=(...I)=>{let t=Pe(I.reduce((i,s)=>i+Dt(s).length,0)),n=0;return I.forEach(i=>{t.set(i,n),n+=i.length}),t},Wn=(I=Mt)=>qn().getRandomValues(Pe(I)),Ge=BigInt,Vt=(I,t,n,i="bad number: out of range")=>Kr(I)&&t<=I&&I<n?I:ct(i),P=(I,t=Qt)=>{let n=I%t;return n>=0n?n:t+n},jn=I=>P(I,Le),Vn=(I,t)=>{(I===0n||t<=0n)&&ct("no inverse n="+I+" mod="+t);let n=P(I,t),i=t,s=0n,A=1n,a=1n,h=0n;for(;n!==0n;){let E=i/n,o=i%n,l=s-a*E,u=A-h*E;i=n,n=o,s=a,A=h,a=l,h=u}return i===1n?P(s,t):ct("no inverse")},Xn=I=>{let t=yn[I];return typeof t!="function"&&ct("hashes."+I+" not set"),t},Vr=I=>Xn("sha512")(I),gn=I=>I instanceof Lt?I:ct("Point expected"),fn=2n**256n,Lt=class I{static BASE;static ZERO;X;Y;Z;T;constructor(t,n,i,s){let A=fn;this.X=Vt(t,0n,A),this.Y=Vt(n,0n,A),this.Z=Vt(i,1n,A),this.T=Vt(s,0n,A),Object.freeze(this)}static CURVE(){return Yn}static fromAffine(t){return new I(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){let i=hn,s=Jn(Dt(t,Mt)),A=t[31];s[31]=A&-129;let a=In(s);Vt(a,0n,n?fn:Qt);let E=P(a*a),o=P(E-1n),l=P(i*E+1n),{isValid:u,value:g}=$r(o,l);u||ct("bad point: y not sqrt");let Q=(g&1n)===1n,b=(A&128)!==0;return!n&&g===0n&&b&&ct("bad point: x==0, isLastByteOdd"),b!==Q&&(g=P(-g)),new I(g,a,1n,P(g*a))}static fromHex(t,n){return I.fromBytes(dn(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=cn,n=hn,i=this;if(i.is0())return ct("bad point: ZERO");let{X:s,Y:A,Z:a,T:h}=i,E=P(s*s),o=P(A*A),l=P(a*a),u=P(l*l),g=P(E*t),Q=P(l*P(g+o)),b=P(u+P(n*P(E*o)));if(Q!==b)return ct("bad point: equation left != right (1)");let m=P(s*A),D=P(a*h);return m!==D?ct("bad point: equation left != right (2)"):this}equals(t){let{X:n,Y:i,Z:s}=this,{X:A,Y:a,Z:h}=gn(t),E=P(n*h),o=P(A*s),l=P(i*h),u=P(a*s);return E===o&&l===u}is0(){return this.equals(Ae)}negate(){return new I(P(-this.X),this.Y,this.Z,P(-this.T))}double(){let{X:t,Y:n,Z:i}=this,s=cn,A=P(t*t),a=P(n*n),h=P(2n*P(i*i)),E=P(s*A),o=t+n,l=P(P(o*o)-A-a),u=E+a,g=u-h,Q=E-a,b=P(l*g),m=P(u*Q),D=P(l*Q),f=P(g*u);return new I(b,m,f,D)}add(t){let{X:n,Y:i,Z:s,T:A}=this,{X:a,Y:h,Z:E,T:o}=gn(t),l=cn,u=hn,g=P(n*a),Q=P(i*h),b=P(A*u*o),m=P(s*E),D=P((n+i)*(a+h)-g-Q),f=P(m-b),B=P(m+b),C=P(Q-l*g),S=P(D*f),y=P(B*C),R=P(D*C),F=P(f*B);return new I(S,y,F,R)}subtract(t){return this.add(gn(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return Ae;if(Vt(t,1n,Le),t===1n)return this;if(this.equals(Yt))return ai(t).p;let i=Ae,s=Yt;for(let A=this;t>0n;A=A.double(),t>>=1n)t&1n?i=i.add(A):n&&(s=s.add(A));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:n,Z:i}=this;if(this.equals(Ae))return{x:0n,y:1n};let s=Vn(i,Qt);P(i*s)!==1n&&ct("invalid inverse");let A=P(t*s),a=P(n*s);return{x:A,y:a}}toBytes(){let{x:t,y:n}=this.assertValidity().toAffine(),i=$n(n);return i[31]|=t&1n?128:0,i}toHex(){return ln(this.toBytes())}clearCofactor(){return this.multiply(Ge(Yr),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Le/2n,!1).double();return Le%2n&&(t=t.add(this)),t.is0()}},Yt=new Lt(Mn,Ln,1n,P(Mn*Ln)),Ae=new Lt(0n,1n,1n,0n);Lt.BASE=Yt;Lt.ZERO=Ae;$n=I=>dn(Kn(Vt(I,0n,fn),fe)).reverse(),In=I=>Ge("0x"+ln(Jn(Dt(I)).reverse())),Ut=(I,t)=>{let n=I;for(;t-- >0n;)n*=n,n%=Qt;return n},Xr=I=>{let n=I*I%Qt*I%Qt,i=Ut(n,2n)*n%Qt,s=Ut(i,1n)*I%Qt,A=Ut(s,5n)*s%Qt,a=Ut(A,10n)*A%Qt,h=Ut(a,20n)*a%Qt,E=Ut(h,40n)*h%Qt,o=Ut(E,80n)*E%Qt,l=Ut(o,80n)*E%Qt,u=Ut(l,10n)*A%Qt;return{pow_p_5_8:Ut(u,2n)*I%Qt,b2:n}},On=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,$r=(I,t)=>{let n=P(t*t*t),i=P(n*n*t),s=Xr(I*i).pow_p_5_8,A=P(I*n*s),a=P(t*A*A),h=A,E=P(A*On),o=a===I,l=a===P(-I),u=a===P(-I*On);return o&&(A=h),(l||u)&&(A=E),(P(A)&1n)===1n&&(A=P(-A)),{isValid:o||l,value:A}},Oe=I=>jn(In(I)),En=(...I)=>yn.sha512Async(Xt(...I)),Cn=(...I)=>Xn("sha512")(Xt(...I)),Zn=I=>{let t=I.slice(0,Mt);t[0]&=248,t[31]&=127,t[31]|=64;let n=I.slice(Mt,fe),i=Oe(t),s=Yt.multiply(i),A=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:A}},Bn=I=>En(Dt(I,Mt)).then(Zn),pn=I=>Zn(Cn(Dt(I,Mt))),zn=I=>Bn(I).then(t=>t.pointBytes),tr=I=>pn(I).pointBytes,er=I=>En(I.hashable).then(I.finish),nr=I=>I.finish(Cn(I.hashable)),rr=(I,t,n)=>{let{pointBytes:i,scalar:s}=I,A=Oe(t),a=Yt.multiply(A).toBytes();return{hashable:Xt(a,i,n),finish:o=>{let l=jn(A+Oe(o)*s);return Dt(Xt(a,$n(l)),fe)}}},Zr=async(I,t)=>{let n=Dt(I),i=await Bn(t),s=await En(i.prefix,n);return er(rr(i,s,n))},zr=(I,t)=>{let n=Dt(I),i=pn(t),s=Cn(i.prefix,n);return nr(rr(i,s,n))},Qn={zip215:!0},ir=(I,t,n,i=Qn)=>{I=Dt(I,fe),t=Dt(t),n=Dt(n,Mt);let{zip215:s}=i,A,a,h,E,o=Uint8Array.of();try{A=Lt.fromBytes(n,s),a=Lt.fromBytes(I.slice(0,Mt),s),h=In(I.slice(Mt,fe)),E=Yt.multiply(h,!1),o=Xt(a.toBytes(),A.toBytes(),t)}catch{}return{hashable:o,finish:u=>{if(E==null||!s&&A.isSmallOrder())return!1;let g=Oe(u);return a.add(A.multiply(g,!1)).add(E.negate()).clearCofactor().is0()}}},ti=async(I,t,n,i=Qn)=>er(ir(I,t,n,i)),ei=(I,t,n,i=Qn)=>nr(ir(I,t,n,i)),ni={bytesToHex:ln,hexToBytes:dn,concatBytes:Xt,mod:P,invert:Vn,randomBytes:Wn},yn={sha512Async:async I=>{let t=jr(),n=Xt(I);return Pe(await t.digest("SHA-512",n.buffer))},sha512:void 0},bn=(I=Wn(Mt))=>I,ri=I=>{let t=bn(I),n=tr(t);return{secretKey:t,publicKey:n}},ii=async I=>{let t=bn(I),n=await zn(t);return{secretKey:t,publicKey:n}},si={getExtendedPublicKeyAsync:Bn,getExtendedPublicKey:pn,randomSecretKey:bn},He=8,Ai=256,sr=Math.ceil(Ai/He)+1,un=2**(He-1),oi=()=>{let I=[],t=Yt,n=t;for(let i=0;i<sr;i++){n=t,I.push(n);for(let s=1;s<un;s++)n=n.add(t),I.push(n);t=n.double()}return I},Pn=(I,t)=>{let n=t.negate();return I?n:t},ai=I=>{let t=Hn||(Hn=oi()),n=Ae,i=Yt,s=2**He,A=s,a=Ge(s-1),h=Ge(He);for(let E=0;E<sr;E++){let o=Number(I&a);I>>=h,o>un&&(o-=A,I+=1n);let l=E*un,u=l,g=l+Math.abs(o)-1,Q=E%2!==0,b=o<0;o===0?i=i.add(Pn(Q,t[u])):n=n.add(Pn(b,t[g]))}return I!==0n&&ct("invalid wnaf"),{p:n,f:i}}});function ci(I){return I instanceof Uint8Array||ArrayBuffer.isView(I)&&I.constructor.name==="Uint8Array"}function wn(I,t,n=""){let i=ci(I),s=I?.length,A=t!==void 0;if(!i||A&&s!==t){let a=n&&`"${n}" `,h=A?` of length ${t}`:"",E=i?`length=${s}`:`type=${typeof I}`;throw new Error(a+"expected Uint8Array"+h+", got "+E)}return I}function mn(I,t=!0){if(I.destroyed)throw new Error("Hash instance has been destroyed");if(t&&I.finished)throw new Error("Hash#digest() has already been called")}function ar(I,t){wn(I,void 0,"digestInto() output");let n=t.outputLen;if(I.length<n)throw new Error('"digestInto() output" expected to be of length >='+n)}function $t(...I){for(let t=0;t<I.length;t++)I[t].fill(0)}function Ye(I){return new DataView(I.buffer,I.byteOffset,I.byteLength)}function vt(I,t){return I<<32-t|I>>>t}function Zt(I,t={}){let n=(s,A)=>I(A).update(s).digest(),i=I(void 0);return n.outputLen=i.outputLen,n.blockLen=i.blockLen,n.create=s=>I(s),Object.assign(n,t),Object.freeze(n)}var zt,Sn=Tt(()=>{zt=I=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,I])})});function cr(I,t,n){return I&t^~I&n}function hr(I,t,n){return I&t^I&n^t&n}var ue,Ht,Pt,dt,It,gr=Tt(()=>{Sn();ue=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,n,i,s){this.blockLen=t,this.outputLen=n,this.padOffset=i,this.isLE=s,this.buffer=new Uint8Array(t),this.view=Ye(this.buffer)}update(t){mn(this),wn(t);let{view:n,buffer:i,blockLen:s}=this,A=t.length;for(let a=0;a<A;){let h=Math.min(s-this.pos,A-a);if(h===s){let E=Ye(t);for(;s<=A-a;a+=s)this.process(E,a);continue}i.set(t.subarray(a,a+h),this.pos),this.pos+=h,a+=h,this.pos===s&&(this.process(n,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){mn(this),ar(t,this),this.finished=!0;let{buffer:n,view:i,blockLen:s,isLE:A}=this,{pos:a}=this;n[a++]=128,$t(this.buffer.subarray(a)),this.padOffset>s-a&&(this.process(i,0),a=0);for(let u=a;u<s;u++)n[u]=0;i.setBigUint64(s-8,BigInt(this.length*8),A),this.process(i,0);let h=Ye(t),E=this.outputLen;if(E%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let o=E/4,l=this.get();if(o>l.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<o;u++)h.setUint32(4*u,l[u],A)}digest(){let{buffer:t,outputLen:n}=this;this.digestInto(t);let i=t.slice(0,n);return this.destroy(),i}_cloneInto(t){t||=new this.constructor,t.set(...this.get());let{blockLen:n,buffer:i,length:s,finished:A,destroyed:a,pos:h}=this;return t.destroyed=a,t.finished=A,t.length=s,t.pos=h,s%n&&t.buffer.set(i),t}clone(){return this._cloneInto()}},Ht=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Pt=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),dt=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),It=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209])});function hi(I,t=!1){return t?{h:Number(I&Je),l:Number(I>>fr&Je)}:{h:Number(I>>fr&Je)|0,l:Number(I&Je)|0}}function ur(I,t=!1){let n=I.length,i=new Uint32Array(n),s=new Uint32Array(n);for(let A=0;A<n;A++){let{h:a,l:h}=hi(I[A],t);[i[A],s[A]]=[a,h]}return[i,s]}function Gt(I,t,n,i){let s=(t>>>0)+(i>>>0);return{h:I+n+(s/2**32|0)|0,l:s|0}}var Je,fr,_n,Rn,te,ee,le,de,lr,dr,Ir,Er,Cr,Br,pr=Tt(()=>{Je=BigInt(4294967295),fr=BigInt(32);_n=(I,t,n)=>I>>>n,Rn=(I,t,n)=>I<<32-n|t>>>n,te=(I,t,n)=>I>>>n|t<<32-n,ee=(I,t,n)=>I<<32-n|t>>>n,le=(I,t,n)=>I<<64-n|t>>>n-32,de=(I,t,n)=>I>>>n-32|t<<64-n;lr=(I,t,n)=>(I>>>0)+(t>>>0)+(n>>>0),dr=(I,t,n,i)=>t+n+i+(I/2**32|0)|0,Ir=(I,t,n,i)=>(I>>>0)+(t>>>0)+(n>>>0)+(i>>>0),Er=(I,t,n,i,s)=>t+n+i+s+(I/2**32|0)|0,Cr=(I,t,n,i,s)=>(I>>>0)+(t>>>0)+(n>>>0)+(i>>>0)+(s>>>0),Br=(I,t,n,i,s,A)=>t+n+i+s+A+(I/2**32|0)|0});var yr={};Be(yr,{_SHA224:()=>We,_SHA256:()=>qe,_SHA384:()=>Ve,_SHA512:()=>je,_SHA512_224:()=>Xe,_SHA512_256:()=>$e,sha224:()=>Ii,sha256:()=>di,sha384:()=>Ci,sha512:()=>Ei,sha512_224:()=>pi,sha512_256:()=>Bi});var fi,Jt,Ke,qe,We,Qr,ui,li,Kt,qt,oe,je,Ve,yt,bt,Xe,$e,di,Ii,Ei,Ci,Bi,pi,br=Tt(()=>{gr();pr();Sn();fi=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Jt=new Uint32Array(64),Ke=class extends ue{constructor(t){super(64,t,8,!1)}get(){let{A:t,B:n,C:i,D:s,E:A,F:a,G:h,H:E}=this;return[t,n,i,s,A,a,h,E]}set(t,n,i,s,A,a,h,E){this.A=t|0,this.B=n|0,this.C=i|0,this.D=s|0,this.E=A|0,this.F=a|0,this.G=h|0,this.H=E|0}process(t,n){for(let u=0;u<16;u++,n+=4)Jt[u]=t.getUint32(n,!1);for(let u=16;u<64;u++){let g=Jt[u-15],Q=Jt[u-2],b=vt(g,7)^vt(g,18)^g>>>3,m=vt(Q,17)^vt(Q,19)^Q>>>10;Jt[u]=m+Jt[u-7]+b+Jt[u-16]|0}let{A:i,B:s,C:A,D:a,E:h,F:E,G:o,H:l}=this;for(let u=0;u<64;u++){let g=vt(h,6)^vt(h,11)^vt(h,25),Q=l+g+cr(h,E,o)+fi[u]+Jt[u]|0,m=(vt(i,2)^vt(i,13)^vt(i,22))+hr(i,s,A)|0;l=o,o=E,E=h,h=a+Q|0,a=A,A=s,s=i,i=Q+m|0}i=i+this.A|0,s=s+this.B|0,A=A+this.C|0,a=a+this.D|0,h=h+this.E|0,E=E+this.F|0,o=o+this.G|0,l=l+this.H|0,this.set(i,s,A,a,h,E,o,l)}roundClean(){$t(Jt)}destroy(){this.set(0,0,0,0,0,0,0,0),$t(this.buffer)}},qe=class extends Ke{A=Ht[0]|0;B=Ht[1]|0;C=Ht[2]|0;D=Ht[3]|0;E=Ht[4]|0;F=Ht[5]|0;G=Ht[6]|0;H=Ht[7]|0;constructor(){super(32)}},We=class extends Ke{A=Pt[0]|0;B=Pt[1]|0;C=Pt[2]|0;D=Pt[3]|0;E=Pt[4]|0;F=Pt[5]|0;G=Pt[6]|0;H=Pt[7]|0;constructor(){super(28)}},Qr=ur(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(I=>BigInt(I))),ui=Qr[0],li=Qr[1],Kt=new Uint32Array(80),qt=new Uint32Array(80),oe=class extends ue{constructor(t){super(128,t,16,!1)}get(){let{Ah:t,Al:n,Bh:i,Bl:s,Ch:A,Cl:a,Dh:h,Dl:E,Eh:o,El:l,Fh:u,Fl:g,Gh:Q,Gl:b,Hh:m,Hl:D}=this;return[t,n,i,s,A,a,h,E,o,l,u,g,Q,b,m,D]}set(t,n,i,s,A,a,h,E,o,l,u,g,Q,b,m,D){this.Ah=t|0,this.Al=n|0,this.Bh=i|0,this.Bl=s|0,this.Ch=A|0,this.Cl=a|0,this.Dh=h|0,this.Dl=E|0,this.Eh=o|0,this.El=l|0,this.Fh=u|0,this.Fl=g|0,this.Gh=Q|0,this.Gl=b|0,this.Hh=m|0,this.Hl=D|0}process(t,n){for(let C=0;C<16;C++,n+=4)Kt[C]=t.getUint32(n),qt[C]=t.getUint32(n+=4);for(let C=16;C<80;C++){let S=Kt[C-15]|0,y=qt[C-15]|0,R=te(S,y,1)^te(S,y,8)^_n(S,y,7),F=ee(S,y,1)^ee(S,y,8)^Rn(S,y,7),w=Kt[C-2]|0,_=qt[C-2]|0,U=te(w,_,19)^le(w,_,61)^_n(w,_,6),M=ee(w,_,19)^de(w,_,61)^Rn(w,_,6),H=Ir(F,M,qt[C-7],qt[C-16]),Y=Er(H,R,U,Kt[C-7],Kt[C-16]);Kt[C]=Y|0,qt[C]=H|0}let{Ah:i,Al:s,Bh:A,Bl:a,Ch:h,Cl:E,Dh:o,Dl:l,Eh:u,El:g,Fh:Q,Fl:b,Gh:m,Gl:D,Hh:f,Hl:B}=this;for(let C=0;C<80;C++){let S=te(u,g,14)^te(u,g,18)^le(u,g,41),y=ee(u,g,14)^ee(u,g,18)^de(u,g,41),R=u&Q^~u&m,F=g&b^~g&D,w=Cr(B,y,F,li[C],qt[C]),_=Br(w,f,S,R,ui[C],Kt[C]),U=w|0,M=te(i,s,28)^le(i,s,34)^le(i,s,39),H=ee(i,s,28)^de(i,s,34)^de(i,s,39),Y=i&A^i&h^A&h,K=s&a^s&E^a&E;f=m|0,B=D|0,m=Q|0,D=b|0,Q=u|0,b=g|0,{h:u,l:g}=Gt(o|0,l|0,_|0,U|0),o=h|0,l=E|0,h=A|0,E=a|0,A=i|0,a=s|0;let j=lr(U,H,K);i=dr(j,_,M,Y),s=j|0}({h:i,l:s}=Gt(this.Ah|0,this.Al|0,i|0,s|0)),{h:A,l:a}=Gt(this.Bh|0,this.Bl|0,A|0,a|0),{h,l:E}=Gt(this.Ch|0,this.Cl|0,h|0,E|0),{h:o,l}=Gt(this.Dh|0,this.Dl|0,o|0,l|0),{h:u,l:g}=Gt(this.Eh|0,this.El|0,u|0,g|0),{h:Q,l:b}=Gt(this.Fh|0,this.Fl|0,Q|0,b|0),{h:m,l:D}=Gt(this.Gh|0,this.Gl|0,m|0,D|0),{h:f,l:B}=Gt(this.Hh|0,this.Hl|0,f|0,B|0),this.set(i,s,A,a,h,E,o,l,u,g,Q,b,m,D,f,B)}roundClean(){$t(Kt,qt)}destroy(){$t(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},je=class extends oe{Ah=It[0]|0;Al=It[1]|0;Bh=It[2]|0;Bl=It[3]|0;Ch=It[4]|0;Cl=It[5]|0;Dh=It[6]|0;Dl=It[7]|0;Eh=It[8]|0;El=It[9]|0;Fh=It[10]|0;Fl=It[11]|0;Gh=It[12]|0;Gl=It[13]|0;Hh=It[14]|0;Hl=It[15]|0;constructor(){super(64)}},Ve=class extends oe{Ah=dt[0]|0;Al=dt[1]|0;Bh=dt[2]|0;Bl=dt[3]|0;Ch=dt[4]|0;Cl=dt[5]|0;Dh=dt[6]|0;Dl=dt[7]|0;Eh=dt[8]|0;El=dt[9]|0;Fh=dt[10]|0;Fl=dt[11]|0;Gh=dt[12]|0;Gl=dt[13]|0;Hh=dt[14]|0;Hl=dt[15]|0;constructor(){super(48)}},yt=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),bt=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]),Xe=class extends oe{Ah=yt[0]|0;Al=yt[1]|0;Bh=yt[2]|0;Bl=yt[3]|0;Ch=yt[4]|0;Cl=yt[5]|0;Dh=yt[6]|0;Dl=yt[7]|0;Eh=yt[8]|0;El=yt[9]|0;Fh=yt[10]|0;Fl=yt[11]|0;Gh=yt[12]|0;Gl=yt[13]|0;Hh=yt[14]|0;Hl=yt[15]|0;constructor(){super(28)}},$e=class extends oe{Ah=bt[0]|0;Al=bt[1]|0;Bh=bt[2]|0;Bl=bt[3]|0;Ch=bt[4]|0;Cl=bt[5]|0;Dh=bt[6]|0;Dl=bt[7]|0;Eh=bt[8]|0;El=bt[9]|0;Fh=bt[10]|0;Fl=bt[11]|0;Gh=bt[12]|0;Gl=bt[13]|0;Hh=bt[14]|0;Hl=bt[15]|0;constructor(){super(32)}},di=Zt(()=>new qe,zt(1)),Ii=Zt(()=>new We,zt(4)),Ei=Zt(()=>new je,zt(3)),Ci=Zt(()=>new Ve,zt(2)),Bi=Zt(()=>new $e,zt(6)),pi=Zt(()=>new Xe,zt(5))});var wr={};Be(wr,{default:()=>yi});var Qi,yi,mr=Tt(()=>{Qi=(()=>{var I,t,n={773(A,a,h){var E,o=typeof self<"u"&&self.Module!==void 0?self.Module:{},l={};for(E in o)o.hasOwnProperty(E)&&(l[E]=o[E]);var u,g,Q,b,m=[];u=typeof window=="object",g=typeof importScripts=="function",Q=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b=!u&&!Q&&!g;var D,f,B,C,S,y="";Q?(y=g?h(967).dirname(y)+"/":"//",D=function(x,L){return C||(C=h(145)),S||(S=h(967)),x=S.normalize(x),C.readFileSync(x,L?null:"utf8")},B=function(x){var L=D(x,!0);return L.buffer||(L=new Uint8Array(L)),U(L.buffer),L},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),m=process.argv.slice(2),A.exports=o,process.on("uncaughtException",function(x){if(!(x instanceof k))throw x}),process.on("unhandledRejection",V),o.inspect=function(){return"[Emscripten Module object]"}):b?(typeof read<"u"&&(D=function(x){return read(x)}),B=function(x){var L;return typeof readbuffer=="function"?new Uint8Array(readbuffer(x)):(U(typeof(L=read(x,"binary"))=="object"),L)},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)):(u||g)&&(g?y=self.location.href:typeof document<"u"&&document.currentScript&&(y=document.currentScript.src),y=y.indexOf("blob:")!==0?y.substr(0,y.lastIndexOf("/")+1):"",D=function(x){var L=new XMLHttpRequest;return L.open("GET",x,!1),L.send(null),L.responseText},g&&(B=function(x){var L=new XMLHttpRequest;return L.open("GET",x,!1),L.responseType="arraybuffer",L.send(null),new Uint8Array(L.response)}),f=function(x,L,e){var r=new XMLHttpRequest;r.open("GET",x,!0),r.responseType="arraybuffer",r.onload=function(){r.status==200||r.status==0&&r.response?L(r.response):e()},r.onerror=e,r.send(null)}),o.print||console.log.bind(console);var R,F,w=o.printErr||console.warn.bind(console);for(E in l)l.hasOwnProperty(E)&&(o[E]=l[E]);l=null,o.arguments&&(m=o.arguments),o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(R=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&V("no native wasm support detected");var _=!1;function U(x,L){x||V("Assertion failed: "+L)}var M,H,Y=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function K(x){M=x,o.HEAP8=new Int8Array(x),o.HEAP16=new Int16Array(x),o.HEAP32=new Int32Array(x),o.HEAPU8=H=new Uint8Array(x),o.HEAPU16=new Uint16Array(x),o.HEAPU32=new Uint32Array(x),o.HEAPF32=new Float32Array(x),o.HEAPF64=new Float64Array(x)}o.INITIAL_MEMORY;var j,st=[],J=[],Rt=[],ot=0,ht=null,W=null;function V(x){throw o.onAbort&&o.onAbort(x),w(x+=""),_=!0,x="abort("+x+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(x)}function Et(x){return x.startsWith("data:application/octet-stream;base64,")}function At(x){return x.startsWith("file://")}o.preloadedImages={},o.preloadedAudios={};var wt,et="argon2.wasm";function Nt(x){try{if(x==et&&R)return new Uint8Array(R);if(B)return B(x);throw"both async and sync fetching of the wasm failed"}catch(L){V(L)}}function St(x){for(;x.length>0;){var L=x.shift();if(typeof L!="function"){var e=L.func;typeof e=="number"?L.arg===void 0?j.get(e)():j.get(e)(L.arg):e(L.arg===void 0?null:L.arg)}else L(o)}}function Wt(x){try{return F.grow(x-M.byteLength+65535>>>16),K(F.buffer),1}catch{}}Et(et)||(wt=et,et=o.locateFile?o.locateFile(wt,y):y+wt);var xt,Ct={a:function(x,L,e){H.copyWithin(x,L,L+e)},b:function(x){var L,e=H.length;if((x>>>=0)>2147418112)return!1;for(var r=1;r<=4;r*=2){var c=e*(1+.2/r);if(c=Math.min(c,x+100663296),Wt(Math.min(2147418112,((L=Math.max(x,c))%65536>0&&(L+=65536-L%65536),L))))return!0}return!1}},mt=((function(){var x={a:Ct};function L(c,p){var N,v=c.exports;o.asm=v,K((F=o.asm.c).buffer),j=o.asm.k,N=o.asm.d,J.unshift(N),(function(G){if(ot--,o.monitorRunDependencies&&o.monitorRunDependencies(ot),ot==0&&(ht!==null&&(clearInterval(ht),ht=null),W)){var q=W;W=null,q()}})()}function e(c){L(c.instance)}function r(c){return(function(){if(!R&&(u||g)){if(typeof fetch=="function"&&!At(et))return fetch(et,{credentials:"same-origin"}).then(function(p){if(!p.ok)throw"failed to load wasm binary file at '"+et+"'";return p.arrayBuffer()}).catch(function(){return Nt(et)});if(f)return new Promise(function(p,N){f(et,function(v){p(new Uint8Array(v))},N)})}return Promise.resolve().then(function(){return Nt(et)})})().then(function(p){return WebAssembly.instantiate(p,x)}).then(c,function(p){w("failed to asynchronously prepare wasm: "+p),V(p)})}if(ot++,o.monitorRunDependencies&&o.monitorRunDependencies(ot),o.instantiateWasm)try{return o.instantiateWasm(x,L)}catch(c){return w("Module.instantiateWasm callback failed with error: "+c),!1}R||typeof WebAssembly.instantiateStreaming!="function"||Et(et)||At(et)||typeof fetch!="function"?r(e):fetch(et,{credentials:"same-origin"}).then(function(c){return WebAssembly.instantiateStreaming(c,x).then(e,function(p){return w("wasm streaming compile failed: "+p),w("falling back to ArrayBuffer instantiation"),r(e)})})})(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.d).apply(null,arguments)},o._argon2_hash=function(){return(o._argon2_hash=o.asm.e).apply(null,arguments)},o._malloc=function(){return(mt=o._malloc=o.asm.f).apply(null,arguments)}),T=(o._free=function(){return(o._free=o.asm.g).apply(null,arguments)},o._argon2_verify=function(){return(o._argon2_verify=o.asm.h).apply(null,arguments)},o._argon2_error_message=function(){return(o._argon2_error_message=o.asm.i).apply(null,arguments)},o._argon2_encodedlen=function(){return(o._argon2_encodedlen=o.asm.j).apply(null,arguments)},o._argon2_hash_ext=function(){return(o._argon2_hash_ext=o.asm.l).apply(null,arguments)},o._argon2_verify_ext=function(){return(o._argon2_verify_ext=o.asm.m).apply(null,arguments)},o.stackAlloc=function(){return(T=o.stackAlloc=o.asm.n).apply(null,arguments)});function k(x){this.name="ExitStatus",this.message="Program terminated with exit("+x+")",this.status=x}function O(x){function L(){xt||(xt=!0,o.calledRun=!0,_||(St(J),o.onRuntimeInitialized&&o.onRuntimeInitialized(),(function(){var e;if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)e=o.postRun.shift(),Rt.unshift(e);St(Rt)})()))}x=x||m,ot>0||((function(){var e;if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),st.unshift(e);St(st)})(),ot>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),L()},1)):L()))}if(o.allocate=function(x,L){var e;return e=L==1?T(x.length):mt(x.length),x.subarray||x.slice?H.set(x,e):H.set(new Uint8Array(x),e),e},o.UTF8ToString=function(x,L){return x?(function(e,r,c){for(var p=r+c,N=r;e[N]&&!(N>=p);)++N;if(N-r>16&&e.subarray&&Y)return Y.decode(e.subarray(r,N));for(var v="";r<N;){var G=e[r++];if(128&G){var q=63&e[r++];if((224&G)!=192){var rt=63&e[r++];if((G=(240&G)==224?(15&G)<<12|q<<6|rt:(7&G)<<18|q<<12|rt<<6|63&e[r++])<65536)v+=String.fromCharCode(G);else{var $=G-65536;v+=String.fromCharCode(55296|$>>10,56320|1023&$)}}else v+=String.fromCharCode((31&G)<<6|q)}else v+=String.fromCharCode(G)}return v})(H,x,L):""},o.ALLOC_NORMAL=0,W=function x(){xt||O(),xt||(W=x)},o.run=O,o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();O(),A.exports=o,o.unloadRuntime=function(){typeof self<"u"&&delete self.Module,o=F=j=M=H=void 0,delete A.exports}},631:function(A,a,h){var E,o;typeof self<"u",(o=typeof(E=function(){let l=typeof self<"u"?self:this,u={Argon2d:0,Argon2i:1,Argon2id:2};function g(f){if(g._promise)return g._promise;if(g._module)return Promise.resolve(g._module);let B;return B=l.process&&l.process.versions&&l.process.versions.node?Q().then(C=>new Promise(S=>{C.postRun=()=>S(C)})):(l.loadArgon2WasmBinary?l.loadArgon2WasmBinary():Promise.resolve(h(721)).then(C=>(function(S){let y=atob(S),R=new Uint8Array(new ArrayBuffer(y.length));for(let F=0;F<y.length;F++)R[F]=y.charCodeAt(F);return R})(C))).then(C=>{var S,y;return S=C,y=f?(function(R){let F=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*R/65536),256)+256,F),maximum:F})})(f):void 0,new Promise(R=>(l.Module={wasmBinary:S,wasmMemory:y,postRun(){R(Module)}},Q()))}),g._promise=B,B.then(C=>(g._module=C,delete g._promise,C))}function Q(){return l.loadArgon2WasmModule?l.loadArgon2WasmModule():Promise.resolve(h(773))}function b(f,B){return f.allocate(B,"i8",f.ALLOC_NORMAL)}function m(f,B){return b(f,new Uint8Array([...B,0]))}function D(f){if(typeof f!="string")return f;if(typeof TextEncoder=="function")return new TextEncoder().encode(f);if(typeof Buffer=="function")return Buffer.from(f);throw Error("Don't know how to encode UTF8")}return{ArgonType:u,hash:function(f){let B=f.mem||1024;return g(B).then(C=>{let S=f.time||1,y=f.parallelism||1,R=D(f.pass),F=m(C,R),w=R.length,_=D(f.salt),U=m(C,_),M=_.length,H=f.type||u.Argon2d,Y=C.allocate(Array(f.hashLen||24),"i8",C.ALLOC_NORMAL),K=f.secret?b(C,f.secret):0,j=f.secret?f.secret.byteLength:0,st=f.ad?b(C,f.ad):0,J=f.ad?f.ad.byteLength:0,Rt=f.hashLen||24,ot=C._argon2_encodedlen(S,B,y,M,Rt,H),ht=C.allocate(Array(ot+1),"i8",C.ALLOC_NORMAL),W,V,Et;try{V=C._argon2_hash_ext(S,B,y,F,w,U,M,Y,Rt,ht,ot,H,K,j,st,J,19)}catch(At){W=At}if(V!==0||W){try{W||(W=C.UTF8ToString(C._argon2_error_message(V)))}catch{}Et={message:W,code:V}}else{let At="",wt=new Uint8Array(Rt);for(let et=0;et<Rt;et++){let Nt=C.HEAP8[Y+et];wt[et]=Nt,At+=("0"+(255&Nt).toString(16)).slice(-2)}Et={hash:wt,hashHex:At,encoded:C.UTF8ToString(ht)}}try{C._free(F),C._free(U),C._free(Y),C._free(ht),st&&C._free(st),K&&C._free(K)}catch{}if(W)throw Et;return Et})},verify:function(f){return g().then(B=>{let C=D(f.pass),S=m(B,C),y=C.length,R=f.secret?b(B,f.secret):0,F=f.secret?f.secret.byteLength:0,w=f.ad?b(B,f.ad):0,_=f.ad?f.ad.byteLength:0,U=m(B,D(f.encoded)),M,H,Y,K=f.type;if(K===void 0){let j=f.encoded.split("$")[1];j&&(K=u[j=j.replace("a","A")]||u.Argon2d)}try{H=B._argon2_verify_ext(U,S,y,R,F,w,_,K)}catch(j){M=j}if(H||M){try{M||(M=B.UTF8ToString(B._argon2_error_message(H)))}catch{}Y={message:M,code:H}}try{B._free(S),B._free(U)}catch{}if(M)throw Y;return Y})},unloadRuntime:function(){g._module&&(g._module.unloadRuntime(),delete g._promise,delete g._module)}}})=="function"?E.apply(a,[]):E)===void 0||(A.exports=o)},721:function(A,a){A.exports="AGFzbQEAAAABkwESYAN/f38Bf2ABfwF/YAJ/fwBgAn9/AX9gAX8AYAR/f39/AX9gA39/fwBgBH9/f38AYAJ/fgBgAn5/AX5gAn5+AX5gBX9/f39/AGAGf3x/f39/AX9gAABgCH9/f39/f39/AX9gEX9/f39/f39/f39/f39/f39/AX9gBn9/f39/fwF/YA1/f39/f39/f39/f39/AX8CDQIBYQFhAAABYQFiAAEDPDsJCgIAAAIEAQEAAQsGAQAHAAIBAwICAwIIBQECAwEHDQMBBgQGAQEFBQEAAAIEAAAIAQAODwQQAQURAwQFAXABAwMFBwEBgAL//wEGCQF/AUGQo8ACCwcxDAFjAgABZAAhAWUAOwFmAAkBZwAIAWgAOgFpADkBagA4AWsBAAFsADYBbQA1AW4AMwkIAQBBAQsCCzQKwbMBOwgAIAAgAa2KCx4AIAAgAXwgAEIBhkL+////H4MgAUL/////D4N+fAsXAEHwHCgCAEUgAEVyRQRAIAAgARAdCwuDBAEDfyACQYAETwRAIAAgASACEAAaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkEBSARAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALzwEBA38CQCACRQ0AQX8hAyAARSABRXINACAAKQNQQgBSDQACQCAAKALgASIDIAJqQYEBSQ0AIABB4ABqIgUgA2ogAUGAASADayIEEAUaIABCgAEQGiAAIAUQGUEAIQMgAEEANgLgASABIARqIQEgAiAEayICQYEBSQ0AA0AgAEKAARAaIAAgARAZIAFBgAFqIQEgAkGAAWsiAkGAAUsNAAsgACgC4AEhAwsgACADakHgAGogASACEAUaIAAgACgC4AEgAmo2AuABQQAhAwsgAwsJACAAIAE2AAALpwwBB38CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgFBeHEiAGohBQJAIAFBAXENACABQQNxRQ0BIAMgAygCACIBayIDQbAfKAIASQ0BIAAgAWohACADQbQfKAIARwRAIAFB/wFNBEAgAygCCCICIAFBA3YiBEEDdEHIH2pGGiACIAMoAgwiAUYEQEGgH0GgHygCAEF+IAR3cTYCAAwDCyACIAE2AgwgASACNgIIDAILIAMoAhghBgJAIAMgAygCDCIBRwRAIAMoAggiAiABNgIMIAEgAjYCCAwBCwJAIANBFGoiAigCACIEDQAgA0EQaiICKAIAIgQNAEEAIQEMAQsDQCACIQcgBCIBQRRqIgIoAgAiBA0AIAFBEGohAiABKAIQIgQNAAsgB0EANgIACyAGRQ0BAkAgAyADKAIcIgJBAnRB0CFqIgQoAgBGBEAgBCABNgIAIAENAUGkH0GkHygCAEF+IAJ3cTYCAAwDCyAGQRBBFCAGKAIQIANGG2ogATYCACABRQ0CCyABIAY2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0BIAEgAjYCFCACIAE2AhgMAQsgBSgCBCIBQQNxQQNHDQBBqB8gADYCACAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAA8LIAMgBU8NACAFKAIEIgFBAXFFDQACQCABQQJxRQRAIAVBuB8oAgBGBEBBuB8gAzYCAEGsH0GsHygCACAAaiIANgIAIAMgAEEBcjYCBCADQbQfKAIARw0DQagfQQA2AgBBtB9BADYCAA8LIAVBtB8oAgBGBEBBtB8gAzYCAEGoH0GoHygCACAAaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAPCyABQXhxIABqIQACQCABQf8BTQRAIAUoAggiAiABQQN2IgRBA3RByB9qRhogAiAFKAIMIgFGBEBBoB9BoB8oAgBBfiAEd3E2AgAMAgsgAiABNgIMIAEgAjYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiAUcEQCAFKAIIIgJBsB8oAgBJGiACIAE2AgwgASACNgIIDAELAkAgBUEUaiICKAIAIgQNACAFQRBqIgIoAgAiBA0AQQAhAQwBCwNAIAIhByAEIgFBFGoiAigCACIEDQAgAUEQaiECIAEoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiAkECdEHQIWoiBCgCAEYEQCAEIAE2AgAgAQ0BQaQfQaQfKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADQbQfKAIARw0BQagfIAA2AgAPCyAFIAFBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAsgAEH/AU0EQCAAQQN2IgFBA3RByB9qIQACf0GgHygCACICQQEgAXQiAXFFBEBBoB8gASACcjYCACAADAELIAAoAggLIQIgACADNgIIIAIgAzYCDCADIAA2AgwgAyACNgIIDwtBHyECIANCADcCECAAQf///wdNBEAgAEEIdiIBIAFBgP4/akEQdkEIcSIBdCICIAJBgOAfakEQdkEEcSICdCIEIARBgIAPakEQdkECcSIEdEEPdiABIAJyIARyayIBQQF0IAAgAUEVanZBAXFyQRxqIQILIAMgAjYCHCACQQJ0QdAhaiEBAkACQAJAQaQfKAIAIgRBASACdCIHcUUEQEGkHyAEIAdyNgIAIAEgAzYCACADIAE2AhgMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgASgCACEBA0AgASIEKAIEQXhxIABGDQIgAkEddiEBIAJBAXQhAiAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAM2AhAgAyAENgIYCyADIAM2AgwgAyADNgIIDAELIAQoAggiACADNgIMIAQgAzYCCCADQQA2AhggAyAENgIMIAMgADYCCAtBwB9BwB8oAgBBAWsiAEF/IAAbNgIACwuULQEMfyMAQRBrIgwkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQaAfKAIAIgVBECAAQQtqQXhxIABBC0kbIghBA3YiAnYiAUEDcQRAIAFBf3NBAXEgAmoiA0EDdCIBQdAfaigCACIEQQhqIQACQCAEKAIIIgIgAUHIH2oiAUYEQEGgHyAFQX4gA3dxNgIADAELIAIgATYCDCABIAI2AggLIAQgA0EDdCIBQQNyNgIEIAEgBGoiASABKAIEQQFyNgIEDA0LIAhBqB8oAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEHQH2ooAgAiBCgCCCIBIABByB9qIgBGBEBBoB8gBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QcgfaiEHQbQfKAIAIQQCfyAFQQEgAXQiAXFFBEBBoB8gASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0G0HyACNgIAQagfIAM2AgAMDQtBpB8oAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB0CFqKAIAIgEoAgRBeHEgCGshAyABIQIDQAJAIAIoAhAiAEUEQCACKAIUIgBFDQELIAAoAgRBeHEgCGsiAiADIAIgA0kiAhshAyAAIAEgAhshASAAIQIMAQsLIAEgCGoiCSABTQ0CIAEoAhghCyABIAEoAgwiBEcEQCABKAIIIgBBsB8oAgBJGiAAIAQ2AgwgBCAANgIIDAwLIAFBFGoiAigCACIARQRAIAEoAhAiAEUNBCABQRBqIQILA0AgAiEHIAAiBEEUaiICKAIAIgANACAEQRBqIQIgBCgCECIADQALIAdBADYCAAwLC0F/IQggAEG/f0sNACAAQQtqIgBBeHEhCEGkHygCACIJRQ0AQQAgCGshAwJAAkACQAJ/QQAgCEGAAkkNABpBHyAIQf///wdLDQAaIABBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAIIABBFWp2QQFxckEcagsiBUECdEHQIWooAgAiAkUEQEEAIQAMAQtBACEAIAhBAEEZIAVBAXZrIAVBH0YbdCEBA0ACQCACKAIEQXhxIAhrIgcgA08NACACIQQgByIDDQBBACEDIAIhAAwDCyAAIAIoAhQiByAHIAIgAUEddkEEcWooAhAiAkYbIAAgBxshACABQQF0IQEgAg0ACwsgACAEckUEQEEAIQRBAiAFdCIAQQAgAGtyIAlxIgBFDQMgAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqQQJ0QdAhaigCACEACyAARQ0BCwNAIAAoAgRBeHEgCGsiASADSSECIAEgAyACGyEDIAAgBCACGyEEIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIARFDQAgA0GoHygCACAIa08NACAEIAhqIgYgBE0NASAEKAIYIQUgBCAEKAIMIgFHBEAgBCgCCCIAQbAfKAIASRogACABNgIMIAEgADYCCAwKCyAEQRRqIgIoAgAiAEUEQCAEKAIQIgBFDQQgBEEQaiECCwNAIAIhByAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAHQQA2AgAMCQsgCEGoHygCACICTQRAQbQfKAIAIQMCQCACIAhrIgFBEE8EQEGoHyABNgIAQbQfIAMgCGoiADYCACAAIAFBAXI2AgQgAiADaiABNgIAIAMgCEEDcjYCBAwBC0G0H0EANgIAQagfQQA2AgAgAyACQQNyNgIEIAIgA2oiACAAKAIEQQFyNgIECyADQQhqIQAMCwsgCEGsHygCACIGSQRAQawfIAYgCGsiATYCAEG4H0G4HygCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMCwtBACEAIAhBL2oiCQJ/QfgiKAIABEBBgCMoAgAMAQtBhCNCfzcCAEH8IkKAoICAgIAENwIAQfgiIAxBDGpBcHFB2KrVqgVzNgIAQYwjQQA2AgBB3CJBADYCAEGAIAsiAWoiBUEAIAFrIgdxIgIgCE0NCkHYIigCACIEBEBB0CIoAgAiAyACaiIBIANNIAEgBEtyDQsLQdwiLQAAQQRxDQUCQAJAQbgfKAIAIgMEQEHgIiEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiADSw0DCyAAKAIIIgANAAsLQQAQDCIBQX9GDQYgAiEFQfwiKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITSAFQf7///8HS3INBkHYIigCACIEBEBB0CIoAgAiAyAFaiIAIANNIAAgBEtyDQcLIAUQDCIAIAFHDQEMCAsgBSAGayAHcSIFQf7///8HSw0FIAUQDCIBIAAoAgAgACgCBGpGDQQgASEACyAAQX9GIAhBMGogBU1yRQRAQYAjKAIAIgEgCSAFa2pBACABa3EiAUH+////B0sEQCAAIQEMCAsgARAMQX9HBEAgASAFaiEFIAAhAQwIC0EAIAVrEAwaDAULIAAiAUF/Rw0GDAQLAAtBACEEDAcLQQAhAQwFCyABQX9HDQILQdwiQdwiKAIAQQRyNgIACyACQf7///8HSw0BIAIQDCIBQX9GQQAQDCIAQX9GciAAIAFNcg0BIAAgAWsiBSAIQShqTQ0BC0HQIkHQIigCACAFaiIANgIAQdQiKAIAIABJBEBB1CIgADYCAAsCQAJAAkBBuB8oAgAiBwRAQeAiIQADQCABIAAoAgAiAyAAKAIEIgJqRg0CIAAoAggiAA0ACwwCC0GwHygCACIAQQAgACABTRtFBEBBsB8gATYCAAtBACEAQeQiIAU2AgBB4CIgATYCAEHAH0F/NgIAQcQfQfgiKAIANgIAQewiQQA2AgADQCAAQQN0IgNB0B9qIANByB9qIgI2AgAgA0HUH2ogAjYCACAAQQFqIgBBIEcNAAtBrB8gBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQbgfIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQbwfQYgjKAIANgIADAILIAAtAAxBCHEgAyAHS3IgASAHTXINACAAIAIgBWo2AgRBuB8gB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEGsH0GsHygCACAFaiIBIABrIgA2AgAgAiAAQQFyNgIEIAEgB2pBKDYCBEG8H0GIIygCADYCAAwBC0GwHygCACABSwRAQbAfIAE2AgALIAEgBWohAkHgIiEAAkACQAJAAkACQAJAA0AgAiAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HgIiEAA0AgByAAKAIAIgJPBEAgAiAAKAIEaiIEIAdLDQMLIAAoAgghAAwACwALIAAgATYCACAAIAAoAgQgBWo2AgQgAUF4IAFrQQdxQQAgAUEIakEHcRtqIgkgCEEDcjYCBCACQXggAmtBB3FBACACQQhqQQdxG2oiBSAIIAlqIgZrIQIgBSAHRgRAQbgfIAY2AgBBrB9BrB8oAgAgAmoiADYCACAGIABBAXI2AgQMAwsgBUG0HygCAEYEQEG0HyAGNgIAQagfQagfKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RByB9qRhogAyAFKAIMIgFGBEBBoB9BoB8oAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QdAhaiIAKAIARgRAIAAgATYCACABDQFBpB9BpB8oAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEHIH2ohAgJ/QaAfKAIAIgFBASAAdCIAcUUEQEGgHyAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QdAhaiEEAkBBpB8oAgAiA0EBIAB0IgFxRQRAQaQfIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtBrB8gBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQbgfIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQbwfQYgjKAIANgIAIAcgBEEnIARrQQdxQQAgBEEna0EHcRtqQS9rIgAgACAHQRBqSRsiAkEbNgIEIAJB6CIpAgA3AhAgAkHgIikCADcCCEHoIiACQQhqNgIAQeQiIAU2AgBB4CIgATYCAEHsIkEANgIAIAJBGGohAANAIABBBzYCBCAAQQhqIQEgAEEEaiEAIAEgBEkNAAsgAiAHRg0DIAIgAigCBEF+cTYCBCAHIAIgB2siBEEBcjYCBCACIAQ2AgAgBEH/AU0EQCAEQQN2IgBBA3RByB9qIQICf0GgHygCACIBQQEgAHQiAHFFBEBBoB8gACABcjYCACACDAELIAIoAggLIQAgAiAHNgIIIAAgBzYCDCAHIAI2AgwgByAANgIIDAQLQR8hACAHQgA3AhAgBEH///8HTQRAIARBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAEIABBFWp2QQFxckEcaiEACyAHIAA2AhwgAEECdEHQIWohAwJAQaQfKAIAIgJBASAAdCIBcUUEQEGkHyABIAJyNgIAIAMgBzYCACAHIAM2AhgMAQsgBEEAQRkgAEEBdmsgAEEfRht0IQAgAygCACEBA0AgASICKAIEQXhxIARGDQQgAEEddiEBIABBAXQhACACIAFBBHFqIgMoAhAiAQ0ACyADIAc2AhAgByACNgIYCyAHIAc2AgwgByAHNgIIDAMLIAMoAggiACAGNgIMIAMgBjYCCCAGQQA2AhggBiADNgIMIAYgADYCCAsgCUEIaiEADAULIAIoAggiACAHNgIMIAIgBzYCCCAHQQA2AhggByACNgIMIAcgADYCCAtBrB8oAgAiACAITQ0AQawfIAAgCGsiATYCAEG4H0G4HygCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMAwtB3B5BMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QdAhaiIAKAIAIARGBEAgACABNgIAIAENAUGkHyAJQX4gAndxIgk2AgAMAgsgBUEQQRQgBSgCECAERhtqIAE2AgAgAUUNAQsgASAFNgIYIAQoAhAiAARAIAEgADYCECAAIAE2AhgLIAQoAhQiAEUNACABIAA2AhQgACABNgIYCwJAIANBD00EQCAEIAMgCGoiAEEDcjYCBCAAIARqIgAgACgCBEEBcjYCBAwBCyAEIAhBA3I2AgQgBiADQQFyNgIEIAMgBmogAzYCACADQf8BTQRAIANBA3YiAEEDdEHIH2ohAgJ/QaAfKAIAIgFBASAAdCIAcUUEQEGgHyAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAQtBHyEAIANB////B00EQCADQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgAyAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QdAhaiECAkACQCAJQQEgAHQiAXFFBEBBpB8gASAJcjYCACACIAY2AgAgBiACNgIYDAELIANBAEEZIABBAXZrIABBH0YbdCEAIAIoAgAhCANAIAgiASgCBEF4cSADRg0CIABBHXYhAiAAQQF0IQAgASACQQRxaiICKAIQIggNAAsgAiAGNgIQIAYgATYCGAsgBiAGNgIMIAYgBjYCCAwBCyABKAIIIgAgBjYCDCABIAY2AgggBkEANgIYIAYgATYCDCAGIAA2AggLIARBCGohAAwBCwJAIAtFDQACQCABKAIcIgJBAnRB0CFqIgAoAgAgAUYEQCAAIAQ2AgAgBA0BQaQfIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QcgfaiEEQbQfKAIAIQICf0EBIAB0IgAgBXFFBEBBoB8gACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0G0HyAJNgIAQagfIAM2AgALIAFBCGohAAsgDEEQaiQAIAALfwEDfyAAIQECQCAAQQNxBEADQCABLQAARQ0CIAFBAWoiAUEDcQ0ACwsDQCABIgJBBGohASACKAIAIgNBf3MgA0GBgoQIa3FBgIGChHhxRQ0ACyADQf8BcUUEQCACIABrDwsDQCACLQABIQMgAkEBaiIBIQIgAw0ACwsgASAAawvyAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAtPAQJ/QdgeKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQAUUNAQtB2B4gADYCACABDwtB3B5BMDYCAEF/C20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxALGiABRQRAA0AgACAFQYACEA4gAkGAAmsiAkH/AUsNAAsLIAAgBSACEA4LIAVBgAJqJAALnQIBA38gAC0AAEEgcUUEQAJAIAEhBAJAIAIgACIBKAIQIgAEfyAABQJ/IAEiACABLQBKIgNBAWsgA3I6AEogASgCACIDQQhxBEAgACADQSByNgIAQX8MAQsgAEIANwIEIAAgACgCLCIDNgIcIAAgAzYCFCAAIAMgACgCMGo2AhBBAAsNASABKAIQCyABKAIUIgVrSwRAIAEgBCACIAEoAiQRAAAaDAILAn8gASwAS0F/SgRAIAIhAANAIAIgACIDRQ0CGiAEIANBAWsiAGotAABBCkcNAAsgASAEIAMgASgCJBEAACADSQ0CIAMgBGohBCABKAIUIQUgAiADawwBCyACCyEAIAUgBCAAEAUaIAEgASgCFCAAajYCFAsLCwsKACAAQTBrQQpJC2MBAn8gAkUEQEEADwsCfyAALQAAIgMEQANAAkACQCABLQAAIgRFDQAgAkEBayICRQ0AIAMgBEYNAQsgAwwDCyABQQFqIQEgAC0AASEDIABBAWohACADDQALC0EACyABLQAAawucDQIQfhB/IwBBgBBrIhQkACAUQYAIaiABEBcgFEGACGogABAWIBQgFEGACGoQFyADBEAgFCACEBYLQQAhAEEAIQEDQCAUQYAIaiABQQd0IgNBwAByaiIVKQMAIBRBgAhqIANB4AByaiIWKQMAIBRBgAhqIANqIhcpAwAgFEGACGogA0EgcmoiGCkDACIIEAMiBIVBIBACIgUQAyIGIAiFQRgQAiEIIAggBiAFIAQgCBADIgeFQRAQAiIKEAMiEYVBPxACIQggFEGACGogA0HIAHJqIhkpAwAgFEGACGogA0HoAHJqIhopAwAgFEGACGogA0EIcmoiGykDACAUQYAIaiADQShyaiIcKQMAIgQQAyIFhUEgEAIiBhADIgsgBIVBGBACIQQgBCALIAYgBSAEEAMiC4VBEBACIhIQAyIThUE/EAIhBCAUQYAIaiADQdAAcmoiHSkDACAUQYAIaiADQfAAcmoiHikDACAUQYAIaiADQRByaiIfKQMAIBRBgAhqIANBMHJqIiApAwAiBRADIgaFQSAQAiIMEAMiDSAFhUEYEAIhBSAFIA0gDCAGIAUQAyINhUEQEAIiDBADIg6FQT8QAiEFIBRBgAhqIANB2AByaiIhKQMAIBRBgAhqIANB+AByaiIiKQMAIBRBgAhqIANBGHJqIiMpAwAgFEGACGogA0E4cmoiAykDACIGEAMiD4VBIBACIgkQAyIQIAaFQRgQAiEGIAYgECAJIA8gBhADIg+FQRAQAiIJEAMiEIVBPxACIQYgFyAHIAQQAyIHIAQgDiAHIAmFQSAQAiIHEAMiDoVBGBACIgQQAyIJNwMAICIgByAJhUEQEAIiBzcDACAdIA4gBxADIgc3AwAgHCAEIAeFQT8QAjcDACAbIAsgBRADIgQgBSAQIAQgCoVBIBACIgQQAyIHhUEYEAIiBRADIgo3AwAgFiAEIAqFQRAQAiIENwMAICEgByAEEAMiBDcDACAgIAQgBYVBPxACNwMAIB8gDSAGEAMiBCAGIBEgBCAShUEgEAIiBBADIgWFQRgQAiIGEAMiBzcDACAaIAQgB4VBEBACIgQ3AwAgFSAFIAQQAyIENwMAIAMgBCAGhUE/EAI3AwAgIyAPIAgQAyIEIAggEyAEIAyFQSAQAiIEEAMiBYVBGBACIggQAyIGNwMAIB4gBCAGhUEQEAIiBDcDACAZIAUgBBADIgQ3AwAgGCAEIAiFQT8QAjcDACABQQFqIgFBCEcNAAsDQCAAQQR0IgMgFEGACGpqIgEiFUGABGopAwAgASkDgAYgASkDACABKQOAAiIIEAMiBIVBIBACIgUQAyIGIAiFQRgQAiEIIAggBiAFIAQgCBADIgeFQRAQAiIKEAMiEYVBPxACIQggASkDiAQgASkDiAYgFEGACGogA0EIcmoiAykDACABKQOIAiIEEAMiBYVBIBACIgYQAyILIASFQRgQAiEEIAQgCyAGIAUgBBADIguFQRAQAiISEAMiE4VBPxACIQQgASkDgAUgASkDgAcgASkDgAEgASkDgAMiBRADIgaFQSAQAiIMEAMiDSAFhUEYEAIhBSAFIA0gDCAGIAUQAyINhUEQEAIiDBADIg6FQT8QAiEFIAEpA4gFIAEpA4gHIAEpA4gBIAEpA4gDIgYQAyIPhUEgEAIiCRADIhAgBoVBGBACIQYgBiAQIAkgDyAGEAMiD4VBEBACIgkQAyIQhUE/EAIhBiABIAcgBBADIgcgBCAOIAcgCYVBIBACIgcQAyIOhUEYEAIiBBADIgk3AwAgASAHIAmFQRAQAiIHNwOIByABIA4gBxADIgc3A4AFIAEgBCAHhUE/EAI3A4gCIAMgCyAFEAMiBCAFIBAgBCAKhUEgEAIiBBADIgeFQRgQAiIFEAMiCjcDACABIAQgCoVBEBACIgQ3A4AGIAEgByAEEAMiBDcDiAUgASAEIAWFQT8QAjcDgAMgASANIAYQAyIEIAYgESAEIBKFQSAQAiIEEAMiBYVBGBACIgYQAyIHNwOAASABIAQgB4VBEBACIgQ3A4gGIBUgBSAEEAMiBDcDgAQgASAEIAaFQT8QAjcDiAMgASAPIAgQAyIEIAggEyAEIAyFQSAQAiIEEAMiBYVBGBACIggQAyIGNwOIASABIAQgBoVBEBACIgQ3A4AHIAEgBSAEEAMiBDcDiAQgASAEIAiFQT8QAjcDgAIgAEEBaiIAQQhHDQALIAIgFBAXIAIgFEGACGoQFiAUQYAQaiQAC8MBAQN/IwBBQGoiAyQAIANBAEHAABALIQRBfyEDAkAgAEUgAUVyDQAgACgC5AEgAksNACAAKQNQQgBSDQAgACAANQLgARAaIAAQJUEAIQMgAEHgAGoiAiAAKALgASIFakEAQYABIAVrEAsaIAAgAhAZA0AgBCADQQN0IgVqIAAgBWopAwAQMiADQQFqIgNBCEcNAAsgASAEIAAoAuQBEAUaIARBwAAQBCACQYABEAQgAEHAABAEQQAhAwsgBEFAayQAIAML1AMBBn8jAEEQayIEJAAgBCABNgIMIwBBoAFrIgMkACADQQhqQYAYQZABEAUaIAMgADYCNCADIAA2AhwgA0F+IABrIgJB/////wcgAkH/////B0kbIgU2AjggAyAAIAVqIgA2AiQgAyAANgIYIANBCGohACMAQdABayICJAAgAiABNgLMASACQaABakEAQSgQCxogAiACKALMATYCyAECQEEAIAJByAFqIAJB0ABqIAJBoAFqEBtBAEgNACAAKAJMQQBOIQYgACgCACEBIAAsAEpBAEwEQCAAIAFBX3E2AgALIAFBIHEhBwJ/IAAoAjAEQCAAIAJByAFqIAJB0ABqIAJBoAFqEBsMAQsgAEHQADYCMCAAIAJB0ABqNgIQIAAgAjYCHCAAIAI2AhQgACgCLCEBIAAgAjYCLCAAIAJByAFqIAJB0ABqIAJBoAFqEBsgAUUNABogAEEAQQAgACgCJBEAABogAEEANgIwIAAgATYCLCAAQQA2AhwgAEEANgIQIAAoAhQaIABBADYCFEEACxogACAAKAIAIAdyNgIAIAZFDQALIAJB0AFqJAAgBQRAIAMoAhwiACAAIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAs0AQF/QQEhAQJAIABBCkkNAEECIQEDQCAAQeQASQ0BIAFBAWohASAAQQpuIQAMAAsACyABC4UBAQd/AkAgAC0AACIGQTBrQf8BcUEJSw0AIAYhAgNAIAQhByADQZmz5swBSw0BIAJB/wFxQTBrIgIgA0EKbCIEQX9zSw0BIAIgBGohAyAAIAdBAWoiBGoiCC0AACICQTBrQf8BcUEKSQ0ACyAGQTBGQQAgBxsNACABIAM2AgAgCCEFCyAFCzEBA38DQCAAIAJBA3QiA2oiBCAEKQMAIAEgA2opAwCFNwMAIAJBAWoiAkGAAUcNAAsLDAAgACABQYAIEAUaC14BAn8jAEFAaiICJABBfyEDAkAgAEUNACABQQFrQcAATwRAIAAQNwwBCyACQQE6AAMgAkGAAjsAASACIAE6AAAgAkEEckEAQTwQCxogACACEDwhAwsgAkFAayQAIAMLpAoCA38RfiMAQYACayIDJAADQCACQQN0IgQgA0GAAWpqIAEgBGopAAA3AwAgAkEBaiICQRBHDQALIAMgAEHAABAFIQEgACkDWEL5wvibkaOz8NsAhSELIAApA1BC6/qG2r+19sEfhSEMIAApA0hCn9j52cKR2oKbf4UhDSAAKQNAQtGFmu/6z5SH0QCFIQ5C8e30+KWn/aelfyEPQqvw0/Sv7ry3PCESQrvOqqbY0Ouzu38hEEKIkvOd/8z5hOoAIQVBACEDIAEpAzghBiABKQMYIRQgASkDMCEHIAEpAxAhFSABKQMoIQggASkDCCERIAEpAyAhCSABKQMAIQoDQCAJIAUgDiABQYABaiADQQZ0IgJBwAhqKAIAQQN0aikDACAJIAp8fCIKhUEgEAIiDnwiE4VBGBACIQUgBSATIA4gAUGAAWogAkHECGooAgBBA3RqKQMAIAUgCnx8IgqFQRAQAiIOfCIThUE/EAIhCSAIIBAgDSABQYABaiACQcgIaigCAEEDdGopAwAgCCARfHwiEYVBIBACIg18IhCFQRgQAiEFIAUgECANIAFBgAFqIAJBzAhqKAIAQQN0aikDACAFIBF8fCIRhUEQEAIiDXwiEIVBPxACIQUgEiAMIAFBgAFqIAJB0AhqKAIAQQN0aikDACAHIBV8fCIIhUEgEAIiDHwiEiAHhUEYEAIhByAHIBIgDCABQYABaiACQdQIaigCAEEDdGopAwAgByAIfHwiFYVBEBACIgx8IgiFQT8QAiEHIA8gCyABQYABaiACQdgIaigCAEEDdGopAwAgBiAUfHwiEoVBIBACIgt8Ig8gBoVBGBACIQYgBiALIAFBgAFqIAJB3AhqKAIAQQN0aikDACAGIBJ8fCIUhUEQEAIiCyAPfCIPhUE/EAIhBiAFIAggCyABQYABaiACQeAIaigCAEEDdGopAwAgBSAKfHwiCoVBIBACIgt8IgiFQRgQAiEFIAUgCCALIAFBgAFqIAJB5AhqKAIAQQN0aikDACAFIAp8fCIKhUEQEAIiC3wiEoVBPxACIQggByAPIA4gAUGAAWogAkHoCGooAgBBA3RqKQMAIAcgEXx8Ig+FQSAQAiIOfCIRhUEYEAIhBSAFIBEgDiABQYABaiACQewIaigCAEEDdGopAwAgBSAPfHwiEYVBEBACIg58Ig+FQT8QAiEHIAYgDSABQYABaiACQfAIaigCAEEDdGopAwAgBiAVfHwiBYVBIBACIg0gE3wiE4VBGBACIQYgBiATIA0gAUGAAWogAkH0CGooAgBBA3RqKQMAIAUgBnx8IhWFQRAQAiINfCIFhUE/EAIhBiAJIBAgDCABQYABaiACQfgIaigCAEEDdGopAwAgCSAUfHwiEIVBIBACIgx8IhOFQRgQAiEJIAkgEyAMIAFBgAFqIAJB/AhqKAIAQQN0aikDACAJIBB8fCIUhUEQEAIiDHwiEIVBPxACIQkgA0EBaiIDQQxHDQALIAEgDjcDYCABIAk3AyAgASANNwNoIAEgCDcDKCABIBE3AwggASAQNwNIIAEgDDcDcCABIAc3AzAgASAVNwMQIAEgEjcDUCABIAs3A3ggASAGNwM4IAEgFDcDGCABIA83A1ggASAFNwNAIAEgCjcDACAAIAogACkDAIUgBYU3AwBBASECA0AgACACQQN0IgNqIgQgASADaiIDKQMAIAQpAwCFIANBQGspAwCFNwMAIAJBAWoiAkEIRw0ACyABQYACaiQACyYBAX4gACABIAApA0AiAXwiAjcDQCAAIAApA0ggASACVq18NwNIC6AUAhB/An4jAEHQAGsiBiQAIAZByg42AkwgBkE3aiETIAZBOGohEANAAkAgDkEASA0AQf////8HIA5rIARIBEBB3B5BPTYCAEF/IQ4MAQsgBCAOaiEOCyAGKAJMIgchBAJAAkACQAJAAkACQAJAAkAgBgJ/AkAgBy0AACIFBEADQAJAAkAgBUH/AXEiBUUEQCAEIQUMAQsgBUElRw0BIAQhBQNAIAQtAAFBJUcNASAGIARBAmoiCDYCTCAFQQFqIQUgBC0AAiELIAghBCALQSVGDQALCyAFIAdrIQQgAARAIAAgByAEEA4LIAQNDSAGKAJMLAABEA8hBSAGKAJMIQQgBUUNAyAELQACQSRHDQMgBCwAAUEwayEPQQEhESAEQQNqDAQLIAYgBEEBaiIINgJMIAQtAAEhBSAIIQQMAAsACyAOIQwgAA0IIBFFDQJBASEEA0AgAyAEQQJ0aigCACIABEAgAiAEQQN0aiAAIAEQJEEBIQwgBEEBaiIEQQpHDQEMCgsLQQEhDCAEQQpPDQgDQCADIARBAnRqKAIADQggBEEBaiIEQQpHDQALDAgLQX8hDyAEQQFqCyIENgJMQQAhCAJAIAQsAAAiDUEgayIFQR9LDQBBASAFdCIFQYnRBHFFDQADQAJAIAYgBEEBaiIINgJMIAQsAAEiDUEgayIEQSBPDQBBASAEdCIEQYnRBHFFDQAgBCAFciEFIAghBAwBCwsgCCEEIAUhCAsCQCANQSpGBEAgBgJ/AkAgBCwAARAPRQ0AIAYoAkwiBC0AAkEkRw0AIAQsAAFBAnQgA2pBwAFrQQo2AgAgBCwAAUEDdCACakGAA2soAgAhCkEBIREgBEEDagwBCyARDQhBACERQQAhCiAABEAgASABKAIAIgRBBGo2AgAgBCgCACEKCyAGKAJMQQFqCyIENgJMIApBf0oNAUEAIAprIQogCEGAwAByIQgMAQsgBkHMAGoQIyIKQQBIDQYgBigCTCEEC0F/IQkCQCAELQAAQS5HDQAgBC0AAUEqRgRAAkAgBCwAAhAPRQ0AIAYoAkwiBC0AA0EkRw0AIAQsAAJBAnQgA2pBwAFrQQo2AgAgBCwAAkEDdCACakGAA2soAgAhCSAGIARBBGoiBDYCTAwCCyARDQcgAAR/IAEgASgCACIEQQRqNgIAIAQoAgAFQQALIQkgBiAGKAJMQQJqIgQ2AkwMAQsgBiAEQQFqNgJMIAZBzABqECMhCSAGKAJMIQQLQQAhBQNAIAUhEkF/IQwgBCwAAEHBAGtBOUsNByAGIARBAWoiDTYCTCAELAAAIQUgDSEEIAUgEkE6bGpBzxhqLQAAIgVBAWtBCEkNAAsgBUETRg0CIAVFDQYgD0EATgRAIAMgD0ECdGogBTYCACAGIAIgD0EDdGopAwA3A0AMBAsgAA0BC0EAIQwMBQsgBkFAayAFIAEQJCAGKAJMIQ0MAgsgD0F/Sg0DC0EAIQQgAEUNBAsgCEH//3txIgsgCCAIQYDAAHEbIQVBACEMQcAOIQ8gECEIAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgDUEBaywAACIEQV9xIAQgBEEPcUEDRhsgBCASGyIEQdgAaw4hBBISEhISEhISDhIPBg4ODhIGEhISEgIFAxISCRIBEhIEAAsCQCAEQcEAaw4HDhILEg4ODgALIARB0wBGDQkMEQsgBikDQCEUQcAODAULQQAhBAJAAkACQAJAAkACQAJAIBJB/wFxDggAAQIDBBcFBhcLIAYoAkAgDjYCAAwWCyAGKAJAIA42AgAMFQsgBigCQCAOrDcDAAwUCyAGKAJAIA47AQAMEwsgBigCQCAOOgAADBILIAYoAkAgDjYCAAwRCyAGKAJAIA6sNwMADBALIAlBCCAJQQhLGyEJIAVBCHIhBUH4ACEECyAQIQcgBEEgcSELIAYpA0AiFFBFBEADQCAHQQFrIgcgFKdBD3FB4BxqLQAAIAtyOgAAIBRCD1YhDSAUQgSIIRQgDQ0ACwsgBUEIcUUgBikDQFByDQMgBEEEdkHADmohD0ECIQwMAwsgECEEIAYpA0AiFFBFBEADQCAEQQFrIgQgFKdBB3FBMHI6AAAgFEIHViEHIBRCA4ghFCAHDQALCyAEIQcgBUEIcUUNAiAJIBAgB2siBEEBaiAEIAlIGyEJDAILIAYpA0AiFEJ/VwRAIAZCACAUfSIUNwNAQQEhDEHADgwBCyAFQYAQcQRAQQEhDEHBDgwBC0HCDkHADiAFQQFxIgwbCyEPIBAhBAJAIBRCgICAgBBUBEAgFCEVDAELA0AgBEEBayIEIBQgFEIKgCIVQgp+fadBMHI6AAAgFEL/////nwFWIQcgFSEUIAcNAAsLIBWnIgcEQANAIARBAWsiBCAHIAdBCm4iC0EKbGtBMHI6AAAgB0EJSyENIAshByANDQALCyAEIQcLIAVB//97cSAFIAlBf0obIQUgBikDQCIUQgBSIAlyRQRAQQAhCSAQIQcMCgsgCSAUUCAQIAdraiIEIAQgCUgbIQkMCQsCfyAJIgRBAEchCAJAAkACQCAGKAJAIgVB4xYgBRsiByIFQQNxRSAERXINAANAIAUtAABFDQIgBEEBayIEQQBHIQggBUEBaiIFQQNxRQ0BIAQNAAsLIAhFDQELAkAgBS0AAEUgBEEESXINAANAIAUoAgAiCEF/cyAIQYGChAhrcUGAgYKEeHENASAFQQRqIQUgBEEEayIEQQNLDQALCyAERQ0AA0AgBSAFLQAARQ0CGiAFQQFqIQUgBEEBayIEDQALC0EACyIEIAcgCWogBBshCCALIQUgBCAHayAJIAQbIQkMCAsgCQRAIAYoAkAMAgtBACEEIABBICAKQQAgBRANDAILIAZBADYCDCAGIAYpA0A+AgggBiAGQQhqNgJAQX8hCSAGQQhqCyEIQQAhBAJAA0AgCCgCACIHRQ0BIAZBBGogBxAiIgdBAEgiCyAHIAkgBGtLckUEQCAIQQRqIQggCSAEIAdqIgRLDQEMAgsLQX8hDCALDQULIABBICAKIAQgBRANIARFBEBBACEEDAELQQAhCCAGKAJAIQ0DQCANKAIAIgdFDQEgBkEEaiAHECIiByAIaiIIIARKDQEgACAGQQRqIAcQDiANQQRqIQ0gBCAISw0ACwsgAEEgIAogBCAFQYDAAHMQDSAKIAQgBCAKSBshBAwFCyAAIAYrA0AgCiAJIAUgBEEAEQwAIQQMBAsgBiAGKQNAPAA3QQEhCSATIQcgCyEFDAILQX8hDAsgBkHQAGokACAMDwsgAEEgIAwgCCAHayILIAkgCSALSBsiCWoiCCAKIAggCkobIgQgCCAFEA0gACAPIAwQDiAAQTAgBCAIIAVBgIAEcxANIABBMCAJIAtBABANIAAgByALEA4gAEEgIAQgCCAFQYDAAHMQDQwACwALkwIBAn8gAEUEQEFnDwsgACgCAEUEQEF/DwsCQAJ/QX4gACgCBEEESQ0AGiAAKAIIRQRAQW4gACgCDA0BGgsgACgCFCEBIAAoAhBFDQFBeiABQQhJDQAaIAAoAhhFBEBBbCAAKAIcDQEaCyAAKAIgRQRAQWsgACgCJA0BGgtBciAAKAIsIgFBCEkNABpBcSABQYCAgAFLDQAaQXIgASAAKAIwIgJBA3RJDQAaIAAoAihFBEBBdA8LIAJFBEBBcA8LQW8gAkH///8HSw0AGiAAKAI0IgFFBEBBZA8LQWMgAUH///8HSw0AGiAAKAJAIQECQCAAKAI8BEAgAQ0BQWkPC0FoIAENARoLQQALDwtBbUF6IAEbCzgBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIMQQAgAigCCEH8FygCABEAABogAkEQaiQAC4MSAhN/An4jAEEwayIJJAACQCAAEBwiBA0AQWYhBCABQQJLDQAgACgCLCEDIAAoAjAhBCAAKAI4IQIgCUEANgIAIAkgAjYCBCAAKAIoIQIgCSAENgIYIAkgAjYCCCAJIARBA3QiAiADIAIgA0sbIARBAnQiAm4iAzYCECAJIANBAnQ2AhQgCSACIANsNgIMIAAoAjQhAyAJIAE2AiAgCSADNgIcIAMgBEsEQCAJIAQ2AhwLIwBB0ABrIgskAEFnIQQCQCAJIgFFIAAiA0VyDQAgASADNgIoIAMhBSABKAIMIQZBaiECAkAgASIERQ0AIAatQgqGIhVCIIinDQAgFachAgJAIAUoAjwiBQRAIAQgAiAFEQMAGiAEKAIAIQIMAQsgBCACEAkiAjYCAAtBAEFqIAIbIQILIAIiBA0AIAEoAiAhBSMAQYACayICJAAgA0UgCyIERXJFBEAgAkEQakHAABAYGiACQQxqIAMoAjAQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAgQQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAiwQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAigQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAjgQByACQRBqIAJBDGpBBBAGGiACQQxqIAUQByACQRBqIAJBDGpBBBAGGiACQQxqIAMoAgwQByACQRBqIAJBDGpBBBAGGgJAIAMoAggiBUUNACACQRBqIAUgAygCDBAGGiADLQBEQQFxRQ0AIAMoAgggAygCDBAdIANBADYCDAsgAkEMaiADKAIUEAcgAkEQaiACQQxqQQQQBhogAygCECIFBEAgAkEQaiAFIAMoAhQQBhoLIAJBDGogAygCHBAHIAJBEGogAkEMakEEEAYaAkAgAygCGCIFRQ0AIAJBEGogBSADKAIcEAYaIAMtAERBAnFFDQAgAygCGCADKAIcEB0gA0EANgIcCyACQQxqIAMoAiQQByACQRBqIAJBDGpBBBAGGiADKAIgIgUEQCACQRBqIAUgAygCJBAGGgsgAkEQaiAEQcAAEBIaCyACQYACaiQAIAtBQGtBCBAEQQAhAiMAQYAIayIDJAAgASgCGARAIARBxABqIQYgBEFAayEFA0AgBUEAEAcgBiACEAcgA0GACCAEQcgAECAgASgCACABKAIUIAJsQQp0aiADEC4gBUEBEAcgA0GACCAEQcgAECAgASgCACABKAIUIAJsQQp0akGACGogAxAuIAJBAWoiAiABKAIYSQ0ACwsgA0GACBAEIANBgAhqJAAgC0HIABAEQQAhBAsgC0HQAGokACAEDQBBZyEEAkAgCUUNACABKAIYRQ0AIwBBIGsiBSQAIAEiCygCCARAIAsoAhghBANAIAQhA0EAIQ8DQEEAIRBBACECIAMEQANAIAUgDzoAGCAFQQA2AhwgBSAFKQMYNwMIIAUgEjYCECAFIBA2AhQgBSAFKQMQNwMAIAUhBEEAIREjAEGAGGsiByQAAkAgCyIDRQ0AAkACQAJAAn8CfwJAAkACQCADKAIgQQFrDgICAQALIAQoAgAhCEEADAMLIAQoAgANA0EAIAQtAAgiDEECSQ0BGiAELQAIIghFQQF0IQwMBQsgBC0ACCEMIAQoAgALIQggBxAvIAdBgAhqEC8gByAIrTcDgAggBDUCBCEVIAcgDK1C/wGDNwOQCCAHIBU3A4gIIAcgAzUCDDcDmAggByADNQIINwOgCCAHIAM1AiA3A6gIQQELIREgCEUNAQsgBC0ACCEIQQAhDAwBCyAELQAIIghFQQF0IQwgCCARRXINACAHQYAQaiAHQYAIaiAHECZBAiEMQQAhCAsgDCADKAIQIgZPDQBBfyADKAIUIgJBAWsgAiAEKAIEbCAMaiAGIAhB/wFxbGoiCCACcBsgCGohBgNAIAhBAWsgBiAIIAJwQQFGGyEOAn8gEQRAIAxB/wBxIgJFBEAgB0GAEGogB0GACGogBxAmCyAHQYAQaiACQQN0agwBCyADKAIAIA5BCnRqCyECIAMoAhghCiACKQMAIRUgBCAMNgIMIAMhBiAVpyEUIBVCIIinIApwrSIVIBUgBDUCBCIVIAQtAAgbIAQoAgAbIhYgFVEhCgJ+IAQiAigCAEUEQCACLQAIIg1FBEAgAigCDEEBayEKQgAMAgsgBigCECANbCENIAIoAgwhAiAKBEAgAiANakEBayEKQgAMAgsgDSACRWshCkIADAELIAYoAhAhDSAGKAIUIRMCfyAKBEAgAigCDCATIA1Bf3NqagwBCyATIA1rIAIoAgxFawshCkIAIAItAAgiAkEDRg0AGiANIAJBAWpsrQshFSAVIApBAWutfCAKrSAUrSIVIBV+QiCIfkIgiH0gBjUCFIKnIQYgAygCACICIAMoAhQgFqdsQQp0aiAGQQp0aiEGIAIgCEEKdGohCgJAIAMoAgRBEEYEQCACIA5BCnRqIAYgCkEAEBEMAQsgAiAOQQp0aiECIAQoAgBFBEAgAiAGIApBABARDAELIAIgBiAKQQEQEQsgDEEBaiIMIAMoAhBPDQEgCEEBaiEIIA5BAWohBiADKAIUIQIMAAsACyAHQYAYaiQAIAsoAhgiBCECIBBBAWoiECAESQ0ACwsgAiEDIA9BAWoiD0EERw0ACyASQQFqIhIgCygCCEkNAAsLIAVBIGokAEEAIQQLIAQNACMAQYAQayIDJAAgAEUgCUVyRQRAIANBgAhqIAEoAgAgASgCFEEKdGpBgAhrEBcgASgCGEECTwRAQQEhBANAIANBgAhqIAEoAgAgASgCFCICIAIgBGxqQQp0akGACGsQFiAEQQFqIgQgASgCGEkNAAsLIAMiAkGACGohC0EAIQQDQCACIARBA3QiBWogBSALaikDABAyIARBAWoiBEGAAUcNAAsgACgCACAAKAIEIANBgAgQICADQYAIakGACBAEIANBgAgQBCABKAIAIgQgASgCDEEKdCIBEAQCQCAAKAJAIgAEQCAEIAEgABECAAwBCyAEEAgLCyADQYAQaiQAQQAhBAsgCUEwaiQAIAQLJwEBfwJAAkACQAJAIAAOAwABAgMLQdATDwtBixEPC0GeEyEBCyABC48DAQF/IwBBgANrIgQkACAEQQA2AowBIARBjAFqIAEQBwJAIAFBwABNBEAgBEGQAWogARAYQQBIDQEgBEGQAWogBEGMAWpBBBAGQQBIDQEgBEGQAWogAiADEAZBAEgNASAEQZABaiAAIAEQEhoMAQsgBEGQAWpBwAAQGEEASA0AIARBkAFqIARBjAFqQQQQBkEASA0AIARBkAFqIAIgAxAGQQBIDQAgBEGQAWogBEFAa0HAABASQQBIDQAgACAEKQNANwAAIAAgBCkDSDcACCAAIAQpA1g3ABggACAEKQNQNwAQIABBIGohACABQSBrIgJBwQBPBEADQCAEIARBQGtBwAAQBSIBQUBrQcAAIAEQMUEASA0CIAAgASkDQDcAACAAIAEpA0g3AAggACAEKQNYNwAYIAAgBCkDUDcAECAAQSBqIQAgAkEgayICQcAASw0ACwsgBCAEQUBrQcAAEAUiAUFAayACIAEQMUEASA0AIAAgAUFAayACEAUaCyAEQZABakHwARAEIARBgANqJAALAwABC5kCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGgHigCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0HcHkEZNgIAQX8FQQELDAELIAAgAToAAEEBCwtQAQN/AkAgACgCACwAABAPRQRADAELA0AgACgCACICLAAAIQMgACACQQFqNgIAIAEgA2pBMGshASACLAABEA9FDQEgAUEKbCEBDAALAAsgAQu7AgACQCABQRRLDQACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDgoAAQIDBAUGBwgJCgsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACQQARAgALCxkAIAAtAOgBBEAgAEJ/NwNYCyAAQn83A1ALIwAgASABKQMwQgF8NwMwIAIgASAAQQAQESACIAAgAEEAEBELOQECfyAAQQNuIgJBAnQhAQJAAkACQCACQQNsQX9zIABqDgIBAAILIAFBAXIhAQsgAUECaiEBCyABC3oBAn8gAEHA/wBzQQFqQQh2QX9zQS9xIABBwf8Ac0EBakEIdkF/c0ErcSAAQeb/A2pBCHZB/wFxIgEgAEHBAGpxcnIgAEHM/wNqQQh2IgIgAEHHAGpxIAFB/wFzcXIgAEH8AWogAEHC/wNqQQh2cSACQX9zcUH/AXFyC9YBAQV/QX8hBCADQQNuIgZBAnQhBQJAAkACQCAGQQNsQX9zIANqDgIBAAILIAVBAXIhBQsgBUECaiEFCyABIAVLBH8CQCADRQ0AQQAhAUEIIQQDQCABIAItAAAiCHIhBwNAIAAiASAHIAQiBkEGayIEdkE/cRAoOgAAIAFBAWohACAEQQVLDQALIANBAWsiAwRAIAJBAWohAiAHQQh0IQEgBEEIaiEEDAELCyAERQ0AIAEgCEEMIAZrdEE/cRAoOgABIAFBAmohAAsgAEEAOgAAIAUFIAQLC8oEAQN/IwBB4ABrIgQkACADEB8hBSACEBwhAwJAAkAgBUUNACADDQEgAUECSQ0AIABBJDsAACABQQFrIgMgBRAKIgFNDQAgAEEBaiAFIAFBAWoQBSEAIAMgAWsiA0EESQ0AIAAgAWoiAUGk7PUBNgAAIAQgAigCODYCMCAEQUBrIARBMGoQEyADQQNrIgMgBEFAaxAKIgBNDQAgAUEDaiAEQUBrIABBAWoQBSEBIAMgAGsiA0EESQ0AIAAgAWoiAUGk2vUBNgAAIAQgAigCLDYCICAEQUBrIARBIGoQEyADQQNrIgMgBEFAaxAKIgBNDQAgAUEDaiAEQUBrIABBAWoQBSEBIAMgAGsiA0EESQ0AIAAgAWoiAUGs6PUBNgAAIAQgAigCKDYCECAEQUBrIARBEGoQEyADQQNrIgMgBEFAaxAKIgBNDQAgAUEDaiAEQUBrIABBAWoQBSEBIAMgAGsiA0EESQ0AIAAgAWoiAUGs4PUBNgAAIAQgAigCMDYCACAEQUBrIAQQEyADQQNrIgMgBEFAaxAKIgBNDQAgAUEDaiAEQUBrIABBAWoQBSEBIAMgAGsiA0ECSQ0AIAAgAWoiAEEkOwAAIABBAWoiACADQQFrIgYgAigCECACKAIUECkiAUF/RiIFDQBBYSEDIAZBACABIAUbayIGQQJJDQEgACAAIAFqIAUbIgBBJDsAACAAQQFqIAZBAWsgAigCACACKAIEECkhACAEQeAAaiQAQWFBACAAQX9GGw8LQWEhAwsgBEHgAGokACADC7gBAQF/QQAgAEEEaiAAQdD/A2pBCHZBf3NxQTkgAGtBCHZBf3NxQf8BcSAAQcEAayIBIAFBCHZBf3NxQdoAIABrQQh2QX9zcUH/AXEgAEG5AWogAEGf/wNqQQh2QX9zcUH6ACAAa0EIdkF/c3FB/wFxIABB0P8Ac0EBakEIdkF/c0E/cSAAQdT/AHNBAWpBCHZBf3NBPnFycnJyIgFrQQh2QX9zIABBvv8Dc0EBakEIdnFB/wFxIAFyC64BAQR/An8CfyACLAAAECsiBkH/AUYEQEF/DAELA0AgBCAGaiEEAkAgA0EGaiIGQQhJBEAgBiEDDAELIAEoAgAgBU0EQEEADwsgACAEIANBAmsiA3Y6AAAgAEEBaiEAIAVBAWohBQsgAkEBaiICLAAAECsiBkH/AUcEQCAEQQZ0IQQMAQsLQQAgA0EESw0BGkF/IAN0CyEDQQAgBCADQX9zcQ0AGiABIAU2AgAgAgsLrAMBBX8jAEEQayIDJAAgACgCBCEGIAAoAhQhBwJAIAIQHyIERQRAQWYhAgwBC0FgIQIgAS0AACIFQSRHDQAgAUEBaiABIAVBJEYbIgEgBCAEEAoiBBAQIgUNACAAQRA2AjggASABIARqIgEgBRsiBEHfFEEDEBBFBEAgBEEDaiADQQxqEBUiAUUNASAAIAMoAgw2AjgLIAFB6xRBAxAQDQAgAUEDaiADQQxqEBUiAUUNACAAIAMoAgw2AiwgAUHjFEEDEBANACABQQNqIANBDGoQFSIBRQ0AIAAgAygCDDYCKCABQecUQQMQEA0AIAFBA2ogA0EMahAVIgFFDQAgACADKAIMIgQ2AjAgACAENgI0IAEtAABBJEcNACADIAc2AgwgACgCECADQQxqIAFBAWoQLCIBRQ0AIAAgAygCDDYCFCABLQAAQSRHDQAgAyAGNgIMIAAoAgAgA0EMaiABQQFqECwiAUUNACAAIAMoAgw2AgQgAEEANgJEIABCADcCPCAAQgA3AhggAEIANwIgIAAQHCICDQBBYEEAIAEtAAAbIQILIANBEGokACACCykBAn8DQCAAIAJBA3QiA2ogASADaikAADcDACACQQFqIgJBgAFHDQALCwwAIABBAEGACBALGgtlAQJ/IAAgAhAeIgIEfyACBUFdQQACfyAAKAIAIQRBACECIAAoAgQiAAR/A0AgAyACIARqLQAAIAEgAmotAABzciEDIAJBAWoiAiAARw0ACyADQQFrQQh2QQFxQQFrBUEACwsbCwtdAQJ/IwBB8AFrIgMkAEF/IQQCQCACRSAARSABRXJyIAFBwABLcg0AIAMgARAYQQBIDQAgAyACQcAAEAZBAEgNACADIAAgARASIQQLIANB8AEQBCADQfABaiQAIAQLCQAgACABNwAACxAAIwAgAGtBcHEiACQAIAALMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAUaIAAgACgCFCABajYCFCACC9oBAQR/IwBB0ABrIggkAAJAIABFBEBBYCEADAELIAggABAKIgk2AgwgCCAJNgIcIAggCRAJIgo2AhggCCAJEAkiCzYCCEEAIQkCQAJAIApFIAtFcg0AIAggAjYCFCAIIAE2AhAgCEEIaiAAIAcQLSIADQEgCCgCCCEJIAggCCgCDBAJIgA2AgggAEUNACAIIAY2AiwgCCAFNgIoIAggBDYCJCAIIAM2AiAgCEEIaiAJIAcQMCEADAELQWohAAsgCCgCGBAIIAgoAggQCCAJEAgLIAhB0ABqJAAgAAuQAgEDfyMAQdAAayIRJABBfiETAkAgCEEESQ0AIAgQCSISRQRAQWohEwwBCyARQQA2AkwgEUIANwJEIBEgAjYCPCARIAI2AjggESABNgI0IBEgADYCMCARIA82AiwgESAONgIoIBEgDTYCJCAR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IGxvbmcgb3IgdG9vIHNob3J0AE1pc3NpbmcgYXJndW1lbnRzAFRvbyBtYW55IGxhbmVzAFRvbyBmZXcgbGFuZXMAVG9vIG1hbnkgdGhyZWFkcwBOb3QgZW5vdWdoIHRocmVhZHMATWVtb3J5IGFsbG9jYXRpb24gZXJyb3IATWVtb3J5IGNvc3QgaXMgdG9vIHNtYWxsAFRpbWUgY29zdCBpcyB0b28gc21hbGwAYXJnb24yaQBBcmdvbjJpAFRoZSBwYXNzd29yZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgaGFzaABPdXRwdXQgcG9pbnRlciBtaXNtYXRjaABPdXRwdXQgaXMgdG9vIGxvbmcAU2FsdCBpcyB0b28gbG9uZwBTZWNyZXQgaXMgdG9vIGxvbmcAUGFzc3dvcmQgaXMgdG9vIGxvbmcAQXNzb2NpYXRlZCBkYXRhIGlzIHRvbyBsb25nAFRocmVhZGluZyBmYWlsdXJlAE1lbW9yeSBjb3N0IGlzIHRvbyBsYXJnZQBUaW1lIGNvc3QgaXMgdG9vIGxhcmdlAFVua25vd24gZXJyb3IgY29kZQBhcmdvbjJpZABBcmdvbjJpZABFbmNvZGluZyBmYWlsZWQARGVjb2RpbmcgZmFpbGVkAGFyZ29uMmQAQXJnb24yZABBcmdvbjJfQ29udGV4dCBjb250ZXh0IGlzIE5VTEwAT3V0cHV0IHBvaW50ZXIgaXMgTlVMTABUaGUgYWxsb2NhdGUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAVGhlIGZyZWUgbWVtb3J5IGNhbGxiYWNrIGlzIE5VTEwAT0sAJHY9ACx0PQAscD0AJG09AFRoZXJlIGlzIG5vIHN1Y2ggdmVyc2lvbiBvZiBBcmdvbjIAU2FsdCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBzYWx0IGxlbmd0aCBpcyBub3QgMABTZWNyZXQgcG9pbnRlciBpcyBOVUxMLCBidXQgc2VjcmV0IGxlbmd0aCBpcyBub3QgMABQYXNzd29yZCBwb2ludGVyIGlzIE5VTEwsIGJ1dCBwYXNzd29yZCBsZW5ndGggaXMgbm90IDAAQXNzb2NpYXRlZCBkYXRhIHBvaW50ZXIgaXMgTlVMTCwgYnV0IGFkIGxlbmd0aCBpcyBub3QgMAAobnVsbCkAAACbCAAAuwcAAEkJAADACQAAsAkAAPAHAAAfCAAAMAgAAMkIAABvCgAA4AkAABYKAAA7CgAAQwgAACsLAADBCgAAkgoAAPQKAAACCAAAEQgAAFsJAABbCAAAdAkAAHQIAAAFCQAAdAcAAC0JAACeBwAA9AgAAGIHAAAYCQAAiAcAAOEIAABOBwAA/wkAAFwKAAABAEGkGAsBAgBByxgLBf//////AEGQGQtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQeEZCyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQZsaCwEMAEGnGgsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEHVGgsBDgBB4RoLFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBjxsLARAAQZsbCx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQdIbCw4SAAAAEhISAAAAAAAACQBBgxwLAQsAQY8cCxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQb0cCwEMAEHJHAsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEHwHAsBAQBBoB4LAogPAEHYHgsDkBFQ"},145(){},967(){}},i={};function s(A){var a=i[A];if(a!==void 0)return a.exports;var h=i[A]={exports:{}};return n[A].call(h.exports,h,h.exports,s),h.exports}return s(631)})(),yi=Qi});await _t();await _t();var Mr=1e4,Lr=1e6,Gr=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},ye=class{id;cryptoCodex;verbose;trustBalances={};bytesCounters={gossip:0,unicast:0};bytesCounterResetIn=0;constructor(t,n,i=0){this.id=t,this.cryptoCodex=n,this.verbose=i}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>0||(this.bytesCounterResetIn=Mr,this.bytesCounters={gossip:0,unicast:0})}countPeerAction(t,n){if(lt[n])return this.adjustTrust(t,lt[n])}adjustTrust(t,n,i="na"){t!==this.id&&(n&&(this.trustBalances[t]=Math.min(Gr,(this.trustBalances[t]||0)+n)),n&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${n}ms (${i}). 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))}isBanished(t="toto"){return(this.trustBalances[t]||0)<0}countMessageBytes(t,n,i){return this.bytesCounters[i]||(this.bytesCounters[i]=0),this.bytesCounters[i]+=n,this.bytesCounters[i]<Lr?!0:this.adjustTrust(t,i==="gossip"?lt.GOSSIP_FLOOD:lt.UNICAST_FLOOD,"Message flood detected")}async digestMessage(t,n,i,s=.01){let{senderId:A,pubkey:a,topic:h,expectedEnd:E}=n;this.#t(t,n,i),this.#e(h?"gossip":"unicast",i,E)&&(h?this.#n(t,n):this.#r(t,n),!(this.isBanished(t)||this.isBanished(A))&&(this.trustBalances[A]>lt.VALID_POW||Math.random()<s&&await this.#i(A,a)))}#e(t,n,i){if(!i||n.length===i)return!0;this.adjustTrust(from,lt.WRONG_LENGTH,`${t} message length mismatch`)}#t(t,n,i){let{pubkey:s,signature:A,signatureStart:a}=n,h=i.subarray(0,a);this.cryptoCodex.verifySignature(s,A,h)?this.adjustTrust(t,lt.VALID_SIGNATURE,"Gossip signature valid"):this.adjustTrust(t,lt.WRONG_SIGNATURE,"Gossip signature invalid")}#n(t,n){n.HOPS<=(ut.HOPS[n.topic]||ut.HOPS.default)||this.adjustTrust(t,lt.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#r(t,n){n.route.length<=at.MAX_HOPS||this.adjustTrust(t,lt.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#i(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 _t();var Or;function be(I,t=0){let n=typeof I=="string"?(Or??=new TextEncoder).encode(I):I,i=n,s=t+374761393&4294967295,A=0;if(i.length>=16){let h=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],E=n,o=E.length-16,l=0;for(A=0;(A&4294967280)<=o;A+=4){let u=A,g=E[u+0]+(E[u+1]<<8),Q=E[u+2]+(E[u+3]<<8),b=g*2246822519+(Q*2246822519<<16),m=h[l]+b&4294967295;m=m<<13|m>>>19;let D=m&65535,f=m>>>16;h[l]=D*2654435761+(f*2654435761<<16)&4294967295,l=l+1&3}s=(h[0]<<1|h[0]>>>31)+(h[1]<<7|h[1]>>>25)+(h[2]<<12|h[2]>>>20)+(h[3]<<18|h[3]>>>14)&4294967295}s=s+n.length&4294967295;let a=n.length-4;for(;A<=a;A+=4){let h=A,E=i[h+0]+(i[h+1]<<8),o=i[h+2]+(i[h+3]<<8),l=E*3266489917+(o*3266489917<<16);s=s+l&4294967295,s=s<<17|s>>>15,s=(s&65535)*668265263+((s>>>16)*668265263<<16)&4294967295}for(;A<i.length;++A){let h=i[A];s=s+h*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 Hr(){if(!(typeof globalThis.RTCPeerConnection<"u"))return(await import("wrtc")).default}var kn=await Hr(),we=class{id;verbose;stunUrls;constructor(t,n,i=0){this.id=t,this.verbose=i,this.stunUrls=n}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=ft.MAX_SDP_OFFERS;offers={};tick(){let t=nt.time;for(let A in this.offerInstanceByExpiration){let a=this.offerInstanceByExpiration[A];t<A||(a?.destroy(),delete this.offerInstanceByExpiration[A],this.creatingOffer=!1)}for(let A in this.offers){let a=this.offers[A];if(a.offererInstance.destroyed){delete this.offers[A];continue}if(a.isUsed){delete this.offers[A];continue}a.timestamp+ft.SDP_OFFER_EXPIRATION>t||(a.offererInstance?.destroy(),delete this.offers[A])}let n=0;for(let A in this.offers){n++;let a=this.offers[A];if(a.isDigestingOneAnswer){a.isDigestingOneAnswer=!1;continue}if(a.offererInstance.destroyed)continue;let h=a.answers.filter(l=>!l.used);if(!h.length)continue;let E=h.reduce((l,u)=>l.timestamp>u.timestamp?l:u);if(!E)continue;E.used=!0;let o=t-E.timestamp;o>gt.CONNECTION_UPGRADE_TIMEOUT/2||(a.offererInstance.signal(E.signal),a.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${E.peerId} for offer ${A} (received since ${o} ms)`))}if(this.creatingOffer||n>=this.offersToCreate)return;this.creatingOffer=!0;let i=t+(ft.SIGNAL_CREATION_TIMEOUT||8e3),s=this.#e(i);this.offerInstanceByExpiration[i]=s}#e(t){let n=ft.ICE_COMPLETE_TIMEOUT||1e3,i=new ft.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:n,wrtc:kn,config:{iceServers:this.stunUrls}});return i.on("error",s=>this.#n(s)),i.on("signal",s=>{let{candidate:A,type:a}=s;if(!s||A)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 h=be(JSON.stringify(s));i.on("connect",()=>{this.offers[h]&&(this.offers[h].isUsed=!0),this.onConnect(void 0,i)}),this.offers[h]={timestamp:nt.time,sentCounter:0,signal:s,offererInstance:i,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),i}#t(t,n="",i=2,s="includes"){return s[0]==="i"&&!t.message.includes(n)?!1:t.message.startsWith(n)?(this.verbose>=i&&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)};addSignalAnswer(t,n,i,s){!n||n.type!=="answer"||!i||!this.offers[i]||this.offers[i].answerers[t]||(this.offers[i].answerers[t]=!0,this.offers[i].answers.push({peerId:t,signal:n,timestamp:s}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${i}`))}getTransportInstanceForSignal(t,n,i){try{if(!n||!n.type||!n.sdp)throw new Error("Wrong remote SDP provided");let{type:s,sdp:A}=n;if(s!=="offer"&&s!=="answer")throw new Error("Invalid remote SDP type");if(s==="offer"&&!A)throw new Error("No SDP in the remote SDP offer");if(s==="answer"&&!A)throw new Error("No SDP in the remote SDP answer");if(s==="answer"){let E=i?this.offers[i]?.offererInstance:null;if(!E)throw new Error("No pending offer found for the given offer hash to accept the answer");return E}let a=ft.ICE_COMPLETE_TIMEOUT||1e3,h=new ft.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:a,wrtc:kn,config:{iceServers:this.stunUrls}});return h.on("error",E=>this.#n(E)),h.on("signal",E=>this.onSignalAnswer(t,E,i)),h.on("connect",()=>this.onConnect(t,h)),h}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 _t();var{SANDBOX:Ki,ICE_CANDIDATE_EMITTER:qi,TEST_WS_EVENT_MANAGER:Wi}=Bt.ENABLED?await Ne().then(()=>De):{},An=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,n=nt.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=n}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}},jt=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,n,i,s=!1){this.peerId=t,this.transportInstance=n,this.isWebSocket=s,this.direction=i,this.pendingUntil=nt.time+gt.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=nt.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?nt.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},Te=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,i,s,A=0){this.id=t,this.cryptoCodex=n,this.offerManager=i,this.arbiter=s,this.verbose=A,this.offerManager.onSignalAnswer=(a,h,E)=>{if(!(this.isDestroy||this.isKicked(a)||this.arbiter.isBanished(a)))for(let o of this.callbacks.signal)o(a,{signal:h,offerHash:E})},this.offerManager.onConnect=(a,h)=>{if(this.isDestroy)return h?.destroy();if(a===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let E=a;if(h.on("close",()=>{if(E)for(let o of this.callbacks.disconnect)o(E,h.initiator?"out":"in")}),h.on("data",o=>{if(E)for(let l of this.callbacks.data)l(E,o);else{let l=new Uint8Array(o);if(l[0]>127)return;let{route:u,type:g,neighborsList:Q}=n.readUnicastMessage(l)||{};if(g!=="handshake"||u.length!==2||u[1]!==this.id)return;E=u[0],this.digestPeerNeighbors(E,Q);for(let b of this.callbacks.connect)b(E,"out")}}),a)for(let o of this.callbacks.connect)o(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 i=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),i.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),i.close();i.setConnected(),this.connected[t]=i,this.neighborsList.push(t),this.#r(this.id,t)}#t(t,n){this.#n(t,"connected",n)}#n(t,n="both",i="both"){if(!t&&t===this.id)return;let[s,A]=[this.connecting[t],this.connected[t]];if(!s&&!A||(n!=="connecting"&&(A?.direction===i||i==="both")&&(A?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#i(this.id,t)),n==="connected"))return;let a=i==="both"?["out","in"]:[i];for(let h of a)delete s?.[h];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#r(t="toto",n="tutu"){for(let i of[t,n])this.known[i]||(this.known[i]=new An,this.knownCount++),this.known[i].setNeighbor(i===t?n:t)}#i(t="toto",n="tutu"){for(let i of[t,n])this.known[i]&&(this.known[i].unsetNeighbor(i===t?n:t),!(this.known[i].connectionsCount>0)&&(delete this.known[i],this.knownCount--))}cleanupExpired(t=!0){let n=nt.time;for(let i of["in","out"])for(let s in this.connecting){if(!this.connecting[s][i])continue;let A=this.connected[s]?1e4:0;this.connecting[s][i].pendingUntil+A>n||(this.verbose>=4&&!this.connected[s]&&console.info(`%c(${this.id}) Pending ${i} connection to peer ${s} expired.`,it.PEER_STORE),this.verbose>0&&this.connected[s]?.direction===i&&console.info(`%c(${this.id}) Pending ${i} 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",i))}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 i=nt.time,s=0,A=this.known[t]?.neighbors||{};for(let a in A){if(a!==this.id&&i-A[a]>tt.PEER_LINK_EXPIRATION){this.#i(t,a);continue}n?s++:this.cryptoCodex.isPublicNode(a)||s++}return s}addConnectingPeer(t,n,i){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 A=this.offerManager.getTransportInstanceForSignal(t,n,i);return A?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][s]=new jt(t,A,s),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,it.PEER_STORE):null}assignSignal(t,n,i,s){let A=this.connecting[t]?.[n.type==="offer"?"in":"out"];try{if(A?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);n.type==="answer"?this.offerManager.addSignalAnswer(t,n,i,s):A.transportInstance.signal(n)}catch(a){console.error(`Error signaling ${n?.type} for ${t}:`,a.stack)}}kickPeer(t,n=6e4,i){n&&(this.kick[t]=nt.time+n),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${n/1e3}s. ${i?"| Reason: "+i:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>nt.time}digestValidRoute(t=[]){for(let n=1;n<t.length;n++)this.#r(t[n-1],t[n])}digestPeerNeighbors(t,n=[]){if(!(!t||!Array.isArray(n))){for(let i in this.known[t]?.neighbors||{})n.includes(i)||this.#i(t,i);for(let i of n)this.#r(t,i)}}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 _t();var ve=class{cache={};peerStore;constructor(t,n){this.id=t,this.peerStore=n}buildRoutes(t,n=5,i=3,s=1728,A=!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 h=this.#r(t,i,s,a);if(!h.success)return{routes:[],success:!1,nodesExplored:h.nodesExplored};let o=this.#t(h.paths,A).slice(0,n);return this.cache[t]=o,{routes:o,success:!0,nodesExplored:h.nodesExplored}}#e(t){for(let{path:n}of t)for(let i=1;i<n.length;i++){let s=n[i-1],A=n[i];if(s===this.id){if(!this.peerStore.connected[A])return!1}else if(!this.peerStore.known[s]?.neighbors?.[A])return!1}return!0}#t(t,n){let i=[];for(let s of t)i.push({path:s,hops:s.length-1});return n&&i.sort((s,A)=>s.hops-A.hops),i}#n(t){let n=[],i=this.peerStore.neighborsList,s=[...Array(i.length).keys()].sort(()=>Math.random()-.5);for(let A of s)n.push({path:[this.id,i[A],t],hops:0,score:0});return n.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:n,success:"blind",nodesExplored:n.length}}#r(t,n,i,s){let A=[],a=0,h=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],E=new Map;E.set(this.id,[this.id]);let o=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],l=new Map;l.set(t,[t]);let u=Math.ceil(n/2);for(;(h.length>0||o.length>0)&&a<i;){if(h.length>0){let g=this.#i(h,E,l,u);for(let Q of g){let b=this.#s(E.get(Q),l.get(Q));if(A.push(b),!(b.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}if(o.length>0){let g=this.#i(o,l,E,u);for(let Q of g){let b=this.#s(E.get(Q),l.get(Q));if(A.push(b),!(b.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}}return{success:A.length>0,paths:A,nodesExplored:a}}#i(t,n,i,s){if(t.length===0)return[];let{node:A,path:a,pathSet:h,depth:E}=t.shift();if(E>=s)return[];let o=[];function l(u){if(h.has(u))return;let g=E+1;if(i.has(u)&&o.push(u),n.has(u))return;let Q=[...a,u],b=new Set(h).add(u);n.set(u,Q),t.push({node:u,path:Q,pathSet:b,depth:g})}if(A===this.id)for(let u of this.peerStore.neighborsList)l(u);else for(let u in this.peerStore.known[A]?.neighbors||{})l(u);return o}#s(t,n){let i=t.length+n.length-1,s=new Array(i),A=0;for(let a of t)s[A++]=a;for(let a=n.length-2;a>=0;a--)s[A++]=n[a];return s}};var{SANDBOX:zi,ICE_CANDIDATE_EMITTER:ts,TEST_WS_EVENT_MANAGER:es}=Bt.ENABLED?await Ne().then(()=>De):{},Pr=ve,ge=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,i,s,A,a,h,E,o){this.type=t,this.timestamp=n,this.neighborsList=i,this.route=s,this.pubkey=A,this.data=a,this.signature=h,this.signatureStart=E,this.expectedEnd=o}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let n=this.newRoute||this.route,i=[],s=-1;for(let o=0;o<n.length;o++)if(i.push(n[o]),n[o]===t){s=o;break}let A=n[0],a=n[n.length-1],h=s>0?n[s-1]:null,E=s!==-1?n[s+1]:null;return{traveledRoute:i,selfPosition:s,senderId:A,targetId:a,prevId:h,nextId:E,routeLength:n.length}}},xe=class extends ge{rerouterPubkey;newRoute;rerouterSignature;constructor(t,n,i,s,A,a,h,E,o){super(t,n,i,s,A,a),this.rerouterPubkey=h,this.newRoute=E,this.rerouterSignature=o}getRerouterId(){return this.newRoute[0]}},Fe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=at.MAX_HOPS;maxRoutes=at.MAX_ROUTES;maxNodes=at.MAX_NODES;constructor(t,n,i,s,A=0){this.id=t,this.cryptoCodex=n,this.arbiter=i,this.peerStore=s,this.verbose=A,this.pathFinder=new Pr(this.id,this.peerStore)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}sendUnicast(t,n,i="message",s=1){if(t===this.id)return!1;let A=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!A.success)return!1;let a=A.success==="blind"?1:s;for(let h=0;h<Math.min(a,A.routes.length);h++){let E=A.routes[h].path;if(E.length>at.MAX_HOPS){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${at.MAX_HOPS}). BFS incurred.`);continue}let o=this.cryptoCodex.createUnicastMessage(i,n,E,this.peerStore.neighborsList);this.#e(E[1],o)}return!0}#e(t,n){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let i=this.peerStore.connected[t]?.transportInstance;if(!i)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return i.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 i=this.cryptoCodex.readUnicastMessage(n);if(!i)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(await this.arbiter.digestMessage(t,i,n),this.arbiter.isBanished(t)||this.arbiter.isBanished(i.senderId))return;let{traveledRoute:s,selfPosition:A,senderId:a,targetId:h,prevId:E,nextId:o}=i.extractRouteInfo(this.id);if(t===a&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let g of this.callbacks.message_handle||[])g();if(A===-1)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Self not in route");if(E&&t!==E)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(a===this.id)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(a===t?`(${this.id}) Direct ${i.type} from ${a}: ${i.data}`:`(${this.id}) Direct ${i.type} from ${a} (lastRelay: ${t}): ${i.data}`),this.peerStore.digestPeerNeighbors(a,i.neighborsList),t!==a&&this.arbiter.adjustTrust(t,lt.UNICAST_RELAYED,"Relayed unicast message"),tt.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(s),this.id===h){for(let g of this.callbacks[i.type]||[])g(a,i.data);return}let{success:l,reason:u}=this.#e(o,n);if(!l&&!i.rerouterSignature){let g=this.pathFinder.buildRoutes(h,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!g.success)return;let Q=g.routes[0].path;if(Q.length>at.MAX_HOPS){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${h} as new route exceeds maxHops (${at.MAX_HOPS}).`);return}let b=this.cryptoCodex.createReroutedUnicastMessage(n,Q),m=Q[A+1];this.#e(m,b)}}};await _t();var ke=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,i,s,A,a,h,E,o,l){this.topic=t,this.timestamp=n,this.neighborsList=i,this.HOPS=s,this.senderId=A,this.pubkey=a,this.data=h,this.signature=E,this.signatureStart=o,this.expectedEnd=l}},on=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(i=>({senderId:i.senderId,topic:i.topic,data:i.serializedMessage}));return t==="asc"?n:n.reverse()}addMessage(t){let n=nt.time,{marker:i,neighLength:s,timestamp:A,dataLength:a,pubkey:h,associatedId:E}=this.cryptoCodex.readBufferHeader(t);if(n-A>ut.EXPIRATION)return;let o=t.subarray(0,47+s+a),l=be(o);if(this.xxHash32UsageCount++,this.seenTimeouts[l])return;let u=ut.MARKERS_BYTES[i],g=E,Q=n+ut.CACHE_DURATION;return this.cache.push({hash:l,senderId:g,topic:u,serializedMessage:t,timestamp:A,expiration:Q}),this.seenTimeouts[l]=Q,--this.cleanupIn<=0&&this.#e(n),{hash:l,isNew:!this.seenTimeouts[l]}}#e(t=nt.time){let n=-1;for(let i=0;i<this.cache.length;i++)this.cache[i].expiration<=t?delete this.seenTimeouts[this.cache[i].hash]:n===-1&&(n=i);n>0?this.cache=this.cache.slice(n):n===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},Ue=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,n,i,s,A=0){this.id=t,this.cryptoCodex=n,this.arbiter=i,this.peerStore=s,this.verbose=A,this.bloomFilter=new on(n)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}broadcastToAll(t,n="gossip",i){let s=i||ut.HOPS[n]||ut.HOPS.default,A=this.cryptoCodex.createGossipMessage(n,t,s,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(A)){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,A)}}#e(t,n){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let i=this.peerStore.connected[t]?.transportInstance;if(!i)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{i.send(n)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let n=this.bloomFilter.getGossipHistoryByTime("asc");for(let i of n)this.#e(t,i.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 D of this.callbacks.message_handle||[])D(n);if(!this.bloomFilter.addMessage(n))return;let i=this.cryptoCodex.readGossipMessage(n);if(!i)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(await this.arbiter.digestMessage(t,i,n),this.arbiter.isBanished(t)||this.arbiter.isBanished(i.senderId))return;let{topic:s,timestamp:A,neighborsList:a,HOPS:h,senderId:E,data:o}=i;if(E===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(E===t?`(${this.id}) Gossip ${s} from ${E}: ${o}`:`(${this.id}) Gossip ${s} from ${E} (by: ${t}): ${o}`),this.peerStore.digestPeerNeighbors(E,a);for(let D of this.callbacks[s]||[])D(E,o,h,i);if(h<1)return;let l=this.peerStore.neighborsList.length,u=Math.max(1,l/ut.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),g=ut.TRANSMISSION_RATE[s]||ut.TRANSMISSION_RATE.default,Q=Math.pow(g,u),b=l<ut.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,m=this.cryptoCodex.decrementGossipHops(n);for(let D of this.peerStore.neighborsList)if(D!==t){if(!b&&Math.random()>Q)continue;this.#e(D,m)}}};await _t();var{SANDBOX:hs,ICE_CANDIDATE_EMITTER:gs,TEST_WS_EVENT_MANAGER:fs}=Bt.ENABLED?await Ne().then(()=>De):{},an=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>=nt.time)}get bestOfferInfo(){let{senderId:t,overlap:n,neighborsCount:i,data:s,timestamp:A}=this.offers.shift()||{};return{senderId:t,data:s,timestamp:A,value:this.orderingBy==="overlap"?n:i}}pushSortTrim(t,n={min:.2,max:.8}){let{min:i,max:s}=n;Math.random()<Math.min(i,this.offers.size/this.maxOffers*s)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((A,a)=>this.orderingBy==="overlap"?A.overlap-a.overlap:a.neighborsCount-A.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},Me=class{id;cryptoCodex;gossip;messager;peerStore;bootstraps;halfTarget=Math.ceil(tt.TARGET_NEIGHBORS_COUNT/2);twiceTarget=tt.TARGET_NEIGHBORS_COUNT*2;bootstrapsConnectionState=new Map;get isPublicNode(){return!!this.services?.publicUrl}services;phase=0;nextBootstrapIndex=0;offersQueue=new an;maxBonus=gt.CONNECTION_UPGRADE_TIMEOUT*.2;constructor(t,n,i,s,A,a){this.id=t,this.cryptoCodex=n,this.gossip=i,this.messager=s,this.peerStore=A;for(let h of a)this.bootstrapsConnectionState.set(h,!1);this.bootstraps=[...a].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:n,isEnough:i,isTooMany:s,isHalfReached:A}=this.#e,a=n>=tt.TARGET_NEIGHBORS_COUNT/3?1:ft.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=i?0:a,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(s)return Math.random()>.05?this.#o():null;i?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,A)}handleIncomingSignal(t,n,i){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||n.signal?.type!=="offer"&&n.signal?.type!=="answer")return;let{signal:s,offerHash:A}=n||{},{connected:a,nonPublicNeighborsCount:h,isTooMany:E,isHalfReached:o}=this.#e;if(E||a[t])return;if(s.type==="answer"){if(this.peerStore.addConnectingPeer(t,s,A)!==!0)return;let Q=Math.abs(h-this.#t(t).nonPublicCount),b=this.maxBonus/tt.TARGET_NEIGHBORS_COUNT,m=Math.round(Math.min(this.maxBonus,Q*b));return this.peerStore.assignSignal(t,s,A,nt.time+m)}if(h>this.twiceTarget)return;let{overlap:l,nonPublicCount:u}=this.#t(t);if(u>this.twiceTarget)return;let g={senderId:t,data:n,overlap:l,neighborsCount:u,timestamp:nt.time};this.offersQueue.updateOrderingBy(o),this.offersQueue.pushSortTrim(g)}tryConnectNextBootstrap(t=0,n=0){if(this.bootstraps.length===0)return;let i=t-n,s=0;for(let a in this.peerStore.connecting)s++;if(i>=this.halfTarget||t>=tt.TARGET_NEIGHBORS_COUNT||s+n>this.twiceTarget)return;let A=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.bootstrapsConnectionState.get(A)||this.#i(A)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=tt.TARGET_NEIGHBORS_COUNT,isTooMany:this.peerStore.standardNeighborsList.length>tt.TARGET_NEIGHBORS_COUNT,isHalfReached:this.peerStore.standardNeighborsList.length>=this.halfTarget}}#t(t="toto"){let n=this.peerStore.known[t]?.neighbors||{},i={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let s in n)this.cryptoCodex.isPublicNode(s)||i.nonPublicCount++;for(let s of this.peerStore.standardNeighborsList)n[s]&&i.overlap++;return i}#n(t=[]){return t.map(n=>({id:n,...this.#t(n)}))}#r(t){let n=typeof window<"u",s=n&&window.location.protocol==="https:"?"wss://":"ws://",A=n?window.location.host:t;return t.startsWith("ws")?t:`${s}${A}`}#i(t="localhost:8080"){let n=null,i=new ft.WS_CLIENT(this.#r(t));i.binaryType="arraybuffer",i.onerror=s=>console.error("WebSocket error:",s.stack),i.onopen=()=>{this.bootstrapsConnectionState.set(t,!0),i.onclose=()=>{this.bootstrapsConnectionState.set(t,!1);for(let s of this.peerStore.callbacks.disconnect)s(n,"out")},i.onmessage=s=>{if(n)for(let A of this.peerStore.callbacks.data)A(n,s.data);else{let A=new Uint8Array(s.data);if(A[0]>127)return;let a=this.cryptoCodex.readUnicastMessage(A);if(!a)return;let{route:h,type:E,neighborsList:o}=a;if(E!=="handshake"||h.length!==2)return;let{signatureStart:l,pubkey:u,signature:g}=a,Q=A.subarray(0,l);if(!this.cryptoCodex.verifySignature(u,g,Q))return;n=h[0],this.peerStore.digestPeerNeighbors(n,o),this.peerStore.connecting[n]?.in?.close(),this.peerStore.connecting[n]||(this.peerStore.connecting[n]={}),this.peerStore.connecting[n].out=new jt(n,i,"out",!0);for(let b of this.peerStore.callbacks.connect)b(n,"out")}},i.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))}}#s(t=0,n=!1){if(!this.peerStore.neighborsList.length)return;let s=Object.keys(this.peerStore.connecting).length+t,[A,a,h]=[null,null,null];for(let m in this.peerStore.offerManager.offers){let D=this.peerStore.offerManager.offers[m],{isUsed:f,sentCounter:B,signal:C,timestamp:S}=D;if(f||B>0)continue;let y=nt.time-S;if(!(y>ft.SDP_OFFER_EXPIRATION/2)&&!(h&&y>h)){a=D,A=m,h=y;break}}if(!A||!a)return;if(!n&&s<=this.twiceTarget){this.gossip.broadcastToAll({signal:a.signal,offerHash:A},"signal_offer"),a.sentCounter++;return}let E=null;for(let m of this.#n(this.peerStore.standardNeighborsList)){let D=m[n?"overlap":"nonPublicCount"];E===null&&(E=D),n&&D<E&&(E=D),!n&&D<=E&&(E=D)}let o=100,l=1e3,u=this.peerStore.knownCount,g=Math.max(Math.min(l/u,u/l),.127),Q=[];for(let m in this.peerStore.known){if(Math.random()>g)continue;if(--l<=0)break;if(m===this.id||this.cryptoCodex.isPublicNode(m)||this.peerStore.isKicked(m))continue;if(this.peerStore.connected[m]||this.peerStore.connecting[m])continue;let{overlap:D,nonPublicCount:f}=this.#t(m);if(!(f>tt.TARGET_NEIGHBORS_COUNT)&&(E===null&&(E=n?D:f),!(n&&D>E)&&!(!n&&f<E)&&(Q.push(m),--o<=0)))break}if(!Q.length)return;let b=new Map;for(let m=0;m<Math.min(Q.length,100);m++){let D=Q[Math.floor(Math.random()*Q.length)];if(!b.has(D)&&(b.size===0&&a.sentCounter++,b.set(D,!0),this.messager.sendUnicast(D,{signal:a.signal,offerHash:A},"signal_offer",1),b.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 i=0;i<this.offersQueue.size;i++){let{senderId:s,data:A,timestamp:a,value:h}=this.offersQueue.bestOfferInfo;if(!s||!A||!a)break;if(!(this.peerStore.connected[s]||this.peerStore.isKicked(s))&&!this.peerStore.connecting[s]?.in){if(t=t===null?h:t,t!==h)break;this.peerStore.addConnectingPeer(s,A.signal,A.offerHash)===!0&&(this.peerStore.assignSignal(s,A.signal,A.offerHash,a),n++)}}}#o(){let n=this.#n(this.peerStore.standardNeighborsList).sort((i,s)=>s.overlap-i.overlap||s.nonPublicCount-i.nonPublicCount);this.peerStore.kickPeer(n[0].id,6e4,"improveTopology")}};await _t();var kt=class I{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,i=new Uint8Array(n);for(let s=0,A=0;s<n;++s,A+=2)i[s]=(this.hexMap[t[A]]<<4)+this.hexMap[t[A+1]];return i}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),i=new Uint8Array(n.length);for(let s=0;s<n.length;s++)i[s]=n.charCodeAt(s);return i}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 i="";for(let s of t)i+=s<16?`0${s.toString(16)}`:s.toString(16);return n>0&&(i=i.padStart(n,"0")),i}bytesToHex(t,n=0){return I.bytesToHex(t,n)}static hexToBits(t="ffffff",n="string"){let i=[];if(n==="arrayOfNumbers")for(let s=0;s<t.length;s++)i.push(...parseInt(t[s],16).toString(2).padStart(4,"0").split("").map(A=>parseInt(A,10)));else for(let s=0;s<t.length;s++)i.push(parseInt(t[s],16).toString(2).padStart(4,"0"));return n==="string"?i.join(""):i}static bytesToBits(t,n="string"){return this.hexToBits(this.bytesToHex(t),n)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((n,i)=>(n<<8)+parseInt(i,10),0)}};var Ie=typeof window<"u",[bi,{sha512:wi}]=await Promise.all([Ie?import("https://unpkg.com/@noble/ed25519@3.0.0/index.js"):Promise.resolve().then(()=>(or(),Ar)),Ie?import("https://unpkg.com/@noble/hashes@2.0.0/sha2.js"):Promise.resolve().then(()=>(br(),yr))]),Ee=bi;Ee.hashes.sha512=wi;var Ze=class{converter=new kt;argon2;hash=async(t,n,i=2**16,s=1,A=1,a=2,h=32)=>{let E=this.#e(t,n,s,i,A,a,h),o=await this.getArgon2Lib(),l=Ie?await o.hash(E):await o.hash(t,E);if(!l)return!1;let u=l.encoded||l,g=this.#t(u);return g||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!Ie)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(()=>(mr(),wr));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",n="saltsaltsaltsaltsalt",i=1,s=2**10,A=1,a=2,h=32){let E=n.padEnd(20,"0").substring(0,16);return{type:a,pass:t,parallelism:A,time:i,timeCost:i,mem:s,memoryCost:s,hashLen:h,hashLength:h,salt:Ie?E:Buffer.from(E)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let n=t.split("$").pop(),i=this.converter.base64toBytes(n),s=this.converter.bytesToHex(i),A=kt.hexToBits(s,"string");return A?{encoded:t,hash:i,hex:s,bitsString:A}:!1}};var ae=class I{argon2=new Ze;converter=new kt;AVOID_CRYPTO=!1;verbose=gt.DEFAULT_VERBOSE;id;publicKey;privateKey;constructor(t,n=gt.DEFAULT_VERBOSE){if(this.verbose=n,!t)return;this.AVOID_CRYPTO=!0,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 i=new TextEncoder().encode(this.id);for(let s=0;s<X.ID_LENGTH;s++)this.publicKey[s]=i[s]}static async createCryptoCodex(t,n){let i=new I(void 0,this.verbose);return await i.generate(t,n),i}static isPublicNode(t){return(X.ARE_IDS_HEX?kt.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 I.isPublicNode(t)}async generate(t,n){if(!this.nodeId&&(await this.#t(n,t),!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 i=2**X.DIFFICULTY*100;for(let s=0;s<i;s++){let{secretKey:A,publicKey:a}=Ee.keygen(t),h=this.#e(a);if(!(n&&!this.isPublicNode(h))&&!(!n&&this.isPublicNode(h))&&await this.pubkeyDifficultyCheck(a)){this.id=h,this.privateKey=A,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 ${i} iterations. Try lowering the difficulty.`,it.CRYPTO_CODEX)}signBufferViewAndAppendSignature(t,n,i=t.length-X.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let s=t.subarray(0,i);t.set(Ee.sign(s,n),i)}createGossipMessage(t,n,i=3,s=[],A=nt.time){let a=ut.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create gossip message: unknown topic '${t}'.`);let h=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(n),l=47+h.length+o.length+X.SIGNATURE_LENGTH+1,u=new ArrayBuffer(l),g=new Uint8Array(u);return this.#i(g,a,E,s.length,A,o,this.publicKey),g.set(h,47),g.set(o,47+h.length),g.set([Math.min(255,i)],l-1),this.signBufferViewAndAppendSignature(g,this.privateKey,l-X.SIGNATURE_LENGTH-1),g}decrementGossipHops(t){let n=new Uint8Array(t),i=t[t.length-1];return n[t.length-1]=Math.max(0,i-1),n}createUnicastMessage(t,n,i,s=[],A=nt.time){let a=at.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create unicast message: unknown type '${t}'.`);if(i.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(i.length>at.MAX_HOPS)throw new Error(`Failed to create unicast message: route exceeds max hops (${at.MAX_HOPS}).`);let h=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(n),l=this.#n(i),u=47+h.length+1+l.length+o.length+X.SIGNATURE_LENGTH,g=new ArrayBuffer(u),Q=new Uint8Array(g);this.#i(Q,a,E,s.length,A,o,this.publicKey);let b=h.length+o.length;return Q.set(h,47),Q.set(o,47+h.length),Q.set([i.length],47+b),Q.set(l,48+b),this.signBufferViewAndAppendSignature(Q,this.privateKey,u-X.SIGNATURE_LENGTH),Q}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>at.MAX_HOPS)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${at.MAX_HOPS}).`);let i=n.map(h=>this.converter.stringToBytes(h)),s=t.length+32+X.ID_LENGTH*i.length+X.SIGNATURE_LENGTH,A=new ArrayBuffer(s),a=new Uint8Array(A);a.set(t,0),a.set(this.publicKey,t.length);for(let h=0;h<i.length;h++)a.set(i[h],t.length+32+h*X.ID_LENGTH);return 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(""))}#r(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))}}#i(t,n,i,s,A,a,h){let E=this.converter.numberTo8Bytes(A),o=this.converter.numberTo4Bytes(a.length);t.set([n],0),t.set([i],1),t.set([s],2),t.set(E,3),t.set(o,11),t.set(h,15)}verifySignature(t,n,i){return this.AVOID_CRYPTO?!0:Ee.verify(n,i,t)}readBufferHeader(t,n=!0){let i=t[0],s=t[1],A=t[2],a=t.slice(3,11),h=t.slice(11,15),E=t.slice(15,47),o=n?this.#e(E):null,l=A*this.idLength,u=this.converter.bytes8ToNumber(a),g=this.converter.bytes4ToNumber(h);return{marker:i,dataCode:s,neighLength:l,timestamp:u,dataLength:g,pubkey:E,associatedId:o}}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:i,neighLength:s,timestamp:A,dataLength:a,pubkey:h,associatedId:E}=this.readBufferHeader(t),o=ut.MARKERS_BYTES[n];if(o===void 0)throw new Error(`Failed to deserialize gossip message: unknown marker byte ${d[0]}.`);let l=s+a,u=this.#s(t.slice(47,47+s)),g=this.#A(i,t.slice(47+s,47+l)),Q=47+l,b=t.slice(Q,Q+X.SIGNATURE_LENGTH),m=t[t.length-1],D=Q+X.SIGNATURE_LENGTH+1,f=E;return new ke(o,A,u,m,f,h,g,b,Q,D)}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:i,neighLength:s,timestamp:A,dataLength:a,pubkey:h}=this.readBufferHeader(t,!1),E=at.MARKERS_BYTES[n];if(E===void 0)throw new Error(`Failed to deserialize unicast message: unknown marker byte ${d[0]}.`);let o=s+a,l=this.#s(t.slice(47,47+s)),u=this.#A(i,t.slice(47+s,47+o)),Q=t[47+o]*this.idLength,b=47+o+1+Q,m=t.slice(47+o+1,b),D=this.#s(m),f=b+X.SIGNATURE_LENGTH,B=t.slice(b,f);if(!(t.length>f))return new ge(E,A,l,D,h,u,B,b,f);let S=t.slice(f,f+32),y=this.#s(t.slice(f+32,t.length-X.SIGNATURE_LENGTH)),R=t.slice(t.length-X.SIGNATURE_LENGTH);return new xe(E,A,l,D,h,u,B,S,y,R,t.length)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${type||"unknown"} unicast message:`,n.stack)}return null}#s(t){let n=[],i=this.idLength;if(t.length%i!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let s=0;s<t.length/i;s++){let A=t.slice(s*i,(s+1)*i);X.ARE_IDS_HEX?n.push(this.converter.bytesToHex(A,X.ID_LENGTH)):n.push(this.converter.bytesToString(A))}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 _t();var mi=gt.IS_BROWSER?null:await import("dgram"),ze=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,n,i=3,s=1){this.id=t.id,this.verbose=s,this.maxKick=i,this.peerStore=n,this.cryptoCodex=t}start(t="localhost",n=Ft.PORT){this.publicUrl=`ws://${t}:${n}`,this.#e(t,n),Bt.USE_TEST_TRANSPORTS||this.#t(t,n+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-tt.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let n=0,i=Ft.AUTO_KICK_DELAY;for(let s in this.peerStore.connected){let A=this.peerStore.connected[s],a=this.peerStore.getUpdatedPeerConnectionsCount(s,!1);if(a>tt.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=tt.TARGET_NEIGHBORS_COUNT)break;continue}if(!(A.getConnectionDuration()<(a>2?i:i*2))&&(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),++n>=t))break}}#e(t="localhost",n=Ft.PORT){this.wsServer=new ft.WS_SERVER({port:n,host:t}),this.wsServer.on("error",i=>console.error(`WebSocket error on Node #${this.id}:`,i)),this.wsServer.on("connection",i=>{i.on("close",()=>{if(s)for(let A of this.peerStore.callbacks.disconnect)A(s,"in")}),i.on("error",A=>console.error(`WebSocket error on Node #${this.id} with peer ${s}:`,A.stack));let s;i.on("message",A=>{if(s)for(let a of this.peerStore.callbacks.data)a(s,A);else{let a=new Uint8Array(A);if(a[0]>127)return;let h=this.cryptoCodex.readUnicastMessage(a);if(!h)return;let{route:E,type:o,neighborsList:l}=h;if(o!=="handshake"||E.length!==2)return;let{signatureStart:u,pubkey:g,signature:Q}=h,b=a.subarray(0,u);if(!this.cryptoCodex.verifySignature(g,Q,b))return;s=E[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 jt(s,i,"in",!0);for(let m of this.peerStore.callbacks.connect)m(s,"in")}}),i.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))})}#t(t="localhost",n=Ft.PORT+1){this.stunServer=mi.createSocket("udp4"),this.stunServer.on("message",(i,s)=>{this.verbose>2&&console.log(`%cSTUN message from ${s.address}:${s.port} - ${i.toString("hex")}`,it.SERVICE),this.#n(i)&&this.stunServer.send(this.#r(i,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),i=t.readUInt32BE(4);return n===1&&i===554869826}#r(t,n){let i=t.subarray(8,20),s=Buffer.allocUnsafe(32);return s.writeUInt16BE(257,0),s.writeUInt16BE(12,2),s.writeUInt32BE(554869826,4),i.copy(s,8),s.writeUInt16BE(1,20),s.writeUInt16BE(8,22),s.writeUInt16BE(1,24),s.writeUInt16BE(n.port,26),s.writeUInt32BE(kt.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 i of t){let s=i.includes(":")?i.split(":")[1].replace("//",""):i;s.replace("/ws","/signal");let A=parseInt(i.split(":")[2])+1;n.push({urls:`stun:${s}:${A}`})}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 Sr(I={}){let t=I.verbose!==void 0?I.verbose:gt.DEFAULT_VERBOSE,n=I.cryptoCodex||new ae(void 0,t);n.publicKey||await n.generate(!1);let i=new Ce(n,I.bootstraps||[],t);return I.autoStart!==!1&&await i.start(),i}var Ce=class{started=!1;id;cryptoCodex;verbose;arbiter;offerManager;peerStore;messager;gossip;topologist;services;constructor(t,n=[],i=gt.DEFAULT_VERBOSE){this.verbose=i,this.topologist?.services&&(this.topologist.services.verbose=i),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let s=ze.deriveSTUNServers(n||[]);this.offerManager=new we(this.id,s,i),this.arbiter=new ye(this.id,t,i),this.peerStore=new Te(this.id,this.cryptoCodex,this.offerManager,this.arbiter,i),this.messager=new Fe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,i),this.gossip=new Ue(this.id,this.cryptoCodex,this.arbiter,this.peerStore,i),this.topologist=new Me(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,n||[]);let{arbiter:A,peerStore:a,messager:h,gossip:E,topologist:o}=this;a.on("signal",(l,u)=>this.sendMessage(l,u,"signal_answer")),a.on("connect",(l,u)=>this.#e(l,u)),a.on("disconnect",(l,u)=>this.#t(l,u)),a.on("data",(l,u)=>this.#n(l,u)),h.on("signal_answer",(l,u)=>o.handleIncomingSignal(l,u)),h.on("signal_offer",(l,u)=>o.handleIncomingSignal(l,u)),E.on("signal_offer",(l,u,g)=>o.handleIncomingSignal(l,u,g)),i>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,n)=>{let i=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||i?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!i&&!this.cryptoCodex.isPublicNode(this.id)||n==="in")&&this.sendMessage(t,this.id,"handshake");let A=this.peerStore.neighborsList.length>=tt.TARGET_NEIGHBORS_COUNT+this.halfTarget,a=()=>{tt.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&A&&this.broadcast([],"over_neighbored"),tt.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};tt.ON_CONNECT_DISPATCH.DELAY?setTimeout(a,tt.ON_CONNECT_DISPATCH.DELAY):a()};#t=(t,n)=>{if(!this.peerStore.neighborsList.length){for(let A in this.peerStore.connecting)this.peerStore.kickPeer(A,0,"no_neighbors_left");for(let A in this.offerManager.offers)this.offerManager.offers[A].timestamp=0}let i=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||i?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,n)=>{let i=new Uint8Array(n);i[0]>127?this.gossip.handleGossipMessage(t,i):this.messager.handleDirectMessage(t,i)};get publicUrl(){return this.services?.publicUrl}onMessageData(t){this.messager.on("message",t)}onGossipData(t){this.gossip.on("gossip",t)}async start(){return await nt.sync(this.verbose),this.started=!0,Bt.AVOID_INTERVALS||(this.topologist.tryConnectNextBootstrap(),this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.enhancerInterval=setInterval(()=>this.topologist.tick(),tt.LOOP_DELAY),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500)),!0}broadcast(t,n,i){this.gossip.broadcastToAll(t,n,i)}sendMessage(t,n,i,s=1){this.messager.sendUnicast(t,n,i,s)}async tryConnectToPeer(t="toto",n=5){console.info("FUNCTION DISABLED FOR NOW")}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()}};await _t();var _r={Node:Ce,createNode:Sr,CryptoCodex:ae,CONFIG:Fn};var qs=_r;typeof window<"u"&&(window.HiveP2P=_r);export{Fn as CONFIG,ae as CryptoCodex,Ce as Node,Sr as createNode,qs as default};
|
|
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]=A),n==="answer"&&(this.PENDING_ANSWERS[t]=A),{success:!0,signalData:A,reason:"na"})}#n(t,n){let{transportId:i,type:s,sdp:A}=t;if(i===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[i]||!this.PENDING_OFFERS[i][A.id]))return{success:!1,reason:`No pending offer found for transport ID: ${i} with SDP ID: ${A.id}`};if(s==="answer"&&(!this.PENDING_ANSWERS[i]||this.PENDING_ANSWERS[i].sdp.id!==A.id))return{success:!1,reason:`No pending answer found for transport ID: ${i} with SDP ID: ${A.id}`};if(s==="offer"&&Math.random()<Bt.ICE_OFFER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'offer' signal from ${i} to ${n}`};if(s==="answer"&&Math.random()<Bt.ICE_ANSWER_FAILURE_RATE)return{success:!1,reason:`Simulated failure for 'answer' signal from ${i} to ${n}`};if(s==="offer")return this.buildSDP(n,"answer"),{success:!0,reason:"na"};delete this.PENDING_OFFERS[n],delete this.PENDING_ANSWERS[i];let a=this.sandbox.linkInstances(n,i);return{success:!a,reason:a||"na"}}buildSDP(t,n){let i={min:Bt.ICE_DELAY.min,max:Bt.ICE_DELAY.max},s=Math.floor(Math.random()*(i.max-i.min+1))+i.min;this.sdpToBuild.push({transportId:t,type:n,time:Date.now()+s})}digestSignal(t,n){this.signalsToDigest.push({signalData:t,receiverId:n})}},Se=class{verbose=gt.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,i){let s=this.wsConnections[n],A=this.publicWsServers[t];if(!s||!A||A.closing||A.clients.size>=A.maxClients)return;let a=new i(A,n);A.clients.add(a),a.init(s.id),A.callbacks.connection.forEach(h=>h(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[i,s]=[this.transportInstances[t],this.transportInstances[n]];if(!i||!s)return`Missing transport instances: ${t}=>${!!i}, ${n}=>${!!s}`;if(i.initiator&&s.initiator)return`Both transport instances cannot be initiators: ${t}, ${n}`;if(i.destroying||s.destroying)return`One of the transport instances is destroying: ${t}=>${i.destroying}, ${n}=>${s.destroying}`;if(i.destroyed||s.destroyed)return`One of the transport instances is destroyed: ${t}=>${i.destroyed}, ${n}=>${s.destroyed}`;if(i.remoteId)return`Transport instance tA: ${t} is already linked to remoteId: ${i.remoteId}`;if(s.remoteId)return`Transport instance tB: ${n} is already linked to remoteId: ${s.remoteId}`;i.remoteId=n,s.remoteId=t,this.verbose>2&&console.log(`[SANDBOX] Linked transports: ${t} <-> ${n}`),i.callbacks.connect.forEach(A=>A()),s.callbacks.connect.forEach(A=>A())}sendData(t,n,i){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 A=this.transportInstances[n];return A?A.remoteId?A.id!==n?{success:!1,reason:`Wrong id for remoteInstance ${t} !== ${n}`}:A.remoteId!==t?{success:!1,reason:`Transport instance ${t} is not linked to remoteId: ${n}`}:(this.enqueueTransportData(t,n,i),{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 i=n.remoteId,s=i?this.transportInstances[i]:null;this.verbose>3&&console.log(`[SANDBOX] Destroying transports: ${t}`),n&&s&&(this.verbose>2&&console.log(`[SANDBOX] Destroying linked transports: ${t} & ${i}`),delete this.transportInstances[i],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 i=Math.min(this.queueIndex+n,t);for(let A=this.queueIndex;A<i;A++){let[a,h,E,o]=this.messageQueueSync[A];a==="transport_data"?this.#e(h,E,o):a==="ws_message"&&this.#t(h,E,o)}if(this.queueIndex=i,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 i=0;i<n;i++){let s=this.messageQueue[this.queueStart];this.queueStart=(this.queueStart+1)%this.messageQueue.length;let[A,a,h,E]=s;A==="transport_data"?this.#e(a,h,E):A==="ws_message"&&this.#t(a,h,E)}await new Promise(i=>setTimeout(i,0)),this.queueCount-=n}#e(t,n,i){let[s,A]=[this.transportInstances[t],this.transportInstances[n]];if(!s||!A||s.destroying||A.destroying){s?.close(),A?.close();return}if(s.destroyed){A.close();return}if(A.destroyed){s.close();return}for(let a of A.callbacks.data)a(i)}#t(t,n,i){let[s,A]=[this.wsConnections[t],this.wsConnections[n]];if(!A||!s||A.readyState!==1||s.readyState!==1){A?.close(),s?.close();return}if(A.onmessage)A.onmessage({data:i});else for(let a of A.callbacks.message)a(i)}enqueueTransportDataSync(t,n,i){this.messageQueueSync.push(["transport_data",t,n,i])}enqueueWsMessageSync(t,n,i){this.messageQueueSync.push(["ws_message",t,n,i])}enqueueTransportData(t,n,i){this.messageQueue[this.queueEnd]=["transport_data",t,n,i],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,i){this.messageQueue[this.queueEnd]=["ws_message",t,n,i],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 De={};Be(De,{ICE_CANDIDATE_EMITTER:()=>sn,SANDBOX:()=>pt,TEST_WS_EVENT_MANAGER:()=>_e,TestTransport:()=>rn,TestWsConnection:()=>Re,TestWsServer:()=>nn});var en,Re,nn,rn,pt,sn,_e,Ne=Tt(async()=>{await _t();await Un();en=class{toInit=[];toClose=[];toError=[];initTick(){if(this.toInit.length<=0)return;let t=Date.now(),n=this.toInit;this.toInit=[];for(let{connId:i,time:s}of n)s>t?this.toInit.push({connId:i,time:s}):this.#e(i)}closeTick(){if(this.toClose.length<=0)return;let t=Date.now(),n=this.toClose;this.toClose=[];for(let{wsId:i,remoteWsId:s,time:A}of n)A>t?this.toClose.push({wsId:i,remoteWsId:s,time:A}):this.#t(i,s)}cleanerTick(){let t=Date.now();for(let n of Object.values(pt.publicWsServers))for(let i of n.clients)i.readyState===3&&n.clients.delete(i)}errorTick(){if(this.toError.length<=0)return;let t=Date.now(),n=this.toError;this.toError=[];for(let{wsId:i,error:s,time:A}of n)A>t?this.toError.push({wsId:i,error:s,time:A}):pt.wsConnections[i]?.dispatchError(s)}#e(t){let n=pt.wsConnections[t];n&&pt.connectToWebSocketServer(n.url,n.id,Re)}#t(t,n){let i=pt.wsConnections[t],s=pt.wsConnections[n];i?.onclose?.(),s?.onclose?.();for(let A of i?.callbacks?.close||[])A();for(let A of s?.callbacks?.close||[])A()}scheduleInit(t,n=500){this.toInit.push({connId:t,time:Date.now()+n})}scheduleClose(t,n,i=100){this.toClose.push({wsId:t,remoteWsId:n,time:Date.now()+i})}scheduleError(t,n,i=100){this.toError.push({wsId:t,error:n,time:Date.now()+i})}},Re=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){pt.inscribeWsConnection(this),!n&&(this.url=t,_e.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}`),_e.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=pt.wsConnections[this.remoteWsId];t&&(t.readyState=3),this.remoteWsId&&_e.scheduleClose(this.id,this.remoteWsId,100)}send(t){if(!this.remoteWsId){console.error(`No WebSocket server found for URL: ${this.url}`),this.close();return}pt.enqueueWsMessage(this.id,this.remoteWsId,t)}dispatchError(t){this.callbacks.error.forEach(n=>n(t)),this.onerror&&this.onerror(t)}},nn=class{url;clients=new Set;maxClients=Ft.MAX_WS_IN_CONNS||20;callbacks={connection:[],close:[],error:[]};constructor(t={port,host:domain}){this.url=`ws://${t.host}:${t.port}`,pt.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,pt.removeWebSocketServer(this.url);for(let t of this.callbacks.close)t()}}},rn=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}){pt.inscribeInstance(this),this.initiator=t.initiator,this.trickle=t.trickle,this.wrtc=t.wrtc,this.initiator&&sn.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.");sn.digestSignal(t,this.id)}}send(t){let{success:n,reason:i}=pt.sendData(this.id,this.remoteId,t);n||this.destroy(i)}close(){this.destroy()}destroy(t=null){this.destroying||(this.destroying=!0,t&&this.dispatchError(t),this.callbacks.close?.forEach(n=>n()),pt.destroyTransportAndAssociatedTransport(this.id),this.destroyed=!0,this.destroying=!1)}},pt=new Se,sn=new me(pt),_e=new en});var Ar={};Be(Ar,{Point:()=>Lt,etc:()=>ni,getPublicKey:()=>tr,getPublicKeyAsync:()=>zn,hash:()=>Vr,hashes:()=>yn,keygen:()=>ri,keygenAsync:()=>ii,sign:()=>zr,signAsync:()=>Zr,utils:()=>si,verify:()=>ei,verifyAsync:()=>ti});var Yn,Qt,Le,Mn,Ln,cn,hn,Yr,Mt,fe,Jr,ct,Kr,qr,Wr,Dt,Pe,Jn,Kn,ln,Ot,Gn,dn,qn,jr,Xt,Wn,Ge,Vt,P,jn,Vn,Xn,Vr,gn,fn,Lt,Yt,Ae,$n,In,Ut,Xr,On,$r,Oe,En,Cn,Zn,Bn,pn,zn,tr,er,nr,rr,Zr,zr,Qn,ir,ti,ei,ni,yn,bn,ri,ii,si,He,Ai,sr,un,oi,Hn,Pn,ai,or=Tt(()=>{Yn={p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n},{p:Qt,n:Le,Gx:Mn,Gy:Ln,a:cn,d:hn,h:Yr}=Yn,Mt=32,fe=64,Jr=(...I)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...I)},ct=(I="")=>{let t=new Error(I);throw Jr(t,ct),t},Kr=I=>typeof I=="bigint",qr=I=>typeof I=="string",Wr=I=>I instanceof Uint8Array||ArrayBuffer.isView(I)&&I.constructor.name==="Uint8Array",Dt=(I,t,n="")=>{let i=Wr(I),s=I?.length,A=t!==void 0;if(!i||A&&s!==t){let a=n&&`"${n}" `,h=A?` of length ${t}`:"",E=i?`length=${s}`:`type=${typeof I}`;ct(a+"expected Uint8Array"+h+", got "+E)}return I},Pe=I=>new Uint8Array(I),Jn=I=>Uint8Array.from(I),Kn=(I,t)=>I.toString(16).padStart(t,"0"),ln=I=>Array.from(Dt(I)).map(t=>Kn(t,2)).join(""),Ot={_0:48,_9:57,A:65,F:70,a:97,f:102},Gn=I=>{if(I>=Ot._0&&I<=Ot._9)return I-Ot._0;if(I>=Ot.A&&I<=Ot.F)return I-(Ot.A-10);if(I>=Ot.a&&I<=Ot.f)return I-(Ot.a-10)},dn=I=>{let t="hex invalid";if(!qr(I))return ct(t);let n=I.length,i=n/2;if(n%2)return ct(t);let s=Pe(i);for(let A=0,a=0;A<i;A++,a+=2){let h=Gn(I.charCodeAt(a)),E=Gn(I.charCodeAt(a+1));if(h===void 0||E===void 0)return ct(t);s[A]=h*16+E}return s},qn=()=>globalThis?.crypto,jr=()=>qn()?.subtle??ct("crypto.subtle must be defined, consider polyfill"),Xt=(...I)=>{let t=Pe(I.reduce((i,s)=>i+Dt(s).length,0)),n=0;return I.forEach(i=>{t.set(i,n),n+=i.length}),t},Wn=(I=Mt)=>qn().getRandomValues(Pe(I)),Ge=BigInt,Vt=(I,t,n,i="bad number: out of range")=>Kr(I)&&t<=I&&I<n?I:ct(i),P=(I,t=Qt)=>{let n=I%t;return n>=0n?n:t+n},jn=I=>P(I,Le),Vn=(I,t)=>{(I===0n||t<=0n)&&ct("no inverse n="+I+" mod="+t);let n=P(I,t),i=t,s=0n,A=1n,a=1n,h=0n;for(;n!==0n;){let E=i/n,o=i%n,l=s-a*E,u=A-h*E;i=n,n=o,s=a,A=h,a=l,h=u}return i===1n?P(s,t):ct("no inverse")},Xn=I=>{let t=yn[I];return typeof t!="function"&&ct("hashes."+I+" not set"),t},Vr=I=>Xn("sha512")(I),gn=I=>I instanceof Lt?I:ct("Point expected"),fn=2n**256n,Lt=class I{static BASE;static ZERO;X;Y;Z;T;constructor(t,n,i,s){let A=fn;this.X=Vt(t,0n,A),this.Y=Vt(n,0n,A),this.Z=Vt(i,1n,A),this.T=Vt(s,0n,A),Object.freeze(this)}static CURVE(){return Yn}static fromAffine(t){return new I(t.x,t.y,1n,P(t.x*t.y))}static fromBytes(t,n=!1){let i=hn,s=Jn(Dt(t,Mt)),A=t[31];s[31]=A&-129;let a=In(s);Vt(a,0n,n?fn:Qt);let E=P(a*a),o=P(E-1n),l=P(i*E+1n),{isValid:u,value:g}=$r(o,l);u||ct("bad point: y not sqrt");let Q=(g&1n)===1n,b=(A&128)!==0;return!n&&g===0n&&b&&ct("bad point: x==0, isLastByteOdd"),b!==Q&&(g=P(-g)),new I(g,a,1n,P(g*a))}static fromHex(t,n){return I.fromBytes(dn(t),n)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let t=cn,n=hn,i=this;if(i.is0())return ct("bad point: ZERO");let{X:s,Y:A,Z:a,T:h}=i,E=P(s*s),o=P(A*A),l=P(a*a),u=P(l*l),g=P(E*t),Q=P(l*P(g+o)),b=P(u+P(n*P(E*o)));if(Q!==b)return ct("bad point: equation left != right (1)");let m=P(s*A),D=P(a*h);return m!==D?ct("bad point: equation left != right (2)"):this}equals(t){let{X:n,Y:i,Z:s}=this,{X:A,Y:a,Z:h}=gn(t),E=P(n*h),o=P(A*s),l=P(i*h),u=P(a*s);return E===o&&l===u}is0(){return this.equals(Ae)}negate(){return new I(P(-this.X),this.Y,this.Z,P(-this.T))}double(){let{X:t,Y:n,Z:i}=this,s=cn,A=P(t*t),a=P(n*n),h=P(2n*P(i*i)),E=P(s*A),o=t+n,l=P(P(o*o)-A-a),u=E+a,g=u-h,Q=E-a,b=P(l*g),m=P(u*Q),D=P(l*Q),f=P(g*u);return new I(b,m,f,D)}add(t){let{X:n,Y:i,Z:s,T:A}=this,{X:a,Y:h,Z:E,T:o}=gn(t),l=cn,u=hn,g=P(n*a),Q=P(i*h),b=P(A*u*o),m=P(s*E),D=P((n+i)*(a+h)-g-Q),f=P(m-b),B=P(m+b),C=P(Q-l*g),S=P(D*f),y=P(B*C),R=P(D*C),F=P(f*B);return new I(S,y,F,R)}subtract(t){return this.add(gn(t).negate())}multiply(t,n=!0){if(!n&&(t===0n||this.is0()))return Ae;if(Vt(t,1n,Le),t===1n)return this;if(this.equals(Yt))return ai(t).p;let i=Ae,s=Yt;for(let A=this;t>0n;A=A.double(),t>>=1n)t&1n?i=i.add(A):n&&(s=s.add(A));return i}multiplyUnsafe(t){return this.multiply(t,!1)}toAffine(){let{X:t,Y:n,Z:i}=this;if(this.equals(Ae))return{x:0n,y:1n};let s=Vn(i,Qt);P(i*s)!==1n&&ct("invalid inverse");let A=P(t*s),a=P(n*s);return{x:A,y:a}}toBytes(){let{x:t,y:n}=this.assertValidity().toAffine(),i=$n(n);return i[31]|=t&1n?128:0,i}toHex(){return ln(this.toBytes())}clearCofactor(){return this.multiply(Ge(Yr),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let t=this.multiply(Le/2n,!1).double();return Le%2n&&(t=t.add(this)),t.is0()}},Yt=new Lt(Mn,Ln,1n,P(Mn*Ln)),Ae=new Lt(0n,1n,1n,0n);Lt.BASE=Yt;Lt.ZERO=Ae;$n=I=>dn(Kn(Vt(I,0n,fn),fe)).reverse(),In=I=>Ge("0x"+ln(Jn(Dt(I)).reverse())),Ut=(I,t)=>{let n=I;for(;t-- >0n;)n*=n,n%=Qt;return n},Xr=I=>{let n=I*I%Qt*I%Qt,i=Ut(n,2n)*n%Qt,s=Ut(i,1n)*I%Qt,A=Ut(s,5n)*s%Qt,a=Ut(A,10n)*A%Qt,h=Ut(a,20n)*a%Qt,E=Ut(h,40n)*h%Qt,o=Ut(E,80n)*E%Qt,l=Ut(o,80n)*E%Qt,u=Ut(l,10n)*A%Qt;return{pow_p_5_8:Ut(u,2n)*I%Qt,b2:n}},On=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,$r=(I,t)=>{let n=P(t*t*t),i=P(n*n*t),s=Xr(I*i).pow_p_5_8,A=P(I*n*s),a=P(t*A*A),h=A,E=P(A*On),o=a===I,l=a===P(-I),u=a===P(-I*On);return o&&(A=h),(l||u)&&(A=E),(P(A)&1n)===1n&&(A=P(-A)),{isValid:o||l,value:A}},Oe=I=>jn(In(I)),En=(...I)=>yn.sha512Async(Xt(...I)),Cn=(...I)=>Xn("sha512")(Xt(...I)),Zn=I=>{let t=I.slice(0,Mt);t[0]&=248,t[31]&=127,t[31]|=64;let n=I.slice(Mt,fe),i=Oe(t),s=Yt.multiply(i),A=s.toBytes();return{head:t,prefix:n,scalar:i,point:s,pointBytes:A}},Bn=I=>En(Dt(I,Mt)).then(Zn),pn=I=>Zn(Cn(Dt(I,Mt))),zn=I=>Bn(I).then(t=>t.pointBytes),tr=I=>pn(I).pointBytes,er=I=>En(I.hashable).then(I.finish),nr=I=>I.finish(Cn(I.hashable)),rr=(I,t,n)=>{let{pointBytes:i,scalar:s}=I,A=Oe(t),a=Yt.multiply(A).toBytes();return{hashable:Xt(a,i,n),finish:o=>{let l=jn(A+Oe(o)*s);return Dt(Xt(a,$n(l)),fe)}}},Zr=async(I,t)=>{let n=Dt(I),i=await Bn(t),s=await En(i.prefix,n);return er(rr(i,s,n))},zr=(I,t)=>{let n=Dt(I),i=pn(t),s=Cn(i.prefix,n);return nr(rr(i,s,n))},Qn={zip215:!0},ir=(I,t,n,i=Qn)=>{I=Dt(I,fe),t=Dt(t),n=Dt(n,Mt);let{zip215:s}=i,A,a,h,E,o=Uint8Array.of();try{A=Lt.fromBytes(n,s),a=Lt.fromBytes(I.slice(0,Mt),s),h=In(I.slice(Mt,fe)),E=Yt.multiply(h,!1),o=Xt(a.toBytes(),A.toBytes(),t)}catch{}return{hashable:o,finish:u=>{if(E==null||!s&&A.isSmallOrder())return!1;let g=Oe(u);return a.add(A.multiply(g,!1)).add(E.negate()).clearCofactor().is0()}}},ti=async(I,t,n,i=Qn)=>er(ir(I,t,n,i)),ei=(I,t,n,i=Qn)=>nr(ir(I,t,n,i)),ni={bytesToHex:ln,hexToBytes:dn,concatBytes:Xt,mod:P,invert:Vn,randomBytes:Wn},yn={sha512Async:async I=>{let t=jr(),n=Xt(I);return Pe(await t.digest("SHA-512",n.buffer))},sha512:void 0},bn=(I=Wn(Mt))=>I,ri=I=>{let t=bn(I),n=tr(t);return{secretKey:t,publicKey:n}},ii=async I=>{let t=bn(I),n=await zn(t);return{secretKey:t,publicKey:n}},si={getExtendedPublicKeyAsync:Bn,getExtendedPublicKey:pn,randomSecretKey:bn},He=8,Ai=256,sr=Math.ceil(Ai/He)+1,un=2**(He-1),oi=()=>{let I=[],t=Yt,n=t;for(let i=0;i<sr;i++){n=t,I.push(n);for(let s=1;s<un;s++)n=n.add(t),I.push(n);t=n.double()}return I},Pn=(I,t)=>{let n=t.negate();return I?n:t},ai=I=>{let t=Hn||(Hn=oi()),n=Ae,i=Yt,s=2**He,A=s,a=Ge(s-1),h=Ge(He);for(let E=0;E<sr;E++){let o=Number(I&a);I>>=h,o>un&&(o-=A,I+=1n);let l=E*un,u=l,g=l+Math.abs(o)-1,Q=E%2!==0,b=o<0;o===0?i=i.add(Pn(Q,t[u])):n=n.add(Pn(b,t[g]))}return I!==0n&&ct("invalid wnaf"),{p:n,f:i}}});function ci(I){return I instanceof Uint8Array||ArrayBuffer.isView(I)&&I.constructor.name==="Uint8Array"}function wn(I,t,n=""){let i=ci(I),s=I?.length,A=t!==void 0;if(!i||A&&s!==t){let a=n&&`"${n}" `,h=A?` of length ${t}`:"",E=i?`length=${s}`:`type=${typeof I}`;throw new Error(a+"expected Uint8Array"+h+", got "+E)}return I}function mn(I,t=!0){if(I.destroyed)throw new Error("Hash instance has been destroyed");if(t&&I.finished)throw new Error("Hash#digest() has already been called")}function ar(I,t){wn(I,void 0,"digestInto() output");let n=t.outputLen;if(I.length<n)throw new Error('"digestInto() output" expected to be of length >='+n)}function $t(...I){for(let t=0;t<I.length;t++)I[t].fill(0)}function Ye(I){return new DataView(I.buffer,I.byteOffset,I.byteLength)}function vt(I,t){return I<<32-t|I>>>t}function Zt(I,t={}){let n=(s,A)=>I(A).update(s).digest(),i=I(void 0);return n.outputLen=i.outputLen,n.blockLen=i.blockLen,n.create=s=>I(s),Object.assign(n,t),Object.freeze(n)}var zt,Sn=Tt(()=>{zt=I=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,I])})});function cr(I,t,n){return I&t^~I&n}function hr(I,t,n){return I&t^I&n^t&n}var ue,Ht,Pt,dt,It,gr=Tt(()=>{Sn();ue=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,n,i,s){this.blockLen=t,this.outputLen=n,this.padOffset=i,this.isLE=s,this.buffer=new Uint8Array(t),this.view=Ye(this.buffer)}update(t){mn(this),wn(t);let{view:n,buffer:i,blockLen:s}=this,A=t.length;for(let a=0;a<A;){let h=Math.min(s-this.pos,A-a);if(h===s){let E=Ye(t);for(;s<=A-a;a+=s)this.process(E,a);continue}i.set(t.subarray(a,a+h),this.pos),this.pos+=h,a+=h,this.pos===s&&(this.process(n,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){mn(this),ar(t,this),this.finished=!0;let{buffer:n,view:i,blockLen:s,isLE:A}=this,{pos:a}=this;n[a++]=128,$t(this.buffer.subarray(a)),this.padOffset>s-a&&(this.process(i,0),a=0);for(let u=a;u<s;u++)n[u]=0;i.setBigUint64(s-8,BigInt(this.length*8),A),this.process(i,0);let h=Ye(t),E=this.outputLen;if(E%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let o=E/4,l=this.get();if(o>l.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<o;u++)h.setUint32(4*u,l[u],A)}digest(){let{buffer:t,outputLen:n}=this;this.digestInto(t);let i=t.slice(0,n);return this.destroy(),i}_cloneInto(t){t||=new this.constructor,t.set(...this.get());let{blockLen:n,buffer:i,length:s,finished:A,destroyed:a,pos:h}=this;return t.destroyed=a,t.finished=A,t.length=s,t.pos=h,s%n&&t.buffer.set(i),t}clone(){return this._cloneInto()}},Ht=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Pt=Uint32Array.from([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]),dt=Uint32Array.from([3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]),It=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209])});function hi(I,t=!1){return t?{h:Number(I&Je),l:Number(I>>fr&Je)}:{h:Number(I>>fr&Je)|0,l:Number(I&Je)|0}}function ur(I,t=!1){let n=I.length,i=new Uint32Array(n),s=new Uint32Array(n);for(let A=0;A<n;A++){let{h:a,l:h}=hi(I[A],t);[i[A],s[A]]=[a,h]}return[i,s]}function Gt(I,t,n,i){let s=(t>>>0)+(i>>>0);return{h:I+n+(s/2**32|0)|0,l:s|0}}var Je,fr,_n,Rn,te,ee,le,de,lr,dr,Ir,Er,Cr,Br,pr=Tt(()=>{Je=BigInt(4294967295),fr=BigInt(32);_n=(I,t,n)=>I>>>n,Rn=(I,t,n)=>I<<32-n|t>>>n,te=(I,t,n)=>I>>>n|t<<32-n,ee=(I,t,n)=>I<<32-n|t>>>n,le=(I,t,n)=>I<<64-n|t>>>n-32,de=(I,t,n)=>I>>>n-32|t<<64-n;lr=(I,t,n)=>(I>>>0)+(t>>>0)+(n>>>0),dr=(I,t,n,i)=>t+n+i+(I/2**32|0)|0,Ir=(I,t,n,i)=>(I>>>0)+(t>>>0)+(n>>>0)+(i>>>0),Er=(I,t,n,i,s)=>t+n+i+s+(I/2**32|0)|0,Cr=(I,t,n,i,s)=>(I>>>0)+(t>>>0)+(n>>>0)+(i>>>0)+(s>>>0),Br=(I,t,n,i,s,A)=>t+n+i+s+A+(I/2**32|0)|0});var yr={};Be(yr,{_SHA224:()=>We,_SHA256:()=>qe,_SHA384:()=>Ve,_SHA512:()=>je,_SHA512_224:()=>Xe,_SHA512_256:()=>$e,sha224:()=>Ii,sha256:()=>di,sha384:()=>Ci,sha512:()=>Ei,sha512_224:()=>pi,sha512_256:()=>Bi});var fi,Jt,Ke,qe,We,Qr,ui,li,Kt,qt,oe,je,Ve,yt,bt,Xe,$e,di,Ii,Ei,Ci,Bi,pi,br=Tt(()=>{gr();pr();Sn();fi=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Jt=new Uint32Array(64),Ke=class extends ue{constructor(t){super(64,t,8,!1)}get(){let{A:t,B:n,C:i,D:s,E:A,F:a,G:h,H:E}=this;return[t,n,i,s,A,a,h,E]}set(t,n,i,s,A,a,h,E){this.A=t|0,this.B=n|0,this.C=i|0,this.D=s|0,this.E=A|0,this.F=a|0,this.G=h|0,this.H=E|0}process(t,n){for(let u=0;u<16;u++,n+=4)Jt[u]=t.getUint32(n,!1);for(let u=16;u<64;u++){let g=Jt[u-15],Q=Jt[u-2],b=vt(g,7)^vt(g,18)^g>>>3,m=vt(Q,17)^vt(Q,19)^Q>>>10;Jt[u]=m+Jt[u-7]+b+Jt[u-16]|0}let{A:i,B:s,C:A,D:a,E:h,F:E,G:o,H:l}=this;for(let u=0;u<64;u++){let g=vt(h,6)^vt(h,11)^vt(h,25),Q=l+g+cr(h,E,o)+fi[u]+Jt[u]|0,m=(vt(i,2)^vt(i,13)^vt(i,22))+hr(i,s,A)|0;l=o,o=E,E=h,h=a+Q|0,a=A,A=s,s=i,i=Q+m|0}i=i+this.A|0,s=s+this.B|0,A=A+this.C|0,a=a+this.D|0,h=h+this.E|0,E=E+this.F|0,o=o+this.G|0,l=l+this.H|0,this.set(i,s,A,a,h,E,o,l)}roundClean(){$t(Jt)}destroy(){this.set(0,0,0,0,0,0,0,0),$t(this.buffer)}},qe=class extends Ke{A=Ht[0]|0;B=Ht[1]|0;C=Ht[2]|0;D=Ht[3]|0;E=Ht[4]|0;F=Ht[5]|0;G=Ht[6]|0;H=Ht[7]|0;constructor(){super(32)}},We=class extends Ke{A=Pt[0]|0;B=Pt[1]|0;C=Pt[2]|0;D=Pt[3]|0;E=Pt[4]|0;F=Pt[5]|0;G=Pt[6]|0;H=Pt[7]|0;constructor(){super(28)}},Qr=ur(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(I=>BigInt(I))),ui=Qr[0],li=Qr[1],Kt=new Uint32Array(80),qt=new Uint32Array(80),oe=class extends ue{constructor(t){super(128,t,16,!1)}get(){let{Ah:t,Al:n,Bh:i,Bl:s,Ch:A,Cl:a,Dh:h,Dl:E,Eh:o,El:l,Fh:u,Fl:g,Gh:Q,Gl:b,Hh:m,Hl:D}=this;return[t,n,i,s,A,a,h,E,o,l,u,g,Q,b,m,D]}set(t,n,i,s,A,a,h,E,o,l,u,g,Q,b,m,D){this.Ah=t|0,this.Al=n|0,this.Bh=i|0,this.Bl=s|0,this.Ch=A|0,this.Cl=a|0,this.Dh=h|0,this.Dl=E|0,this.Eh=o|0,this.El=l|0,this.Fh=u|0,this.Fl=g|0,this.Gh=Q|0,this.Gl=b|0,this.Hh=m|0,this.Hl=D|0}process(t,n){for(let C=0;C<16;C++,n+=4)Kt[C]=t.getUint32(n),qt[C]=t.getUint32(n+=4);for(let C=16;C<80;C++){let S=Kt[C-15]|0,y=qt[C-15]|0,R=te(S,y,1)^te(S,y,8)^_n(S,y,7),F=ee(S,y,1)^ee(S,y,8)^Rn(S,y,7),w=Kt[C-2]|0,_=qt[C-2]|0,U=te(w,_,19)^le(w,_,61)^_n(w,_,6),M=ee(w,_,19)^de(w,_,61)^Rn(w,_,6),H=Ir(F,M,qt[C-7],qt[C-16]),Y=Er(H,R,U,Kt[C-7],Kt[C-16]);Kt[C]=Y|0,qt[C]=H|0}let{Ah:i,Al:s,Bh:A,Bl:a,Ch:h,Cl:E,Dh:o,Dl:l,Eh:u,El:g,Fh:Q,Fl:b,Gh:m,Gl:D,Hh:f,Hl:B}=this;for(let C=0;C<80;C++){let S=te(u,g,14)^te(u,g,18)^le(u,g,41),y=ee(u,g,14)^ee(u,g,18)^de(u,g,41),R=u&Q^~u&m,F=g&b^~g&D,w=Cr(B,y,F,li[C],qt[C]),_=Br(w,f,S,R,ui[C],Kt[C]),U=w|0,M=te(i,s,28)^le(i,s,34)^le(i,s,39),H=ee(i,s,28)^de(i,s,34)^de(i,s,39),Y=i&A^i&h^A&h,K=s&a^s&E^a&E;f=m|0,B=D|0,m=Q|0,D=b|0,Q=u|0,b=g|0,{h:u,l:g}=Gt(o|0,l|0,_|0,U|0),o=h|0,l=E|0,h=A|0,E=a|0,A=i|0,a=s|0;let j=lr(U,H,K);i=dr(j,_,M,Y),s=j|0}({h:i,l:s}=Gt(this.Ah|0,this.Al|0,i|0,s|0)),{h:A,l:a}=Gt(this.Bh|0,this.Bl|0,A|0,a|0),{h,l:E}=Gt(this.Ch|0,this.Cl|0,h|0,E|0),{h:o,l}=Gt(this.Dh|0,this.Dl|0,o|0,l|0),{h:u,l:g}=Gt(this.Eh|0,this.El|0,u|0,g|0),{h:Q,l:b}=Gt(this.Fh|0,this.Fl|0,Q|0,b|0),{h:m,l:D}=Gt(this.Gh|0,this.Gl|0,m|0,D|0),{h:f,l:B}=Gt(this.Hh|0,this.Hl|0,f|0,B|0),this.set(i,s,A,a,h,E,o,l,u,g,Q,b,m,D,f,B)}roundClean(){$t(Kt,qt)}destroy(){$t(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},je=class extends oe{Ah=It[0]|0;Al=It[1]|0;Bh=It[2]|0;Bl=It[3]|0;Ch=It[4]|0;Cl=It[5]|0;Dh=It[6]|0;Dl=It[7]|0;Eh=It[8]|0;El=It[9]|0;Fh=It[10]|0;Fl=It[11]|0;Gh=It[12]|0;Gl=It[13]|0;Hh=It[14]|0;Hl=It[15]|0;constructor(){super(64)}},Ve=class extends oe{Ah=dt[0]|0;Al=dt[1]|0;Bh=dt[2]|0;Bl=dt[3]|0;Ch=dt[4]|0;Cl=dt[5]|0;Dh=dt[6]|0;Dl=dt[7]|0;Eh=dt[8]|0;El=dt[9]|0;Fh=dt[10]|0;Fl=dt[11]|0;Gh=dt[12]|0;Gl=dt[13]|0;Hh=dt[14]|0;Hl=dt[15]|0;constructor(){super(48)}},yt=Uint32Array.from([2352822216,424955298,1944164710,2312950998,502970286,855612546,1738396948,1479516111,258812777,2077511080,2011393907,79989058,1067287976,1780299464,286451373,2446758561]),bt=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]),Xe=class extends oe{Ah=yt[0]|0;Al=yt[1]|0;Bh=yt[2]|0;Bl=yt[3]|0;Ch=yt[4]|0;Cl=yt[5]|0;Dh=yt[6]|0;Dl=yt[7]|0;Eh=yt[8]|0;El=yt[9]|0;Fh=yt[10]|0;Fl=yt[11]|0;Gh=yt[12]|0;Gl=yt[13]|0;Hh=yt[14]|0;Hl=yt[15]|0;constructor(){super(28)}},$e=class extends oe{Ah=bt[0]|0;Al=bt[1]|0;Bh=bt[2]|0;Bl=bt[3]|0;Ch=bt[4]|0;Cl=bt[5]|0;Dh=bt[6]|0;Dl=bt[7]|0;Eh=bt[8]|0;El=bt[9]|0;Fh=bt[10]|0;Fl=bt[11]|0;Gh=bt[12]|0;Gl=bt[13]|0;Hh=bt[14]|0;Hl=bt[15]|0;constructor(){super(32)}},di=Zt(()=>new qe,zt(1)),Ii=Zt(()=>new We,zt(4)),Ei=Zt(()=>new je,zt(3)),Ci=Zt(()=>new Ve,zt(2)),Bi=Zt(()=>new $e,zt(6)),pi=Zt(()=>new Xe,zt(5))});var wr={};Be(wr,{default:()=>yi});var Qi,yi,mr=Tt(()=>{Qi=(()=>{var I,t,n={773(A,a,h){var E,o=typeof self<"u"&&self.Module!==void 0?self.Module:{},l={};for(E in o)o.hasOwnProperty(E)&&(l[E]=o[E]);var u,g,Q,b,m=[];u=typeof window=="object",g=typeof importScripts=="function",Q=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",b=!u&&!Q&&!g;var D,f,B,C,S,y="";Q?(y=g?h(967).dirname(y)+"/":"//",D=function(x,L){return C||(C=h(145)),S||(S=h(967)),x=S.normalize(x),C.readFileSync(x,L?null:"utf8")},B=function(x){var L=D(x,!0);return L.buffer||(L=new Uint8Array(L)),U(L.buffer),L},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),m=process.argv.slice(2),A.exports=o,process.on("uncaughtException",function(x){if(!(x instanceof k))throw x}),process.on("unhandledRejection",V),o.inspect=function(){return"[Emscripten Module object]"}):b?(typeof read<"u"&&(D=function(x){return read(x)}),B=function(x){var L;return typeof readbuffer=="function"?new Uint8Array(readbuffer(x)):(U(typeof(L=read(x,"binary"))=="object"),L)},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)):(u||g)&&(g?y=self.location.href:typeof document<"u"&&document.currentScript&&(y=document.currentScript.src),y=y.indexOf("blob:")!==0?y.substr(0,y.lastIndexOf("/")+1):"",D=function(x){var L=new XMLHttpRequest;return L.open("GET",x,!1),L.send(null),L.responseText},g&&(B=function(x){var L=new XMLHttpRequest;return L.open("GET",x,!1),L.responseType="arraybuffer",L.send(null),new Uint8Array(L.response)}),f=function(x,L,e){var r=new XMLHttpRequest;r.open("GET",x,!0),r.responseType="arraybuffer",r.onload=function(){r.status==200||r.status==0&&r.response?L(r.response):e()},r.onerror=e,r.send(null)}),o.print||console.log.bind(console);var R,F,w=o.printErr||console.warn.bind(console);for(E in l)l.hasOwnProperty(E)&&(o[E]=l[E]);l=null,o.arguments&&(m=o.arguments),o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(R=o.wasmBinary),o.noExitRuntime,typeof WebAssembly!="object"&&V("no native wasm support detected");var _=!1;function U(x,L){x||V("Assertion failed: "+L)}var M,H,Y=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function K(x){M=x,o.HEAP8=new Int8Array(x),o.HEAP16=new Int16Array(x),o.HEAP32=new Int32Array(x),o.HEAPU8=H=new Uint8Array(x),o.HEAPU16=new Uint16Array(x),o.HEAPU32=new Uint32Array(x),o.HEAPF32=new Float32Array(x),o.HEAPF64=new Float64Array(x)}o.INITIAL_MEMORY;var j,st=[],J=[],Rt=[],ot=0,ht=null,W=null;function V(x){throw o.onAbort&&o.onAbort(x),w(x+=""),_=!0,x="abort("+x+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(x)}function Et(x){return x.startsWith("data:application/octet-stream;base64,")}function At(x){return x.startsWith("file://")}o.preloadedImages={},o.preloadedAudios={};var wt,et="argon2.wasm";function Nt(x){try{if(x==et&&R)return new Uint8Array(R);if(B)return B(x);throw"both async and sync fetching of the wasm failed"}catch(L){V(L)}}function St(x){for(;x.length>0;){var L=x.shift();if(typeof L!="function"){var e=L.func;typeof e=="number"?L.arg===void 0?j.get(e)():j.get(e)(L.arg):e(L.arg===void 0?null:L.arg)}else L(o)}}function Wt(x){try{return F.grow(x-M.byteLength+65535>>>16),K(F.buffer),1}catch{}}Et(et)||(wt=et,et=o.locateFile?o.locateFile(wt,y):y+wt);var xt,Ct={a:function(x,L,e){H.copyWithin(x,L,L+e)},b:function(x){var L,e=H.length;if((x>>>=0)>2147418112)return!1;for(var r=1;r<=4;r*=2){var c=e*(1+.2/r);if(c=Math.min(c,x+100663296),Wt(Math.min(2147418112,((L=Math.max(x,c))%65536>0&&(L+=65536-L%65536),L))))return!0}return!1}},mt=((function(){var x={a:Ct};function L(c,p){var N,v=c.exports;o.asm=v,K((F=o.asm.c).buffer),j=o.asm.k,N=o.asm.d,J.unshift(N),(function(G){if(ot--,o.monitorRunDependencies&&o.monitorRunDependencies(ot),ot==0&&(ht!==null&&(clearInterval(ht),ht=null),W)){var q=W;W=null,q()}})()}function e(c){L(c.instance)}function r(c){return(function(){if(!R&&(u||g)){if(typeof fetch=="function"&&!At(et))return fetch(et,{credentials:"same-origin"}).then(function(p){if(!p.ok)throw"failed to load wasm binary file at '"+et+"'";return p.arrayBuffer()}).catch(function(){return Nt(et)});if(f)return new Promise(function(p,N){f(et,function(v){p(new Uint8Array(v))},N)})}return Promise.resolve().then(function(){return Nt(et)})})().then(function(p){return WebAssembly.instantiate(p,x)}).then(c,function(p){w("failed to asynchronously prepare wasm: "+p),V(p)})}if(ot++,o.monitorRunDependencies&&o.monitorRunDependencies(ot),o.instantiateWasm)try{return o.instantiateWasm(x,L)}catch(c){return w("Module.instantiateWasm callback failed with error: "+c),!1}R||typeof WebAssembly.instantiateStreaming!="function"||Et(et)||At(et)||typeof fetch!="function"?r(e):fetch(et,{credentials:"same-origin"}).then(function(c){return WebAssembly.instantiateStreaming(c,x).then(e,function(p){return w("wasm streaming compile failed: "+p),w("falling back to ArrayBuffer instantiation"),r(e)})})})(),o.___wasm_call_ctors=function(){return(o.___wasm_call_ctors=o.asm.d).apply(null,arguments)},o._argon2_hash=function(){return(o._argon2_hash=o.asm.e).apply(null,arguments)},o._malloc=function(){return(mt=o._malloc=o.asm.f).apply(null,arguments)}),T=(o._free=function(){return(o._free=o.asm.g).apply(null,arguments)},o._argon2_verify=function(){return(o._argon2_verify=o.asm.h).apply(null,arguments)},o._argon2_error_message=function(){return(o._argon2_error_message=o.asm.i).apply(null,arguments)},o._argon2_encodedlen=function(){return(o._argon2_encodedlen=o.asm.j).apply(null,arguments)},o._argon2_hash_ext=function(){return(o._argon2_hash_ext=o.asm.l).apply(null,arguments)},o._argon2_verify_ext=function(){return(o._argon2_verify_ext=o.asm.m).apply(null,arguments)},o.stackAlloc=function(){return(T=o.stackAlloc=o.asm.n).apply(null,arguments)});function k(x){this.name="ExitStatus",this.message="Program terminated with exit("+x+")",this.status=x}function O(x){function L(){xt||(xt=!0,o.calledRun=!0,_||(St(J),o.onRuntimeInitialized&&o.onRuntimeInitialized(),(function(){var e;if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)e=o.postRun.shift(),Rt.unshift(e);St(Rt)})()))}x=x||m,ot>0||((function(){var e;if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),st.unshift(e);St(st)})(),ot>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),L()},1)):L()))}if(o.allocate=function(x,L){var e;return e=L==1?T(x.length):mt(x.length),x.subarray||x.slice?H.set(x,e):H.set(new Uint8Array(x),e),e},o.UTF8ToString=function(x,L){return x?(function(e,r,c){for(var p=r+c,N=r;e[N]&&!(N>=p);)++N;if(N-r>16&&e.subarray&&Y)return Y.decode(e.subarray(r,N));for(var v="";r<N;){var G=e[r++];if(128&G){var q=63&e[r++];if((224&G)!=192){var rt=63&e[r++];if((G=(240&G)==224?(15&G)<<12|q<<6|rt:(7&G)<<18|q<<12|rt<<6|63&e[r++])<65536)v+=String.fromCharCode(G);else{var $=G-65536;v+=String.fromCharCode(55296|$>>10,56320|1023&$)}}else v+=String.fromCharCode((31&G)<<6|q)}else v+=String.fromCharCode(G)}return v})(H,x,L):""},o.ALLOC_NORMAL=0,W=function x(){xt||O(),xt||(W=x)},o.run=O,o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();O(),A.exports=o,o.unloadRuntime=function(){typeof self<"u"&&delete self.Module,o=F=j=M=H=void 0,delete A.exports}},631:function(A,a,h){var E,o;typeof self<"u",(o=typeof(E=function(){let l=typeof self<"u"?self:this,u={Argon2d:0,Argon2i:1,Argon2id:2};function g(f){if(g._promise)return g._promise;if(g._module)return Promise.resolve(g._module);let B;return B=l.process&&l.process.versions&&l.process.versions.node?Q().then(C=>new Promise(S=>{C.postRun=()=>S(C)})):(l.loadArgon2WasmBinary?l.loadArgon2WasmBinary():Promise.resolve(h(721)).then(C=>(function(S){let y=atob(S),R=new Uint8Array(new ArrayBuffer(y.length));for(let F=0;F<y.length;F++)R[F]=y.charCodeAt(F);return R})(C))).then(C=>{var S,y;return S=C,y=f?(function(R){let F=32767;return new WebAssembly.Memory({initial:Math.min(Math.max(Math.ceil(1024*R/65536),256)+256,F),maximum:F})})(f):void 0,new Promise(R=>(l.Module={wasmBinary:S,wasmMemory:y,postRun(){R(Module)}},Q()))}),g._promise=B,B.then(C=>(g._module=C,delete g._promise,C))}function Q(){return l.loadArgon2WasmModule?l.loadArgon2WasmModule():Promise.resolve(h(773))}function b(f,B){return f.allocate(B,"i8",f.ALLOC_NORMAL)}function m(f,B){return b(f,new Uint8Array([...B,0]))}function D(f){if(typeof f!="string")return f;if(typeof TextEncoder=="function")return new TextEncoder().encode(f);if(typeof Buffer=="function")return Buffer.from(f);throw Error("Don't know how to encode UTF8")}return{ArgonType:u,hash:function(f){let B=f.mem||1024;return g(B).then(C=>{let S=f.time||1,y=f.parallelism||1,R=D(f.pass),F=m(C,R),w=R.length,_=D(f.salt),U=m(C,_),M=_.length,H=f.type||u.Argon2d,Y=C.allocate(Array(f.hashLen||24),"i8",C.ALLOC_NORMAL),K=f.secret?b(C,f.secret):0,j=f.secret?f.secret.byteLength:0,st=f.ad?b(C,f.ad):0,J=f.ad?f.ad.byteLength:0,Rt=f.hashLen||24,ot=C._argon2_encodedlen(S,B,y,M,Rt,H),ht=C.allocate(Array(ot+1),"i8",C.ALLOC_NORMAL),W,V,Et;try{V=C._argon2_hash_ext(S,B,y,F,w,U,M,Y,Rt,ht,ot,H,K,j,st,J,19)}catch(At){W=At}if(V!==0||W){try{W||(W=C.UTF8ToString(C._argon2_error_message(V)))}catch{}Et={message:W,code:V}}else{let At="",wt=new Uint8Array(Rt);for(let et=0;et<Rt;et++){let Nt=C.HEAP8[Y+et];wt[et]=Nt,At+=("0"+(255&Nt).toString(16)).slice(-2)}Et={hash:wt,hashHex:At,encoded:C.UTF8ToString(ht)}}try{C._free(F),C._free(U),C._free(Y),C._free(ht),st&&C._free(st),K&&C._free(K)}catch{}if(W)throw Et;return Et})},verify:function(f){return g().then(B=>{let C=D(f.pass),S=m(B,C),y=C.length,R=f.secret?b(B,f.secret):0,F=f.secret?f.secret.byteLength:0,w=f.ad?b(B,f.ad):0,_=f.ad?f.ad.byteLength:0,U=m(B,D(f.encoded)),M,H,Y,K=f.type;if(K===void 0){let j=f.encoded.split("$")[1];j&&(K=u[j=j.replace("a","A")]||u.Argon2d)}try{H=B._argon2_verify_ext(U,S,y,R,F,w,_,K)}catch(j){M=j}if(H||M){try{M||(M=B.UTF8ToString(B._argon2_error_message(H)))}catch{}Y={message:M,code:H}}try{B._free(S),B._free(U)}catch{}if(M)throw Y;return Y})},unloadRuntime:function(){g._module&&(g._module.unloadRuntime(),delete g._promise,delete g._module)}}})=="function"?E.apply(a,[]):E)===void 0||(A.exports=o)},721:function(A,a){A.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(){}},i={};function s(A){var a=i[A];if(a!==void 0)return a.exports;var h=i[A]={exports:{}};return n[A].call(h.exports,h,h.exports,s),h.exports}return s(631)})(),yi=Qi});await _t();await _t();var Mr=1e4,Lr=1e6,Gr=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},ye=class{id;cryptoCodex;verbose;trustBalances={};bytesCounters={gossip:0,unicast:0};bytesCounterResetIn=0;constructor(t,n,i=0){this.id=t,this.cryptoCodex=n,this.verbose=i}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>0||(this.bytesCounterResetIn=Mr,this.bytesCounters={gossip:0,unicast:0})}countPeerAction(t,n){if(lt[n])return this.adjustTrust(t,lt[n])}adjustTrust(t,n,i="na"){t!==this.id&&(n&&(this.trustBalances[t]=Math.min(Gr,(this.trustBalances[t]||0)+n)),n&&this.verbose>3&&console.log(`%c(Arbiter: ${this.id}) ${t} +${n}ms (${i}). 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))}isBanished(t="toto"){return(this.trustBalances[t]||0)<0}countMessageBytes(t,n,i){return this.bytesCounters[i]||(this.bytesCounters[i]=0),this.bytesCounters[i]+=n,this.bytesCounters[i]<Lr?!0:this.adjustTrust(t,i==="gossip"?lt.GOSSIP_FLOOD:lt.UNICAST_FLOOD,"Message flood detected")}async digestMessage(t,n,i,s=.01){let{senderId:A,pubkey:a,topic:h,expectedEnd:E}=n;this.#t(t,n,i),this.#e(h?"gossip":"unicast",i,E)&&(h?this.#n(t,n):this.#r(t,n),!(this.isBanished(t)||this.isBanished(A))&&(this.trustBalances[A]>lt.VALID_POW||Math.random()<s&&await this.#i(A,a)))}#e(t,n,i){if(!i||n.length===i)return!0;this.adjustTrust(from,lt.WRONG_LENGTH,`${t} message length mismatch`)}#t(t,n,i){let{pubkey:s,signature:A,signatureStart:a}=n,h=i.subarray(0,a);this.cryptoCodex.verifySignature(s,A,h)?this.adjustTrust(t,lt.VALID_SIGNATURE,"Gossip signature valid"):this.adjustTrust(t,lt.WRONG_SIGNATURE,"Gossip signature invalid")}#n(t,n){n.HOPS<=(ut.HOPS[n.topic]||ut.HOPS.default)||this.adjustTrust(t,lt.HOPS_EXCEEDED,"Gossip HOPS exceeded")}#r(t,n){n.route.length<=at.MAX_HOPS||this.adjustTrust(t,lt.HOPS_EXCEEDED,"Unicast HOPS exceeded")}async#i(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 _t();var Or;function be(I,t=0){let n=typeof I=="string"?(Or??=new TextEncoder).encode(I):I,i=n,s=t+374761393&4294967295,A=0;if(i.length>=16){let h=[t+2654435761+2246822519&4294967295,t+2246822519&4294967295,t+0&4294967295,t-2654435761&4294967295],E=n,o=E.length-16,l=0;for(A=0;(A&4294967280)<=o;A+=4){let u=A,g=E[u+0]+(E[u+1]<<8),Q=E[u+2]+(E[u+3]<<8),b=g*2246822519+(Q*2246822519<<16),m=h[l]+b&4294967295;m=m<<13|m>>>19;let D=m&65535,f=m>>>16;h[l]=D*2654435761+(f*2654435761<<16)&4294967295,l=l+1&3}s=(h[0]<<1|h[0]>>>31)+(h[1]<<7|h[1]>>>25)+(h[2]<<12|h[2]>>>20)+(h[3]<<18|h[3]>>>14)&4294967295}s=s+n.length&4294967295;let a=n.length-4;for(;A<=a;A+=4){let h=A,E=i[h+0]+(i[h+1]<<8),o=i[h+2]+(i[h+3]<<8),l=E*3266489917+(o*3266489917<<16);s=s+l&4294967295,s=s<<17|s>>>15,s=(s&65535)*668265263+((s>>>16)*668265263<<16)&4294967295}for(;A<i.length;++A){let h=i[A];s=s+h*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 Hr(){if(!(typeof globalThis.RTCPeerConnection<"u"))return(await import("wrtc")).default}var kn=await Hr(),we=class{id;verbose;stunUrls;constructor(t,n,i=0){this.id=t,this.verbose=i,this.stunUrls=n}onSignalAnswer=null;onConnect=null;offerInstanceByExpiration={};creatingOffer=!1;offerCreationTimeout=null;offersToCreate=ft.MAX_SDP_OFFERS;offers={};tick(){let t=nt.time;for(let A in this.offerInstanceByExpiration){let a=this.offerInstanceByExpiration[A];t<A||(a?.destroy(),delete this.offerInstanceByExpiration[A],this.creatingOffer=!1)}for(let A in this.offers){let a=this.offers[A];if(a.offererInstance.destroyed){delete this.offers[A];continue}if(a.isUsed){delete this.offers[A];continue}a.timestamp+ft.SDP_OFFER_EXPIRATION>t||(a.offererInstance?.destroy(),delete this.offers[A])}let n=0;for(let A in this.offers){n++;let a=this.offers[A];if(a.isDigestingOneAnswer){a.isDigestingOneAnswer=!1;continue}if(a.offererInstance.destroyed)continue;let h=a.answers.filter(l=>!l.used);if(!h.length)continue;let E=h.reduce((l,u)=>l.timestamp>u.timestamp?l:u);if(!E)continue;E.used=!0;let o=t-E.timestamp;o>gt.CONNECTION_UPGRADE_TIMEOUT/2||(a.offererInstance.signal(E.signal),a.isDigestingOneAnswer=!0,this.verbose>2&&console.log(`(${this.id}) Using answer from ${E.peerId} for offer ${A} (received since ${o} ms)`))}if(this.creatingOffer||n>=this.offersToCreate)return;this.creatingOffer=!0;let i=t+(ft.SIGNAL_CREATION_TIMEOUT||8e3),s=this.#e(i);this.offerInstanceByExpiration[i]=s}#e(t){let n=ft.ICE_COMPLETE_TIMEOUT||1e3,i=new ft.PEER({initiator:!0,trickle:!1,iceCompleteTimeout:n,wrtc:kn,config:{iceServers:this.stunUrls}});return i.on("error",s=>this.#n(s)),i.on("signal",s=>{let{candidate:A,type:a}=s;if(!s||A)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 h=be(JSON.stringify(s));i.on("connect",()=>{this.offers[h]&&(this.offers[h].isUsed=!0),this.onConnect(void 0,i)}),this.offers[h]={timestamp:nt.time,sentCounter:0,signal:s,offererInstance:i,answers:[],answerers:{},isUsed:!1},this.creatingOffer=!1}),i}#t(t,n="",i=2,s="includes"){return s[0]==="i"&&!t.message.includes(n)?!1:t.message.startsWith(n)?(this.verbose>=i&&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)};addSignalAnswer(t,n,i,s){!n||n.type!=="answer"||!i||!this.offers[i]||this.offers[i].answerers[t]||(this.offers[i].answerers[t]=!0,this.offers[i].answers.push({peerId:t,signal:n,timestamp:s}),this.verbose>3&&console.log(`(OfferManager) Added answer from ${t} for offer ${i}`))}getTransportInstanceForSignal(t,n,i){try{if(!n||!n.type||!n.sdp)throw new Error("Wrong remote SDP provided");let{type:s,sdp:A}=n;if(s!=="offer"&&s!=="answer")throw new Error("Invalid remote SDP type");if(s==="offer"&&!A)throw new Error("No SDP in the remote SDP offer");if(s==="answer"&&!A)throw new Error("No SDP in the remote SDP answer");if(s==="answer"){let E=i?this.offers[i]?.offererInstance:null;if(!E)throw new Error("No pending offer found for the given offer hash to accept the answer");return E}let a=ft.ICE_COMPLETE_TIMEOUT||1e3,h=new ft.PEER({initiator:!1,trickle:!1,iceCompleteTimeout:a,wrtc:kn,config:{iceServers:this.stunUrls}});return h.on("error",E=>this.#n(E)),h.on("signal",E=>this.onSignalAnswer(t,E,i)),h.on("connect",()=>this.onConnect(t,h)),h}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 _t();var{SANDBOX:Ki,ICE_CANDIDATE_EMITTER:qi,TEST_WS_EVENT_MANAGER:Wi}=Bt.ENABLED?await Ne().then(()=>De):{},An=class{neighbors;connectionsCount;constructor(t={}){this.neighbors=t,this.connectionsCount=Object.keys(t).length}setNeighbor(t,n=nt.time){this.neighbors[t]||this.connectionsCount++,this.neighbors[t]=n}unsetNeighbor(t){this.neighbors[t]&&this.connectionsCount--,delete this.neighbors[t]}},jt=class{peerId;transportInstance;isWebSocket;direction;pendingUntil;connStartTime;constructor(t,n,i,s=!1){this.peerId=t,this.transportInstance=n,this.isWebSocket=s,this.direction=i,this.pendingUntil=nt.time+gt.CONNECTION_UPGRADE_TIMEOUT}setConnected(){this.connStartTime=nt.time,this.pendingUntil=0}getConnectionDuration(){return this.connStartTime?nt.time-this.connStartTime:0}close(){this.isWebSocket?this.transportInstance?.close():this.transportInstance?.destroy()}},Te=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,i,s,A=0){this.id=t,this.cryptoCodex=n,this.offerManager=i,this.arbiter=s,this.verbose=A,this.offerManager.onSignalAnswer=(a,h,E)=>{if(!(this.isDestroy||this.isKicked(a)||this.arbiter.isBanished(a)))for(let o of this.callbacks.signal)o(a,{signal:h,offerHash:E})},this.offerManager.onConnect=(a,h)=>{if(this.isDestroy)return h?.destroy();if(a===this.id)throw new Error(`Refusing to connect to self (${this.id}).`);let E=a;if(h.on("close",()=>{if(E)for(let o of this.callbacks.disconnect)o(E,h.initiator?"out":"in")}),h.on("data",o=>{if(E)for(let l of this.callbacks.data)l(E,o);else{let l=new Uint8Array(o);if(l[0]>127)return;let{route:u,type:g,neighborsList:Q}=n.readUnicastMessage(l)||{};if(g!=="handshake"||u.length!==2||u[1]!==this.id)return;E=u[0],this.digestPeerNeighbors(E,Q);for(let b of this.callbacks.connect)b(E,"out")}}),a)for(let o of this.callbacks.connect)o(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 i=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),i.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),i.close();i.setConnected(),this.connected[t]=i,this.neighborsList.push(t),this.#r(this.id,t)}#t(t,n){this.#n(t,"connected",n)}#n(t,n="both",i="both"){if(!t&&t===this.id)return;let[s,A]=[this.connecting[t],this.connected[t]];if(!s&&!A||(n!=="connecting"&&(A?.direction===i||i==="both")&&(A?.close(),delete this.connected[t],this.neighborsList=Object.keys(this.connected),this.#i(this.id,t)),n==="connected"))return;let a=i==="both"?["out","in"]:[i];for(let h of a)delete s?.[h];this.connecting[t]?.in||this.connecting[t]?.out||delete this.connecting[t]}#r(t="toto",n="tutu"){for(let i of[t,n])this.known[i]||(this.known[i]=new An,this.knownCount++),this.known[i].setNeighbor(i===t?n:t)}#i(t="toto",n="tutu"){for(let i of[t,n])this.known[i]&&(this.known[i].unsetNeighbor(i===t?n:t),!(this.known[i].connectionsCount>0)&&(delete this.known[i],this.knownCount--))}cleanupExpired(t=!0){let n=nt.time;for(let i of["in","out"])for(let s in this.connecting){if(!this.connecting[s][i])continue;let A=this.connected[s]?1e4:0;this.connecting[s][i].pendingUntil+A>n||(this.verbose>=4&&!this.connected[s]&&console.info(`%c(${this.id}) Pending ${i} connection to peer ${s} expired.`,it.PEER_STORE),this.verbose>0&&this.connected[s]?.direction===i&&console.info(`%c(${this.id}) Pending ${i} 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",i))}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 i=nt.time,s=0,A=this.known[t]?.neighbors||{};for(let a in A){if(a!==this.id&&i-A[a]>tt.PEER_LINK_EXPIRATION){this.#i(t,a);continue}n?s++:this.cryptoCodex.isPublicNode(a)||s++}return s}addConnectingPeer(t,n,i){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 A=this.offerManager.getTransportInstanceForSignal(t,n,i);return A?(this.connecting[t]||(this.connecting[t]={}),this.connecting[t][s]=new jt(t,A,s),!0):this.verbose>3?console.info(`%cFailed to get transport instance for signal from ${t}.`,it.PEER_STORE):null}assignSignal(t,n,i,s){let A=this.connecting[t]?.[n.type==="offer"?"in":"out"];try{if(A?.isWebSocket)throw new Error(`Cannot assign signal for ID ${t}. (WebSocket)`);n.type==="answer"?this.offerManager.addSignalAnswer(t,n,i,s):A.transportInstance.signal(n)}catch(a){console.error(`Error signaling ${n?.type} for ${t}:`,a.stack)}}kickPeer(t,n=6e4,i){n&&(this.kick[t]=nt.time+n),this.#n(t,"both"),this.verbose>1&&console.log(`%c(${this.id}) Kicked peer ${t} for ${n/1e3}s. ${i?"| Reason: "+i:""}`,"color: green;")}isKicked(t){return this.kick[t]&&this.kick[t]>nt.time}digestValidRoute(t=[]){for(let n=1;n<t.length;n++)this.#r(t[n-1],t[n])}digestPeerNeighbors(t,n=[]){if(!(!t||!Array.isArray(n))){for(let i in this.known[t]?.neighbors||{})n.includes(i)||this.#i(t,i);for(let i of n)this.#r(t,i)}}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 _t();var ve=class{cache={};peerStore;constructor(t,n){this.id=t,this.peerStore=n}buildRoutes(t,n=5,i=3,s=1728,A=!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 h=this.#r(t,i,s,a);if(!h.success)return{routes:[],success:!1,nodesExplored:h.nodesExplored};let o=this.#t(h.paths,A).slice(0,n);return this.cache[t]=o,{routes:o,success:!0,nodesExplored:h.nodesExplored}}#e(t){for(let{path:n}of t)for(let i=1;i<n.length;i++){let s=n[i-1],A=n[i];if(s===this.id){if(!this.peerStore.connected[A])return!1}else if(!this.peerStore.known[s]?.neighbors?.[A])return!1}return!0}#t(t,n){let i=[];for(let s of t)i.push({path:s,hops:s.length-1});return n&&i.sort((s,A)=>s.hops-A.hops),i}#n(t){let n=[],i=this.peerStore.neighborsList,s=[...Array(i.length).keys()].sort(()=>Math.random()-.5);for(let A of s)n.push({path:[this.id,i[A],t],hops:0,score:0});return n.length===0?{routes:[],success:!1,nodesExplored:0}:{routes:n,success:"blind",nodesExplored:n.length}}#r(t,n,i,s){let A=[],a=0,h=[{node:this.id,path:[this.id],pathSet:new Set([this.id]),depth:0}],E=new Map;E.set(this.id,[this.id]);let o=[{node:t,path:[t],pathSet:new Set([t]),depth:0}],l=new Map;l.set(t,[t]);let u=Math.ceil(n/2);for(;(h.length>0||o.length>0)&&a<i;){if(h.length>0){let g=this.#i(h,E,l,u);for(let Q of g){let b=this.#s(E.get(Q),l.get(Q));if(A.push(b),!(b.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}if(o.length>0){let g=this.#i(o,l,E,u);for(let Q of g){let b=this.#s(E.get(Q),l.get(Q));if(A.push(b),!(b.length-1>s))return{success:!0,paths:A,nodesExplored:a}}a++}}return{success:A.length>0,paths:A,nodesExplored:a}}#i(t,n,i,s){if(t.length===0)return[];let{node:A,path:a,pathSet:h,depth:E}=t.shift();if(E>=s)return[];let o=[];function l(u){if(h.has(u))return;let g=E+1;if(i.has(u)&&o.push(u),n.has(u))return;let Q=[...a,u],b=new Set(h).add(u);n.set(u,Q),t.push({node:u,path:Q,pathSet:b,depth:g})}if(A===this.id)for(let u of this.peerStore.neighborsList)l(u);else for(let u in this.peerStore.known[A]?.neighbors||{})l(u);return o}#s(t,n){let i=t.length+n.length-1,s=new Array(i),A=0;for(let a of t)s[A++]=a;for(let a=n.length-2;a>=0;a--)s[A++]=n[a];return s}};var{SANDBOX:zi,ICE_CANDIDATE_EMITTER:ts,TEST_WS_EVENT_MANAGER:es}=Bt.ENABLED?await Ne().then(()=>De):{},Pr=ve,ge=class{type="message";timestamp;neighborsList;route;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,i,s,A,a,h,E,o){this.type=t,this.timestamp=n,this.neighborsList=i,this.route=s,this.pubkey=A,this.data=a,this.signature=h,this.signatureStart=E,this.expectedEnd=o}getSenderId(){return this.route[0]}getTargetId(){return this.route[this.route.length-1]}extractRouteInfo(t="toto"){let n=this.newRoute||this.route,i=[],s=-1;for(let o=0;o<n.length;o++)if(i.push(n[o]),n[o]===t){s=o;break}let A=n[0],a=n[n.length-1],h=s>0?n[s-1]:null,E=s!==-1?n[s+1]:null;return{traveledRoute:i,selfPosition:s,senderId:A,targetId:a,prevId:h,nextId:E,routeLength:n.length}}},xe=class extends ge{rerouterPubkey;newRoute;rerouterSignature;constructor(t,n,i,s,A,a,h,E,o){super(t,n,i,s,A,a),this.rerouterPubkey=h,this.newRoute=E,this.rerouterSignature=o}getRerouterId(){return this.newRoute[0]}},Fe=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;pathFinder;maxHops=at.MAX_HOPS;maxRoutes=at.MAX_ROUTES;maxNodes=at.MAX_NODES;constructor(t,n,i,s,A=0){this.id=t,this.cryptoCodex=n,this.arbiter=i,this.peerStore=s,this.verbose=A,this.pathFinder=new Pr(this.id,this.peerStore)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}sendUnicast(t,n,i="message",s=1){if(t===this.id)return!1;let A=this.pathFinder.buildRoutes(t,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!A.success)return!1;let a=A.success==="blind"?1:s;for(let h=0;h<Math.min(a,A.routes.length);h++){let E=A.routes[h].path;if(E.length>at.MAX_HOPS){this.verbose>1&&console.warn(`Cannot send unicast message to ${t} as route exceeds maxHops (${at.MAX_HOPS}). BFS incurred.`);continue}let o=this.cryptoCodex.createUnicastMessage(i,n,E,this.peerStore.neighborsList);this.#e(E[1],o)}return!0}#e(t,n){if(this.id===t)return{success:!1,reason:"Cannot send message to self."};let i=this.peerStore.connected[t]?.transportInstance;if(!i)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{return i.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 i=this.cryptoCodex.readUnicastMessage(n);if(!i)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(await this.arbiter.digestMessage(t,i,n),this.arbiter.isBanished(t)||this.arbiter.isBanished(i.senderId))return;let{traveledRoute:s,selfPosition:A,senderId:a,targetId:h,prevId:E,nextId:o}=i.extractRouteInfo(this.id);if(t===a&&t===this.id)throw new Error("DirectMessage senderId and from are both self id !!");for(let g of this.callbacks.message_handle||[])g();if(A===-1)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Self not in route");if(E&&t!==E)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"Previous hop id does not match actual from id");if(a===this.id)return this.arbiter.adjustTrust(t,lt.UNICAST_INVALID_ROUTE,"SenderId is self id");if(this.verbose>3&&console.log(a===t?`(${this.id}) Direct ${i.type} from ${a}: ${i.data}`:`(${this.id}) Direct ${i.type} from ${a} (lastRelay: ${t}): ${i.data}`),this.peerStore.digestPeerNeighbors(a,i.neighborsList),t!==a&&this.arbiter.adjustTrust(t,lt.UNICAST_RELAYED,"Relayed unicast message"),tt.ON_UNICAST.DIGEST_TRAVELED_ROUTE&&this.peerStore.digestValidRoute(s),this.id===h){for(let g of this.callbacks[i.type]||[])g(a,i.data);return}let{success:l,reason:u}=this.#e(o,n);if(!l&&!i.rerouterSignature){let g=this.pathFinder.buildRoutes(h,this.maxRoutes,this.maxHops,this.maxNodes,!0);if(!g.success)return;let Q=g.routes[0].path;if(Q.length>at.MAX_HOPS){this.verbose>1&&console.warn(`Cannot re-route unicast message to ${h} as new route exceeds maxHops (${at.MAX_HOPS}).`);return}let b=this.cryptoCodex.createReroutedUnicastMessage(n,Q),m=Q[A+1];this.#e(m,b)}}};await _t();var ke=class{topic="gossip";timestamp;neighborsList;HOPS;senderId;pubkey;data;signature;signatureStart;expectedEnd;constructor(t,n,i,s,A,a,h,E,o,l){this.topic=t,this.timestamp=n,this.neighborsList=i,this.HOPS=s,this.senderId=A,this.pubkey=a,this.data=h,this.signature=E,this.signatureStart=o,this.expectedEnd=l}},on=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(i=>({senderId:i.senderId,topic:i.topic,data:i.serializedMessage}));return t==="asc"?n:n.reverse()}addMessage(t){let n=nt.time,{marker:i,neighLength:s,timestamp:A,dataLength:a,pubkey:h,associatedId:E}=this.cryptoCodex.readBufferHeader(t);if(n-A>ut.EXPIRATION)return;let o=t.subarray(0,47+s+a),l=be(o);if(this.xxHash32UsageCount++,this.seenTimeouts[l])return;let u=ut.MARKERS_BYTES[i],g=E,Q=n+ut.CACHE_DURATION;return this.cache.push({hash:l,senderId:g,topic:u,serializedMessage:t,timestamp:A,expiration:Q}),this.seenTimeouts[l]=Q,--this.cleanupIn<=0&&this.#e(n),{hash:l,isNew:!this.seenTimeouts[l]}}#e(t=nt.time){let n=-1;for(let i=0;i<this.cache.length;i++)this.cache[i].expiration<=t?delete this.seenTimeouts[this.cache[i].hash]:n===-1&&(n=i);n>0?this.cache=this.cache.slice(n):n===-1&&(this.cache=[]),this.cleanupIn=this.cleanupFrequency}},Ue=class{callbacks={message_handle:[]};id;cryptoCodex;arbiter;peerStore;verbose;bloomFilter;constructor(t,n,i,s,A=0){this.id=t,this.cryptoCodex=n,this.arbiter=i,this.peerStore=s,this.verbose=A,this.bloomFilter=new on(n)}on(t,n){this.callbacks[t]?this.callbacks[t].push(n):this.callbacks[t]=[n]}broadcastToAll(t,n="gossip",i){let s=i||ut.HOPS[n]||ut.HOPS.default,A=this.cryptoCodex.createGossipMessage(n,t,s,this.peerStore.neighborsList);if(this.bloomFilter.addMessage(A)){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,A)}}#e(t,n){if(t===this.id)throw new Error(`Refusing to send a gossip message to self (${this.id}).`);let i=this.peerStore.connected[t]?.transportInstance;if(!i)return{success:!1,reason:`Transport instance is not available for peer ${t}.`};try{i.send(n)}catch{this.peerStore.connected[t]?.close()}}sendGossipHistoryToPeer(t){let n=this.bloomFilter.getGossipHistoryByTime("asc");for(let i of n)this.#e(t,i.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 D of this.callbacks.message_handle||[])D(n);if(!this.bloomFilter.addMessage(n))return;let i=this.cryptoCodex.readGossipMessage(n);if(!i)return this.arbiter.countPeerAction(t,"WRONG_SERIALIZATION");if(await this.arbiter.digestMessage(t,i,n),this.arbiter.isBanished(t)||this.arbiter.isBanished(i.senderId))return;let{topic:s,timestamp:A,neighborsList:a,HOPS:h,senderId:E,data:o}=i;if(E===this.id)throw new Error(`#${this.id}#${t}# Received our own message back from peer ${t}.`);this.verbose>3&&console.log(E===t?`(${this.id}) Gossip ${s} from ${E}: ${o}`:`(${this.id}) Gossip ${s} from ${E} (by: ${t}): ${o}`),this.peerStore.digestPeerNeighbors(E,a);for(let D of this.callbacks[s]||[])D(E,o,h,i);if(h<1)return;let l=this.peerStore.neighborsList.length,u=Math.max(1,l/ut.TRANSMISSION_RATE.NEIGHBOURS_PONDERATION),g=ut.TRANSMISSION_RATE[s]||ut.TRANSMISSION_RATE.default,Q=Math.pow(g,u),b=l<ut.TRANSMISSION_RATE.MIN_NEIGHBOURS_TO_APPLY_PONDERATION,m=this.cryptoCodex.decrementGossipHops(n);for(let D of this.peerStore.neighborsList)if(D!==t){if(!b&&Math.random()>Q)continue;this.#e(D,m)}}};await _t();var{SANDBOX:hs,ICE_CANDIDATE_EMITTER:gs,TEST_WS_EVENT_MANAGER:fs}=Bt.ENABLED?await Ne().then(()=>De):{},an=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>=nt.time)}get bestOfferInfo(){let{senderId:t,overlap:n,neighborsCount:i,data:s,timestamp:A}=this.offers.shift()||{};return{senderId:t,data:s,timestamp:A,value:this.orderingBy==="overlap"?n:i}}pushSortTrim(t,n={min:.2,max:.8}){let{min:i,max:s}=n;Math.random()<Math.min(i,this.offers.size/this.maxOffers*s)||(this.offers.push(t),this.offers.length!==1&&(this.offers.sort((A,a)=>this.orderingBy==="overlap"?A.overlap-a.overlap:a.neighborsCount-A.neighborsCount),this.size>this.maxOffers&&this.offers.pop()))}},Me=class{id;cryptoCodex;gossip;messager;peerStore;bootstraps;halfTarget=Math.ceil(tt.TARGET_NEIGHBORS_COUNT/2);twiceTarget=tt.TARGET_NEIGHBORS_COUNT*2;bootstrapsConnectionState=new Map;get isPublicNode(){return!!this.services?.publicUrl}services;phase=0;nextBootstrapIndex=0;offersQueue=new an;maxBonus=gt.CONNECTION_UPGRADE_TIMEOUT*.2;constructor(t,n,i,s,A,a){this.id=t,this.cryptoCodex=n,this.gossip=i,this.messager=s,this.peerStore=A;for(let h of a)this.bootstrapsConnectionState.set(h,!1);this.bootstraps=[...a].sort(()=>Math.random()-.5),this.nextBootstrapIndex=Math.random()*this.bootstraps.length|0}tick(){let{neighborsCount:t,nonPublicNeighborsCount:n,isEnough:i,isTooMany:s,isHalfReached:A}=this.#e,a=n>=tt.TARGET_NEIGHBORS_COUNT/3?1:ft.MAX_SDP_OFFERS;if(this.peerStore.offerManager.offersToCreate=i?0:a,this.isPublicNode){this.services.freePublicNodeByKickingPeers();return}if(s)return Math.random()>.05?this.#o():null;i?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,A)}handleIncomingSignal(t,n,i){if(this.isPublicNode||!t||this.peerStore.isKicked(t)||n.signal?.type!=="offer"&&n.signal?.type!=="answer")return;let{signal:s,offerHash:A}=n||{},{connected:a,nonPublicNeighborsCount:h,isTooMany:E,isHalfReached:o}=this.#e;if(E||a[t])return;if(s.type==="answer"){if(this.peerStore.addConnectingPeer(t,s,A)!==!0)return;let Q=Math.abs(h-this.#t(t).nonPublicCount),b=this.maxBonus/tt.TARGET_NEIGHBORS_COUNT,m=Math.round(Math.min(this.maxBonus,Q*b));return this.peerStore.assignSignal(t,s,A,nt.time+m)}if(h>this.twiceTarget)return;let{overlap:l,nonPublicCount:u}=this.#t(t);if(u>this.twiceTarget)return;let g={senderId:t,data:n,overlap:l,neighborsCount:u,timestamp:nt.time};this.offersQueue.updateOrderingBy(o),this.offersQueue.pushSortTrim(g)}tryConnectNextBootstrap(t=0,n=0){if(this.bootstraps.length===0)return;let i=t-n,s=0;for(let a in this.peerStore.connecting)s++;if(i>=this.halfTarget||t>=tt.TARGET_NEIGHBORS_COUNT||s+n>this.twiceTarget)return;let A=this.bootstraps[this.nextBootstrapIndex++%this.bootstraps.length];this.bootstrapsConnectionState.get(A)||this.#i(A)}get#e(){return{connected:this.peerStore.connected,neighborsCount:this.peerStore.neighborsList.length,nonPublicNeighborsCount:this.peerStore.standardNeighborsList.length,isEnough:this.peerStore.standardNeighborsList.length>=tt.TARGET_NEIGHBORS_COUNT,isTooMany:this.peerStore.standardNeighborsList.length>tt.TARGET_NEIGHBORS_COUNT,isHalfReached:this.peerStore.standardNeighborsList.length>=this.halfTarget}}#t(t="toto"){let n=this.peerStore.known[t]?.neighbors||{},i={overlap:0,nonPublicCount:0,p1nCount:this.peerStore.getUpdatedPeerConnectionsCount(t)};for(let s in n)this.cryptoCodex.isPublicNode(s)||i.nonPublicCount++;for(let s of this.peerStore.standardNeighborsList)n[s]&&i.overlap++;return i}#n(t=[]){return t.map(n=>({id:n,...this.#t(n)}))}#r(t){let n=typeof window<"u",s=n&&window.location.protocol==="https:"?"wss://":"ws://",A=t.endsWith("/ws"),a=n&&!A?window.location.host:t;return t.startsWith("ws")?t:`${s}${a}`}#i(t="localhost:8080"){let n=null,i=new ft.WS_CLIENT(this.#r(t));i.binaryType="arraybuffer",i.onerror=s=>console.error("WebSocket error:",s.stack),i.onopen=()=>{this.bootstrapsConnectionState.set(t,!0),i.onclose=()=>{this.bootstrapsConnectionState.set(t,!1);for(let s of this.peerStore.callbacks.disconnect)s(n,"out")},i.onmessage=s=>{if(n)for(let A of this.peerStore.callbacks.data)A(n,s.data);else{let A=new Uint8Array(s.data);if(A[0]>127)return;let a=this.cryptoCodex.readUnicastMessage(A);if(!a)return;let{route:h,type:E,neighborsList:o}=a;if(E!=="handshake"||h.length!==2)return;let{signatureStart:l,pubkey:u,signature:g}=a,Q=A.subarray(0,l);if(!this.cryptoCodex.verifySignature(u,g,Q))return;n=h[0],this.peerStore.digestPeerNeighbors(n,o),this.peerStore.connecting[n]?.in?.close(),this.peerStore.connecting[n]||(this.peerStore.connecting[n]={}),this.peerStore.connecting[n].out=new jt(n,i,"out",!0);for(let b of this.peerStore.callbacks.connect)b(n,"out")}},i.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))}}#s(t=0,n=!1){if(!this.peerStore.neighborsList.length)return;let s=Object.keys(this.peerStore.connecting).length+t,[A,a,h]=[null,null,null];for(let m in this.peerStore.offerManager.offers){let D=this.peerStore.offerManager.offers[m],{isUsed:f,sentCounter:B,signal:C,timestamp:S}=D;if(f||B>0)continue;let y=nt.time-S;if(!(y>ft.SDP_OFFER_EXPIRATION/2)&&!(h&&y>h)){a=D,A=m,h=y;break}}if(!A||!a)return;if(!n&&s<=this.twiceTarget){this.gossip.broadcastToAll({signal:a.signal,offerHash:A},"signal_offer"),a.sentCounter++;return}let E=null;for(let m of this.#n(this.peerStore.standardNeighborsList)){let D=m[n?"overlap":"nonPublicCount"];E===null&&(E=D),n&&D<E&&(E=D),!n&&D<=E&&(E=D)}let o=100,l=1e3,u=this.peerStore.knownCount,g=Math.max(Math.min(l/u,u/l),.127),Q=[];for(let m in this.peerStore.known){if(Math.random()>g)continue;if(--l<=0)break;if(m===this.id||this.cryptoCodex.isPublicNode(m)||this.peerStore.isKicked(m))continue;if(this.peerStore.connected[m]||this.peerStore.connecting[m])continue;let{overlap:D,nonPublicCount:f}=this.#t(m);if(!(f>tt.TARGET_NEIGHBORS_COUNT)&&(E===null&&(E=n?D:f),!(n&&D>E)&&!(!n&&f<E)&&(Q.push(m),--o<=0)))break}if(!Q.length)return;let b=new Map;for(let m=0;m<Math.min(Q.length,100);m++){let D=Q[Math.floor(Math.random()*Q.length)];if(!b.has(D)&&(b.size===0&&a.sentCounter++,b.set(D,!0),this.messager.sendUnicast(D,{signal:a.signal,offerHash:A},"signal_offer",1),b.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 i=0;i<this.offersQueue.size;i++){let{senderId:s,data:A,timestamp:a,value:h}=this.offersQueue.bestOfferInfo;if(!s||!A||!a)break;if(!(this.peerStore.connected[s]||this.peerStore.isKicked(s))&&!this.peerStore.connecting[s]?.in){if(t=t===null?h:t,t!==h)break;this.peerStore.addConnectingPeer(s,A.signal,A.offerHash)===!0&&(this.peerStore.assignSignal(s,A.signal,A.offerHash,a),n++)}}}#o(){let n=this.#n(this.peerStore.standardNeighborsList).sort((i,s)=>s.overlap-i.overlap||s.nonPublicCount-i.nonPublicCount);this.peerStore.kickPeer(n[0].id,6e4,"improveTopology")}};await _t();var kt=class I{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,i=new Uint8Array(n);for(let s=0,A=0;s<n;++s,A+=2)i[s]=(this.hexMap[t[A]]<<4)+this.hexMap[t[A+1]];return i}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),i=new Uint8Array(n.length);for(let s=0;s<n.length;s++)i[s]=n.charCodeAt(s);return i}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 i="";for(let s of t)i+=s<16?`0${s.toString(16)}`:s.toString(16);return n>0&&(i=i.padStart(n,"0")),i}bytesToHex(t,n=0){return I.bytesToHex(t,n)}static hexToBits(t="ffffff",n="string"){let i=[];if(n==="arrayOfNumbers")for(let s=0;s<t.length;s++)i.push(...parseInt(t[s],16).toString(2).padStart(4,"0").split("").map(A=>parseInt(A,10)));else for(let s=0;s<t.length;s++)i.push(parseInt(t[s],16).toString(2).padStart(4,"0"));return n==="string"?i.join(""):i}static bytesToBits(t,n="string"){return this.hexToBits(this.bytesToHex(t),n)}static ipToInt(t="192.168.0.1"){return t.split(".").reduce((n,i)=>(n<<8)+parseInt(i,10),0)}};var Ie=typeof window<"u",[bi,{sha512:wi}]=await Promise.all([Ie?import("https://unpkg.com/@noble/ed25519@3.0.0/index.js"):Promise.resolve().then(()=>(or(),Ar)),Ie?import("https://unpkg.com/@noble/hashes@2.0.0/sha2.js"):Promise.resolve().then(()=>(br(),yr))]),Ee=bi;Ee.hashes.sha512=wi;var Ze=class{converter=new kt;argon2;hash=async(t,n,i=2**16,s=1,A=1,a=2,h=32)=>{let E=this.#e(t,n,s,i,A,a,h),o=await this.getArgon2Lib(),l=Ie?await o.hash(E):await o.hash(t,E);if(!l)return!1;let u=l.encoded||l,g=this.#t(u);return g||!1};async getArgon2Lib(){if(this.argon2)return this.argon2;if(!Ie)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(()=>(mr(),wr));return window.argon2=t.default,this.argon2=t.default,this.argon2}#e(t="averylongpassword123456",n="saltsaltsaltsaltsalt",i=1,s=2**10,A=1,a=2,h=32){let E=n.padEnd(20,"0").substring(0,16);return{type:a,pass:t,parallelism:A,time:i,timeCost:i,mem:s,memoryCost:s,hashLen:h,hashLength:h,salt:Ie?E:Buffer.from(E)}}#t(t="$argon2id$v=19$m=1048576,t=1,p=1$c2FsdHNhbHRzYWx0c2FsdHNhbHQ$UamPN/XTTX4quPewQNw4/s3y1JJeS22cRroh5l7OTMM"){let n=t.split("$").pop(),i=this.converter.base64toBytes(n),s=this.converter.bytesToHex(i),A=kt.hexToBits(s,"string");return A?{encoded:t,hash:i,hex:s,bitsString:A}:!1}};var ae=class I{argon2=new Ze;converter=new kt;AVOID_CRYPTO=!1;verbose=gt.DEFAULT_VERBOSE;id;publicKey;privateKey;constructor(t,n=gt.DEFAULT_VERBOSE){if(this.verbose=n,!t)return;this.AVOID_CRYPTO=!0,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 i=new TextEncoder().encode(this.id);for(let s=0;s<X.ID_LENGTH;s++)this.publicKey[s]=i[s]}static async createCryptoCodex(t,n){let i=new I(void 0,this.verbose);return await i.generate(t,n),i}static isPublicNode(t){return(X.ARE_IDS_HEX?kt.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 I.isPublicNode(t)}async generate(t,n){if(!this.nodeId&&(await this.#t(n,t),!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 i=2**X.DIFFICULTY*100;for(let s=0;s<i;s++){let{secretKey:A,publicKey:a}=Ee.keygen(t),h=this.#e(a);if(!(n&&!this.isPublicNode(h))&&!(!n&&this.isPublicNode(h))&&await this.pubkeyDifficultyCheck(a)){this.id=h,this.privateKey=A,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 ${i} iterations. Try lowering the difficulty.`,it.CRYPTO_CODEX)}signBufferViewAndAppendSignature(t,n,i=t.length-X.SIGNATURE_LENGTH){if(this.AVOID_CRYPTO)return;let s=t.subarray(0,i);t.set(Ee.sign(s,n),i)}createGossipMessage(t,n,i=3,s=[],A=nt.time){let a=ut.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create gossip message: unknown topic '${t}'.`);let h=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(n),l=47+h.length+o.length+X.SIGNATURE_LENGTH+1,u=new ArrayBuffer(l),g=new Uint8Array(u);return this.#i(g,a,E,s.length,A,o,this.publicKey),g.set(h,47),g.set(o,47+h.length),g.set([Math.min(255,i)],l-1),this.signBufferViewAndAppendSignature(g,this.privateKey,l-X.SIGNATURE_LENGTH-1),g}decrementGossipHops(t){let n=new Uint8Array(t),i=t[t.length-1];return n[t.length-1]=Math.max(0,i-1),n}createUnicastMessage(t,n,i,s=[],A=nt.time){let a=at.MARKERS_BYTES[t];if(a===void 0)throw new Error(`Failed to create unicast message: unknown type '${t}'.`);if(i.length<2)throw new Error("Failed to create unicast message: route must have at least 2 nodes (next hop and target).");if(i.length>at.MAX_HOPS)throw new Error(`Failed to create unicast message: route exceeds max hops (${at.MAX_HOPS}).`);let h=this.#n(s),{dataCode:E,dataBytes:o}=this.#r(n),l=this.#n(i),u=47+h.length+1+l.length+o.length+X.SIGNATURE_LENGTH,g=new ArrayBuffer(u),Q=new Uint8Array(g);this.#i(Q,a,E,s.length,A,o,this.publicKey);let b=h.length+o.length;return Q.set(h,47),Q.set(o,47+h.length),Q.set([i.length],47+b),Q.set(l,48+b),this.signBufferViewAndAppendSignature(Q,this.privateKey,u-X.SIGNATURE_LENGTH),Q}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>at.MAX_HOPS)throw new Error(`Failed to create rerouted unicast message: route exceeds max hops (${at.MAX_HOPS}).`);let i=n.map(h=>this.converter.stringToBytes(h)),s=t.length+32+X.ID_LENGTH*i.length+X.SIGNATURE_LENGTH,A=new ArrayBuffer(s),a=new Uint8Array(A);a.set(t,0),a.set(this.publicKey,t.length);for(let h=0;h<i.length;h++)a.set(i[h],t.length+32+h*X.ID_LENGTH);return 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(""))}#r(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))}}#i(t,n,i,s,A,a,h){let E=this.converter.numberTo8Bytes(A),o=this.converter.numberTo4Bytes(a.length);t.set([n],0),t.set([i],1),t.set([s],2),t.set(E,3),t.set(o,11),t.set(h,15)}verifySignature(t,n,i){return this.AVOID_CRYPTO?!0:Ee.verify(n,i,t)}readBufferHeader(t,n=!0){let i=t[0],s=t[1],A=t[2],a=t.slice(3,11),h=t.slice(11,15),E=t.slice(15,47),o=n?this.#e(E):null,l=A*this.idLength,u=this.converter.bytes8ToNumber(a),g=this.converter.bytes4ToNumber(h);return{marker:i,dataCode:s,neighLength:l,timestamp:u,dataLength:g,pubkey:E,associatedId:o}}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:i,neighLength:s,timestamp:A,dataLength:a,pubkey:h,associatedId:E}=this.readBufferHeader(t),o=ut.MARKERS_BYTES[n];if(o===void 0)throw new Error(`Failed to deserialize gossip message: unknown marker byte ${d[0]}.`);let l=s+a,u=this.#s(t.slice(47,47+s)),g=this.#A(i,t.slice(47+s,47+l)),Q=47+l,b=t.slice(Q,Q+X.SIGNATURE_LENGTH),m=t[t.length-1],D=Q+X.SIGNATURE_LENGTH+1,f=E;return new ke(o,A,u,m,f,h,g,b,Q,D)}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:i,neighLength:s,timestamp:A,dataLength:a,pubkey:h}=this.readBufferHeader(t,!1),E=at.MARKERS_BYTES[n];if(E===void 0)throw new Error(`Failed to deserialize unicast message: unknown marker byte ${d[0]}.`);let o=s+a,l=this.#s(t.slice(47,47+s)),u=this.#A(i,t.slice(47+s,47+o)),Q=t[47+o]*this.idLength,b=47+o+1+Q,m=t.slice(47+o+1,b),D=this.#s(m),f=b+X.SIGNATURE_LENGTH,B=t.slice(b,f);if(!(t.length>f))return new ge(E,A,l,D,h,u,B,b,f);let S=t.slice(f,f+32),y=this.#s(t.slice(f+32,t.length-X.SIGNATURE_LENGTH)),R=t.slice(t.length-X.SIGNATURE_LENGTH);return new xe(E,A,l,D,h,u,B,S,y,R,t.length)}catch(n){this.verbose>1&&console.warn(`Error deserializing ${type||"unknown"} unicast message:`,n.stack)}return null}#s(t){let n=[],i=this.idLength;if(t.length%i!==0)throw new Error("Failed to parse ids: invalid serialized length.");for(let s=0;s<t.length/i;s++){let A=t.slice(s*i,(s+1)*i);X.ARE_IDS_HEX?n.push(this.converter.bytesToHex(A,X.ID_LENGTH)):n.push(this.converter.bytesToString(A))}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 _t();var mi=gt.IS_BROWSER?null:await import("dgram"),ze=class{id;verbose;maxKick;peerStore;cryptoCodex;publicUrl;constructor(t,n,i=3,s=1){this.id=t.id,this.verbose=s,this.maxKick=i,this.peerStore=n,this.cryptoCodex=t}start(t="localhost",n=Ft.PORT){this.publicUrl=`ws://${t}:${n}`,this.#e(t,n),Bt.USE_TEST_TRANSPORTS||this.#t(t,n+1)}freePublicNodeByKickingPeers(){let t=Math.min(this.maxKick,this.peerStore.neighborsList.length-tt.TARGET_NEIGHBORS_COUNT);if(t<=0)return;let n=0,i=Ft.AUTO_KICK_DELAY;for(let s in this.peerStore.connected){let A=this.peerStore.connected[s],a=this.peerStore.getUpdatedPeerConnectionsCount(s,!1);if(a>tt.TARGET_NEIGHBORS_COUNT){if(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),this.peerStore.neighborsList.length<=tt.TARGET_NEIGHBORS_COUNT)break;continue}if(!(A.getConnectionDuration()<(a>2?i:i*2))&&(this.peerStore.kickPeer(s,Ft.AUTO_KICK_DURATION,"freePublicNode"),++n>=t))break}}#e(t="localhost",n=Ft.PORT){this.wsServer=new ft.WS_SERVER({port:n,host:t}),this.wsServer.on("error",i=>console.error(`WebSocket error on Node #${this.id}:`,i)),this.wsServer.on("connection",i=>{i.on("close",()=>{if(s)for(let A of this.peerStore.callbacks.disconnect)A(s,"in")}),i.on("error",A=>console.error(`WebSocket error on Node #${this.id} with peer ${s}:`,A.stack));let s;i.on("message",A=>{if(s)for(let a of this.peerStore.callbacks.data)a(s,A);else{let a=new Uint8Array(A);if(a[0]>127)return;let h=this.cryptoCodex.readUnicastMessage(a);if(!h)return;let{route:E,type:o,neighborsList:l}=h;if(o!=="handshake"||E.length!==2)return;let{signatureStart:u,pubkey:g,signature:Q}=h,b=a.subarray(0,u);if(!this.cryptoCodex.verifySignature(g,Q,b))return;s=E[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 jt(s,i,"in",!0);for(let m of this.peerStore.callbacks.connect)m(s,"in")}}),i.send(this.cryptoCodex.createUnicastMessage("handshake",null,[this.id,this.id],this.peerStore.neighborsList))})}#t(t="localhost",n=Ft.PORT+1){this.stunServer=mi.createSocket("udp4"),this.stunServer.on("message",(i,s)=>{this.verbose>2&&console.log(`%cSTUN message from ${s.address}:${s.port} - ${i.toString("hex")}`,it.SERVICE),this.#n(i)&&this.stunServer.send(this.#r(i,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),i=t.readUInt32BE(4);return n===1&&i===554869826}#r(t,n){let i=t.subarray(8,20),s=Buffer.allocUnsafe(32);return s.writeUInt16BE(257,0),s.writeUInt16BE(12,2),s.writeUInt32BE(554869826,4),i.copy(s,8),s.writeUInt16BE(1,20),s.writeUInt16BE(8,22),s.writeUInt16BE(1,24),s.writeUInt16BE(n.port,26),s.writeUInt32BE(kt.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 i of t){if(!i.includes(":"))continue;let s=i.split(":")[1].replace("//",""),A=parseInt(i.split(":")[2])+1;n.push({urls:`stun:${s}:${A}`})}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 Sr(I={}){let t=I.verbose!==void 0?I.verbose:gt.DEFAULT_VERBOSE,n=I.cryptoCodex||new ae(void 0,t);n.publicKey||await n.generate(!1);let i=new Ce(n,I.bootstraps||[],t);return I.autoStart!==!1&&await i.start(),i}var Ce=class{started=!1;id;cryptoCodex;verbose;arbiter;offerManager;peerStore;messager;gossip;topologist;services;constructor(t,n=[],i=gt.DEFAULT_VERBOSE){this.verbose=i,this.topologist?.services&&(this.topologist.services.verbose=i),this.cryptoCodex=t,this.id=this.cryptoCodex.id;let s=ze.deriveSTUNServers(n||[]);this.offerManager=new we(this.id,s,i),this.arbiter=new ye(this.id,t,i),this.peerStore=new Te(this.id,this.cryptoCodex,this.offerManager,this.arbiter,i),this.messager=new Fe(this.id,this.cryptoCodex,this.arbiter,this.peerStore,i),this.gossip=new Ue(this.id,this.cryptoCodex,this.arbiter,this.peerStore,i),this.topologist=new Me(this.id,this.cryptoCodex,this.gossip,this.messager,this.peerStore,n||[]);let{arbiter:A,peerStore:a,messager:h,gossip:E,topologist:o}=this;a.on("signal",(l,u)=>this.sendMessage(l,u,"signal_answer")),a.on("connect",(l,u)=>this.#e(l,u)),a.on("disconnect",(l,u)=>this.#t(l,u)),a.on("data",(l,u)=>this.#n(l,u)),h.on("signal_answer",(l,u)=>o.handleIncomingSignal(l,u)),h.on("signal_offer",(l,u)=>o.handleIncomingSignal(l,u)),E.on("signal_offer",(l,u,g)=>o.handleIncomingSignal(l,u,g)),i>2&&console.log(`Node initialized: ${this.id}`)}#e=(t,n)=>{let i=this.cryptoCodex.isPublicNode(t);if(this.publicUrl)return;this.verbose>(this.publicUrl||i?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection established with peer ${t}`),(!i&&!this.cryptoCodex.isPublicNode(this.id)||n==="in")&&this.sendMessage(t,this.id,"handshake");let A=this.peerStore.neighborsList.length>=tt.TARGET_NEIGHBORS_COUNT+this.halfTarget,a=()=>{tt.ON_CONNECT_DISPATCH.OVER_NEIGHBORED&&A&&this.broadcast([],"over_neighbored"),tt.ON_CONNECT_DISPATCH.SHARE_HISTORY&&this.peerStore.getUpdatedPeerConnectionsCount(t)<=1&&this.gossip.sendGossipHistoryToPeer(t)};tt.ON_CONNECT_DISPATCH.DELAY?setTimeout(a,tt.ON_CONNECT_DISPATCH.DELAY):a()};#t=(t,n)=>{if(!this.peerStore.neighborsList.length){for(let A in this.peerStore.connecting)this.peerStore.kickPeer(A,0,"no_neighbors_left");for(let A in this.offerManager.offers)this.offerManager.offers[A].timestamp=0}let i=this.cryptoCodex.isPublicNode(t);if(this.peerStore.connected[t])return;this.verbose>(this.publicUrl||i?3:2)&&console.log(`(${this.id}) ${n==="in"?"Incoming":"Outgoing"} connection closed with peer ${t}`)};#n=(t,n)=>{let i=new Uint8Array(n);i[0]>127?this.gossip.handleGossipMessage(t,i):this.messager.handleDirectMessage(t,i)};get publicUrl(){return this.services?.publicUrl}onMessageData(t){this.messager.on("message",t)}onGossipData(t){this.gossip.on("gossip",t)}async start(){return await nt.sync(this.verbose),this.started=!0,Bt.AVOID_INTERVALS||(this.topologist.tryConnectNextBootstrap(),this.arbiterInterval=setInterval(()=>this.arbiter.tick(),1e3),this.enhancerInterval=setInterval(()=>this.topologist.tick(),tt.LOOP_DELAY),this.peerStoreInterval=setInterval(()=>{this.peerStore.cleanupExpired(),this.peerStore.offerManager.tick()},2500)),!0}broadcast(t,n,i){this.gossip.broadcastToAll(t,n,i)}sendMessage(t,n,i,s=1){this.messager.sendUnicast(t,n,i,s)}async tryConnectToPeer(t="toto",n=5){console.info("FUNCTION DISABLED FOR NOW")}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()}};await _t();var _r={Node:Ce,createNode:Sr,CryptoCodex:ae,CONFIG:Fn};var qs=_r;typeof window<"u"&&(window.HiveP2P=_r);export{Fn as CONFIG,ae as CryptoCodex,Ce as Node,Sr as createNode,qs as default};
|
|
4
4
|
/*!
|
|
5
5
|
* The buffer module from node.js, for the browser.
|
|
6
6
|
*
|