libp2p 2.4.2 → 2.5.0
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/dist/index.min.js +15 -18
- package/dist/src/content-routing.d.ts +3 -2
- package/dist/src/content-routing.d.ts.map +1 -1
- package/dist/src/content-routing.js +50 -0
- package/dist/src/content-routing.js.map +1 -1
- package/dist/src/peer-routing.d.ts +3 -2
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +25 -0
- package/dist/src/peer-routing.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +10 -10
- package/src/content-routing.ts +54 -2
- package/src/peer-routing.ts +29 -2
- package/src/version.ts +1 -1
package/dist/index.min.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2P = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var Libp2P=(()=>{var Gm=Object.create;var $s=Object.defineProperty;var Wm=Object.getOwnPropertyDescriptor;var jm=Object.getOwnPropertyNames;var Zm=Object.getPrototypeOf,Xm=Object.prototype.hasOwnProperty;var Qe=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Re=(r,e)=>{for(var t in e)$s(r,t,{get:e[t],enumerable:!0})},xf=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of jm(e))!Xm.call(r,s)&&s!==t&&$s(r,s,{get:()=>e[s],enumerable:!(n=Wm(e,s))||n.enumerable});return r};var hr=(r,e,t)=>(t=r!=null?Gm(Zm(r)):{},xf(e||!r||!r.__esModule?$s(t,"default",{value:r,enumerable:!0}):t,r)),Ym=r=>xf($s({},"__esModule",{value:!0}),r);var Th=Qe(cn=>{"use strict";var Ay="[object ArrayBuffer]",Tt=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===Ay}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),s=r.toUint8Array(t);if(n.length!==s.byteLength)return!1;for(let o=0;o<n.length;o++)if(n[o]!==s[o])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let s=new Uint8Array(n),o=0;for(let i of t){let a=this.toUint8Array(i);s.set(a,o),o+=a.length}return e[e.length-1]instanceof Function?this.toView(s,e[e.length-1]):s.buffer}},xl="string",Sy=/^[0-9a-f\s]+$/i,_y=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,By=/^[a-zA-Z0-9-_]+$/,Io=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return n.buffer}static toString(e){let t=Tt.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return decodeURIComponent(escape(n))}},Xe=class{static toString(e,t=!1){let n=Tt.toArrayBuffer(e),s=new DataView(n),o="";for(let i=0;i<n.byteLength;i+=2){let a=s.getUint16(i,t);o+=String.fromCharCode(a)}return o}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),s=new DataView(n);for(let o=0;o<e.length;o++)s.setUint16(o*2,e.charCodeAt(o),t);return n}},ko=class r{static isHex(e){return typeof e===xl&&Sy.test(e)}static isBase64(e){return typeof e===xl&&_y.test(e)}static isBase64Url(e){return typeof e===xl&&By.test(e)}static ToString(e,t="utf8"){let n=Tt.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Xe.toString(n,!0);case"utf16":case"utf16be":return Xe.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Xe.fromString(e,!0);case"utf16":case"utf16be":return Xe.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Tt.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return Io.fromString(e);case"utf16":case"utf16be":return Xe.fromString(e);case"utf16le":case"usc2":return Xe.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return Io.toString(e);case"utf16":case"utf16be":return Xe.toString(e);case"utf16le":case"usc2":return Xe.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n.buffer}static ToBinary(e){let t=Tt.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return n}static ToHex(e){let t=Tt.toUint8Array(e),n="",s=t.length;for(let o=0;o<s;o++){let i=t[o];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let s=0;s<t.length;s=s+2){let o=t.slice(s,s+2);n[s/2]=parseInt(o,16)}return n.buffer}static ToUtf16String(e,t=!1){return Xe.toString(e,t)}static FromUtf16String(e,t=!1){return Xe.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};ko.DEFAULT_UTF8_ENCODING="utf8";function Cy(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let s=arguments[n];for(let o in s)t[o]=s[o]}return t}function Iy(...r){let e=r.map(s=>s.byteLength).reduce((s,o)=>s+o),t=new Uint8Array(e),n=0;return r.map(s=>new Uint8Array(s)).forEach(s=>{for(let o of s)t[n++]=o}),t.buffer}function ky(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<r.byteLength;s++)if(t[s]!==n[s])return!1;return!0}cn.BufferSourceConverter=Tt;cn.Convert=ko;cn.assign=Cy;cn.combine=Iy;cn.isEqual=ky});var Wd=Qe((zA,Ul)=>{"use strict";var Qy=Object.prototype.hasOwnProperty,He="~";function ws(){}Object.create&&(ws.prototype=Object.create(null),new ws().__proto__||(He=!1));function ew(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Gd(r,e,t,n,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var o=new ew(t,n||r,s),i=He?He+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],o]:r._events[i].push(o):(r._events[i]=o,r._eventsCount++),r}function Ei(r,e){--r._eventsCount===0?r._events=new ws:delete r._events[e]}function Ne(){this._events=new ws,this._eventsCount=0}Ne.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)Qy.call(t,n)&&e.push(He?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ne.prototype.listeners=function(e){var t=He?He+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,o=n.length,i=new Array(o);s<o;s++)i[s]=n[s].fn;return i};Ne.prototype.listenerCount=function(e){var t=He?He+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Ne.prototype.emit=function(e,t,n,s,o,i){var a=He?He+e:e;if(!this._events[a])return!1;var c=this._events[a],u=arguments.length,f,l;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),u){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,o),!0;case 6:return c.fn.call(c.context,t,n,s,o,i),!0}for(l=1,f=new Array(u-1);l<u;l++)f[l-1]=arguments[l];c.fn.apply(c.context,f)}else{var d=c.length,h;for(l=0;l<d;l++)switch(c[l].once&&this.removeListener(e,c[l].fn,void 0,!0),u){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,t);break;case 3:c[l].fn.call(c[l].context,t,n);break;case 4:c[l].fn.call(c[l].context,t,n,s);break;default:if(!f)for(h=1,f=new Array(u-1);h<u;h++)f[h-1]=arguments[h];c[l].fn.apply(c[l].context,f)}}return!0};Ne.prototype.on=function(e,t,n){return Gd(this,e,t,n,!1)};Ne.prototype.once=function(e,t,n){return Gd(this,e,t,n,!0)};Ne.prototype.removeListener=function(e,t,n,s){var o=He?He+e:e;if(!this._events[o])return this;if(!t)return Ei(this,o),this;var i=this._events[o];if(i.fn)i.fn===t&&(!s||i.once)&&(!n||i.context===n)&&Ei(this,o);else{for(var a=0,c=[],u=i.length;a<u;a++)(i[a].fn!==t||s&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[o]=c.length===1?c[0]:c:Ei(this,o)}return this};Ne.prototype.removeAllListeners=function(e){var t;return e?(t=He?He+e:e,this._events[t]&&Ei(this,t)):(this._events=new ws,this._eventsCount=0),this};Ne.prototype.off=Ne.prototype.removeListener;Ne.prototype.addListener=Ne.prototype.on;Ne.prefixed=He;Ne.EventEmitter=Ne;typeof Ul<"u"&&(Ul.exports=Ne)});var Jd=Qe((pS,Yd)=>{Yd.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function s(o,i){t[o]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(o){return t[o]!==void 0||n[o]!==void 0},remove:function(o){t[o]!==void 0&&(t[o]=void 0),n[o]!==void 0&&(n[o]=void 0)},get:function(o){var i=t[o];if(i!==void 0)return i;if((i=n[o])!==void 0)return s(o,i),i},set:function(o,i){t[o]!==void 0?t[o]=i:s(o,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var yp=Qe((F8,gp)=>{"use strict";gp.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var Ap=Qe((vp,Ep)=>{"use strict";var Li=yp(),{hasOwnProperty:bp}=Object.prototype,{propertyIsEnumerable:_w}=Object,En=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),Bw=vp,wp={concatArrays:!1,ignoreUndefined:!1},Ni=r=>{let e=[];for(let t in r)bp.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)_w.call(r,n)&&e.push(n)}return e};function An(r){return Array.isArray(r)?Cw(r):Li(r)?Iw(r):r}function Cw(r){let e=r.slice(0,0);return Ni(r).forEach(t=>{En(e,t,An(r[t]))}),e}function Iw(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return Ni(r).forEach(t=>{En(e,t,An(r[t]))}),e}var xp=(r,e,t,n)=>(t.forEach(s=>{typeof e[s]>"u"&&n.ignoreUndefined||(s in r&&r[s]!==Object.getPrototypeOf(r)?En(r,s,cu(r[s],e[s],n)):En(r,s,An(e[s])))}),r),kw=(r,e,t)=>{let n=r.slice(0,0),s=0;return[r,e].forEach(o=>{let i=[];for(let a=0;a<o.length;a++)bp.call(o,a)&&(i.push(String(a)),o===r?En(n,s++,o[a]):En(n,s++,An(o[a])));n=xp(n,o,Ni(o).filter(a=>!i.includes(a)),t)}),n};function cu(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?kw(r,e,t):!Li(e)||!Li(r)?An(e):xp(r,e,Ni(e),t)}Ep.exports=function(...r){let e=cu(An(wp),this!==Bw&&this||{},wp),t={_:{}};for(let n of r)if(n!==void 0){if(!Li(n))throw new TypeError("`"+n+"` is not an Option Object");t=cu(t,{_:n},e)}return t._}});var Ip=Qe((As,Fi)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(h){if(!Array.isArray(h)&&!ArrayBuffer.isView(h))return!1;for(var p=0;p<h.length;p++)if(!Number.isInteger(h[p])||h[p]<0||h[p]>255)return!1;return!0}function s(h,p){return(h&65535)*p+(((h>>>16)*p&65535)<<16)}function o(h,p){return h<<p|h>>>32-p}function i(h){return h^=h>>>16,h=s(h,2246822507),h^=h>>>13,h=s(h,3266489909),h^=h>>>16,h}function a(h,p){h=[h[0]>>>16,h[0]&65535,h[1]>>>16,h[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=h[3]+p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=h[2]+p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=h[1]+p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=h[0]+p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function c(h,p){h=[h[0]>>>16,h[0]&65535,h[1]>>>16,h[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=h[3]*p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=h[2]*p[3],m[1]+=m[2]>>>16,m[2]&=65535,m[2]+=h[3]*p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=h[1]*p[3],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=h[2]*p[2],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=h[3]*p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=h[0]*p[3]+h[1]*p[2]+h[2]*p[1]+h[3]*p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function u(h,p){return p%=64,p===32?[h[1],h[0]]:p<32?[h[0]<<p|h[1]>>>32-p,h[1]<<p|h[0]>>>32-p]:(p-=32,[h[1]<<p|h[0]>>>32-p,h[0]<<p|h[1]>>>32-p])}function f(h,p){return p%=64,p===0?h:p<32?[h[0]<<p|h[1]>>>32-p,h[1]<<p]:[h[1]<<p-32,0]}function l(h,p){return[h[0]^p[0],h[1]^p[1]]}function d(h){return h=l(h,[0,h[0]>>>1]),h=c(h,[4283543511,3981806797]),h=l(h,[0,h[0]>>>1]),h=c(h,[3301882366,444984403]),h=l(h,[0,h[0]>>>1]),h}t.x86.hash32=function(h,p){if(t.inputValidation&&!n(h))return e;p=p||0;for(var m=h.length%4,g=h.length-m,w=p,b=0,y=3432918353,x=461845907,A=0;A<g;A=A+4)b=h[A]|h[A+1]<<8|h[A+2]<<16|h[A+3]<<24,b=s(b,y),b=o(b,15),b=s(b,x),w^=b,w=o(w,13),w=s(w,5)+3864292196;switch(b=0,m){case 3:b^=h[A+2]<<16;case 2:b^=h[A+1]<<8;case 1:b^=h[A],b=s(b,y),b=o(b,15),b=s(b,x),w^=b}return w^=h.length,w=i(w),w>>>0},t.x86.hash128=function(h,p){if(t.inputValidation&&!n(h))return e;p=p||0;for(var m=h.length%16,g=h.length-m,w=p,b=p,y=p,x=p,A=0,_=0,v=0,B=0,k=597399067,J=2869860233,H=951274213,V=2716044179,D=0;D<g;D=D+16)A=h[D]|h[D+1]<<8|h[D+2]<<16|h[D+3]<<24,_=h[D+4]|h[D+5]<<8|h[D+6]<<16|h[D+7]<<24,v=h[D+8]|h[D+9]<<8|h[D+10]<<16|h[D+11]<<24,B=h[D+12]|h[D+13]<<8|h[D+14]<<16|h[D+15]<<24,A=s(A,k),A=o(A,15),A=s(A,J),w^=A,w=o(w,19),w+=b,w=s(w,5)+1444728091,_=s(_,J),_=o(_,16),_=s(_,H),b^=_,b=o(b,17),b+=y,b=s(b,5)+197830471,v=s(v,H),v=o(v,17),v=s(v,V),y^=v,y=o(y,15),y+=x,y=s(y,5)+2530024501,B=s(B,V),B=o(B,18),B=s(B,k),x^=B,x=o(x,13),x+=w,x=s(x,5)+850148119;switch(A=0,_=0,v=0,B=0,m){case 15:B^=h[D+14]<<16;case 14:B^=h[D+13]<<8;case 13:B^=h[D+12],B=s(B,V),B=o(B,18),B=s(B,k),x^=B;case 12:v^=h[D+11]<<24;case 11:v^=h[D+10]<<16;case 10:v^=h[D+9]<<8;case 9:v^=h[D+8],v=s(v,H),v=o(v,17),v=s(v,V),y^=v;case 8:_^=h[D+7]<<24;case 7:_^=h[D+6]<<16;case 6:_^=h[D+5]<<8;case 5:_^=h[D+4],_=s(_,J),_=o(_,16),_=s(_,H),b^=_;case 4:A^=h[D+3]<<24;case 3:A^=h[D+2]<<16;case 2:A^=h[D+1]<<8;case 1:A^=h[D],A=s(A,k),A=o(A,15),A=s(A,J),w^=A}return w^=h.length,b^=h.length,y^=h.length,x^=h.length,w+=b,w+=y,w+=x,b+=w,y+=w,x+=w,w=i(w),b=i(b),y=i(y),x=i(x),w+=b,w+=y,w+=x,b+=w,y+=w,x+=w,("00000000"+(w>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(y>>>0).toString(16)).slice(-8)+("00000000"+(x>>>0).toString(16)).slice(-8)},t.x64.hash128=function(h,p){if(t.inputValidation&&!n(h))return e;p=p||0;for(var m=h.length%16,g=h.length-m,w=[0,p],b=[0,p],y=[0,0],x=[0,0],A=[2277735313,289559509],_=[1291169091,658871167],v=0;v<g;v=v+16)y=[h[v+4]|h[v+5]<<8|h[v+6]<<16|h[v+7]<<24,h[v]|h[v+1]<<8|h[v+2]<<16|h[v+3]<<24],x=[h[v+12]|h[v+13]<<8|h[v+14]<<16|h[v+15]<<24,h[v+8]|h[v+9]<<8|h[v+10]<<16|h[v+11]<<24],y=c(y,A),y=u(y,31),y=c(y,_),w=l(w,y),w=u(w,27),w=a(w,b),w=a(c(w,[0,5]),[0,1390208809]),x=c(x,_),x=u(x,33),x=c(x,A),b=l(b,x),b=u(b,31),b=a(b,w),b=a(c(b,[0,5]),[0,944331445]);switch(y=[0,0],x=[0,0],m){case 15:x=l(x,f([0,h[v+14]],48));case 14:x=l(x,f([0,h[v+13]],40));case 13:x=l(x,f([0,h[v+12]],32));case 12:x=l(x,f([0,h[v+11]],24));case 11:x=l(x,f([0,h[v+10]],16));case 10:x=l(x,f([0,h[v+9]],8));case 9:x=l(x,[0,h[v+8]]),x=c(x,_),x=u(x,33),x=c(x,A),b=l(b,x);case 8:y=l(y,f([0,h[v+7]],56));case 7:y=l(y,f([0,h[v+6]],48));case 6:y=l(y,f([0,h[v+5]],40));case 5:y=l(y,f([0,h[v+4]],32));case 4:y=l(y,f([0,h[v+3]],24));case 3:y=l(y,f([0,h[v+2]],16));case 2:y=l(y,f([0,h[v+1]],8));case 1:y=l(y,[0,h[v]]),y=c(y,A),y=u(y,31),y=c(y,_),w=l(w,y)}return w=l(w,[0,h.length]),b=l(b,[0,h.length]),w=a(w,b),b=a(b,w),w=d(w),b=d(b),w=a(w,b),b=a(b,w),("00000000"+(w[0]>>>0).toString(16)).slice(-8)+("00000000"+(w[1]>>>0).toString(16)).slice(-8)+("00000000"+(b[0]>>>0).toString(16)).slice(-8)+("00000000"+(b[1]>>>0).toString(16)).slice(-8)},typeof As<"u"?(typeof Fi<"u"&&Fi.exports&&(As=Fi.exports=t),As.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(As)});var Tp=Qe((d_,kp)=>{kp.exports=Ip()});var Jp=Qe(Ts=>{(function(){var r,e,t,n,s,o,i,a;a=function(c){var u,f,l,d;return u=(c&255<<24)>>>24,f=(c&255<<16)>>>16,l=(c&65280)>>>8,d=c&255,[u,f,l,d].join(".")},i=function(c){var u,f,l,d,h,p;for(u=[],l=d=0;d<=3&&c.length!==0;l=++d){if(l>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),h=p[0],f=p[1],c=c.substring(f),u.push(h)}if(c.length!==0)throw new Error("Invalid IP");switch(u.length){case 1:if(u[0]>4294967295)throw new Error("Invalid IP");return u[0]>>>0;case 2:if(u[0]>255||u[1]>16777215)throw new Error("Invalid IP");return(u[0]<<24|u[1])>>>0;case 3:if(u[0]>255||u[1]>255||u[2]>65535)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2])>>>0;case 4:if(u[0]>255||u[1]>255||u[2]>255||u[3]>255)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2]<<8|u[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),o=t("a"),s=t("A"),e=function(c){var u,f,l,d,h;for(d=0,u=10,f="9",l=0,c.length>1&&c[l]==="0"&&(c[l+1]==="x"||c[l+1]==="X"?(l+=2,u=16):"0"<=c[l+1]&&c[l+1]<="9"&&(l++,u=8,f="7")),h=l;l<c.length;){if("0"<=c[l]&&c[l]<=f)d=d*u+(t(c[l])-n)>>>0;else if(u===16)if("a"<=c[l]&&c[l]<="f")d=d*u+(10+t(c[l])-o)>>>0;else if("A"<=c[l]&&c[l]<="F")d=d*u+(10+t(c[l])-s)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");l++}if(l===h)throw new Error("empty octet");return[d,l]},r=function(){function c(u,f){var l,d,h,p;if(typeof u!="string")throw new Error("Missing `net' parameter");if(f||(p=u.split("/",2),u=p[0],f=p[1]),f||(f=32),typeof f=="string"&&f.indexOf(".")>-1){try{this.maskLong=i(f)}catch(m){throw l=m,new Error("Invalid mask: "+f)}for(d=h=32;h>=0;d=--h)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(f||f===0)this.bitmask=parseInt(f,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(u)&this.maskLong)>>>0}catch(m){throw l=m,new Error("Invalid net address: "+u)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+f);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(u){return typeof u=="string"&&(u.indexOf("/")>0||u.split(".").length!==4)&&(u=new c(u)),u instanceof c?this.contains(u.base)&&this.contains(u.broadcast||u.last):(i(u)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(u){return u==null&&(u=1),new c(a(this.netLong+this.size*u),this.mask)},c.prototype.forEach=function(u){var f,l,d;for(d=i(this.first),l=i(this.last),f=0;d<=l;)u(a(d),d,f),f++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Ts.ip2long=i,Ts.long2ip=a,Ts.Netmask=r}).call(Ts)});var Em=Qe((jB,vm)=>{function Je(r,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}vm.exports=Je;Je.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};Je.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};Je.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var e=new Date().getTime();if(r&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var n=this;return this._timer=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},t),this._options.unref&&this._timer.unref(),!0};Je.prototype.attempt=function(r,e){this._fn=r,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};Je.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};Je.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};Je.prototype.start=Je.prototype.try;Je.prototype.errors=function(){return this._errors};Je.prototype.attempts=function(){return this._attempts};Je.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},e=null,t=0,n=0;n<this._errors.length;n++){var s=this._errors[n],o=s.message,i=(r[o]||0)+1;r[o]=i,i>=t&&(e=s,t=i)}return e}});var Am=Qe(Kr=>{var fx=Em();Kr.operation=function(r){var e=Kr.timeouts(r);return new fx(e,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Kr.timeouts=function(r){if(r instanceof Array)return[].concat(r);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in r)e[t]=r[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],s=0;s<e.retries;s++)n.push(this.createTimeout(s,e));return r&&r.forever&&!n.length&&n.push(this.createTimeout(s,e)),n.sort(function(o,i){return o-i}),n};Kr.createTimeout=function(r,e){var t=e.randomize?Math.random()+1:1,n=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,r));return n=Math.min(n,e.maxTimeout),n};Kr.wrap=function(r,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var n in r)typeof r[n]=="function"&&t.push(n)}for(var s=0;s<t.length;s++){var o=t[s],i=r[o];r[o]=function(c){var u=Kr.operation(e),f=Array.prototype.slice.call(arguments,1),l=f.pop();f.push(function(d){u.retry(d)||(d&&(arguments[0]=u.mainError()),l.apply(this,arguments))}),u.attempt(function(){c.apply(r,f)})}.bind(r,i),r[o].options=e}}});var _m=Qe((XB,Sm)=>{Sm.exports=Am()});var Vx={};Re(Vx,{createLibp2p:()=>Fx});var vf=Symbol.for("@libp2p/connection");var nc=Symbol.for("@libp2p/content-routing");var sc=Symbol.for("@libp2p/peer-discovery");var zs=Symbol.for("@libp2p/peer-id");function Gs(r){return!!r?.[zs]}var oc=Symbol.for("@libp2p/peer-routing");var ic="keep-alive";var jx=Symbol.for("@libp2p/transport");var Kt;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Kt||(Kt={}));var et=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var R=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},zr=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},Un=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}};var Ws=class extends Error{static name="ConnectionClosingError";constructor(e="The connection is closing"){super(e),this.name="ConnectionClosingError"}},Gr=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}};var js=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},Wr=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},qt=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},Zs=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},Xs=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},On=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},Ys=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var Js=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},vt=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var jr=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}};var Zr=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},Qs=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},eo=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},$t=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var se=(r,...e)=>{try{[...e]}catch{}};var Et=class extends EventTarget{#e=new Map;constructor(){super(),se(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let s=this.#e.get(e);s!=null&&(s=s.filter(({callback:o})=>o!==t),this.#e.set(e,s))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:s})=>!s),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function to(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Ef(...r){let e=[];for(let t of r)to(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Af(...r){let e=[];for(let t of r)to(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var Fn=Symbol.for("@libp2p/service-capabilities"),ac=Symbol.for("@libp2p/service-dependencies");var hc={};Re(hc,{base58btc:()=>X,base58flickr:()=>ng});var S1=new Uint8Array(0);function Sf(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function At(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function _f(r){return new TextEncoder().encode(r)}function Bf(r){return new TextDecoder().decode(r)}function Jm(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var o=r.charAt(s),i=o.charCodeAt(0);if(t[i]!==255)throw new TypeError(o+" is ambiguous");t[i]=s}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function l(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,g=0,w=0,b=p.length;w!==b&&p[w]===0;)w++,m++;for(var y=(b-w)*f+1>>>0,x=new Uint8Array(y);w!==b;){for(var A=p[w],_=0,v=y-1;(A!==0||_<g)&&v!==-1;v--,_++)A+=256*x[v]>>>0,x[v]=A%a>>>0,A=A/a>>>0;if(A!==0)throw new Error("Non-zero carry");g=_,w++}for(var B=y-g;B!==y&&x[B]===0;)B++;for(var k=c.repeat(m);B<y;++B)k+=r.charAt(x[B]);return k}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var g=0,w=0;p[m]===c;)g++,m++;for(var b=(p.length-m)*u+1>>>0,y=new Uint8Array(b);p[m];){var x=t[p.charCodeAt(m)];if(x===255)return;for(var A=0,_=b-1;(x!==0||A<w)&&_!==-1;_--,A++)x+=a*y[_]>>>0,y[_]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");w=A,m++}if(p[m]!==" "){for(var v=b-w;v!==b&&y[v]===0;)v++;for(var B=new Uint8Array(g+(b-v)),k=g;v!==b;)B[k++]=y[v++];return B}}}function h(p){var m=d(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:l,decodeUnsafe:d,decode:h}}var Qm=Jm,eg=Qm,If=eg;var cc=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},lc=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return kf(this,e)}},uc=class{decoders;constructor(e){this.decoders=e}or(e){return kf(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function kf(r,e){return new uc({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var fc=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new cc(e,t,n),this.decoder=new lc(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Xr({name:r,prefix:e,encode:t,decode:n}){return new fc(r,e,t,n)}function zt({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=If(t,r);return Xr({prefix:e,name:r,encode:n,decode:o=>At(s(o))})}function tg(r,e,t,n){let s={};for(let f=0;f<e.length;++f)s[e[f]]=f;let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*t/8|0),a=0,c=0,u=0;for(let f=0;f<o;++f){let l=s[r[f]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|l,a+=t,a>=8&&(a-=8,i[u++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function rg(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,o="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,o+=e[s&a>>i];if(i!==0&&(o+=e[s&a<<t-i]),n)for(;o.length*t&7;)o+="=";return o}function le({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Xr({prefix:e,name:r,encode(s){return rg(s,n,t)},decode(s){return tg(s,n,t,r)}})}var X=zt({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),ng=zt({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var dc={};Re(dc,{base32:()=>We,base32hex:()=>ag,base32hexpad:()=>lg,base32hexpadupper:()=>ug,base32hexupper:()=>cg,base32pad:()=>og,base32padupper:()=>ig,base32upper:()=>sg,base32z:()=>fg});var We=le({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),sg=le({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),og=le({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),ig=le({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),ag=le({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),cg=le({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),lg=le({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),ug=le({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),fg=le({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var pc={};Re(pc,{base36:()=>Vn,base36upper:()=>hg});var Vn=zt({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),hg=zt({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var dg=Nf,Tf=128,pg=127,mg=~pg,gg=Math.pow(2,31);function Nf(r,e,t){e=e||[],t=t||0;for(var n=t;r>=gg;)e[t++]=r&255|Tf,r/=128;for(;r&mg;)e[t++]=r&255|Tf,r>>>=7;return e[t]=r|0,Nf.bytes=t-n+1,e}var yg=mc,wg=128,Lf=127;function mc(r,n){var t=0,n=n||0,s=0,o=n,i,a=r.length;do{if(o>=a)throw mc.bytes=0,new RangeError("Could not decode varint");i=r[o++],t+=s<28?(i&Lf)<<s:(i&Lf)*Math.pow(2,s),s+=7}while(i>=wg);return mc.bytes=o-n,t}var bg=Math.pow(2,7),xg=Math.pow(2,14),vg=Math.pow(2,21),Eg=Math.pow(2,28),Ag=Math.pow(2,35),Sg=Math.pow(2,42),_g=Math.pow(2,49),Bg=Math.pow(2,56),Cg=Math.pow(2,63),Ig=function(r){return r<bg?1:r<xg?2:r<vg?3:r<Eg?4:r<Ag?5:r<Sg?6:r<_g?7:r<Bg?8:r<Cg?9:10},kg={encode:dg,decode:yg,encodingLength:Ig},Tg=kg,Hn=Tg;function Kn(r,e=0){return[Hn.decode(r,e),Hn.decode.bytes]}function Yr(r,e,t=0){return Hn.encode(r,e,t),e}function Jr(r){return Hn.encodingLength(r)}function tt(r,e){let t=e.byteLength,n=Jr(r),s=n+Jr(t),o=new Uint8Array(s+t);return Yr(r,o,0),Yr(t,o,n),o.set(e,s),new Qr(r,t,e,o)}function rt(r){let e=At(r),[t,n]=Kn(e),[s,o]=Kn(e.subarray(n)),i=e.subarray(n+o);if(i.byteLength!==s)throw new Error("Incorrect length");return new Qr(t,s,i,e)}function Pf(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Sf(r.bytes,t.bytes)}}var Qr=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};function Df(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Ng(t,gc(r),e??X.encoder);default:return Pg(t,gc(r),e??We.encoder)}}var Rf=new WeakMap;function gc(r){let e=Rf.get(r);if(e==null){let t=new Map;return Rf.set(r,t),t}return e}var me=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==qn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Dg)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=tt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Pf(e.multihash,n.multihash)}toString(e){return Df(this,e)}toJSON(){return{"/":Df(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:o,bytes:i}=t;return new r(n,s,o,i??Mf(n,s,o.bytes))}else if(t[Rg]===!0){let{version:n,multihash:s,code:o}=t,i=rt(s);return r.create(n,o,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==qn)throw new Error(`Version 0 CID must use dag-pb (code: ${qn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Mf(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,qn,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=At(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let o=s.subarray(t.multihashSize-t.digestSize),i=new Qr(t.multihashCode,t.digestSize,o,s);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[l,d]=Kn(e.subarray(t));return t+=d,l},s=n(),o=qn;if(s===18?(s=0,t=0):o=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let i=t,a=n(),c=n(),u=t+c,f=u-i;return{version:s,codec:o,multihashCode:a,digestSize:c,multihashSize:f,size:u}}static parse(e,t){let[n,s]=Lg(e,t),o=r.decode(s);if(o.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return gc(o).set(n,e),o}};function Lg(r,e){switch(r[0]){case"Q":{let t=e??X;return[X.prefix,t.decode(`${X.prefix}${r}`)]}case X.prefix:{let t=e??X;return[X.prefix,t.decode(r)]}case We.prefix:{let t=e??We;return[We.prefix,t.decode(r)]}case Vn.prefix:{let t=e??Vn;return[Vn.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Ng(r,e,t){let{prefix:n}=t;if(n!==X.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let o=t.encode(r).slice(1);return e.set(n,o),o}else return s}function Pg(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let o=t.encode(r);return e.set(n,o),o}else return s}var qn=112,Dg=18;function Mf(r,e,t){let n=Jr(r),s=n+Jr(e),o=new Uint8Array(s+t.byteLength);return Yr(r,o,0),Yr(e,o,n),o.set(t,s),o}var Rg=Symbol.for("@ipld/js-cid/CID");var yc={};Re(yc,{identity:()=>_t});var Uf=0,Mg="identity",Of=At;function Ug(r){return tt(Uf,Of(r))}var _t={code:Uf,name:Mg,encode:Of,digest:Ug};function ue(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Ff(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Og(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function en(r,...e){if(!Og(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Vf(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Ff(r.outputLen),Ff(r.blockLen)}function tn(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Hf(r,e){en(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}var dr=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var no=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),nt=(r,e)=>r<<32-e|r>>>e;function Kf(r){if(typeof r!="string")throw new Error("utf8ToBytes expected string, got "+typeof r);return new Uint8Array(new TextEncoder().encode(r))}function $n(r){return typeof r=="string"&&(r=Kf(r)),en(r),r}function wc(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];en(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let o=r[n];t.set(o,s),s+=o.length}return t}var rn=class{clone(){return this._cloneInto()}};function so(r){let e=n=>r().update($n(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function oo(r=32){if(dr&&typeof dr.getRandomValues=="function")return dr.getRandomValues(new Uint8Array(r));if(dr&&typeof dr.randomBytes=="function")return dr.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function Fg(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let s=BigInt(32),o=BigInt(4294967295),i=Number(t>>s&o),a=Number(t&o),c=n?4:0,u=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+u,a,n)}var qf=(r,e,t)=>r&e^~r&t,$f=(r,e,t)=>r&e^r&t^e&t,nn=class extends rn{constructor(e,t,n,s){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=no(this.buffer)}update(e){tn(this);let{view:t,buffer:n,blockLen:s}=this;e=$n(e);let o=e.length;for(let i=0;i<o;){let a=Math.min(s-this.pos,o-i);if(a===s){let c=no(e);for(;s<=o-i;i+=s)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===s&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){tn(this),Hf(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:s,isLE:o}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>s-i&&(this.process(n,0),i=0);for(let l=i;l<s;l++)t[l]=0;Fg(n,s-8,BigInt(this.length*8),o),this.process(n,0);let a=no(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<u;l++)a.setUint32(4*l,f[l],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:s,finished:o,destroyed:i,pos:a}=this;return e.length=s,e.pos=a,e.finished=o,e.destroyed=i,s%t&&e.buffer.set(n),e}};var io=BigInt(4294967295),bc=BigInt(32);function zf(r,e=!1){return e?{h:Number(r&io),l:Number(r>>bc&io)}:{h:Number(r>>bc&io)|0,l:Number(r&io)|0}}function Vg(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:o,l:i}=zf(r[s],e);[t[s],n[s]]=[o,i]}return[t,n]}var Hg=(r,e)=>BigInt(r>>>0)<<bc|BigInt(e>>>0),Kg=(r,e,t)=>r>>>t,qg=(r,e,t)=>r<<32-t|e>>>t,$g=(r,e,t)=>r>>>t|e<<32-t,zg=(r,e,t)=>r<<32-t|e>>>t,Gg=(r,e,t)=>r<<64-t|e>>>t-32,Wg=(r,e,t)=>r>>>t-32|e<<64-t,jg=(r,e)=>e,Zg=(r,e)=>r,Xg=(r,e,t)=>r<<t|e>>>32-t,Yg=(r,e,t)=>e<<t|r>>>32-t,Jg=(r,e,t)=>e<<t-32|r>>>64-t,Qg=(r,e,t)=>r<<t-32|e>>>64-t;function e0(r,e,t,n){let s=(e>>>0)+(n>>>0);return{h:r+t+(s/2**32|0)|0,l:s|0}}var t0=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),r0=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,n0=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),s0=(r,e,t,n,s)=>e+t+n+s+(r/2**32|0)|0,o0=(r,e,t,n,s)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(s>>>0),i0=(r,e,t,n,s,o)=>e+t+n+s+o+(r/2**32|0)|0;var a0={fromBig:zf,split:Vg,toBig:Hg,shrSH:Kg,shrSL:qg,rotrSH:$g,rotrSL:zg,rotrBH:Gg,rotrBL:Wg,rotr32H:jg,rotr32L:Zg,rotlSH:Xg,rotlSL:Yg,rotlBH:Jg,rotlBL:Qg,add:e0,add3L:t0,add3H:r0,add4L:n0,add4H:s0,add5H:i0,add5L:o0},F=a0;var[c0,l0]=F.split(["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(r=>BigInt(r))),Gt=new Uint32Array(80),Wt=new Uint32Array(80),xc=class extends nn{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:s,Ch:o,Cl:i,Dh:a,Dl:c,Eh:u,El:f,Fh:l,Fl:d,Gh:h,Gl:p,Hh:m,Hl:g}=this;return[e,t,n,s,o,i,a,c,u,f,l,d,h,p,m,g]}set(e,t,n,s,o,i,a,c,u,f,l,d,h,p,m,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=s|0,this.Ch=o|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=u|0,this.El=f|0,this.Fh=l|0,this.Fl=d|0,this.Gh=h|0,this.Gl=p|0,this.Hh=m|0,this.Hl=g|0}process(e,t){for(let y=0;y<16;y++,t+=4)Gt[y]=e.getUint32(t),Wt[y]=e.getUint32(t+=4);for(let y=16;y<80;y++){let x=Gt[y-15]|0,A=Wt[y-15]|0,_=F.rotrSH(x,A,1)^F.rotrSH(x,A,8)^F.shrSH(x,A,7),v=F.rotrSL(x,A,1)^F.rotrSL(x,A,8)^F.shrSL(x,A,7),B=Gt[y-2]|0,k=Wt[y-2]|0,J=F.rotrSH(B,k,19)^F.rotrBH(B,k,61)^F.shrSH(B,k,6),H=F.rotrSL(B,k,19)^F.rotrBL(B,k,61)^F.shrSL(B,k,6),V=F.add4L(v,H,Wt[y-7],Wt[y-16]),D=F.add4H(V,_,J,Gt[y-7],Gt[y-16]);Gt[y]=D|0,Wt[y]=V|0}let{Ah:n,Al:s,Bh:o,Bl:i,Ch:a,Cl:c,Dh:u,Dl:f,Eh:l,El:d,Fh:h,Fl:p,Gh:m,Gl:g,Hh:w,Hl:b}=this;for(let y=0;y<80;y++){let x=F.rotrSH(l,d,14)^F.rotrSH(l,d,18)^F.rotrBH(l,d,41),A=F.rotrSL(l,d,14)^F.rotrSL(l,d,18)^F.rotrBL(l,d,41),_=l&h^~l&m,v=d&p^~d&g,B=F.add5L(b,A,v,l0[y],Wt[y]),k=F.add5H(B,w,x,_,c0[y],Gt[y]),J=B|0,H=F.rotrSH(n,s,28)^F.rotrBH(n,s,34)^F.rotrBH(n,s,39),V=F.rotrSL(n,s,28)^F.rotrBL(n,s,34)^F.rotrBL(n,s,39),D=n&o^n&a^o&a,I=s&i^s&c^i&c;w=m|0,b=g|0,m=h|0,g=p|0,h=l|0,p=d|0,{h:l,l:d}=F.add(u|0,f|0,k|0,J|0),u=a|0,f=c|0,a=o|0,c=i|0,o=n|0,i=s|0;let N=F.add3L(J,V,I);n=F.add3H(N,k,H,D),s=N|0}({h:n,l:s}=F.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:o,l:i}=F.add(this.Bh|0,this.Bl|0,o|0,i|0),{h:a,l:c}=F.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:u,l:f}=F.add(this.Dh|0,this.Dl|0,u|0,f|0),{h:l,l:d}=F.add(this.Eh|0,this.El|0,l|0,d|0),{h,l:p}=F.add(this.Fh|0,this.Fl|0,h|0,p|0),{h:m,l:g}=F.add(this.Gh|0,this.Gl|0,m|0,g|0),{h:w,l:b}=F.add(this.Hh|0,this.Hl|0,w|0,b|0),this.set(n,s,o,i,a,c,u,f,l,d,h,p,m,g,w,b)}roundClean(){Gt.fill(0),Wt.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Gf=so(()=>new xc);var lo={};Re(lo,{aInRange:()=>qe,abool:()=>st,abytes:()=>sn,bitGet:()=>m0,bitLen:()=>Sc,bitMask:()=>Gn,bitSet:()=>g0,bytesToHex:()=>Ct,bytesToNumberBE:()=>It,bytesToNumberLE:()=>Zt,concatBytes:()=>kt,createHmacDrbg:()=>_c,ensureBytes:()=>ae,equalBytes:()=>d0,hexToBytes:()=>mr,hexToNumber:()=>Ac,inRange:()=>zn,isBytes:()=>jt,memoized:()=>yr,notImplemented:()=>w0,numberToBytesBE:()=>Xt,numberToBytesLE:()=>gr,numberToHexUnpadded:()=>pr,numberToVarBytesBE:()=>h0,utf8ToBytes:()=>p0,validateObject:()=>dt});var ao=BigInt(0),co=BigInt(1),u0=BigInt(2);function jt(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function sn(r){if(!jt(r))throw new Error("Uint8Array expected")}function st(r,e){if(typeof e!="boolean")throw new Error(r+" boolean expected, got "+e)}var f0=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Ct(r){sn(r);let e="";for(let t=0;t<r.length;t++)e+=f0[r[t]];return e}function pr(r){let e=r.toString(16);return e.length&1?"0"+e:e}function Ac(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?ao:BigInt("0x"+r)}var Bt={_0:48,_9:57,A:65,F:70,a:97,f:102};function Wf(r){if(r>=Bt._0&&r<=Bt._9)return r-Bt._0;if(r>=Bt.A&&r<=Bt.F)return r-(Bt.A-10);if(r>=Bt.a&&r<=Bt.f)return r-(Bt.a-10)}function mr(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let s=0,o=0;s<t;s++,o+=2){let i=Wf(r.charCodeAt(o)),a=Wf(r.charCodeAt(o+1));if(i===void 0||a===void 0){let c=r[o]+r[o+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+o)}n[s]=i*16+a}return n}function It(r){return Ac(Ct(r))}function Zt(r){return sn(r),Ac(Ct(Uint8Array.from(r).reverse()))}function Xt(r,e){return mr(r.toString(16).padStart(e*2,"0"))}function gr(r,e){return Xt(r,e).reverse()}function h0(r){return mr(pr(r))}function ae(r,e,t){let n;if(typeof e=="string")try{n=mr(e)}catch(o){throw new Error(r+" must be hex string or Uint8Array, cause: "+o)}else if(jt(e))n=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let s=n.length;if(typeof t=="number"&&s!==t)throw new Error(r+" of length "+t+" expected, got "+s);return n}function kt(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];sn(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let o=r[n];t.set(o,s),s+=o.length}return t}function d0(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function p0(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}var vc=r=>typeof r=="bigint"&&ao<=r;function zn(r,e,t){return vc(r)&&vc(e)&&vc(t)&&e<=r&&r<t}function qe(r,e,t,n){if(!zn(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Sc(r){let e;for(e=0;r>ao;r>>=co,e+=1);return e}function m0(r,e){return r>>BigInt(e)&co}function g0(r,e,t){return r|(t?co:ao)<<BigInt(e)}var Gn=r=>(u0<<BigInt(r-1))-co,Ec=r=>new Uint8Array(r),jf=r=>Uint8Array.from(r);function _c(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=Ec(r),s=Ec(r),o=0,i=()=>{n.fill(1),s.fill(0),o=0},a=(...l)=>t(s,n,...l),c=(l=Ec())=>{s=a(jf([0]),l),n=a(),l.length!==0&&(s=a(jf([1]),l),n=a())},u=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let l=0,d=[];for(;l<e;){n=a();let h=n.slice();d.push(h),l+=n.length}return kt(...d)};return(l,d)=>{i(),c(l);let h;for(;!(h=d(u()));)c();return i(),h}}var y0={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||jt(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function dt(r,e,t={}){let n=(s,o,i)=>{let a=y0[o];if(typeof a!="function")throw new Error("invalid validator function");let c=r[s];if(!(i&&c===void 0)&&!a(c,r))throw new Error("param "+String(s)+" is invalid. Expected "+o+", got "+c)};for(let[s,o]of Object.entries(e))n(s,o,!1);for(let[s,o]of Object.entries(t))n(s,o,!0);return r}var w0=()=>{throw new Error("not implemented")};function yr(r){let e=new WeakMap;return(t,...n)=>{let s=e.get(t);if(s!==void 0)return s;let o=r(t,...n);return e.set(t,o),o}}var ge=BigInt(0),oe=BigInt(1),wr=BigInt(2),b0=BigInt(3),Bc=BigInt(4),Zf=BigInt(5),Xf=BigInt(8),x0=BigInt(9),v0=BigInt(16);function ee(r,e){let t=r%e;return t>=ge?t:e+t}function E0(r,e,t){if(e<ge)throw new Error("invalid exponent, negatives unsupported");if(t<=ge)throw new Error("invalid modulus");if(t===oe)return ge;let n=oe;for(;e>ge;)e&oe&&(n=n*r%t),r=r*r%t,e>>=oe;return n}function ie(r,e,t){let n=r;for(;e-- >ge;)n*=n,n%=t;return n}function uo(r,e){if(r===ge)throw new Error("invert: expected non-zero number");if(e<=ge)throw new Error("invert: expected positive modulus, got "+e);let t=ee(r,e),n=e,s=ge,o=oe,i=oe,a=ge;for(;t!==ge;){let u=n/t,f=n%t,l=s-i*u,d=o-a*u;n=t,t=f,s=i,o=a,i=l,a=d}if(n!==oe)throw new Error("invert: does not exist");return ee(s,e)}function A0(r){let e=(r-oe)/wr,t,n,s;for(t=r-oe,n=0;t%wr===ge;t/=wr,n++);for(s=wr;s<r&&E0(s,e,r)!==r-oe;s++)if(s>1e3)throw new Error("Cannot find square root: likely non-prime P");if(n===1){let i=(r+oe)/Bc;return function(c,u){let f=c.pow(u,i);if(!c.eql(c.sqr(f),u))throw new Error("Cannot find square root");return f}}let o=(t+oe)/wr;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let u=n,f=a.pow(a.mul(a.ONE,s),t),l=a.pow(c,o),d=a.pow(c,t);for(;!a.eql(d,a.ONE);){if(a.eql(d,a.ZERO))return a.ZERO;let h=1;for(let m=a.sqr(d);h<u&&!a.eql(m,a.ONE);h++)m=a.sqr(m);let p=a.pow(f,oe<<BigInt(u-h-1));f=a.sqr(p),l=a.mul(l,p),d=a.mul(d,f),u=h}return l}}function S0(r){if(r%Bc===b0){let e=(r+oe)/Bc;return function(n,s){let o=n.pow(s,e);if(!n.eql(n.sqr(o),s))throw new Error("Cannot find square root");return o}}if(r%Xf===Zf){let e=(r-Zf)/Xf;return function(n,s){let o=n.mul(s,wr),i=n.pow(o,e),a=n.mul(s,i),c=n.mul(n.mul(a,wr),i),u=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(u),s))throw new Error("Cannot find square root");return u}}return r%v0,A0(r)}var Yf=(r,e)=>(ee(r,e)&oe)===oe,_0=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Cc(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=_0.reduce((n,s)=>(n[s]="function",n),e);return dt(r,t)}function B0(r,e,t){if(t<ge)throw new Error("invalid exponent, negatives unsupported");if(t===ge)return r.ONE;if(t===oe)return e;let n=r.ONE,s=e;for(;t>ge;)t&oe&&(n=r.mul(n,s)),s=r.sqr(s),t>>=oe;return n}function C0(r,e){let t=new Array(e.length),n=e.reduce((o,i,a)=>r.is0(i)?o:(t[a]=o,r.mul(o,i)),r.ONE),s=r.inv(n);return e.reduceRight((o,i,a)=>r.is0(i)?o:(t[a]=r.mul(o,t[a]),r.mul(o,i)),s),t}function Ic(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function Yt(r,e,t=!1,n={}){if(r<=ge)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:s,nByteLength:o}=Ic(r,e);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i,a=Object.freeze({ORDER:r,BITS:s,BYTES:o,MASK:Gn(s),ZERO:ge,ONE:oe,create:c=>ee(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return ge<=c&&c<r},is0:c=>c===ge,isOdd:c=>(c&oe)===oe,neg:c=>ee(-c,r),eql:(c,u)=>c===u,sqr:c=>ee(c*c,r),add:(c,u)=>ee(c+u,r),sub:(c,u)=>ee(c-u,r),mul:(c,u)=>ee(c*u,r),pow:(c,u)=>B0(a,c,u),div:(c,u)=>ee(c*uo(u,r),r),sqrN:c=>c*c,addN:(c,u)=>c+u,subN:(c,u)=>c-u,mulN:(c,u)=>c*u,inv:c=>uo(c,r),sqrt:n.sqrt||(c=>(i||(i=S0(r)),i(a,c))),invertBatch:c=>C0(a,c),cmov:(c,u,f)=>f?u:c,toBytes:c=>t?gr(c,o):Xt(c,o),fromBytes:c=>{if(c.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+c.length);return t?Zt(c):It(c)}});return Object.freeze(a)}function Jf(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function kc(r){let e=Jf(r);return e+Math.ceil(e/2)}function Qf(r,e,t=!1){let n=r.length,s=Jf(e),o=kc(e);if(n<16||n<o||n>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+n);let i=t?It(r):Zt(r),a=ee(i,e-oe)+oe;return t?gr(a,s):Xt(a,s)}var eh=BigInt(0),fo=BigInt(1);function Tc(r,e){let t=e.negate();return r?t:e}function th(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Lc(r,e){th(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1);return{windows:t,windowSize:n}}function k0(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,n)=>{if(!(t instanceof e))throw new Error("invalid point at index "+n)})}function T0(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,n)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+n)})}var Nc=new WeakMap,rh=new WeakMap;function Pc(r){return rh.get(r)||1}function ho(r,e){return{constTimeNegate:Tc,hasPrecomputes(t){return Pc(t)!==1},unsafeLadder(t,n,s=r.ZERO){let o=t;for(;n>eh;)n&fo&&(s=s.add(o)),o=o.double(),n>>=fo;return s},precomputeWindow(t,n){let{windows:s,windowSize:o}=Lc(n,e),i=[],a=t,c=a;for(let u=0;u<s;u++){c=a,i.push(c);for(let f=1;f<o;f++)c=c.add(a),i.push(c);a=c.double()}return i},wNAF(t,n,s){let{windows:o,windowSize:i}=Lc(t,e),a=r.ZERO,c=r.BASE,u=BigInt(2**t-1),f=2**t,l=BigInt(t);for(let d=0;d<o;d++){let h=d*i,p=Number(s&u);s>>=l,p>i&&(p-=f,s+=fo);let m=h,g=h+Math.abs(p)-1,w=d%2!==0,b=p<0;p===0?c=c.add(Tc(w,n[m])):a=a.add(Tc(b,n[g]))}return{p:a,f:c}},wNAFUnsafe(t,n,s,o=r.ZERO){let{windows:i,windowSize:a}=Lc(t,e),c=BigInt(2**t-1),u=2**t,f=BigInt(t);for(let l=0;l<i;l++){let d=l*a;if(s===eh)break;let h=Number(s&c);if(s>>=f,h>a&&(h-=u,s+=fo),h===0)continue;let p=n[d+Math.abs(h)-1];h<0&&(p=p.negate()),o=o.add(p)}return o},getPrecomputes(t,n,s){let o=Nc.get(n);return o||(o=this.precomputeWindow(n,t),t!==1&&Nc.set(n,s(o))),o},wNAFCached(t,n,s){let o=Pc(t);return this.wNAF(o,this.getPrecomputes(o,t,s),n)},wNAFCachedUnsafe(t,n,s,o){let i=Pc(t);return i===1?this.unsafeLadder(t,n,o):this.wNAFUnsafe(i,this.getPrecomputes(i,t,s),n,o)},setWindowSize(t,n){th(n,e),rh.set(t,n),Nc.delete(t)}}}function po(r,e,t,n){if(k0(t,r),T0(n,e),t.length!==n.length)throw new Error("arrays of points and scalars must have equal length");let s=r.ZERO,o=Sc(BigInt(t.length)),i=o>12?o-3:o>4?o-2:o?2:1,a=(1<<i)-1,c=new Array(a+1).fill(s),u=Math.floor((e.BITS-1)/i)*i,f=s;for(let l=u;l>=0;l-=i){c.fill(s);for(let h=0;h<n.length;h++){let p=n[h],m=Number(p>>BigInt(l)&BigInt(a));c[m]=c[m].add(t[h])}let d=s;for(let h=c.length-1,p=s;h>0;h--)p=p.add(c[h]),d=d.add(p);if(f=f.add(d),l!==0)for(let h=0;h<i;h++)f=f.double()}return f}function Wn(r){return Cc(r.Fp),dt(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Ic(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var ot=BigInt(0),$e=BigInt(1),mo=BigInt(2),L0=BigInt(8),N0={zip215:!0};function P0(r){let e=Wn(r);return dt(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function nh(r){let e=P0(r),{Fp:t,n,prehash:s,hash:o,randomBytes:i,nByteLength:a,h:c}=e,u=mo<<BigInt(a*8)-$e,f=t.create,l=Yt(e.n,e.nBitLength),d=e.uvRatio||((S,E)=>{try{return{isValid:!0,value:t.sqrt(S*t.inv(E))}}catch{return{isValid:!1,value:ot}}}),h=e.adjustScalarBytes||(S=>S),p=e.domain||((S,E,C)=>{if(st("phflag",C),E.length||C)throw new Error("Contexts/pre-hash are not supported");return S});function m(S,E){qe("coordinate "+S,E,ot,u)}function g(S){if(!(S instanceof y))throw new Error("ExtendedPoint expected")}let w=yr((S,E)=>{let{ex:C,ey:L,ez:M}=S,U=S.is0();E==null&&(E=U?L0:t.inv(M));let K=f(C*E),$=f(L*E),O=f(M*E);if(U)return{x:ot,y:$e};if(O!==$e)throw new Error("invZ was invalid");return{x:K,y:$}}),b=yr(S=>{let{a:E,d:C}=e;if(S.is0())throw new Error("bad point: ZERO");let{ex:L,ey:M,ez:U,et:K}=S,$=f(L*L),O=f(M*M),Q=f(U*U),ne=f(Q*Q),be=f($*E),xe=f(Q*f(be+O)),Ee=f(ne+f(C*f($*O)));if(xe!==Ee)throw new Error("bad point: equation left != right (1)");let Be=f(L*M),Ke=f(U*K);if(Be!==Ke)throw new Error("bad point: equation left != right (2)");return!0});class y{constructor(E,C,L,M){this.ex=E,this.ey=C,this.ez=L,this.et=M,m("x",E),m("y",C),m("z",L),m("t",M),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(E){if(E instanceof y)throw new Error("extended point not allowed");let{x:C,y:L}=E||{};return m("x",C),m("y",L),new y(C,L,$e,f(C*L))}static normalizeZ(E){let C=t.invertBatch(E.map(L=>L.ez));return E.map((L,M)=>L.toAffine(C[M])).map(y.fromAffine)}static msm(E,C){return po(y,l,E,C)}_setWindowSize(E){_.setWindowSize(this,E)}assertValidity(){b(this)}equals(E){g(E);let{ex:C,ey:L,ez:M}=this,{ex:U,ey:K,ez:$}=E,O=f(C*$),Q=f(U*M),ne=f(L*$),be=f(K*M);return O===Q&&ne===be}is0(){return this.equals(y.ZERO)}negate(){return new y(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:E}=e,{ex:C,ey:L,ez:M}=this,U=f(C*C),K=f(L*L),$=f(mo*f(M*M)),O=f(E*U),Q=C+L,ne=f(f(Q*Q)-U-K),be=O+K,xe=be-$,Ee=O-K,Be=f(ne*xe),Ke=f(be*Ee),De=f(ne*Ee),ht=f(xe*be);return new y(Be,Ke,ht,De)}add(E){g(E);let{a:C,d:L}=e,{ex:M,ey:U,ez:K,et:$}=this,{ex:O,ey:Q,ez:ne,et:be}=E;if(C===BigInt(-1)){let df=f((U-M)*(Q+O)),pf=f((U+M)*(Q-O)),rc=f(pf-df);if(rc===ot)return this.double();let mf=f(K*mo*be),gf=f($*mo*ne),yf=gf+mf,wf=pf+df,bf=gf-mf,Km=f(yf*rc),qm=f(wf*bf),$m=f(yf*bf),zm=f(rc*wf);return new y(Km,qm,zm,$m)}let xe=f(M*O),Ee=f(U*Q),Be=f($*L*be),Ke=f(K*ne),De=f((M+U)*(O+Q)-xe-Ee),ht=Ke-Be,xt=Ke+Be,Mn=f(Ee-C*xe),Om=f(De*ht),Fm=f(xt*Mn),Vm=f(De*Mn),Hm=f(ht*xt);return new y(Om,Fm,Hm,Vm)}subtract(E){return this.add(E.negate())}wNAF(E){return _.wNAFCached(this,E,y.normalizeZ)}multiply(E){let C=E;qe("scalar",C,$e,n);let{p:L,f:M}=this.wNAF(C);return y.normalizeZ([L,M])[0]}multiplyUnsafe(E,C=y.ZERO){let L=E;return qe("scalar",L,ot,n),L===ot?A:this.is0()||L===$e?this:_.wNAFCachedUnsafe(this,L,y.normalizeZ,C)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(E){return w(this,E)}clearCofactor(){let{h:E}=e;return E===$e?this:this.multiplyUnsafe(E)}static fromHex(E,C=!1){let{d:L,a:M}=e,U=t.BYTES;E=ae("pointHex",E,U),st("zip215",C);let K=E.slice(),$=E[U-1];K[U-1]=$&-129;let O=Zt(K),Q=C?u:t.ORDER;qe("pointHex.y",O,ot,Q);let ne=f(O*O),be=f(ne-$e),xe=f(L*ne-M),{isValid:Ee,value:Be}=d(be,xe);if(!Ee)throw new Error("Point.fromHex: invalid y coordinate");let Ke=(Be&$e)===$e,De=($&128)!==0;if(!C&&Be===ot&&De)throw new Error("Point.fromHex: x=0 and x_0=1");return De!==Ke&&(Be=f(-Be)),y.fromAffine({x:Be,y:O})}static fromPrivateKey(E){return k(E).point}toRawBytes(){let{x:E,y:C}=this.toAffine(),L=gr(C,t.BYTES);return L[L.length-1]|=E&$e?128:0,L}toHex(){return Ct(this.toRawBytes())}}y.BASE=new y(e.Gx,e.Gy,$e,f(e.Gx*e.Gy)),y.ZERO=new y(ot,$e,$e,ot);let{BASE:x,ZERO:A}=y,_=ho(y,a*8);function v(S){return ee(S,n)}function B(S){return v(Zt(S))}function k(S){let E=t.BYTES;S=ae("private key",S,E);let C=ae("hashed private key",o(S),2*E),L=h(C.slice(0,E)),M=C.slice(E,2*E),U=B(L),K=x.multiply(U),$=K.toRawBytes();return{head:L,prefix:M,scalar:U,point:K,pointBytes:$}}function J(S){return k(S).pointBytes}function H(S=new Uint8Array,...E){let C=kt(...E);return B(o(p(C,ae("context",S),!!s)))}function V(S,E,C={}){S=ae("message",S),s&&(S=s(S));let{prefix:L,scalar:M,pointBytes:U}=k(E),K=H(C.context,L,S),$=x.multiply(K).toRawBytes(),O=H(C.context,$,U,S),Q=v(K+O*M);qe("signature.s",Q,ot,n);let ne=kt($,gr(Q,t.BYTES));return ae("result",ne,t.BYTES*2)}let D=N0;function I(S,E,C,L=D){let{context:M,zip215:U}=L,K=t.BYTES;S=ae("signature",S,2*K),E=ae("message",E),C=ae("publicKey",C,K),U!==void 0&&st("zip215",U),s&&(E=s(E));let $=Zt(S.slice(K,2*K)),O,Q,ne;try{O=y.fromHex(C,U),Q=y.fromHex(S.slice(0,K),U),ne=x.multiplyUnsafe($)}catch{return!1}if(!U&&O.isSmallOrder())return!1;let be=H(M,Q.toRawBytes(),O.toRawBytes(),E);return Q.add(O.multiplyUnsafe(be)).subtract(ne).clearCofactor().equals(y.ZERO)}return x._setWindowSize(8),{CURVE:e,getPublicKey:J,sign:V,verify:I,ExtendedPoint:y,utils:{getExtendedPublicKey:k,randomPrivateKey:()=>i(t.BYTES),precompute(S=8,E=y.BASE){return E._setWindowSize(S),E.multiply(BigInt(3)),E}}}}var Dc=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),sh=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),mv=BigInt(0),D0=BigInt(1),oh=BigInt(2),gv=BigInt(3),R0=BigInt(5),M0=BigInt(8);function U0(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),s=BigInt(80),o=Dc,a=r*r%o*r%o,c=ie(a,oh,o)*a%o,u=ie(c,D0,o)*r%o,f=ie(u,R0,o)*u%o,l=ie(f,e,o)*f%o,d=ie(l,t,o)*l%o,h=ie(d,n,o)*d%o,p=ie(h,s,o)*h%o,m=ie(p,s,o)*h%o,g=ie(m,e,o)*f%o;return{pow_p_5_8:ie(g,oh,o)*r%o,b2:a}}function O0(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function F0(r,e){let t=Dc,n=ee(e*e*e,t),s=ee(n*n*e,t),o=U0(r*s).pow_p_5_8,i=ee(r*n*o,t),a=ee(e*i*i,t),c=i,u=ee(i*sh,t),f=a===r,l=a===ee(-r,t),d=a===ee(-r*sh,t);return f&&(i=c),(l||d)&&(i=u),Yf(i,t)&&(i=ee(-i,t)),{isValid:f||l,value:i}}var V0=Yt(Dc,void 0,!0),H0={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:V0,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:M0,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:Gf,randomBytes:oo,adjustScalarBytes:O0,uvRatio:F0},jn=nh(H0);var go=32,yo=64,Rc=32;function ih(){let r=jn.utils.randomPrivateKey(),e=jn.getPublicKey(r);return{privateKey:K0(r,e),publicKey:e}}function ah(r,e){let t=r.subarray(0,Rc);return jn.sign(e instanceof Uint8Array?e:e.subarray(),t)}function ch(r,e,t){return jn.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function K0(r,e){let t=new Uint8Array(yo);for(let n=0;n<Rc;n++)t[n]=r[n],t[Rc+n]=e[n];return t}var Zn=class{type="Ed25519";raw;constructor(e){this.raw=bo(e,go)}toMultihash(){return _t.digest(pt(this))}toCID(){return me.createV1(114,this.toMultihash())}toString(){return X.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}verify(e,t){return ch(this.raw,t,e)}},wo=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=bo(e,yo),this.publicKey=new Zn(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}sign(e){return ah(this.raw,e)}};function Mc(r){return r=bo(r,go),new Zn(r)}async function uh(){let{privateKey:r,publicKey:e}=ih();return new wo(r,e)}function bo(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new R(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}function fe(r=0){return new Uint8Array(r)}function Ce(r=0){return new Uint8Array(r)}var q0=Math.pow(2,7),$0=Math.pow(2,14),z0=Math.pow(2,21),Uc=Math.pow(2,28),Oc=Math.pow(2,35),Fc=Math.pow(2,42),Vc=Math.pow(2,49),Y=128,Ie=127;function pe(r){if(r<q0)return 1;if(r<$0)return 2;if(r<z0)return 3;if(r<Uc)return 4;if(r<Oc)return 5;if(r<Fc)return 6;if(r<Vc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Hc(r,e,t=0){switch(pe(r)){case 8:e[t++]=r&255|Y,r/=128;case 7:e[t++]=r&255|Y,r/=128;case 6:e[t++]=r&255|Y,r/=128;case 5:e[t++]=r&255|Y,r/=128;case 4:e[t++]=r&255|Y,r>>>=7;case 3:e[t++]=r&255|Y,r>>>=7;case 2:e[t++]=r&255|Y,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function G0(r,e,t=0){switch(pe(r)){case 8:e.set(t++,r&255|Y),r/=128;case 7:e.set(t++,r&255|Y),r/=128;case 6:e.set(t++,r&255|Y),r/=128;case 5:e.set(t++,r&255|Y),r/=128;case 4:e.set(t++,r&255|Y),r>>>=7;case 3:e.set(t++,r&255|Y),r>>>=7;case 2:e.set(t++,r&255|Y),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Kc(r,e){let t=r[e],n=0;if(n+=t&Ie,t<Y||(t=r[e+1],n+=(t&Ie)<<7,t<Y)||(t=r[e+2],n+=(t&Ie)<<14,t<Y)||(t=r[e+3],n+=(t&Ie)<<21,t<Y)||(t=r[e+4],n+=(t&Ie)*Uc,t<Y)||(t=r[e+5],n+=(t&Ie)*Oc,t<Y)||(t=r[e+6],n+=(t&Ie)*Fc,t<Y)||(t=r[e+7],n+=(t&Ie)*Vc,t<Y))return n;throw new RangeError("Could not decode varint")}function W0(r,e){let t=r.get(e),n=0;if(n+=t&Ie,t<Y||(t=r.get(e+1),n+=(t&Ie)<<7,t<Y)||(t=r.get(e+2),n+=(t&Ie)<<14,t<Y)||(t=r.get(e+3),n+=(t&Ie)<<21,t<Y)||(t=r.get(e+4),n+=(t&Ie)*Uc,t<Y)||(t=r.get(e+5),n+=(t&Ie)*Oc,t<Y)||(t=r.get(e+6),n+=(t&Ie)*Fc,t<Y)||(t=r.get(e+7),n+=(t&Ie)*Vc,t<Y))return n;throw new RangeError("Could not decode varint")}function ke(r,e,t=0){return e==null&&(e=Ce(pe(r))),e instanceof Uint8Array?Hc(r,e,t):G0(r,e,t)}function it(r,e=0){return r instanceof Uint8Array?Kc(r,e):W0(r,e)}var qc=new Float32Array([-0]),Jt=new Uint8Array(qc.buffer);function fh(r,e,t){qc[0]=r,e[t]=Jt[0],e[t+1]=Jt[1],e[t+2]=Jt[2],e[t+3]=Jt[3]}function hh(r,e){return Jt[0]=r[e],Jt[1]=r[e+1],Jt[2]=r[e+2],Jt[3]=r[e+3],qc[0]}var $c=new Float64Array([-0]),Te=new Uint8Array($c.buffer);function dh(r,e,t){$c[0]=r,e[t]=Te[0],e[t+1]=Te[1],e[t+2]=Te[2],e[t+3]=Te[3],e[t+4]=Te[4],e[t+5]=Te[5],e[t+6]=Te[6],e[t+7]=Te[7]}function ph(r,e){return Te[0]=r[e],Te[1]=r[e+1],Te[2]=r[e+2],Te[3]=r[e+3],Te[4]=r[e+4],Te[5]=r[e+5],Te[6]=r[e+6],Te[7]=r[e+7],$c[0]}var j0=BigInt(Number.MAX_SAFE_INTEGER),Z0=BigInt(Number.MIN_SAFE_INTEGER),je=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return xr;if(e<j0&&e>Z0)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>mh&&(s=0n,++n>mh&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return xr;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):xr}},xr=new je(0,0);xr.toBigInt=function(){return 0n};xr.zzEncode=xr.zzDecode=function(){return this};xr.length=function(){return 1};var mh=4294967296n;function gh(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function yh(r,e,t){if(t-e<1)return"";let s,o=[],i=0,a;for(;e<t;)a=r[e++],a<128?o[i++]=a:a>191&&a<224?o[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,o[i++]=55296+(a>>10),o[i++]=56320+(a&1023)):o[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,o)),i=0);return s!=null?(i>0&&s.push(String.fromCharCode.apply(String,o.slice(0,i))),s.join("")):String.fromCharCode.apply(String,o.slice(0,i))}function zc(r,e,t){let n=t,s,o;for(let i=0;i<r.length;++i)s=r.charCodeAt(i),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((o=r.charCodeAt(i+1))&64512)===56320?(s=65536+((s&1023)<<10)+(o&1023),++i,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}function at(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function xo(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var Gc=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,at(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw at(this,4);return xo(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw at(this,4);return xo(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw at(this,4);let e=hh(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw at(this,4);let e=ph(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw at(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return yh(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw at(this,e);this.pos+=e}else do if(this.pos>=this.len)throw at(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new je(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw at(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw at(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw at(this,8);let e=xo(this.buf,this.pos+=4),t=xo(this.buf,this.pos+=4);return new je(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Kc(this.buf,this.pos);return this.pos+=pe(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Wc(r){return new Gc(r instanceof Uint8Array?r:r.subarray())}function Me(r,e,t){let n=Wc(r);return e.decode(n,void 0,t)}var jc={};Re(jc,{base10:()=>X0});var X0=zt({prefix:"9",name:"base10",alphabet:"0123456789"});var Zc={};Re(Zc,{base16:()=>Y0,base16upper:()=>J0});var Y0=le({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),J0=le({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Xc={};Re(Xc,{base2:()=>Q0});var Q0=le({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Yc={};Re(Yc,{base256emoji:()=>sy});var bh=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),ey=bh.reduce((r,e,t)=>(r[t]=e,r),[]),ty=bh.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function ry(r){return r.reduce((e,t)=>(e+=ey[t],e),"")}function ny(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=ty[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var sy=Xr({prefix:"\u{1F680}",name:"base256emoji",encode:ry,decode:ny});var el={};Re(el,{base64:()=>Jc,base64pad:()=>oy,base64url:()=>Qc,base64urlpad:()=>iy});var Jc=le({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),oy=le({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Qc=le({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),iy=le({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var tl={};Re(tl,{base8:()=>ay});var ay=le({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var rl={};Re(rl,{identity:()=>cy});var cy=Xr({prefix:"\0",name:"identity",encode:r=>Bf(r),decode:r=>_f(r)});var Zv=new TextEncoder,Xv=new TextDecoder;var ol={};Re(ol,{sha256:()=>on,sha512:()=>fy});function sl({name:r,code:e,encode:t}){return new nl(r,e,t)}var nl=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?tt(this.code,t):t.then(n=>tt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function vh(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var on=sl({name:"sha2-256",code:18,encode:vh("SHA-256")}),fy=sl({name:"sha2-512",code:19,encode:vh("SHA-512")});var Xn={...rl,...Xc,...tl,...jc,...Zc,...dc,...pc,...hc,...el,...Yc},c2={...ol,...yc};function Ah(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Eh=Ah("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),il=Ah("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Ce(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),hy={utf8:Eh,"utf-8":Eh,hex:Xn.base16,latin1:il,ascii:il,binary:il,...Xn},vo=hy;function P(r,e="utf8"){let t=vo[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function al(r){let e=r??8192,t=e>>>1,n,s=e;return function(i){if(i<1||i>t)return Ce(i);s+i>e&&(n=Ce(e),s=0);let a=n.subarray(s,s+=i);return s&7&&(s=(s|7)+1),a}}var vr=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function cl(){}var ul=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},dy=al();function py(r){return globalThis.Buffer!=null?Ce(r):dy(r)}var Jn=class{len;head;tail;states;constructor(){this.len=0,this.head=new vr(cl,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new vr(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new fl((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Eo,10,je.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=je.fromBigInt(e);return this._push(Eo,t.length(),t)}uint64Number(e){return this._push(Hc,pe(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=je.fromBigInt(e).zzEncode();return this._push(Eo,t.length(),t)}sint64Number(e){let t=je.fromNumber(e).zzEncode();return this._push(Eo,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(ll,1,e?1:0)}fixed32(e){return this._push(Yn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=je.fromBigInt(e);return this._push(Yn,4,t.lo)._push(Yn,4,t.hi)}fixed64Number(e){let t=je.fromNumber(e);return this._push(Yn,4,t.lo)._push(Yn,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(fh,4,e)}double(e){return this._push(dh,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(ll,1,0):this.uint32(t)._push(gy,t,e)}string(e){let t=gh(e);return t!==0?this.uint32(t)._push(zc,t,e):this._push(ll,1,0)}fork(){return this.states=new ul(this),this.head=this.tail=new vr(cl,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new vr(cl,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=py(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function ll(r,e,t){e[t]=r&255}function my(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var fl=class extends vr{next;constructor(e,t){super(my,e,t),this.next=void 0}};function Eo(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Yn(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function gy(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Jn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(yy,e,r),this},Jn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(wy,e,r),this});function yy(r,e,t){e.set(r,t)}function wy(r,e,t){r.length<40?zc(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(P(r),t)}function hl(){return new Jn}function Ue(r,e){let t=hl();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var an;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(an||(an={}));function Ao(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function dl(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(o,i){let a=e(o);i.int32(a)},n=function(o){let i=o.int32();return e(i)};return Ao("enum",an.VARINT,t,n)}function Oe(r,e){return Ao("message",an.LENGTH_DELIMITED,r,e)}var Er=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Qn=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var ye;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(ye||(ye={}));var pl;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(pl||(pl={}));(function(r){r.codec=()=>dl(pl)})(ye||(ye={}));var mt;(function(r){let e;r.codec=()=>(e==null&&(e=Oe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ye.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=ye.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(mt||(mt={}));var ml;(function(r){let e;r.codec=()=>(e==null&&(e=Oe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ye.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=ye.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(ml||(ml={}));var us={};Re(us,{MAX_RSA_KEY_SIZE:()=>wi,generateRSAKeyPair:()=>kl,jwkToJWKKeyPair:()=>_d,jwkToPkcs1:()=>Uy,jwkToPkix:()=>Cl,jwkToRSAPrivateKey:()=>Sd,pkcs1ToJwk:()=>vd,pkcs1ToRSAPrivateKey:()=>Ad,pkixToJwk:()=>Ed,pkixToRSAPublicKey:()=>Il});function by(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function gl(r,...e){if(!by(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function yl(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function _h(r,e){gl(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}var Ar=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var _o=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),ct=(r,e)=>r<<32-e|r>>>e;function xy(r){if(typeof r!="string")throw new Error("utf8ToBytes expected string, got "+typeof r);return new Uint8Array(new TextEncoder().encode(r))}function wl(r){return typeof r=="string"&&(r=xy(r)),gl(r),r}var So=class{clone(){return this._cloneInto()}};function Bh(r){let e=n=>r().update(wl(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Ch(r=32){if(Ar&&typeof Ar.getRandomValues=="function")return Ar.getRandomValues(new Uint8Array(r));if(Ar&&typeof Ar.randomBytes=="function")return Ar.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function vy(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let s=BigInt(32),o=BigInt(4294967295),i=Number(t>>s&o),a=Number(t&o),c=n?4:0,u=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+u,a,n)}var Ih=(r,e,t)=>r&e^~r&t,kh=(r,e,t)=>r&e^r&t^e&t,Bo=class extends So{constructor(e,t,n,s){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=_o(this.buffer)}update(e){yl(this);let{view:t,buffer:n,blockLen:s}=this;e=wl(e);let o=e.length;for(let i=0;i<o;){let a=Math.min(s-this.pos,o-i);if(a===s){let c=_o(e);for(;s<=o-i;i+=s)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===s&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){yl(this),_h(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:s,isLE:o}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>s-i&&(this.process(n,0),i=0);for(let l=i;l<s;l++)t[l]=0;vy(n,s-8,BigInt(this.length*8),o),this.process(n,0);let a=_o(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<u;l++)a.setUint32(4*l,f[l],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:s,finished:o,destroyed:i,pos:a}=this;return e.length=s,e.pos=a,e.finished=o,e.destroyed=i,s%t&&e.buffer.set(n),e}};var Ey=new Uint32Array([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]),Qt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),er=new Uint32Array(64),bl=class extends Bo{constructor(){super(64,32,8,!1),this.A=Qt[0]|0,this.B=Qt[1]|0,this.C=Qt[2]|0,this.D=Qt[3]|0,this.E=Qt[4]|0,this.F=Qt[5]|0,this.G=Qt[6]|0,this.H=Qt[7]|0}get(){let{A:e,B:t,C:n,D:s,E:o,F:i,G:a,H:c}=this;return[e,t,n,s,o,i,a,c]}set(e,t,n,s,o,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=o|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let l=0;l<16;l++,t+=4)er[l]=e.getUint32(t,!1);for(let l=16;l<64;l++){let d=er[l-15],h=er[l-2],p=ct(d,7)^ct(d,18)^d>>>3,m=ct(h,17)^ct(h,19)^h>>>10;er[l]=m+er[l-7]+p+er[l-16]|0}let{A:n,B:s,C:o,D:i,E:a,F:c,G:u,H:f}=this;for(let l=0;l<64;l++){let d=ct(a,6)^ct(a,11)^ct(a,25),h=f+d+Ih(a,c,u)+Ey[l]+er[l]|0,m=(ct(n,2)^ct(n,13)^ct(n,22))+kh(n,s,o)|0;f=u,u=c,c=a,a=i+h|0,i=o,o=s,s=n,n=h+m|0}n=n+this.A|0,s=s+this.B|0,o=o+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,f=f+this.H|0,this.set(n,s,o,i,a,c,u,f)}roundClean(){er.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Co=Bh(()=>new bl);var q=hr(Th());function Sr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function tr(r,e,t=-1){let n=t,s=r,o=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),o=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),o=n}let u=new Uint8Array(c);for(let f=a-1;f>=0;f--){let l=Math.pow(2,f*e);u[o-f-1]=Math.floor(s/l),s-=u[o-f-1]*l}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function To(...r){let e=0,t=0;for(let o of r)e+=o.length;let n=new ArrayBuffer(e),s=new Uint8Array(n);for(let o of r)s.set(o,t),t+=o.length;return s}function vl(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=Sr(t,8),s=new ArrayBuffer(this.valueHex.byteLength),o=new Uint8Array(s);for(let a=0;a<this.valueHex.byteLength;a++)o[a]=r[a];return o[0]&=127,Sr(o,8)-n}function Lh(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=tr(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let s=tr(e,8,n),o=new Uint8Array(s);if(o[0]&128){let i=s.slice(0),a=new Uint8Array(i);s=new ArrayBuffer(s.byteLength+1),o=new Uint8Array(s);for(let c=0;c<i.byteLength;c++)o[c+1]=a[c];o[0]=0}return s}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function Nh(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<t.length;s++)if(t[s]!==n[s])return!1;return!0}function ze(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,s=new Array(n);for(let i=0;i<n;i++)s[i]="0";return s.join("").concat(t)}var Y2=Math.log(2);function Lo(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function El(r){let e=0,t=0;for(let s=0;s<r.length;s++){let o=r[s];e+=o.byteLength}let n=new Uint8Array(e);for(let s=0;s<r.length;s++){let o=r[s];n.set(new Uint8Array(o),t),t+=o.byteLength}return n.buffer}function Dt(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var ts=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return El(this.items)}},es=[new Uint8Array([1])],Ph="0123456789";var hn="",lt=new ArrayBuffer(0),Al=new Uint8Array(0),rs="EndOfContent",Rh="OCTET STRING",Mh="BIT STRING";function Rt(r){var e;return e=class extends r{constructor(...n){var s;super(...n);let o=n[0]||{};this.isHexOnly=(s=o.isHexOnly)!==null&&s!==void 0?s:!1,this.valueHexView=o.valueHex?q.BufferSourceConverter.toUint8Array(o.valueHex):Al}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,s,o){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Dt(this,i,s,o))return-1;let a=s+o;return this.valueHexView=i.subarray(s,a),this.valueHexView.length?(this.blockLength=o,a):(this.warnings.push("Zero buffer length"),s)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",lt)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:q.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Lt=class{constructor({blockLength:e=0,error:t=hn,warnings:n=[],valueBeforeDecode:s=Al}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=q.BufferSourceConverter.toUint8Array(s)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:q.Convert.ToHex(this.valueBeforeDecodeView)}}};Lt.NAME="baseBlock";var Le=class extends Lt{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Le.NAME="valueBlock";var No=class extends Rt(Lt){constructor({idBlock:e={}}={}){var t,n,s,o;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?q.BufferSourceConverter.toUint8Array(e.valueHex):Al,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(s=e.tagNumber)!==null&&s!==void 0?s:-1,this.isConstructed=(o=e.isConstructed)!==null&&o!==void 0?o:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",lt}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let s=new Uint8Array(1);if(!e){let o=this.tagNumber;o&=31,t|=o,s[0]=t}return s.buffer}if(!this.isHexOnly){let s=tr(this.tagNumber,7),o=new Uint8Array(s),i=s.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=o[c]|128;a[i]=o[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let s=this.valueHexView;for(let o=0;o<s.length-1;o++)n[o+1]=s[o]|128;n[this.valueHexView.byteLength]=s[s.length-1]}return n.buffer}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);if(!Dt(this,s,t,n))return-1;let o=s.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;switch(o[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(o[0]&32)===32,this.isHexOnly=!1;let a=o[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,u=this.valueHexView=new Uint8Array(255),f=255;for(;o[c]&128;){if(u[c-1]=o[c]&127,c++,c>=o.length)return this.error="End of input reached before message was fully decoded",-1;if(c===f){f+=255;let d=new Uint8Array(f);for(let h=0;h<u.length;h++)d[h]=u[h];u=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,u[c-1]=o[c]&127;let l=new Uint8Array(c);for(let d=0;d<c;d++)l[d]=u[d];u=this.valueHexView=new Uint8Array(c),u.set(l),this.blockLength<=9?this.tagNumber=Sr(u,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};No.NAME="identificationBlock";var Po=class extends Lt{constructor({lenBlock:e={}}={}){var t,n,s;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(s=e.length)!==null&&s!==void 0?s:0}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);if(!Dt(this,s,t,n))return-1;let o=s.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;if(o[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=o[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(o[0]&128),this.longFormUsed===!1)return this.length=o[0],this.blockLength=1,t+this.blockLength;let i=o[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>o.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=s.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=Sr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let s=tr(this.length,8);if(s.byteLength>127)return this.error="Too big length",lt;if(t=new ArrayBuffer(s.byteLength+1),e)return t;let o=new Uint8Array(s);n=new Uint8Array(t),n[0]=s.byteLength|128;for(let i=0;i<s.byteLength;i++)n[i+1]=o[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};Po.NAME="lengthBlock";var T={},Ae=class extends Lt{constructor({name:e=hn,optional:t=!1,primitiveSchema:n,...s}={},o){super(s),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new No(s),this.lenBlock=new Po(s),this.valueBlock=o?new o(s):new Le(s)}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){let n=t||new ts;t||Uh(this);let s=this.idBlock.toBER(e);if(n.write(s),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let o=this.valueBlock.toBER(e);this.lenBlock.length=o.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(o)}return t?lt:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():q.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${q.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return Nh(t,n)}};Ae.NAME="BaseBlock";function Uh(r){if(r instanceof T.Constructed)for(let e of r.valueBlock.value)Uh(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var Do=class extends Ae{constructor({value:e=hn,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};Do.NAME="BaseStringBlock";var Ro=class extends Rt(Le){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};Ro.NAME="PrimitiveValueBlock";var Oh,Mo=class extends Ae{constructor(e={}){super(e,Ro),this.idBlock.isConstructed=!1}};Oh=Mo;T.Primitive=Oh;Mo.NAME="PRIMITIVE";function Ly(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function gi(r,e=0,t=r.length){let n=e,s=new Ae({},Le),o=new Lt;if(!Dt(o,r,e,t))return s.error=o.error,{offset:-1,result:s};if(!r.subarray(e,e+t).length)return s.error="Zero buffer length",{offset:-1,result:s};let a=s.idBlock.fromBER(r,e,t);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),a===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(e=a,t-=s.idBlock.blockLength,a=s.lenBlock.fromBER(r,e,t),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),a===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};if(e=a,t-=s.lenBlock.blockLength,!s.idBlock.isConstructed&&s.lenBlock.isIndefiniteForm)return s.error="Indefinite length form used for primitive encoding form",{offset:-1,result:s};let c=Ae;switch(s.idBlock.tagClass){case 1:if(s.idBlock.tagNumber>=37&&s.idBlock.isHexOnly===!1)return s.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:s};switch(s.idBlock.tagNumber){case 0:if(s.idBlock.isConstructed&&s.lenBlock.length>0)return s.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:s};c=T.EndOfContent;break;case 1:c=T.Boolean;break;case 2:c=T.Integer;break;case 3:c=T.BitString;break;case 4:c=T.OctetString;break;case 5:c=T.Null;break;case 6:c=T.ObjectIdentifier;break;case 10:c=T.Enumerated;break;case 12:c=T.Utf8String;break;case 13:c=T.RelativeObjectIdentifier;break;case 14:c=T.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:c=T.Sequence;break;case 17:c=T.Set;break;case 18:c=T.NumericString;break;case 19:c=T.PrintableString;break;case 20:c=T.TeletexString;break;case 21:c=T.VideotexString;break;case 22:c=T.IA5String;break;case 23:c=T.UTCTime;break;case 24:c=T.GeneralizedTime;break;case 25:c=T.GraphicString;break;case 26:c=T.VisibleString;break;case 27:c=T.GeneralString;break;case 28:c=T.UniversalString;break;case 29:c=T.CharacterString;break;case 30:c=T.BmpString;break;case 31:c=T.DATE;break;case 32:c=T.TimeOfDay;break;case 33:c=T.DateTime;break;case 34:c=T.Duration;break;default:{let u=s.idBlock.isConstructed?new T.Constructed:new T.Primitive;u.idBlock=s.idBlock,u.lenBlock=s.lenBlock,u.warnings=s.warnings,s=u}}break;case 2:case 3:case 4:default:c=s.idBlock.isConstructed?T.Constructed:T.Primitive}return s=Ly(s,c),a=s.fromBER(r,e,s.lenBlock.isIndefiniteForm?t:s.lenBlock.length),s.valueBeforeDecodeView=r.subarray(n,n+s.blockLength),{offset:a,result:s}}function Sl(r){if(!r.byteLength){let e=new Ae({},Le);return e.error="Input buffer has zero length",{offset:-1,result:e}}return gi(q.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function Ny(r,e){return r?1:e}var gt=class extends Le{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);if(!Dt(this,s,t,n))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let o=t;for(;Ny(this.isIndefiniteForm,n)>0;){let i=gi(s,o,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(o=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===rs)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===rs?this.value.pop():this.warnings.push("No EndOfContent block encoded")),o}toBER(e,t){let n=t||new ts;for(let s=0;s<this.value.length;s++)this.value[s].toBER(e,n);return t?lt:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};gt.NAME="ConstructedValueBlock";var Fh,rr=class extends Ae{constructor(e={}){super(e,gt),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
2
|
+
"use strict";var Libp2P=(()=>{var Tm=Object.create;var Ks=Object.defineProperty;var Lm=Object.getOwnPropertyDescriptor;var Pm=Object.getOwnPropertyNames;var Nm=Object.getPrototypeOf,Dm=Object.prototype.hasOwnProperty;var Qe=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Re=(r,e)=>{for(var t in e)Ks(r,t,{get:e[t],enumerable:!0})},uf=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Pm(e))!Dm.call(r,s)&&s!==t&&Ks(r,s,{get:()=>e[s],enumerable:!(n=Lm(e,s))||n.enumerable});return r};var lr=(r,e,t)=>(t=r!=null?Tm(Nm(r)):{},uf(e||!r||!r.__esModule?Ks(t,"default",{value:r,enumerable:!0}):t,r)),Rm=r=>uf(Ks({},"__esModule",{value:!0}),r);var mh=Qe(on=>{"use strict";var sy="[object ArrayBuffer]",kt=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===sy}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),s=r.toUint8Array(t);if(n.length!==s.byteLength)return!1;for(let o=0;o<n.length;o++)if(n[o]!==s[o])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let s=new Uint8Array(n),o=0;for(let i of t){let a=this.toUint8Array(i);s.set(a,o),o+=a.length}return e[e.length-1]instanceof Function?this.toView(s,e[e.length-1]):s.buffer}},ul="string",oy=/^[0-9a-f\s]+$/i,iy=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,ay=/^[a-zA-Z0-9-_]+$/,vo=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return n.buffer}static toString(e){let t=kt.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return decodeURIComponent(escape(n))}},Xe=class{static toString(e,t=!1){let n=kt.toArrayBuffer(e),s=new DataView(n),o="";for(let i=0;i<n.byteLength;i+=2){let a=s.getUint16(i,t);o+=String.fromCharCode(a)}return o}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),s=new DataView(n);for(let o=0;o<e.length;o++)s.setUint16(o*2,e.charCodeAt(o),t);return n}},Eo=class r{static isHex(e){return typeof e===ul&&oy.test(e)}static isBase64(e){return typeof e===ul&&iy.test(e)}static isBase64Url(e){return typeof e===ul&&ay.test(e)}static ToString(e,t="utf8"){let n=kt.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Xe.toString(n,!0);case"utf16":case"utf16be":return Xe.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Xe.fromString(e,!0);case"utf16":case"utf16be":return Xe.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=kt.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return vo.fromString(e);case"utf16":case"utf16be":return Xe.fromString(e);case"utf16le":case"usc2":return Xe.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return vo.toString(e);case"utf16":case"utf16be":return Xe.toString(e);case"utf16le":case"usc2":return Xe.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n.buffer}static ToBinary(e){let t=kt.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return n}static ToHex(e){let t=kt.toUint8Array(e),n="",s=t.length;for(let o=0;o<s;o++){let i=t[o];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let s=0;s<t.length;s=s+2){let o=t.slice(s,s+2);n[s/2]=parseInt(o,16)}return n.buffer}static ToUtf16String(e,t=!1){return Xe.toString(e,t)}static FromUtf16String(e,t=!1){return Xe.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};Eo.DEFAULT_UTF8_ENCODING="utf8";function cy(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let s=arguments[n];for(let o in s)t[o]=s[o]}return t}function ly(...r){let e=r.map(s=>s.byteLength).reduce((s,o)=>s+o),t=new Uint8Array(e),n=0;return r.map(s=>new Uint8Array(s)).forEach(s=>{for(let o of s)t[n++]=o}),t.buffer}function uy(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<r.byteLength;s++)if(t[s]!==n[s])return!1;return!0}on.BufferSourceConverter=kt;on.Convert=Eo;on.assign=cy;on.combine=ly;on.isEqual=uy});var Ld=Qe((dA,Bl)=>{"use strict";var Ny=Object.prototype.hasOwnProperty,He="~";function gs(){}Object.create&&(gs.prototype=Object.create(null),new gs().__proto__||(He=!1));function Dy(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Td(r,e,t,n,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var o=new Dy(t,n||r,s),i=He?He+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],o]:r._events[i].push(o):(r._events[i]=o,r._eventsCount++),r}function mi(r,e){--r._eventsCount===0?r._events=new gs:delete r._events[e]}function Pe(){this._events=new gs,this._eventsCount=0}Pe.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)Ny.call(t,n)&&e.push(He?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Pe.prototype.listeners=function(e){var t=He?He+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,o=n.length,i=new Array(o);s<o;s++)i[s]=n[s].fn;return i};Pe.prototype.listenerCount=function(e){var t=He?He+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Pe.prototype.emit=function(e,t,n,s,o,i){var a=He?He+e:e;if(!this._events[a])return!1;var c=this._events[a],u=arguments.length,f,l;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),u){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,o),!0;case 6:return c.fn.call(c.context,t,n,s,o,i),!0}for(l=1,f=new Array(u-1);l<u;l++)f[l-1]=arguments[l];c.fn.apply(c.context,f)}else{var d=c.length,h;for(l=0;l<d;l++)switch(c[l].once&&this.removeListener(e,c[l].fn,void 0,!0),u){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,t);break;case 3:c[l].fn.call(c[l].context,t,n);break;case 4:c[l].fn.call(c[l].context,t,n,s);break;default:if(!f)for(h=1,f=new Array(u-1);h<u;h++)f[h-1]=arguments[h];c[l].fn.apply(c[l].context,f)}}return!0};Pe.prototype.on=function(e,t,n){return Td(this,e,t,n,!1)};Pe.prototype.once=function(e,t,n){return Td(this,e,t,n,!0)};Pe.prototype.removeListener=function(e,t,n,s){var o=He?He+e:e;if(!this._events[o])return this;if(!t)return mi(this,o),this;var i=this._events[o];if(i.fn)i.fn===t&&(!s||i.once)&&(!n||i.context===n)&&mi(this,o);else{for(var a=0,c=[],u=i.length;a<u;a++)(i[a].fn!==t||s&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[o]=c.length===1?c[0]:c:mi(this,o)}return this};Pe.prototype.removeAllListeners=function(e){var t;return e?(t=He?He+e:e,this._events[t]&&mi(this,t)):(this._events=new gs,this._eventsCount=0),this};Pe.prototype.off=Pe.prototype.removeListener;Pe.prototype.addListener=Pe.prototype.on;Pe.prefixed=He;Pe.EventEmitter=Pe;typeof Bl<"u"&&(Bl.exports=Pe)});var Md=Qe((MA,Rd)=>{Rd.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function s(o,i){t[o]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(o){return t[o]!==void 0||n[o]!==void 0},remove:function(o){t[o]!==void 0&&(t[o]=void 0),n[o]!==void 0&&(n[o]=void 0)},get:function(o){var i=t[o];if(i!==void 0)return i;if((i=n[o])!==void 0)return s(o,i),i},set:function(o,i){t[o]!==void 0?t[o]=i:s(o,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var tp=Qe((a8,ep)=>{"use strict";ep.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var ap=Qe((op,ip)=>{"use strict";var Si=tp(),{hasOwnProperty:np}=Object.prototype,{propertyIsEnumerable:ow}=Object,xn=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),iw=op,rp={concatArrays:!1,ignoreUndefined:!1},_i=r=>{let e=[];for(let t in r)np.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)ow.call(r,n)&&e.push(n)}return e};function vn(r){return Array.isArray(r)?aw(r):Si(r)?cw(r):r}function aw(r){let e=r.slice(0,0);return _i(r).forEach(t=>{xn(e,t,vn(r[t]))}),e}function cw(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return _i(r).forEach(t=>{xn(e,t,vn(r[t]))}),e}var sp=(r,e,t,n)=>(t.forEach(s=>{typeof e[s]>"u"&&n.ignoreUndefined||(s in r&&r[s]!==Object.getPrototypeOf(r)?xn(r,s,Jl(r[s],e[s],n)):xn(r,s,vn(e[s])))}),r),lw=(r,e,t)=>{let n=r.slice(0,0),s=0;return[r,e].forEach(o=>{let i=[];for(let a=0;a<o.length;a++)np.call(o,a)&&(i.push(String(a)),o===r?xn(n,s++,o[a]):xn(n,s++,vn(o[a])));n=sp(n,o,_i(o).filter(a=>!i.includes(a)),t)}),n};function Jl(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?lw(r,e,t):!Si(e)||!Si(r)?vn(e):sp(r,e,_i(e),t)}ip.exports=function(...r){let e=Jl(vn(rp),this!==iw&&this||{},rp),t={_:{}};for(let n of r)if(n!==void 0){if(!Si(n))throw new TypeError("`"+n+"` is not an Option Object");t=Jl(t,{_:n},e)}return t._}});var hp=Qe((vs,Pi)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(h){if(!Array.isArray(h)&&!ArrayBuffer.isView(h))return!1;for(var p=0;p<h.length;p++)if(!Number.isInteger(h[p])||h[p]<0||h[p]>255)return!1;return!0}function s(h,p){return(h&65535)*p+(((h>>>16)*p&65535)<<16)}function o(h,p){return h<<p|h>>>32-p}function i(h){return h^=h>>>16,h=s(h,2246822507),h^=h>>>13,h=s(h,3266489909),h^=h>>>16,h}function a(h,p){h=[h[0]>>>16,h[0]&65535,h[1]>>>16,h[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=h[3]+p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=h[2]+p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=h[1]+p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=h[0]+p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function c(h,p){h=[h[0]>>>16,h[0]&65535,h[1]>>>16,h[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=h[3]*p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=h[2]*p[3],m[1]+=m[2]>>>16,m[2]&=65535,m[2]+=h[3]*p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=h[1]*p[3],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=h[2]*p[2],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=h[3]*p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=h[0]*p[3]+h[1]*p[2]+h[2]*p[1]+h[3]*p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function u(h,p){return p%=64,p===32?[h[1],h[0]]:p<32?[h[0]<<p|h[1]>>>32-p,h[1]<<p|h[0]>>>32-p]:(p-=32,[h[1]<<p|h[0]>>>32-p,h[0]<<p|h[1]>>>32-p])}function f(h,p){return p%=64,p===0?h:p<32?[h[0]<<p|h[1]>>>32-p,h[1]<<p]:[h[1]<<p-32,0]}function l(h,p){return[h[0]^p[0],h[1]^p[1]]}function d(h){return h=l(h,[0,h[0]>>>1]),h=c(h,[4283543511,3981806797]),h=l(h,[0,h[0]>>>1]),h=c(h,[3301882366,444984403]),h=l(h,[0,h[0]>>>1]),h}t.x86.hash32=function(h,p){if(t.inputValidation&&!n(h))return e;p=p||0;for(var m=h.length%4,g=h.length-m,w=p,b=0,y=3432918353,x=461845907,A=0;A<g;A=A+4)b=h[A]|h[A+1]<<8|h[A+2]<<16|h[A+3]<<24,b=s(b,y),b=o(b,15),b=s(b,x),w^=b,w=o(w,13),w=s(w,5)+3864292196;switch(b=0,m){case 3:b^=h[A+2]<<16;case 2:b^=h[A+1]<<8;case 1:b^=h[A],b=s(b,y),b=o(b,15),b=s(b,x),w^=b}return w^=h.length,w=i(w),w>>>0},t.x86.hash128=function(h,p){if(t.inputValidation&&!n(h))return e;p=p||0;for(var m=h.length%16,g=h.length-m,w=p,b=p,y=p,x=p,A=0,_=0,v=0,C=0,k=597399067,Q=2869860233,H=951274213,V=2716044179,D=0;D<g;D=D+16)A=h[D]|h[D+1]<<8|h[D+2]<<16|h[D+3]<<24,_=h[D+4]|h[D+5]<<8|h[D+6]<<16|h[D+7]<<24,v=h[D+8]|h[D+9]<<8|h[D+10]<<16|h[D+11]<<24,C=h[D+12]|h[D+13]<<8|h[D+14]<<16|h[D+15]<<24,A=s(A,k),A=o(A,15),A=s(A,Q),w^=A,w=o(w,19),w+=b,w=s(w,5)+1444728091,_=s(_,Q),_=o(_,16),_=s(_,H),b^=_,b=o(b,17),b+=y,b=s(b,5)+197830471,v=s(v,H),v=o(v,17),v=s(v,V),y^=v,y=o(y,15),y+=x,y=s(y,5)+2530024501,C=s(C,V),C=o(C,18),C=s(C,k),x^=C,x=o(x,13),x+=w,x=s(x,5)+850148119;switch(A=0,_=0,v=0,C=0,m){case 15:C^=h[D+14]<<16;case 14:C^=h[D+13]<<8;case 13:C^=h[D+12],C=s(C,V),C=o(C,18),C=s(C,k),x^=C;case 12:v^=h[D+11]<<24;case 11:v^=h[D+10]<<16;case 10:v^=h[D+9]<<8;case 9:v^=h[D+8],v=s(v,H),v=o(v,17),v=s(v,V),y^=v;case 8:_^=h[D+7]<<24;case 7:_^=h[D+6]<<16;case 6:_^=h[D+5]<<8;case 5:_^=h[D+4],_=s(_,Q),_=o(_,16),_=s(_,H),b^=_;case 4:A^=h[D+3]<<24;case 3:A^=h[D+2]<<16;case 2:A^=h[D+1]<<8;case 1:A^=h[D],A=s(A,k),A=o(A,15),A=s(A,Q),w^=A}return w^=h.length,b^=h.length,y^=h.length,x^=h.length,w+=b,w+=y,w+=x,b+=w,y+=w,x+=w,w=i(w),b=i(b),y=i(y),x=i(x),w+=b,w+=y,w+=x,b+=w,y+=w,x+=w,("00000000"+(w>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(y>>>0).toString(16)).slice(-8)+("00000000"+(x>>>0).toString(16)).slice(-8)},t.x64.hash128=function(h,p){if(t.inputValidation&&!n(h))return e;p=p||0;for(var m=h.length%16,g=h.length-m,w=[0,p],b=[0,p],y=[0,0],x=[0,0],A=[2277735313,289559509],_=[1291169091,658871167],v=0;v<g;v=v+16)y=[h[v+4]|h[v+5]<<8|h[v+6]<<16|h[v+7]<<24,h[v]|h[v+1]<<8|h[v+2]<<16|h[v+3]<<24],x=[h[v+12]|h[v+13]<<8|h[v+14]<<16|h[v+15]<<24,h[v+8]|h[v+9]<<8|h[v+10]<<16|h[v+11]<<24],y=c(y,A),y=u(y,31),y=c(y,_),w=l(w,y),w=u(w,27),w=a(w,b),w=a(c(w,[0,5]),[0,1390208809]),x=c(x,_),x=u(x,33),x=c(x,A),b=l(b,x),b=u(b,31),b=a(b,w),b=a(c(b,[0,5]),[0,944331445]);switch(y=[0,0],x=[0,0],m){case 15:x=l(x,f([0,h[v+14]],48));case 14:x=l(x,f([0,h[v+13]],40));case 13:x=l(x,f([0,h[v+12]],32));case 12:x=l(x,f([0,h[v+11]],24));case 11:x=l(x,f([0,h[v+10]],16));case 10:x=l(x,f([0,h[v+9]],8));case 9:x=l(x,[0,h[v+8]]),x=c(x,_),x=u(x,33),x=c(x,A),b=l(b,x);case 8:y=l(y,f([0,h[v+7]],56));case 7:y=l(y,f([0,h[v+6]],48));case 6:y=l(y,f([0,h[v+5]],40));case 5:y=l(y,f([0,h[v+4]],32));case 4:y=l(y,f([0,h[v+3]],24));case 3:y=l(y,f([0,h[v+2]],16));case 2:y=l(y,f([0,h[v+1]],8));case 1:y=l(y,[0,h[v]]),y=c(y,A),y=u(y,31),y=c(y,_),w=l(w,y)}return w=l(w,[0,h.length]),b=l(b,[0,h.length]),w=a(w,b),b=a(b,w),w=d(w),b=d(b),w=a(w,b),b=a(b,w),("00000000"+(w[0]>>>0).toString(16)).slice(-8)+("00000000"+(w[1]>>>0).toString(16)).slice(-8)+("00000000"+(b[0]>>>0).toString(16)).slice(-8)+("00000000"+(b[1]>>>0).toString(16)).slice(-8)},typeof vs<"u"?(typeof Pi<"u"&&Pi.exports&&(vs=Pi.exports=t),vs.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(vs)});var pp=Qe((R8,dp)=>{dp.exports=hp()});var Mp=Qe(Is=>{(function(){var r,e,t,n,s,o,i,a;a=function(c){var u,f,l,d;return u=(c&255<<24)>>>24,f=(c&255<<16)>>>16,l=(c&65280)>>>8,d=c&255,[u,f,l,d].join(".")},i=function(c){var u,f,l,d,h,p;for(u=[],l=d=0;d<=3&&c.length!==0;l=++d){if(l>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),h=p[0],f=p[1],c=c.substring(f),u.push(h)}if(c.length!==0)throw new Error("Invalid IP");switch(u.length){case 1:if(u[0]>4294967295)throw new Error("Invalid IP");return u[0]>>>0;case 2:if(u[0]>255||u[1]>16777215)throw new Error("Invalid IP");return(u[0]<<24|u[1])>>>0;case 3:if(u[0]>255||u[1]>255||u[2]>65535)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2])>>>0;case 4:if(u[0]>255||u[1]>255||u[2]>255||u[3]>255)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2]<<8|u[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),o=t("a"),s=t("A"),e=function(c){var u,f,l,d,h;for(d=0,u=10,f="9",l=0,c.length>1&&c[l]==="0"&&(c[l+1]==="x"||c[l+1]==="X"?(l+=2,u=16):"0"<=c[l+1]&&c[l+1]<="9"&&(l++,u=8,f="7")),h=l;l<c.length;){if("0"<=c[l]&&c[l]<=f)d=d*u+(t(c[l])-n)>>>0;else if(u===16)if("a"<=c[l]&&c[l]<="f")d=d*u+(10+t(c[l])-o)>>>0;else if("A"<=c[l]&&c[l]<="F")d=d*u+(10+t(c[l])-s)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");l++}if(l===h)throw new Error("empty octet");return[d,l]},r=function(){function c(u,f){var l,d,h,p;if(typeof u!="string")throw new Error("Missing `net' parameter");if(f||(p=u.split("/",2),u=p[0],f=p[1]),f||(f=32),typeof f=="string"&&f.indexOf(".")>-1){try{this.maskLong=i(f)}catch(m){throw l=m,new Error("Invalid mask: "+f)}for(d=h=32;h>=0;d=--h)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(f||f===0)this.bitmask=parseInt(f,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(u)&this.maskLong)>>>0}catch(m){throw l=m,new Error("Invalid net address: "+u)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+f);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(u){return typeof u=="string"&&(u.indexOf("/")>0||u.split(".").length!==4)&&(u=new c(u)),u instanceof c?this.contains(u.base)&&this.contains(u.broadcast||u.last):(i(u)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(u){return u==null&&(u=1),new c(a(this.netLong+this.size*u),this.mask)},c.prototype.forEach=function(u){var f,l,d;for(d=i(this.first),l=i(this.last),f=0;d<=l;)u(a(d),d,f),f++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Is.ip2long=i,Is.long2ip=a,Is.Netmask=r}).call(Is)});var im=Qe((gB,om)=>{function Je(r,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}om.exports=Je;Je.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};Je.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};Je.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var e=new Date().getTime();if(r&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var n=this;return this._timer=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},t),this._options.unref&&this._timer.unref(),!0};Je.prototype.attempt=function(r,e){this._fn=r,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};Je.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};Je.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};Je.prototype.start=Je.prototype.try;Je.prototype.errors=function(){return this._errors};Je.prototype.attempts=function(){return this._attempts};Je.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},e=null,t=0,n=0;n<this._errors.length;n++){var s=this._errors[n],o=s.message,i=(r[o]||0)+1;r[o]=i,i>=t&&(e=s,t=i)}return e}});var am=Qe(Ur=>{var zb=im();Ur.operation=function(r){var e=Ur.timeouts(r);return new zb(e,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Ur.timeouts=function(r){if(r instanceof Array)return[].concat(r);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in r)e[t]=r[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],s=0;s<e.retries;s++)n.push(this.createTimeout(s,e));return r&&r.forever&&!n.length&&n.push(this.createTimeout(s,e)),n.sort(function(o,i){return o-i}),n};Ur.createTimeout=function(r,e){var t=e.randomize?Math.random()+1:1,n=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,r));return n=Math.min(n,e.maxTimeout),n};Ur.wrap=function(r,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var n in r)typeof r[n]=="function"&&t.push(n)}for(var s=0;s<t.length;s++){var o=t[s],i=r[o];r[o]=function(c){var u=Ur.operation(e),f=Array.prototype.slice.call(arguments,1),l=f.pop();f.push(function(d){u.retry(d)||(d&&(arguments[0]=u.mainError()),l.apply(this,arguments))}),u.attempt(function(){c.apply(r,f)})}.bind(r,i),r[o].options=e}}});var lm=Qe((wB,cm)=>{cm.exports=am()});var xx={};Re(xx,{createLibp2p:()=>bx});var ff=Symbol.for("@libp2p/connection");var Xa=Symbol.for("@libp2p/content-routing");var Ya=Symbol.for("@libp2p/peer-discovery");var qs=Symbol.for("@libp2p/peer-id");function $s(r){return!!r?.[qs]}var Ja=Symbol.for("@libp2p/peer-routing");var Qa="keep-alive";var Ix=Symbol.for("@libp2p/transport");var Ht;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Ht||(Ht={}));var et=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var R=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},Hr=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},Rn=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}};var zs=class extends Error{static name="ConnectionClosingError";constructor(e="The connection is closing"){super(e),this.name="ConnectionClosingError"}},Kr=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}};var Gs=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},qr=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},Kt=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},Ws=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},js=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},Mn=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},Zs=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var Xs=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},xt=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var $r=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}};var zr=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},Ys=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},Js=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},qt=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var se=(r,...e)=>{try{[...e]}catch{}};var vt=class extends EventTarget{#e=new Map;constructor(){super(),se(1/0,this)}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let s=this.#e.get(e);s!=null&&(s=s.filter(({callback:o})=>o!==t),this.#e.set(e,s))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:s})=>!s),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function Qs(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function hf(...r){let e=[];for(let t of r)Qs(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function df(...r){let e=[];for(let t of r)Qs(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var On=Symbol.for("@libp2p/service-capabilities"),ec=Symbol.for("@libp2p/service-dependencies");var oc={};Re(oc,{base58btc:()=>Y,base58flickr:()=>Hm});var s1=new Uint8Array(0);function pf(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Et(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function mf(r){return new TextEncoder().encode(r)}function gf(r){return new TextDecoder().decode(r)}function Mm(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var s=0;s<r.length;s++){var o=r.charAt(s),i=o.charCodeAt(0);if(t[i]!==255)throw new TypeError(o+" is ambiguous");t[i]=s}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function l(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var m=0,g=0,w=0,b=p.length;w!==b&&p[w]===0;)w++,m++;for(var y=(b-w)*f+1>>>0,x=new Uint8Array(y);w!==b;){for(var A=p[w],_=0,v=y-1;(A!==0||_<g)&&v!==-1;v--,_++)A+=256*x[v]>>>0,x[v]=A%a>>>0,A=A/a>>>0;if(A!==0)throw new Error("Non-zero carry");g=_,w++}for(var C=y-g;C!==y&&x[C]===0;)C++;for(var k=c.repeat(m);C<y;++C)k+=r.charAt(x[C]);return k}function d(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var g=0,w=0;p[m]===c;)g++,m++;for(var b=(p.length-m)*u+1>>>0,y=new Uint8Array(b);p[m];){var x=t[p.charCodeAt(m)];if(x===255)return;for(var A=0,_=b-1;(x!==0||A<w)&&_!==-1;_--,A++)x+=a*y[_]>>>0,y[_]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");w=A,m++}if(p[m]!==" "){for(var v=b-w;v!==b&&y[v]===0;)v++;for(var C=new Uint8Array(g+(b-v)),k=g;v!==b;)C[k++]=y[v++];return C}}}function h(p){var m=d(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:l,decodeUnsafe:d,decode:h}}var Om=Mm,Um=Om,wf=Um;var tc=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},rc=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let s=t.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return bf(this,e)}},nc=class{decoders;constructor(e){this.decoders=e}or(e){return bf(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function bf(r,e){return new nc({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var sc=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,s){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=s,this.encoder=new tc(e,t,n),this.decoder=new rc(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Gr({name:r,prefix:e,encode:t,decode:n}){return new sc(r,e,t,n)}function $t({name:r,prefix:e,alphabet:t}){let{encode:n,decode:s}=wf(t,r);return Gr({prefix:e,name:r,encode:n,decode:o=>Et(s(o))})}function Fm(r,e,t,n){let s={};for(let f=0;f<e.length;++f)s[e[f]]=f;let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*t/8|0),a=0,c=0,u=0;for(let f=0;f<o;++f){let l=s[r[f]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|l,a+=t,a>=8&&(a-=8,i[u++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function Vm(r,e,t){let n=e[e.length-1]==="=",s=(1<<t)-1,o="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,o+=e[s&a>>i];if(i!==0&&(o+=e[s&a<<t-i]),n)for(;o.length*t&7;)o+="=";return o}function le({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Gr({prefix:e,name:r,encode(s){return Vm(s,n,t)},decode(s){return Fm(s,n,t,r)}})}var Y=$t({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Hm=$t({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ic={};Re(ic,{base32:()=>We,base32hex:()=>zm,base32hexpad:()=>Wm,base32hexpadupper:()=>jm,base32hexupper:()=>Gm,base32pad:()=>qm,base32padupper:()=>$m,base32upper:()=>Km,base32z:()=>Zm});var We=le({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Km=le({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),qm=le({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),$m=le({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),zm=le({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Gm=le({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Wm=le({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),jm=le({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Zm=le({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ac={};Re(ac,{base36:()=>Un,base36upper:()=>Xm});var Un=$t({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Xm=$t({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Ym=Ef,xf=128,Jm=127,Qm=~Jm,eg=Math.pow(2,31);function Ef(r,e,t){e=e||[],t=t||0;for(var n=t;r>=eg;)e[t++]=r&255|xf,r/=128;for(;r&Qm;)e[t++]=r&255|xf,r>>>=7;return e[t]=r|0,Ef.bytes=t-n+1,e}var tg=cc,rg=128,vf=127;function cc(r,n){var t=0,n=n||0,s=0,o=n,i,a=r.length;do{if(o>=a)throw cc.bytes=0,new RangeError("Could not decode varint");i=r[o++],t+=s<28?(i&vf)<<s:(i&vf)*Math.pow(2,s),s+=7}while(i>=rg);return cc.bytes=o-n,t}var ng=Math.pow(2,7),sg=Math.pow(2,14),og=Math.pow(2,21),ig=Math.pow(2,28),ag=Math.pow(2,35),cg=Math.pow(2,42),lg=Math.pow(2,49),ug=Math.pow(2,56),fg=Math.pow(2,63),hg=function(r){return r<ng?1:r<sg?2:r<og?3:r<ig?4:r<ag?5:r<cg?6:r<lg?7:r<ug?8:r<fg?9:10},dg={encode:Ym,decode:tg,encodingLength:hg},pg=dg,Fn=pg;function Vn(r,e=0){return[Fn.decode(r,e),Fn.decode.bytes]}function Wr(r,e,t=0){return Fn.encode(r,e,t),e}function jr(r){return Fn.encodingLength(r)}function tt(r,e){let t=e.byteLength,n=jr(r),s=n+jr(t),o=new Uint8Array(s+t);return Wr(r,o,0),Wr(t,o,n),o.set(e,s),new Zr(r,t,e,o)}function rt(r){let e=Et(r),[t,n]=Vn(e),[s,o]=Vn(e.subarray(n)),i=e.subarray(n+o);if(i.byteLength!==s)throw new Error("Incorrect length");return new Zr(t,s,i,e)}function Af(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&pf(r.bytes,t.bytes)}}var Zr=class{code;size;digest;bytes;constructor(e,t,n,s){this.code=e,this.size=t,this.digest=n,this.bytes=s}};function Sf(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return gg(t,lc(r),e??Y.encoder);default:return yg(t,lc(r),e??We.encoder)}}var _f=new WeakMap;function lc(r){let e=_f.get(r);if(e==null){let t=new Map;return _f.set(r,t),t}return e}var me=class r{code;version;multihash;bytes;"/";constructor(e,t,n,s){this.code=t,this.version=e,this.multihash=n,this.bytes=s,this["/"]=s}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Hn)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==wg)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=tt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Af(e.multihash,n.multihash)}toString(e){return Sf(this,e)}toJSON(){return{"/":Sf(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:s,multihash:o,bytes:i}=t;return new r(n,s,o,i??Cf(n,s,o.bytes))}else if(t[bg]===!0){let{version:n,multihash:s,code:o}=t,i=rt(s);return r.create(n,o,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Hn)throw new Error(`Version 0 CID must use dag-pb (code: ${Hn}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let s=Cf(e,t,n.bytes);return new r(e,t,n,s)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Hn,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,s=Et(e.subarray(n,n+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let o=s.subarray(t.multihashSize-t.digestSize),i=new Zr(t.multihashCode,t.digestSize,o,s);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[l,d]=Vn(e.subarray(t));return t+=d,l},s=n(),o=Hn;if(s===18?(s=0,t=0):o=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let i=t,a=n(),c=n(),u=t+c,f=u-i;return{version:s,codec:o,multihashCode:a,digestSize:c,multihashSize:f,size:u}}static parse(e,t){let[n,s]=mg(e,t),o=r.decode(s);if(o.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return lc(o).set(n,e),o}};function mg(r,e){switch(r[0]){case"Q":{let t=e??Y;return[Y.prefix,t.decode(`${Y.prefix}${r}`)]}case Y.prefix:{let t=e??Y;return[Y.prefix,t.decode(r)]}case We.prefix:{let t=e??We;return[We.prefix,t.decode(r)]}case Un.prefix:{let t=e??Un;return[Un.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function gg(r,e,t){let{prefix:n}=t;if(n!==Y.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(n);if(s==null){let o=t.encode(r).slice(1);return e.set(n,o),o}else return s}function yg(r,e,t){let{prefix:n}=t,s=e.get(n);if(s==null){let o=t.encode(r);return e.set(n,o),o}else return s}var Hn=112,wg=18;function Cf(r,e,t){let n=jr(r),s=n+jr(e),o=new Uint8Array(s+t.byteLength);return Wr(r,o,0),Wr(e,o,n),o.set(t,s),o}var bg=Symbol.for("@ipld/js-cid/CID");var uc={};Re(uc,{identity:()=>St});var Bf=0,xg="identity",If=Et;function vg(r){return tt(Bf,If(r))}var St={code:Bf,name:xg,encode:If,digest:vg};function ue(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function kf(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Eg(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Xr(r,...e){if(!Eg(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Tf(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");kf(r.outputLen),kf(r.blockLen)}function Yr(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Lf(r,e){Xr(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}var ur=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var to=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),nt=(r,e)=>r<<32-e|r>>>e;function Pf(r){if(typeof r!="string")throw new Error("utf8ToBytes expected string, got "+typeof r);return new Uint8Array(new TextEncoder().encode(r))}function Kn(r){return typeof r=="string"&&(r=Pf(r)),Xr(r),r}function fc(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];Xr(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let o=r[n];t.set(o,s),s+=o.length}return t}var Jr=class{clone(){return this._cloneInto()}};function ro(r){let e=n=>r().update(Kn(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function Qr(r=32){if(ur&&typeof ur.getRandomValues=="function")return ur.getRandomValues(new Uint8Array(r));if(ur&&typeof ur.randomBytes=="function")return ur.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function Ag(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let s=BigInt(32),o=BigInt(4294967295),i=Number(t>>s&o),a=Number(t&o),c=n?4:0,u=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+u,a,n)}var Nf=(r,e,t)=>r&e^~r&t,Df=(r,e,t)=>r&e^r&t^e&t,en=class extends Jr{constructor(e,t,n,s){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=to(this.buffer)}update(e){Yr(this);let{view:t,buffer:n,blockLen:s}=this;e=Kn(e);let o=e.length;for(let i=0;i<o;){let a=Math.min(s-this.pos,o-i);if(a===s){let c=to(e);for(;s<=o-i;i+=s)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===s&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Yr(this),Lf(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:s,isLE:o}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>s-i&&(this.process(n,0),i=0);for(let l=i;l<s;l++)t[l]=0;Ag(n,s-8,BigInt(this.length*8),o),this.process(n,0);let a=to(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<u;l++)a.setUint32(4*l,f[l],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:s,finished:o,destroyed:i,pos:a}=this;return e.length=s,e.pos=a,e.finished=o,e.destroyed=i,s%t&&e.buffer.set(n),e}};var no=BigInt(4294967295),hc=BigInt(32);function Rf(r,e=!1){return e?{h:Number(r&no),l:Number(r>>hc&no)}:{h:Number(r>>hc&no)|0,l:Number(r&no)|0}}function Sg(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:o,l:i}=Rf(r[s],e);[t[s],n[s]]=[o,i]}return[t,n]}var _g=(r,e)=>BigInt(r>>>0)<<hc|BigInt(e>>>0),Cg=(r,e,t)=>r>>>t,Bg=(r,e,t)=>r<<32-t|e>>>t,Ig=(r,e,t)=>r>>>t|e<<32-t,kg=(r,e,t)=>r<<32-t|e>>>t,Tg=(r,e,t)=>r<<64-t|e>>>t-32,Lg=(r,e,t)=>r>>>t-32|e<<64-t,Pg=(r,e)=>e,Ng=(r,e)=>r,Dg=(r,e,t)=>r<<t|e>>>32-t,Rg=(r,e,t)=>e<<t|r>>>32-t,Mg=(r,e,t)=>e<<t-32|r>>>64-t,Og=(r,e,t)=>r<<t-32|e>>>64-t;function Ug(r,e,t,n){let s=(e>>>0)+(n>>>0);return{h:r+t+(s/2**32|0)|0,l:s|0}}var Fg=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),Vg=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,Hg=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),Kg=(r,e,t,n,s)=>e+t+n+s+(r/2**32|0)|0,qg=(r,e,t,n,s)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(s>>>0),$g=(r,e,t,n,s,o)=>e+t+n+s+o+(r/2**32|0)|0;var zg={fromBig:Rf,split:Sg,toBig:_g,shrSH:Cg,shrSL:Bg,rotrSH:Ig,rotrSL:kg,rotrBH:Tg,rotrBL:Lg,rotr32H:Pg,rotr32L:Ng,rotlSH:Dg,rotlSL:Rg,rotlBH:Mg,rotlBL:Og,add:Ug,add3L:Fg,add3H:Vg,add4L:Hg,add4H:Kg,add5H:$g,add5L:qg},F=zg;var[Gg,Wg]=F.split(["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(r=>BigInt(r))),zt=new Uint32Array(80),Gt=new Uint32Array(80),dc=class extends en{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:e,Al:t,Bh:n,Bl:s,Ch:o,Cl:i,Dh:a,Dl:c,Eh:u,El:f,Fh:l,Fl:d,Gh:h,Gl:p,Hh:m,Hl:g}=this;return[e,t,n,s,o,i,a,c,u,f,l,d,h,p,m,g]}set(e,t,n,s,o,i,a,c,u,f,l,d,h,p,m,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=s|0,this.Ch=o|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=u|0,this.El=f|0,this.Fh=l|0,this.Fl=d|0,this.Gh=h|0,this.Gl=p|0,this.Hh=m|0,this.Hl=g|0}process(e,t){for(let y=0;y<16;y++,t+=4)zt[y]=e.getUint32(t),Gt[y]=e.getUint32(t+=4);for(let y=16;y<80;y++){let x=zt[y-15]|0,A=Gt[y-15]|0,_=F.rotrSH(x,A,1)^F.rotrSH(x,A,8)^F.shrSH(x,A,7),v=F.rotrSL(x,A,1)^F.rotrSL(x,A,8)^F.shrSL(x,A,7),C=zt[y-2]|0,k=Gt[y-2]|0,Q=F.rotrSH(C,k,19)^F.rotrBH(C,k,61)^F.shrSH(C,k,6),H=F.rotrSL(C,k,19)^F.rotrBL(C,k,61)^F.shrSL(C,k,6),V=F.add4L(v,H,Gt[y-7],Gt[y-16]),D=F.add4H(V,_,Q,zt[y-7],zt[y-16]);zt[y]=D|0,Gt[y]=V|0}let{Ah:n,Al:s,Bh:o,Bl:i,Ch:a,Cl:c,Dh:u,Dl:f,Eh:l,El:d,Fh:h,Fl:p,Gh:m,Gl:g,Hh:w,Hl:b}=this;for(let y=0;y<80;y++){let x=F.rotrSH(l,d,14)^F.rotrSH(l,d,18)^F.rotrBH(l,d,41),A=F.rotrSL(l,d,14)^F.rotrSL(l,d,18)^F.rotrBL(l,d,41),_=l&h^~l&m,v=d&p^~d&g,C=F.add5L(b,A,v,Wg[y],Gt[y]),k=F.add5H(C,w,x,_,Gg[y],zt[y]),Q=C|0,H=F.rotrSH(n,s,28)^F.rotrBH(n,s,34)^F.rotrBH(n,s,39),V=F.rotrSL(n,s,28)^F.rotrBL(n,s,34)^F.rotrBL(n,s,39),D=n&o^n&a^o&a,I=s&i^s&c^i&c;w=m|0,b=g|0,m=h|0,g=p|0,h=l|0,p=d|0,{h:l,l:d}=F.add(u|0,f|0,k|0,Q|0),u=a|0,f=c|0,a=o|0,c=i|0,o=n|0,i=s|0;let P=F.add3L(Q,V,I);n=F.add3H(P,k,H,D),s=P|0}({h:n,l:s}=F.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:o,l:i}=F.add(this.Bh|0,this.Bl|0,o|0,i|0),{h:a,l:c}=F.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:u,l:f}=F.add(this.Dh|0,this.Dl|0,u|0,f|0),{h:l,l:d}=F.add(this.Eh|0,this.El|0,l|0,d|0),{h,l:p}=F.add(this.Fh|0,this.Fl|0,h|0,p|0),{h:m,l:g}=F.add(this.Gh|0,this.Gl|0,m|0,g|0),{h:w,l:b}=F.add(this.Hh|0,this.Hl|0,w|0,b|0),this.set(n,s,o,i,a,c,u,f,l,d,h,p,m,g,w,b)}roundClean(){zt.fill(0),Gt.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Mf=ro(()=>new dc);var io={};Re(io,{aInRange:()=>qe,abool:()=>st,abytes:()=>tn,bitGet:()=>Qg,bitLen:()=>yc,bitMask:()=>$n,bitSet:()=>e0,bytesToHex:()=>Ct,bytesToNumberBE:()=>Bt,bytesToNumberLE:()=>jt,concatBytes:()=>It,createHmacDrbg:()=>wc,ensureBytes:()=>ae,equalBytes:()=>Yg,hexToBytes:()=>hr,hexToNumber:()=>gc,inRange:()=>qn,isBytes:()=>Wt,memoized:()=>pr,notImplemented:()=>r0,numberToBytesBE:()=>Zt,numberToBytesLE:()=>dr,numberToHexUnpadded:()=>fr,numberToVarBytesBE:()=>Xg,utf8ToBytes:()=>Jg,validateObject:()=>ht});var so=BigInt(0),oo=BigInt(1),jg=BigInt(2);function Wt(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function tn(r){if(!Wt(r))throw new Error("Uint8Array expected")}function st(r,e){if(typeof e!="boolean")throw new Error(r+" boolean expected, got "+e)}var Zg=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Ct(r){tn(r);let e="";for(let t=0;t<r.length;t++)e+=Zg[r[t]];return e}function fr(r){let e=r.toString(16);return e.length&1?"0"+e:e}function gc(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?so:BigInt("0x"+r)}var _t={_0:48,_9:57,A:65,F:70,a:97,f:102};function Of(r){if(r>=_t._0&&r<=_t._9)return r-_t._0;if(r>=_t.A&&r<=_t.F)return r-(_t.A-10);if(r>=_t.a&&r<=_t.f)return r-(_t.a-10)}function hr(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let s=0,o=0;s<t;s++,o+=2){let i=Of(r.charCodeAt(o)),a=Of(r.charCodeAt(o+1));if(i===void 0||a===void 0){let c=r[o]+r[o+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+o)}n[s]=i*16+a}return n}function Bt(r){return gc(Ct(r))}function jt(r){return tn(r),gc(Ct(Uint8Array.from(r).reverse()))}function Zt(r,e){return hr(r.toString(16).padStart(e*2,"0"))}function dr(r,e){return Zt(r,e).reverse()}function Xg(r){return hr(fr(r))}function ae(r,e,t){let n;if(typeof e=="string")try{n=hr(e)}catch(o){throw new Error(r+" must be hex string or Uint8Array, cause: "+o)}else if(Wt(e))n=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let s=n.length;if(typeof t=="number"&&s!==t)throw new Error(r+" of length "+t+" expected, got "+s);return n}function It(...r){let e=0;for(let n=0;n<r.length;n++){let s=r[n];tn(s),e+=s.length}let t=new Uint8Array(e);for(let n=0,s=0;n<r.length;n++){let o=r[n];t.set(o,s),s+=o.length}return t}function Yg(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function Jg(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}var pc=r=>typeof r=="bigint"&&so<=r;function qn(r,e,t){return pc(r)&&pc(e)&&pc(t)&&e<=r&&r<t}function qe(r,e,t,n){if(!qn(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function yc(r){let e;for(e=0;r>so;r>>=oo,e+=1);return e}function Qg(r,e){return r>>BigInt(e)&oo}function e0(r,e,t){return r|(t?oo:so)<<BigInt(e)}var $n=r=>(jg<<BigInt(r-1))-oo,mc=r=>new Uint8Array(r),Uf=r=>Uint8Array.from(r);function wc(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=mc(r),s=mc(r),o=0,i=()=>{n.fill(1),s.fill(0),o=0},a=(...l)=>t(s,n,...l),c=(l=mc())=>{s=a(Uf([0]),l),n=a(),l.length!==0&&(s=a(Uf([1]),l),n=a())},u=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let l=0,d=[];for(;l<e;){n=a();let h=n.slice();d.push(h),l+=n.length}return It(...d)};return(l,d)=>{i(),c(l);let h;for(;!(h=d(u()));)c();return i(),h}}var t0={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||Wt(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function ht(r,e,t={}){let n=(s,o,i)=>{let a=t0[o];if(typeof a!="function")throw new Error("invalid validator function");let c=r[s];if(!(i&&c===void 0)&&!a(c,r))throw new Error("param "+String(s)+" is invalid. Expected "+o+", got "+c)};for(let[s,o]of Object.entries(e))n(s,o,!1);for(let[s,o]of Object.entries(t))n(s,o,!0);return r}var r0=()=>{throw new Error("not implemented")};function pr(r){let e=new WeakMap;return(t,...n)=>{let s=e.get(t);if(s!==void 0)return s;let o=r(t,...n);return e.set(t,o),o}}var ge=BigInt(0),oe=BigInt(1),mr=BigInt(2),n0=BigInt(3),bc=BigInt(4),Ff=BigInt(5),Vf=BigInt(8),s0=BigInt(9),o0=BigInt(16);function te(r,e){let t=r%e;return t>=ge?t:e+t}function i0(r,e,t){if(e<ge)throw new Error("invalid exponent, negatives unsupported");if(t<=ge)throw new Error("invalid modulus");if(t===oe)return ge;let n=oe;for(;e>ge;)e&oe&&(n=n*r%t),r=r*r%t,e>>=oe;return n}function ie(r,e,t){let n=r;for(;e-- >ge;)n*=n,n%=t;return n}function ao(r,e){if(r===ge)throw new Error("invert: expected non-zero number");if(e<=ge)throw new Error("invert: expected positive modulus, got "+e);let t=te(r,e),n=e,s=ge,o=oe,i=oe,a=ge;for(;t!==ge;){let u=n/t,f=n%t,l=s-i*u,d=o-a*u;n=t,t=f,s=i,o=a,i=l,a=d}if(n!==oe)throw new Error("invert: does not exist");return te(s,e)}function a0(r){let e=(r-oe)/mr,t,n,s;for(t=r-oe,n=0;t%mr===ge;t/=mr,n++);for(s=mr;s<r&&i0(s,e,r)!==r-oe;s++)if(s>1e3)throw new Error("Cannot find square root: likely non-prime P");if(n===1){let i=(r+oe)/bc;return function(c,u){let f=c.pow(u,i);if(!c.eql(c.sqr(f),u))throw new Error("Cannot find square root");return f}}let o=(t+oe)/mr;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let u=n,f=a.pow(a.mul(a.ONE,s),t),l=a.pow(c,o),d=a.pow(c,t);for(;!a.eql(d,a.ONE);){if(a.eql(d,a.ZERO))return a.ZERO;let h=1;for(let m=a.sqr(d);h<u&&!a.eql(m,a.ONE);h++)m=a.sqr(m);let p=a.pow(f,oe<<BigInt(u-h-1));f=a.sqr(p),l=a.mul(l,p),d=a.mul(d,f),u=h}return l}}function c0(r){if(r%bc===n0){let e=(r+oe)/bc;return function(n,s){let o=n.pow(s,e);if(!n.eql(n.sqr(o),s))throw new Error("Cannot find square root");return o}}if(r%Vf===Ff){let e=(r-Ff)/Vf;return function(n,s){let o=n.mul(s,mr),i=n.pow(o,e),a=n.mul(s,i),c=n.mul(n.mul(a,mr),i),u=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(u),s))throw new Error("Cannot find square root");return u}}return r%o0,a0(r)}var Hf=(r,e)=>(te(r,e)&oe)===oe,l0=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function xc(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=l0.reduce((n,s)=>(n[s]="function",n),e);return ht(r,t)}function u0(r,e,t){if(t<ge)throw new Error("invalid exponent, negatives unsupported");if(t===ge)return r.ONE;if(t===oe)return e;let n=r.ONE,s=e;for(;t>ge;)t&oe&&(n=r.mul(n,s)),s=r.sqr(s),t>>=oe;return n}function f0(r,e){let t=new Array(e.length),n=e.reduce((o,i,a)=>r.is0(i)?o:(t[a]=o,r.mul(o,i)),r.ONE),s=r.inv(n);return e.reduceRight((o,i,a)=>r.is0(i)?o:(t[a]=r.mul(o,t[a]),r.mul(o,i)),s),t}function vc(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function Xt(r,e,t=!1,n={}){if(r<=ge)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:s,nByteLength:o}=vc(r,e);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i,a=Object.freeze({ORDER:r,isLE:t,BITS:s,BYTES:o,MASK:$n(s),ZERO:ge,ONE:oe,create:c=>te(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return ge<=c&&c<r},is0:c=>c===ge,isOdd:c=>(c&oe)===oe,neg:c=>te(-c,r),eql:(c,u)=>c===u,sqr:c=>te(c*c,r),add:(c,u)=>te(c+u,r),sub:(c,u)=>te(c-u,r),mul:(c,u)=>te(c*u,r),pow:(c,u)=>u0(a,c,u),div:(c,u)=>te(c*ao(u,r),r),sqrN:c=>c*c,addN:(c,u)=>c+u,subN:(c,u)=>c-u,mulN:(c,u)=>c*u,inv:c=>ao(c,r),sqrt:n.sqrt||(c=>(i||(i=c0(r)),i(a,c))),invertBatch:c=>f0(a,c),cmov:(c,u,f)=>f?u:c,toBytes:c=>t?dr(c,o):Zt(c,o),fromBytes:c=>{if(c.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+c.length);return t?jt(c):Bt(c)}});return Object.freeze(a)}function Kf(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Ec(r){let e=Kf(r);return e+Math.ceil(e/2)}function qf(r,e,t=!1){let n=r.length,s=Kf(e),o=Ec(e);if(n<16||n<o||n>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+n);let i=t?jt(r):Bt(r),a=te(i,e-oe)+oe;return t?dr(a,s):Zt(a,s)}var $f=BigInt(0),co=BigInt(1);function Ac(r,e){let t=e.negate();return r?t:e}function zf(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Sc(r,e){zf(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1);return{windows:t,windowSize:n}}function d0(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,n)=>{if(!(t instanceof e))throw new Error("invalid point at index "+n)})}function p0(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,n)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+n)})}var _c=new WeakMap,Gf=new WeakMap;function Cc(r){return Gf.get(r)||1}function lo(r,e){return{constTimeNegate:Ac,hasPrecomputes(t){return Cc(t)!==1},unsafeLadder(t,n,s=r.ZERO){let o=t;for(;n>$f;)n&co&&(s=s.add(o)),o=o.double(),n>>=co;return s},precomputeWindow(t,n){let{windows:s,windowSize:o}=Sc(n,e),i=[],a=t,c=a;for(let u=0;u<s;u++){c=a,i.push(c);for(let f=1;f<o;f++)c=c.add(a),i.push(c);a=c.double()}return i},wNAF(t,n,s){let{windows:o,windowSize:i}=Sc(t,e),a=r.ZERO,c=r.BASE,u=BigInt(2**t-1),f=2**t,l=BigInt(t);for(let d=0;d<o;d++){let h=d*i,p=Number(s&u);s>>=l,p>i&&(p-=f,s+=co);let m=h,g=h+Math.abs(p)-1,w=d%2!==0,b=p<0;p===0?c=c.add(Ac(w,n[m])):a=a.add(Ac(b,n[g]))}return{p:a,f:c}},wNAFUnsafe(t,n,s,o=r.ZERO){let{windows:i,windowSize:a}=Sc(t,e),c=BigInt(2**t-1),u=2**t,f=BigInt(t);for(let l=0;l<i;l++){let d=l*a;if(s===$f)break;let h=Number(s&c);if(s>>=f,h>a&&(h-=u,s+=co),h===0)continue;let p=n[d+Math.abs(h)-1];h<0&&(p=p.negate()),o=o.add(p)}return o},getPrecomputes(t,n,s){let o=_c.get(n);return o||(o=this.precomputeWindow(n,t),t!==1&&_c.set(n,s(o))),o},wNAFCached(t,n,s){let o=Cc(t);return this.wNAF(o,this.getPrecomputes(o,t,s),n)},wNAFCachedUnsafe(t,n,s,o){let i=Cc(t);return i===1?this.unsafeLadder(t,n,o):this.wNAFUnsafe(i,this.getPrecomputes(i,t,s),n,o)},setWindowSize(t,n){zf(n,e),Gf.set(t,n),_c.delete(t)}}}function uo(r,e,t,n){if(d0(t,r),p0(n,e),t.length!==n.length)throw new Error("arrays of points and scalars must have equal length");let s=r.ZERO,o=yc(BigInt(t.length)),i=o>12?o-3:o>4?o-2:o?2:1,a=(1<<i)-1,c=new Array(a+1).fill(s),u=Math.floor((e.BITS-1)/i)*i,f=s;for(let l=u;l>=0;l-=i){c.fill(s);for(let h=0;h<n.length;h++){let p=n[h],m=Number(p>>BigInt(l)&BigInt(a));c[m]=c[m].add(t[h])}let d=s;for(let h=c.length-1,p=s;h>0;h--)p=p.add(c[h]),d=d.add(p);if(f=f.add(d),l!==0)for(let h=0;h<i;h++)f=f.double()}return f}function zn(r){return xc(r.Fp),ht(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...vc(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var ot=BigInt(0),$e=BigInt(1),fo=BigInt(2),m0=BigInt(8),g0={zip215:!0};function y0(r){let e=zn(r);return ht(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function Wf(r){let e=y0(r),{Fp:t,n,prehash:s,hash:o,randomBytes:i,nByteLength:a,h:c}=e,u=fo<<BigInt(a*8)-$e,f=t.create,l=Xt(e.n,e.nBitLength),d=e.uvRatio||((S,E)=>{try{return{isValid:!0,value:t.sqrt(S*t.inv(E))}}catch{return{isValid:!1,value:ot}}}),h=e.adjustScalarBytes||(S=>S),p=e.domain||((S,E,B)=>{if(st("phflag",B),E.length||B)throw new Error("Contexts/pre-hash are not supported");return S});function m(S,E){qe("coordinate "+S,E,ot,u)}function g(S){if(!(S instanceof y))throw new Error("ExtendedPoint expected")}let w=pr((S,E)=>{let{ex:B,ey:L,ez:M}=S,O=S.is0();E==null&&(E=O?m0:t.inv(M));let K=f(B*E),$=f(L*E),U=f(M*E);if(O)return{x:ot,y:$e};if(U!==$e)throw new Error("invZ was invalid");return{x:K,y:$}}),b=pr(S=>{let{a:E,d:B}=e;if(S.is0())throw new Error("bad point: ZERO");let{ex:L,ey:M,ez:O,et:K}=S,$=f(L*L),U=f(M*M),ee=f(O*O),ne=f(ee*ee),be=f($*E),xe=f(ee*f(be+U)),Ee=f(ne+f(B*f($*U)));if(xe!==Ee)throw new Error("bad point: equation left != right (1)");let Ce=f(L*M),Ke=f(O*K);if(Ce!==Ke)throw new Error("bad point: equation left != right (2)");return!0});class y{constructor(E,B,L,M){this.ex=E,this.ey=B,this.ez=L,this.et=M,m("x",E),m("y",B),m("z",L),m("t",M),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(E){if(E instanceof y)throw new Error("extended point not allowed");let{x:B,y:L}=E||{};return m("x",B),m("y",L),new y(B,L,$e,f(B*L))}static normalizeZ(E){let B=t.invertBatch(E.map(L=>L.ez));return E.map((L,M)=>L.toAffine(B[M])).map(y.fromAffine)}static msm(E,B){return uo(y,l,E,B)}_setWindowSize(E){_.setWindowSize(this,E)}assertValidity(){b(this)}equals(E){g(E);let{ex:B,ey:L,ez:M}=this,{ex:O,ey:K,ez:$}=E,U=f(B*$),ee=f(O*M),ne=f(L*$),be=f(K*M);return U===ee&&ne===be}is0(){return this.equals(y.ZERO)}negate(){return new y(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:E}=e,{ex:B,ey:L,ez:M}=this,O=f(B*B),K=f(L*L),$=f(fo*f(M*M)),U=f(E*O),ee=B+L,ne=f(f(ee*ee)-O-K),be=U+K,xe=be-$,Ee=U-K,Ce=f(ne*xe),Ke=f(be*Ee),De=f(ne*Ee),ft=f(xe*be);return new y(Ce,Ke,ft,De)}add(E){g(E);let{a:B,d:L}=e,{ex:M,ey:O,ez:K,et:$}=this,{ex:U,ey:ee,ez:ne,et:be}=E;if(B===BigInt(-1)){let rf=f((O-M)*(ee+U)),nf=f((O+M)*(ee-U)),Za=f(nf-rf);if(Za===ot)return this.double();let sf=f(K*fo*be),of=f($*fo*ne),af=of+sf,cf=nf+rf,lf=of-sf,Cm=f(af*Za),Bm=f(cf*lf),Im=f(af*lf),km=f(Za*cf);return new y(Cm,Bm,km,Im)}let xe=f(M*U),Ee=f(O*ee),Ce=f($*L*be),Ke=f(K*ne),De=f((M+O)*(U+ee)-xe-Ee),ft=Ke-Ce,bt=Ke+Ce,Dn=f(Ee-B*xe),Em=f(De*ft),Am=f(bt*Dn),Sm=f(De*Dn),_m=f(ft*bt);return new y(Em,Am,_m,Sm)}subtract(E){return this.add(E.negate())}wNAF(E){return _.wNAFCached(this,E,y.normalizeZ)}multiply(E){let B=E;qe("scalar",B,$e,n);let{p:L,f:M}=this.wNAF(B);return y.normalizeZ([L,M])[0]}multiplyUnsafe(E,B=y.ZERO){let L=E;return qe("scalar",L,ot,n),L===ot?A:this.is0()||L===$e?this:_.wNAFCachedUnsafe(this,L,y.normalizeZ,B)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(E){return w(this,E)}clearCofactor(){let{h:E}=e;return E===$e?this:this.multiplyUnsafe(E)}static fromHex(E,B=!1){let{d:L,a:M}=e,O=t.BYTES;E=ae("pointHex",E,O),st("zip215",B);let K=E.slice(),$=E[O-1];K[O-1]=$&-129;let U=jt(K),ee=B?u:t.ORDER;qe("pointHex.y",U,ot,ee);let ne=f(U*U),be=f(ne-$e),xe=f(L*ne-M),{isValid:Ee,value:Ce}=d(be,xe);if(!Ee)throw new Error("Point.fromHex: invalid y coordinate");let Ke=(Ce&$e)===$e,De=($&128)!==0;if(!B&&Ce===ot&&De)throw new Error("Point.fromHex: x=0 and x_0=1");return De!==Ke&&(Ce=f(-Ce)),y.fromAffine({x:Ce,y:U})}static fromPrivateKey(E){return k(E).point}toRawBytes(){let{x:E,y:B}=this.toAffine(),L=dr(B,t.BYTES);return L[L.length-1]|=E&$e?128:0,L}toHex(){return Ct(this.toRawBytes())}}y.BASE=new y(e.Gx,e.Gy,$e,f(e.Gx*e.Gy)),y.ZERO=new y(ot,$e,$e,ot);let{BASE:x,ZERO:A}=y,_=lo(y,a*8);function v(S){return te(S,n)}function C(S){return v(jt(S))}function k(S){let E=t.BYTES;S=ae("private key",S,E);let B=ae("hashed private key",o(S),2*E),L=h(B.slice(0,E)),M=B.slice(E,2*E),O=C(L),K=x.multiply(O),$=K.toRawBytes();return{head:L,prefix:M,scalar:O,point:K,pointBytes:$}}function Q(S){return k(S).pointBytes}function H(S=new Uint8Array,...E){let B=It(...E);return C(o(p(B,ae("context",S),!!s)))}function V(S,E,B={}){S=ae("message",S),s&&(S=s(S));let{prefix:L,scalar:M,pointBytes:O}=k(E),K=H(B.context,L,S),$=x.multiply(K).toRawBytes(),U=H(B.context,$,O,S),ee=v(K+U*M);qe("signature.s",ee,ot,n);let ne=It($,dr(ee,t.BYTES));return ae("result",ne,t.BYTES*2)}let D=g0;function I(S,E,B,L=D){let{context:M,zip215:O}=L,K=t.BYTES;S=ae("signature",S,2*K),E=ae("message",E),B=ae("publicKey",B,K),O!==void 0&&st("zip215",O),s&&(E=s(E));let $=jt(S.slice(K,2*K)),U,ee,ne;try{U=y.fromHex(B,O),ee=y.fromHex(S.slice(0,K),O),ne=x.multiplyUnsafe($)}catch{return!1}if(!O&&U.isSmallOrder())return!1;let be=H(M,ee.toRawBytes(),U.toRawBytes(),E);return ee.add(U.multiplyUnsafe(be)).subtract(ne).clearCofactor().equals(y.ZERO)}return x._setWindowSize(8),{CURVE:e,getPublicKey:Q,sign:V,verify:I,ExtendedPoint:y,utils:{getExtendedPublicKey:k,randomPrivateKey:()=>i(t.BYTES),precompute(S=8,E=y.BASE){return E._setWindowSize(S),E.multiply(BigInt(3)),E}}}}var Bc=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),jf=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Z1=BigInt(0),w0=BigInt(1),Zf=BigInt(2),X1=BigInt(3),b0=BigInt(5),x0=BigInt(8);function v0(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),s=BigInt(80),o=Bc,a=r*r%o*r%o,c=ie(a,Zf,o)*a%o,u=ie(c,w0,o)*r%o,f=ie(u,b0,o)*u%o,l=ie(f,e,o)*f%o,d=ie(l,t,o)*l%o,h=ie(d,n,o)*d%o,p=ie(h,s,o)*h%o,m=ie(p,s,o)*h%o,g=ie(m,e,o)*f%o;return{pow_p_5_8:ie(g,Zf,o)*r%o,b2:a}}function E0(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function A0(r,e){let t=Bc,n=te(e*e*e,t),s=te(n*n*e,t),o=v0(r*s).pow_p_5_8,i=te(r*n*o,t),a=te(e*i*i,t),c=i,u=te(i*jf,t),f=a===r,l=a===te(-r,t),d=a===te(-r*jf,t);return f&&(i=c),(l||d)&&(i=u),Hf(i,t)&&(i=te(-i,t)),{isValid:f||l,value:i}}var S0=Xt(Bc,void 0,!0),_0={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:S0,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:x0,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:Mf,randomBytes:Qr,adjustScalarBytes:E0,uvRatio:A0},Gn=Wf(_0);var ho=32,po=64,Ic=32;function Xf(){let r=Gn.utils.randomPrivateKey(),e=Gn.getPublicKey(r);return{privateKey:C0(r,e),publicKey:e}}function Yf(r,e){let t=r.subarray(0,Ic);return Gn.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Jf(r,e,t){return Gn.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function C0(r,e){let t=new Uint8Array(po);for(let n=0;n<Ic;n++)t[n]=r[n],t[Ic+n]=e[n];return t}var Wn=class{type="Ed25519";raw;constructor(e){this.raw=go(e,ho)}toMultihash(){return St.digest(dt(this))}toCID(){return me.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}verify(e,t){return Jf(this.raw,t,e)}},mo=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=go(e,po),this.publicKey=new Wn(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}sign(e){return Yf(this.raw,e)}};function kc(r){return r=go(r,ho),new Wn(r)}async function eh(){let{privateKey:r,publicKey:e}=Xf();return new mo(r,e)}function go(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new R(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}function fe(r=0){return new Uint8Array(r)}function Be(r=0){return new Uint8Array(r)}var B0=Math.pow(2,7),I0=Math.pow(2,14),k0=Math.pow(2,21),Tc=Math.pow(2,28),Lc=Math.pow(2,35),Pc=Math.pow(2,42),Nc=Math.pow(2,49),J=128,Ie=127;function pe(r){if(r<B0)return 1;if(r<I0)return 2;if(r<k0)return 3;if(r<Tc)return 4;if(r<Lc)return 5;if(r<Pc)return 6;if(r<Nc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Dc(r,e,t=0){switch(pe(r)){case 8:e[t++]=r&255|J,r/=128;case 7:e[t++]=r&255|J,r/=128;case 6:e[t++]=r&255|J,r/=128;case 5:e[t++]=r&255|J,r/=128;case 4:e[t++]=r&255|J,r>>>=7;case 3:e[t++]=r&255|J,r>>>=7;case 2:e[t++]=r&255|J,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function T0(r,e,t=0){switch(pe(r)){case 8:e.set(t++,r&255|J),r/=128;case 7:e.set(t++,r&255|J),r/=128;case 6:e.set(t++,r&255|J),r/=128;case 5:e.set(t++,r&255|J),r/=128;case 4:e.set(t++,r&255|J),r>>>=7;case 3:e.set(t++,r&255|J),r>>>=7;case 2:e.set(t++,r&255|J),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Rc(r,e){let t=r[e],n=0;if(n+=t&Ie,t<J||(t=r[e+1],n+=(t&Ie)<<7,t<J)||(t=r[e+2],n+=(t&Ie)<<14,t<J)||(t=r[e+3],n+=(t&Ie)<<21,t<J)||(t=r[e+4],n+=(t&Ie)*Tc,t<J)||(t=r[e+5],n+=(t&Ie)*Lc,t<J)||(t=r[e+6],n+=(t&Ie)*Pc,t<J)||(t=r[e+7],n+=(t&Ie)*Nc,t<J))return n;throw new RangeError("Could not decode varint")}function L0(r,e){let t=r.get(e),n=0;if(n+=t&Ie,t<J||(t=r.get(e+1),n+=(t&Ie)<<7,t<J)||(t=r.get(e+2),n+=(t&Ie)<<14,t<J)||(t=r.get(e+3),n+=(t&Ie)<<21,t<J)||(t=r.get(e+4),n+=(t&Ie)*Tc,t<J)||(t=r.get(e+5),n+=(t&Ie)*Lc,t<J)||(t=r.get(e+6),n+=(t&Ie)*Pc,t<J)||(t=r.get(e+7),n+=(t&Ie)*Nc,t<J))return n;throw new RangeError("Could not decode varint")}function ke(r,e,t=0){return e==null&&(e=Be(pe(r))),e instanceof Uint8Array?Dc(r,e,t):T0(r,e,t)}function it(r,e=0){return r instanceof Uint8Array?Rc(r,e):L0(r,e)}var Mc=new Float32Array([-0]),Yt=new Uint8Array(Mc.buffer);function th(r,e,t){Mc[0]=r,e[t]=Yt[0],e[t+1]=Yt[1],e[t+2]=Yt[2],e[t+3]=Yt[3]}function rh(r,e){return Yt[0]=r[e],Yt[1]=r[e+1],Yt[2]=r[e+2],Yt[3]=r[e+3],Mc[0]}var Oc=new Float64Array([-0]),Te=new Uint8Array(Oc.buffer);function nh(r,e,t){Oc[0]=r,e[t]=Te[0],e[t+1]=Te[1],e[t+2]=Te[2],e[t+3]=Te[3],e[t+4]=Te[4],e[t+5]=Te[5],e[t+6]=Te[6],e[t+7]=Te[7]}function sh(r,e){return Te[0]=r[e],Te[1]=r[e+1],Te[2]=r[e+2],Te[3]=r[e+3],Te[4]=r[e+4],Te[5]=r[e+5],Te[6]=r[e+6],Te[7]=r[e+7],Oc[0]}var P0=BigInt(Number.MAX_SAFE_INTEGER),N0=BigInt(Number.MIN_SAFE_INTEGER),je=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return yr;if(e<P0&&e>N0)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,s=e-(n<<32n);return t&&(n=~n|0n,s=~s|0n,++s>oh&&(s=0n,++n>oh&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(e){if(e===0)return yr;let t=e<0;t&&(e=-e);let n=e>>>0,s=(e-n)/4294967296>>>0;return t&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):yr}},yr=new je(0,0);yr.toBigInt=function(){return 0n};yr.zzEncode=yr.zzDecode=function(){return this};yr.length=function(){return 1};var oh=4294967296n;function ih(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function ah(r,e,t){if(t-e<1)return"";let s,o=[],i=0,a;for(;e<t;)a=r[e++],a<128?o[i++]=a:a>191&&a<224?o[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,o[i++]=55296+(a>>10),o[i++]=56320+(a&1023)):o[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((s??(s=[])).push(String.fromCharCode.apply(String,o)),i=0);return s!=null?(i>0&&s.push(String.fromCharCode.apply(String,o.slice(0,i))),s.join("")):String.fromCharCode.apply(String,o.slice(0,i))}function Uc(r,e,t){let n=t,s,o;for(let i=0;i<r.length;++i)s=r.charCodeAt(i),s<128?e[t++]=s:s<2048?(e[t++]=s>>6|192,e[t++]=s&63|128):(s&64512)===55296&&((o=r.charCodeAt(i+1))&64512)===56320?(s=65536+((s&1023)<<10)+(o&1023),++i,e[t++]=s>>18|240,e[t++]=s>>12&63|128,e[t++]=s>>6&63|128,e[t++]=s&63|128):(e[t++]=s>>12|224,e[t++]=s>>6&63|128,e[t++]=s&63|128);return t-n}function at(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function yo(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var Fc=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,at(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw at(this,4);return yo(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw at(this,4);return yo(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw at(this,4);let e=rh(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw at(this,4);let e=sh(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw at(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return ah(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw at(this,e);this.pos+=e}else do if(this.pos>=this.len)throw at(this);while(this.buf[this.pos++]&128);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new je(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw at(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw at(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw at(this,8);let e=yo(this.buf,this.pos+=4),t=yo(this.buf,this.pos+=4);return new je(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Rc(this.buf,this.pos);return this.pos+=pe(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Vc(r){return new Fc(r instanceof Uint8Array?r:r.subarray())}function Me(r,e,t){let n=Vc(r);return e.decode(n,void 0,t)}var Hc={};Re(Hc,{base10:()=>D0});var D0=$t({prefix:"9",name:"base10",alphabet:"0123456789"});var Kc={};Re(Kc,{base16:()=>R0,base16upper:()=>M0});var R0=le({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),M0=le({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var qc={};Re(qc,{base2:()=>O0});var O0=le({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var $c={};Re($c,{base256emoji:()=>K0});var lh=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),U0=lh.reduce((r,e,t)=>(r[t]=e,r),[]),F0=lh.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function V0(r){return r.reduce((e,t)=>(e+=U0[t],e),"")}function H0(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let s=F0[n];if(s==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}var K0=Gr({prefix:"\u{1F680}",name:"base256emoji",encode:V0,decode:H0});var Wc={};Re(Wc,{base64:()=>zc,base64pad:()=>q0,base64url:()=>Gc,base64urlpad:()=>$0});var zc=le({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),q0=le({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Gc=le({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),$0=le({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var jc={};Re(jc,{base8:()=>z0});var z0=le({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Zc={};Re(Zc,{identity:()=>G0});var G0=Gr({prefix:"\0",name:"identity",encode:r=>gf(r),decode:r=>mf(r)});var kv=new TextEncoder,Tv=new TextDecoder;var Jc={};Re(Jc,{sha256:()=>rn,sha512:()=>Z0});function Yc({name:r,code:e,encode:t}){return new Xc(r,e,t)}var Xc=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?tt(this.code,t):t.then(n=>tt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function fh(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var rn=Yc({name:"sha2-256",code:18,encode:fh("SHA-256")}),Z0=Yc({name:"sha2-512",code:19,encode:fh("SHA-512")});var jn={...Zc,...qc,...jc,...Hc,...Kc,...ic,...ac,...oc,...Wc,...$c},Kv={...Jc,...uc};function dh(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var hh=dh("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Qc=dh("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Be(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),X0={utf8:hh,"utf-8":hh,hex:jn.base16,latin1:Qc,ascii:Qc,binary:Qc,...jn},wo=X0;function N(r,e="utf8"){let t=wo[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function el(r){let e=r??8192,t=e>>>1,n,s=e;return function(i){if(i<1||i>t)return Be(i);s+i>e&&(n=Be(e),s=0);let a=n.subarray(s,s+=i);return s&7&&(s=(s|7)+1),a}}var wr=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function tl(){}var nl=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Y0=el();function J0(r){return globalThis.Buffer!=null?Be(r):Y0(r)}var Xn=class{len;head;tail;states;constructor(){this.len=0,this.head=new wr(tl,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new wr(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new sl((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(bo,10,je.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=je.fromBigInt(e);return this._push(bo,t.length(),t)}uint64Number(e){return this._push(Dc,pe(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=je.fromBigInt(e).zzEncode();return this._push(bo,t.length(),t)}sint64Number(e){let t=je.fromNumber(e).zzEncode();return this._push(bo,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(rl,1,e?1:0)}fixed32(e){return this._push(Zn,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=je.fromBigInt(e);return this._push(Zn,4,t.lo)._push(Zn,4,t.hi)}fixed64Number(e){let t=je.fromNumber(e);return this._push(Zn,4,t.lo)._push(Zn,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(th,4,e)}double(e){return this._push(nh,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(rl,1,0):this.uint32(t)._push(ey,t,e)}string(e){let t=ih(e);return t!==0?this.uint32(t)._push(Uc,t,e):this._push(rl,1,0)}fork(){return this.states=new nl(this),this.head=this.tail=new wr(tl,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new wr(tl,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=J0(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function rl(r,e,t){e[t]=r&255}function Q0(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var sl=class extends wr{next;constructor(e,t){super(Q0,e,t),this.next=void 0}};function bo(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function Zn(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function ey(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Xn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(ty,e,r),this},Xn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(ry,e,r),this});function ty(r,e,t){e.set(r,t)}function ry(r,e,t){r.length<40?Uc(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(N(r),t)}function ol(){return new Xn}function Oe(r,e){let t=ol();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var nn;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(nn||(nn={}));function xo(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function il(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(o,i){let a=e(o);i.int32(a)},n=function(o){let i=o.int32();return e(i)};return xo("enum",nn.VARINT,t,n)}function Ue(r,e){return xo("message",nn.LENGTH_DELIMITED,r,e)}var br=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Yn=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var ye;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(ye||(ye={}));var al;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(al||(al={}));(function(r){r.codec=()=>il(al)})(ye||(ye={}));var pt;(function(r){let e;r.codec=()=>(e==null&&(e=Ue((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ye.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=ye.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(pt||(pt={}));var cl;(function(r){let e;r.codec=()=>(e==null&&(e=Ue((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),ye.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=ye.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(cl||(cl={}));var cs={};Re(cs,{MAX_RSA_KEY_SIZE:()=>fi,generateRSAKeyPair:()=>bl,jwkToJWKKeyPair:()=>ud,jwkToPkcs1:()=>wy,jwkToPkix:()=>yl,jwkToRSAPrivateKey:()=>ld,pkcs1ToJwk:()=>id,pkcs1ToRSAPrivateKey:()=>cd,pkixToJwk:()=>ad,pkixToRSAPublicKey:()=>wl});var ny=new Uint32Array([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([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qt=new Uint32Array(64),ll=class extends en{constructor(){super(64,32,8,!1),this.A=Jt[0]|0,this.B=Jt[1]|0,this.C=Jt[2]|0,this.D=Jt[3]|0,this.E=Jt[4]|0,this.F=Jt[5]|0,this.G=Jt[6]|0,this.H=Jt[7]|0}get(){let{A:e,B:t,C:n,D:s,E:o,F:i,G:a,H:c}=this;return[e,t,n,s,o,i,a,c]}set(e,t,n,s,o,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=o|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let l=0;l<16;l++,t+=4)Qt[l]=e.getUint32(t,!1);for(let l=16;l<64;l++){let d=Qt[l-15],h=Qt[l-2],p=nt(d,7)^nt(d,18)^d>>>3,m=nt(h,17)^nt(h,19)^h>>>10;Qt[l]=m+Qt[l-7]+p+Qt[l-16]|0}let{A:n,B:s,C:o,D:i,E:a,F:c,G:u,H:f}=this;for(let l=0;l<64;l++){let d=nt(a,6)^nt(a,11)^nt(a,25),h=f+d+Nf(a,c,u)+ny[l]+Qt[l]|0,m=(nt(n,2)^nt(n,13)^nt(n,22))+Df(n,s,o)|0;f=u,u=c,c=a,a=i+h|0,i=o,o=s,s=n,n=h+m|0}n=n+this.A|0,s=s+this.B|0,o=o+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,f=f+this.H|0,this.set(n,s,o,i,a,c,u,f)}roundClean(){Qt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var sn=ro(()=>new ll);var q=lr(mh());function xr(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function er(r,e,t=-1){let n=t,s=r,o=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),o=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),o=n}let u=new Uint8Array(c);for(let f=a-1;f>=0;f--){let l=Math.pow(2,f*e);u[o-f-1]=Math.floor(s/l),s-=u[o-f-1]*l}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function Ao(...r){let e=0,t=0;for(let o of r)e+=o.length;let n=new ArrayBuffer(e),s=new Uint8Array(n);for(let o of r)s.set(o,t),t+=o.length;return s}function fl(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=xr(t,8),s=new ArrayBuffer(this.valueHex.byteLength),o=new Uint8Array(s);for(let a=0;a<this.valueHex.byteLength;a++)o[a]=r[a];return o[0]&=127,xr(o,8)-n}function gh(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=er(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let s=er(e,8,n),o=new Uint8Array(s);if(o[0]&128){let i=s.slice(0),a=new Uint8Array(i);s=new ArrayBuffer(s.byteLength+1),o=new Uint8Array(s);for(let c=0;c<i.byteLength;c++)o[c+1]=a[c];o[0]=0}return s}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function yh(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let s=0;s<t.length;s++)if(t[s]!==n[s])return!1;return!0}function ze(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,s=new Array(n);for(let i=0;i<n;i++)s[i]="0";return s.join("").concat(t)}var A2=Math.log(2);function So(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function hl(r){let e=0,t=0;for(let s=0;s<r.length;s++){let o=r[s];e+=o.byteLength}let n=new Uint8Array(e);for(let s=0;s<r.length;s++){let o=r[s];n.set(new Uint8Array(o),t),t+=o.byteLength}return n.buffer}function Nt(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Qn=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return hl(this.items)}},Jn=[new Uint8Array([1])],wh="0123456789";var un="",ct=new ArrayBuffer(0),dl=new Uint8Array(0),es="EndOfContent",xh="OCTET STRING",vh="BIT STRING";function Dt(r){var e;return e=class extends r{constructor(...n){var s;super(...n);let o=n[0]||{};this.isHexOnly=(s=o.isHexOnly)!==null&&s!==void 0?s:!1,this.valueHexView=o.valueHex?q.BufferSourceConverter.toUint8Array(o.valueHex):dl}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,s,o){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Nt(this,i,s,o))return-1;let a=s+o;return this.valueHexView=i.subarray(s,a),this.valueHexView.length?(this.blockLength=o,a):(this.warnings.push("Zero buffer length"),s)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",ct)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:q.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Tt=class{constructor({blockLength:e=0,error:t=un,warnings:n=[],valueBeforeDecode:s=dl}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=q.BufferSourceConverter.toUint8Array(s)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:q.Convert.ToHex(this.valueBeforeDecodeView)}}};Tt.NAME="baseBlock";var Le=class extends Tt{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};Le.NAME="valueBlock";var _o=class extends Dt(Tt){constructor({idBlock:e={}}={}){var t,n,s,o;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?q.BufferSourceConverter.toUint8Array(e.valueHex):dl,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(s=e.tagNumber)!==null&&s!==void 0?s:-1,this.isConstructed=(o=e.isConstructed)!==null&&o!==void 0?o:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",ct}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let s=new Uint8Array(1);if(!e){let o=this.tagNumber;o&=31,t|=o,s[0]=t}return s.buffer}if(!this.isHexOnly){let s=er(this.tagNumber,7),o=new Uint8Array(s),i=s.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=o[c]|128;a[i]=o[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let s=this.valueHexView;for(let o=0;o<s.length-1;o++)n[o+1]=s[o]|128;n[this.valueHexView.byteLength]=s[s.length-1]}return n.buffer}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);if(!Nt(this,s,t,n))return-1;let o=s.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;switch(o[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(o[0]&32)===32,this.isHexOnly=!1;let a=o[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,u=this.valueHexView=new Uint8Array(255),f=255;for(;o[c]&128;){if(u[c-1]=o[c]&127,c++,c>=o.length)return this.error="End of input reached before message was fully decoded",-1;if(c===f){f+=255;let d=new Uint8Array(f);for(let h=0;h<u.length;h++)d[h]=u[h];u=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,u[c-1]=o[c]&127;let l=new Uint8Array(c);for(let d=0;d<c;d++)l[d]=u[d];u=this.valueHexView=new Uint8Array(c),u.set(l),this.blockLength<=9?this.tagNumber=xr(u,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};_o.NAME="identificationBlock";var Co=class extends Tt{constructor({lenBlock:e={}}={}){var t,n,s;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(s=e.length)!==null&&s!==void 0?s:0}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);if(!Nt(this,s,t,n))return-1;let o=s.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;if(o[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=o[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(o[0]&128),this.longFormUsed===!1)return this.length=o[0],this.blockLength=1,t+this.blockLength;let i=o[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>o.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=s.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=xr(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let s=er(this.length,8);if(s.byteLength>127)return this.error="Too big length",ct;if(t=new ArrayBuffer(s.byteLength+1),e)return t;let o=new Uint8Array(s);n=new Uint8Array(t),n[0]=s.byteLength|128;for(let i=0;i<s.byteLength;i++)n[i+1]=o[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};Co.NAME="lengthBlock";var T={},Ae=class extends Tt{constructor({name:e=un,optional:t=!1,primitiveSchema:n,...s}={},o){super(s),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new _o(s),this.lenBlock=new Co(s),this.valueBlock=o?new o(s):new Le(s)}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){let n=t||new Qn;t||Eh(this);let s=this.idBlock.toBER(e);if(n.write(s),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let o=this.valueBlock.toBER(e);this.lenBlock.length=o.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(o)}return t?ct:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():q.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${q.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return yh(t,n)}};Ae.NAME="BaseBlock";function Eh(r){if(r instanceof T.Constructed)for(let e of r.valueBlock.value)Eh(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var Bo=class extends Ae{constructor({value:e=un,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}fromBER(e,t,n){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};Bo.NAME="BaseStringBlock";var Io=class extends Dt(Le){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};Io.NAME="PrimitiveValueBlock";var Ah,ko=class extends Ae{constructor(e={}){super(e,Io),this.idBlock.isConstructed=!1}};Ah=ko;T.Primitive=Ah;ko.NAME="PRIMITIVE";function hy(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function li(r,e=0,t=r.length){let n=e,s=new Ae({},Le),o=new Tt;if(!Nt(o,r,e,t))return s.error=o.error,{offset:-1,result:s};if(!r.subarray(e,e+t).length)return s.error="Zero buffer length",{offset:-1,result:s};let a=s.idBlock.fromBER(r,e,t);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),a===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(e=a,t-=s.idBlock.blockLength,a=s.lenBlock.fromBER(r,e,t),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),a===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};if(e=a,t-=s.lenBlock.blockLength,!s.idBlock.isConstructed&&s.lenBlock.isIndefiniteForm)return s.error="Indefinite length form used for primitive encoding form",{offset:-1,result:s};let c=Ae;switch(s.idBlock.tagClass){case 1:if(s.idBlock.tagNumber>=37&&s.idBlock.isHexOnly===!1)return s.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:s};switch(s.idBlock.tagNumber){case 0:if(s.idBlock.isConstructed&&s.lenBlock.length>0)return s.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:s};c=T.EndOfContent;break;case 1:c=T.Boolean;break;case 2:c=T.Integer;break;case 3:c=T.BitString;break;case 4:c=T.OctetString;break;case 5:c=T.Null;break;case 6:c=T.ObjectIdentifier;break;case 10:c=T.Enumerated;break;case 12:c=T.Utf8String;break;case 13:c=T.RelativeObjectIdentifier;break;case 14:c=T.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:c=T.Sequence;break;case 17:c=T.Set;break;case 18:c=T.NumericString;break;case 19:c=T.PrintableString;break;case 20:c=T.TeletexString;break;case 21:c=T.VideotexString;break;case 22:c=T.IA5String;break;case 23:c=T.UTCTime;break;case 24:c=T.GeneralizedTime;break;case 25:c=T.GraphicString;break;case 26:c=T.VisibleString;break;case 27:c=T.GeneralString;break;case 28:c=T.UniversalString;break;case 29:c=T.CharacterString;break;case 30:c=T.BmpString;break;case 31:c=T.DATE;break;case 32:c=T.TimeOfDay;break;case 33:c=T.DateTime;break;case 34:c=T.Duration;break;default:{let u=s.idBlock.isConstructed?new T.Constructed:new T.Primitive;u.idBlock=s.idBlock,u.lenBlock=s.lenBlock,u.warnings=s.warnings,s=u}}break;case 2:case 3:case 4:default:c=s.idBlock.isConstructed?T.Constructed:T.Primitive}return s=hy(s,c),a=s.fromBER(r,e,s.lenBlock.isIndefiniteForm?t:s.lenBlock.length),s.valueBeforeDecodeView=r.subarray(n,n+s.blockLength),{offset:a,result:s}}function pl(r){if(!r.byteLength){let e=new Ae({},Le);return e.error="Input buffer has zero length",{offset:-1,result:e}}return li(q.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function dy(r,e){return r?1:e}var mt=class extends Le{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);if(!Nt(this,s,t,n))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let o=t;for(;dy(this.isIndefiniteForm,n)>0;){let i=li(s,o,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(o=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===es)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===es?this.value.pop():this.warnings.push("No EndOfContent block encoded")),o}toBER(e,t){let n=t||new Qn;for(let s=0;s<this.value.length;s++)this.value[s].toBER(e,n);return t?ct:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};mt.NAME="ConstructedValueBlock";var Sh,tr=class extends Ae{constructor(e={}){super(e,mt),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
3
3
|
`).map(s=>` ${s}`).join(`
|
|
4
4
|
`));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
|
|
5
5
|
${e.join(`
|
|
6
|
-
`)}`:`${t} :`}};Fh=rr;T.Constructed=Fh;rr.NAME="CONSTRUCTED";var Uo=class extends Le{fromBER(e,t,n){return t}toBER(e){return lt}};Uo.override="EndOfContentValueBlock";var Vh,Oo=class extends Ae{constructor(e={}){super(e,Uo),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};Vh=Oo;T.EndOfContent=Vh;Oo.NAME=rs;var Hh,ln=class extends Ae{constructor(e={}){super(e,Le),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Hh=ln;T.Null=Hh;ln.NAME="NULL";var Fo=class extends Rt(Le){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=q.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);return Dt(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,vl.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};Fo.NAME="BooleanValueBlock";var Kh,Vo=class extends Ae{constructor(e={}){super(e,Fo),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Kh=Vo;T.Boolean=Kh;Vo.NAME="BOOLEAN";var Ho=class extends Rt(gt){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=gt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let o=0;o<this.value.length;o++){let i=this.value[o].constructor.NAME;if(i===rs){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Rh)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?gt.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Ho.NAME="OctetStringValueBlock";var qh,Ko=class r extends Ae{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,o;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((o=n.value)===null||o===void 0)&&o.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Ho),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let o=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(o.byteLength){let i=gi(o,0,o.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?rr.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${q.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return q.BufferSourceConverter.concat(e)}};qh=Ko;T.OctetString=qh;Ko.NAME=Rh;var qo=class extends Rt(gt){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=gt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===rs){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==Mh)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let u=a.valueBlock;if(this.unusedBits>0&&u.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=u.unusedBits}return s}let o=q.BufferSourceConverter.toUint8Array(e);if(!Dt(this,o,t,n))return-1;let i=o.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=gi(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return gt.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return lt;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};qo.NAME="BitStringValueBlock";var $h,un=class extends Ae{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,o;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((o=n.value)===null||o===void 0)&&o.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},qo),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return rr.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};$h=un;T.BitString=$h;un.NAME=Mh;var zh;function Py(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,u=0,f=c<i?i:c,l=0;for(let d=f;d>=0;d--,l++){switch(!0){case l<a.length:u=o[i-l]+a[c-l]+t[0];break;default:u=o[i-l]+t[0]}switch(t[0]=u/10,!0){case l>=o.length:o=To(new Uint8Array([u%10]),o);break;default:o[i-l]=u%10}}return t[0]>0&&(o=To(t,o)),o}function Dh(r){if(r>=es.length)for(let e=es.length;e<=r;e++){let t=new Uint8Array([0]),n=es[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let o=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=o[0]/10,n[s]=o[0]%10}t[0]>0&&(n=To(t,n)),es.push(n)}return es[r]}function Dy(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,u,f=0;for(let l=c;l>=0;l--,f++)switch(u=o[i-f]-a[c-f]-t,!0){case u<0:t=1,o[i-f]=u+10;break;default:t=0,o[i-f]=u}if(t>0)for(let l=i-c+1;l>=0;l--,f++)if(u=o[i-f]-t,u<0)t=1,o[i-f]=u+10;else{t=0,o[i-f]=u;break}return o.slice()}var ns=class extends Rt(Le){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=vl.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Lh(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let o=this.fromBER(e,t,n);if(o===-1)return o;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):s!==0&&i.length<s&&(s-i.length>1&&(s=i.length+1),this.valueHexView=i.subarray(s-i.length)),o}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,o=this.valueHexView,i="",a=!1;for(let c=o.byteLength-1;c>=0;c--){s=o[c];for(let u=0;u<8;u++){if((s&1)===1)switch(n){case e:t=Dy(Dh(n),t),i="-";break;default:t=Py(t,Dh(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=Ph.charAt(t[c]));return a===!1&&(i+=Ph.charAt(0)),i}};zh=ns;ns.NAME="IntegerValueBlock";Object.defineProperty(zh.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var Gh,Se=class r extends Ae{constructor(e={}){super(e,ns),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Lo(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Lo();let t=BigInt(e),n=new ts,s=t.toString(16).replace(/^-/,""),o=new Uint8Array(q.Convert.FromHex(s));if(t<0){let a=new Uint8Array(o.length+(o[0]&128?1:0));a[0]|=128;let u=BigInt(`0x${q.Convert.ToHex(a)}`)+t,f=q.BufferSourceConverter.toUint8Array(q.Convert.FromHex(u.toString(16)));f[0]|=128,n.write(f)}else o[0]&128&&n.write(new Uint8Array([0])),n.write(o);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};Gh=Se;T.Integer=Gh;Se.NAME="INTEGER";var Wh,$o=class extends Se{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Wh=$o;T.Enumerated=Wh;$o.NAME="ENUMERATED";var ss=class extends Rt(Le){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=q.BufferSourceConverter.toUint8Array(e);if(!Dt(this,s,t,n))return-1;let o=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=o[a]&127,this.blockLength++,!!(o[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,o[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=Sr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Lo();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,o=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)o[i]=s[i]|128;return o[this.blockLength-1]=s[this.blockLength-1],o.buffer}let t=tr(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",lt;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),o=t.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n}toString(){let e="";if(this.isHexOnly)e=q.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};ss.NAME="sidBlock";var zo=class extends Le{constructor({value:e=hn,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let o=new ss;if(s=o.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=o.error,s;this.value.length===0&&(o.isFirstSid=!0),this.blockLength+=o.blockLength,n-=o.blockLength,this.value.push(o)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,lt;t.push(s)}return El(t)}fromString(e){this.value=[];let t=0,n=0,s="",o=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,o){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;i.valueDec=c+a,o=!1}else{let i=new ss;if(s>Number.MAX_SAFE_INTEGER){Lo();let a=BigInt(s);i.valueBigInt=a}else if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,o=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};zo.NAME="ObjectIdentifierValueBlock";var jh,fn=class extends Ae{constructor(e={}){super(e,zo),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};jh=fn;T.ObjectIdentifier=jh;fn.NAME="OBJECT IDENTIFIER";var os=class extends Rt(Lt){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=q.BufferSourceConverter.toUint8Array(e);if(!Dt(this,s,t,n))return-1;let o=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=o[a]&127,this.blockLength++,!!(o[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,o[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=Sr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,o=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)o[i]=s[i]|128;return o[this.blockLength-1]=s[this.blockLength-1],o.buffer}let t=tr(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",lt;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),o=t.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n.buffer}toString(){let e="";return this.isHexOnly?e=q.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};os.NAME="relativeSidBlock";var Go=class extends Le{constructor({value:e=hn,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let o=new os;if(s=o.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=o.error,s;this.blockLength+=o.blockLength,n-=o.blockLength,this.value.push(o)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let o=this.value[s].toBER(e);if(o.byteLength===0)return this.error=this.value[s].error,lt;n.push(o)}return El(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let o=new os;if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return!0;this.value.push(o)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Go.NAME="RelativeObjectIdentifierValueBlock";var Zh,Wo=class extends Ae{constructor(e={}){super(e,Go),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Zh=Wo;T.RelativeObjectIdentifier=Zh;Wo.NAME="RelativeObjectIdentifier";var Xh,Nt=class extends rr{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};Xh=Nt;T.Sequence=Xh;Nt.NAME="SEQUENCE";var Yh,jo=class extends rr{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};Yh=jo;T.Set=Yh;jo.NAME="SET";var Zo=class extends Rt(Le){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=hn}toJSON(){return{...super.toJSON(),value:this.value}}};Zo.NAME="StringValueBlock";var Xo=class extends Zo{};Xo.NAME="SimpleStringValueBlock";var Fe=class extends Do{constructor({...e}={}){super(e,Xo)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,q.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};Fe.NAME="SIMPLE STRING";var Yo=class extends Fe{fromBuffer(e){this.valueBlock.valueHexView=q.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=q.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=q.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(q.Convert.FromUtf8String(e)),this.valueBlock.value=e}};Yo.NAME="Utf8StringValueBlock";var Jh,Pt=class extends Yo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};Jh=Pt;T.Utf8String=Jh;Pt.NAME="UTF8String";var Jo=class extends Fe{fromBuffer(e){this.valueBlock.value=q.Convert.ToUtf16String(e),this.valueBlock.valueHexView=q.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(q.Convert.FromUtf16String(e))}};Jo.NAME="BmpStringValueBlock";var Qh,Qo=class extends Jo{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};Qh=Qo;T.BmpString=Qh;Qo.NAME="BMPString";var ei=class extends Fe{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let o=tr(e.charCodeAt(s),8),i=new Uint8Array(o);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[s*4+c+a]=i[c]}this.valueBlock.value=e}};ei.NAME="UniversalStringValueBlock";var ed,ti=class extends ei{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};ed=ti;T.UniversalString=ed;ti.NAME="UniversalString";var td,ri=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};td=ri;T.NumericString=td;ri.NAME="NumericString";var rd,ni=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};rd=ni;T.PrintableString=rd;ni.NAME="PrintableString";var nd,si=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};nd=si;T.TeletexString=nd;si.NAME="TeletexString";var sd,oi=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};sd=oi;T.VideotexString=sd;oi.NAME="VideotexString";var od,ii=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};od=ii;T.IA5String=od;ii.NAME="IA5String";var id,ai=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};id=ai;T.GraphicString=id;ai.NAME="GraphicString";var ad,is=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};ad=is;T.VisibleString=ad;is.NAME="VisibleString";var cd,ci=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};cd=ci;T.GeneralString=cd;ci.NAME="GeneralString";var ld,li=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};ld=li;T.CharacterString=ld;li.NAME="CharacterString";var ud,as=class extends is{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,q.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=ze(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=ze(this.month,2),t[2]=ze(this.day,2),t[3]=ze(this.hour,2),t[4]=ze(this.minute,2),t[5]=ze(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};ud=as;T.UTCTime=ud;as.NAME="UTCTime";var fd,ui=class extends as{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",o=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let l=new Number(e[e.length-1]);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let l=1,d=n.indexOf("+"),h="";if(d===-1&&(d=n.indexOf("-"),l=-1),d!==-1){if(h=n.substring(d+1),n=n.substring(0,d),h.length!==2&&h.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(h.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=l*p,h.length===4){if(p=parseInt(h.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=l*p}}}let u=n.indexOf(".");if(u===-1&&(u=n.indexOf(",")),u!==-1){let l=new Number(`0${n.substring(u)}`);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");o=l.valueOf(),s=n.substring(0,u)}else s=n;switch(!0){case s.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,u!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=60*o;this.minute=Math.floor(l),l=60*(l-this.minute),this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case s.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=60*o;this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case s.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=1e3*o;this.millisecond=Math.floor(l)}break;default:throw new Error("Wrong input string for conversion")}let f=i.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let l=1;l<f.length;l++)switch(l){case 1:this.year=parseInt(f[l],10);break;case 2:this.month=parseInt(f[l],10);break;case 3:this.day=parseInt(f[l],10);break;case 4:this.hour=parseInt(f[l],10)+a;break;case 5:this.minute=parseInt(f[l],10)+c;break;case 6:this.second=parseInt(f[l],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let l=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=l.getUTCFullYear(),this.month=l.getUTCMonth(),this.day=l.getUTCDay(),this.hour=l.getUTCHours(),this.minute=l.getUTCMinutes(),this.second=l.getUTCSeconds(),this.millisecond=l.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(ze(this.year,4)),t.push(ze(this.month,2)),t.push(ze(this.day,2)),t.push(ze(this.hour,2)),t.push(ze(this.minute,2)),t.push(ze(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(ze(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};fd=ui;T.GeneralizedTime=fd;ui.NAME="GeneralizedTime";var hd,fi=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};hd=fi;T.DATE=hd;fi.NAME="DATE";var dd,hi=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};dd=hi;T.TimeOfDay=dd;hi.NAME="TimeOfDay";var pd,di=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};pd=di;T.DateTime=pd;di.NAME="DateTime";var md,pi=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};md=pi;T.Duration=md;pi.NAME="Duration";var gd,mi=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};gd=mi;T.TIME=gd;mi.NAME="TIME";function te(r,e="utf8"){let t=vo[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function dn(r){if(isNaN(r)||r<=0)throw new R("random bytes length must be a Number bigger than 0");return Ch(r)}var cs=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},ls=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},yi=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var yd={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new yi("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var nr=yd;async function wd(r){let e=await nr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await My(e);return{privateKey:t[0],publicKey:t[1]}}async function bd(r,e){let t=await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await nr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function xd(r,e,t){let n=await nr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return nr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function My(r){if(r.privateKey==null||r.publicKey==null)throw new R("Private and public key are required");return Promise.all([nr.get().subtle.exportKey("jwk",r.privateKey),nr.get().subtle.exportKey("jwk",r.publicKey)])}function _l(r){if(r.kty!=="RSA")throw new R("invalid key type");if(r.n==null)throw new R("invalid key modulus");return P(r.n,"base64url").length*8}var pn=class{type="RSA";_key;_raw;_multihash;constructor(e,t){this._key=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=us.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return me.createV1(114,this._multihash)}toString(){return X.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}verify(e,t){return xd(this._key,t,e)}},fs=class{type="RSA";_key;_raw;publicKey;constructor(e,t){this._key=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=us.jwkToPkcs1(this._key)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}sign(e){return bd(this._key,e)}};var wi=8192,Bl=18;function vd(r){let{result:e}=Sl(r),t=e.valueBlock.value;return{n:yt(t[1]),e:yt(t[2]),d:yt(t[3]),p:yt(t[4]),q:yt(t[5]),dp:yt(t[6]),dq:yt(t[7]),qi:yt(t[8]),kty:"RSA",alg:"RS256"}}function Uy(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new R("JWK was missing components");let t=new Nt({value:[new Se({value:0}),Se.fromBigInt(wt(P(r.n,"base64url"))),Se.fromBigInt(wt(P(r.e,"base64url"))),Se.fromBigInt(wt(P(r.d,"base64url"))),Se.fromBigInt(wt(P(r.p,"base64url"))),Se.fromBigInt(wt(P(r.q,"base64url"))),Se.fromBigInt(wt(P(r.dp,"base64url"))),Se.fromBigInt(wt(P(r.dq,"base64url"))),Se.fromBigInt(wt(P(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function Ed(r){let{result:e}=Sl(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:yt(t[0]),e:yt(t[1])}}function Cl(r){if(r.n==null||r.e==null)throw new R("JWK was missing components");let t=new Nt({value:[new Nt({value:[new fn({value:"1.2.840.113549.1.1.1"}),new ln]}),new un({valueHex:new Nt({value:[Se.fromBigInt(wt(P(r.n,"base64url"))),Se.fromBigInt(wt(P(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function yt(r){let e=r.valueBlock.valueHexView;for(;e[0]===0;)e=e.subarray(1);return te(e,"base64url")}function wt(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}function Ad(r){let e=vd(r);return Sd(e)}function Il(r){let e=Ed(r);if(_l(e)>wi)throw new zr("Key size is too large");let t=Co(mt.encode({Type:ye.RSA,Data:r})),n=tt(Bl,t);return new pn(e,n)}function Sd(r){if(_l(r)>wi)throw new R("Key size is too large");let e=_d(r),t=Co(mt.encode({Type:ye.RSA,Data:Cl(e.publicKey)})),n=tt(Bl,t);return new fs(e.privateKey,new pn(e.publicKey,n))}async function kl(r){if(r>wi)throw new R("Key size is too large");let e=await wd(r),t=Co(mt.encode({Type:ye.RSA,Data:Cl(e.publicKey)})),n=tt(Bl,t);return new fs(e.privateKey,new pn(e.publicKey,n))}function _d(r){if(r==null)throw new R("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var Oy=new Uint32Array([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]),sr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),or=new Uint32Array(64),Tl=class extends nn{constructor(){super(64,32,8,!1),this.A=sr[0]|0,this.B=sr[1]|0,this.C=sr[2]|0,this.D=sr[3]|0,this.E=sr[4]|0,this.F=sr[5]|0,this.G=sr[6]|0,this.H=sr[7]|0}get(){let{A:e,B:t,C:n,D:s,E:o,F:i,G:a,H:c}=this;return[e,t,n,s,o,i,a,c]}set(e,t,n,s,o,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=o|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let l=0;l<16;l++,t+=4)or[l]=e.getUint32(t,!1);for(let l=16;l<64;l++){let d=or[l-15],h=or[l-2],p=nt(d,7)^nt(d,18)^d>>>3,m=nt(h,17)^nt(h,19)^h>>>10;or[l]=m+or[l-7]+p+or[l-16]|0}let{A:n,B:s,C:o,D:i,E:a,F:c,G:u,H:f}=this;for(let l=0;l<64;l++){let d=nt(a,6)^nt(a,11)^nt(a,25),h=f+d+qf(a,c,u)+Oy[l]+or[l]|0,m=(nt(n,2)^nt(n,13)^nt(n,22))+$f(n,s,o)|0;f=u,u=c,c=a,a=i+h|0,i=o,o=s,s=n,n=h+m|0}n=n+this.A|0,s=s+this.B|0,o=o+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,f=f+this.H|0,this.set(n,s,o,i,a,c,u,f)}roundClean(){or.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Bd=so(()=>new Tl);var bi=class extends rn{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Vf(e);let n=$n(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let s=this.blockLen,o=new Uint8Array(s);o.set(n.length>s?e.create().update(n).digest():n);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=e.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),o.fill(0)}update(e){return tn(this),this.iHash.update(e),this}digestInto(e){tn(this),en(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:s,destroyed:o,blockLen:i,outputLen:a}=this;return e=e,e.finished=s,e.destroyed=o,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Ll=(r,e,t)=>new bi(r,e).update(t).digest();Ll.create=(r,e)=>new bi(r,e);function Cd(r){r.lowS!==void 0&&st("lowS",r.lowS),r.prehash!==void 0&&st("prehash",r.prehash)}function Fy(r){let e=Wn(r);dt(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:Vy,hexToBytes:Hy}=lo,Mt={Err:class extends Error{constructor(e=""){super(e)}},_tlv:{encode:(r,e)=>{let{Err:t}=Mt;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,s=pr(n);if(s.length/2&128)throw new t("tlv.encode: long form length too big");let o=n>127?pr(s.length/2|128):"";return pr(r)+o+s+e},decode(r,e){let{Err:t}=Mt,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let s=e[n++],o=!!(s&128),i=0;if(!o)i=s;else{let c=s&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let u=e.subarray(n,n+c);if(u.length!==c)throw new t("tlv.decode: length bytes not complete");if(u[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let f of u)i=i<<8|f;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=Mt;if(r<Ut)throw new e("integer: negative integers are not allowed");let t=pr(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Mt;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Vy(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Mt,s=typeof r=="string"?Hy(r):r;sn(s);let{v:o,l:i}=n.decode(48,s);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,o),{v:u,l:f}=n.decode(2,c);if(f.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(u)}},hexFromSig(r){let{_tlv:e,_int:t}=Mt,n=e.encode(2,t.encode(r.r)),s=e.encode(2,t.encode(r.s)),o=n+s;return e.encode(48,o)}},Ut=BigInt(0),ve=BigInt(1),RE=BigInt(2),Id=BigInt(3),ME=BigInt(4);function Ky(r){let e=Fy(r),{Fp:t}=e,n=Yt(e.n,e.nBitLength),s=e.toBytes||((m,g,w)=>{let b=g.toAffine();return kt(Uint8Array.from([4]),t.toBytes(b.x),t.toBytes(b.y))}),o=e.fromBytes||(m=>{let g=m.subarray(1),w=t.fromBytes(g.subarray(0,t.BYTES)),b=t.fromBytes(g.subarray(t.BYTES,2*t.BYTES));return{x:w,y:b}});function i(m){let{a:g,b:w}=e,b=t.sqr(m),y=t.mul(b,m);return t.add(t.add(y,t.mul(m,g)),w)}if(!t.eql(t.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function a(m){return zn(m,ve,e.n)}function c(m){let{allowedPrivateKeyLengths:g,nByteLength:w,wrapPrivateKey:b,n:y}=e;if(g&&typeof m!="bigint"){if(jt(m)&&(m=Ct(m)),typeof m!="string"||!g.includes(m.length))throw new Error("invalid private key");m=m.padStart(w*2,"0")}let x;try{x=typeof m=="bigint"?m:It(ae("private key",m,w))}catch{throw new Error("invalid private key, expected hex or "+w+" bytes, got "+typeof m)}return b&&(x=ee(x,y)),qe("private key",x,ve,y),x}function u(m){if(!(m instanceof d))throw new Error("ProjectivePoint expected")}let f=yr((m,g)=>{let{px:w,py:b,pz:y}=m;if(t.eql(y,t.ONE))return{x:w,y:b};let x=m.is0();g==null&&(g=x?t.ONE:t.inv(y));let A=t.mul(w,g),_=t.mul(b,g),v=t.mul(y,g);if(x)return{x:t.ZERO,y:t.ZERO};if(!t.eql(v,t.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}),l=yr(m=>{if(m.is0()){if(e.allowInfinityPoint&&!t.is0(m.py))return;throw new Error("bad point: ZERO")}let{x:g,y:w}=m.toAffine();if(!t.isValid(g)||!t.isValid(w))throw new Error("bad point: x or y not FE");let b=t.sqr(w),y=i(g);if(!t.eql(b,y))throw new Error("bad point: equation left != right");if(!m.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class d{constructor(g,w,b){if(this.px=g,this.py=w,this.pz=b,g==null||!t.isValid(g))throw new Error("x required");if(w==null||!t.isValid(w))throw new Error("y required");if(b==null||!t.isValid(b))throw new Error("z required");Object.freeze(this)}static fromAffine(g){let{x:w,y:b}=g||{};if(!g||!t.isValid(w)||!t.isValid(b))throw new Error("invalid affine point");if(g instanceof d)throw new Error("projective point not allowed");let y=x=>t.eql(x,t.ZERO);return y(w)&&y(b)?d.ZERO:new d(w,b,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(g){let w=t.invertBatch(g.map(b=>b.pz));return g.map((b,y)=>b.toAffine(w[y])).map(d.fromAffine)}static fromHex(g){let w=d.fromAffine(o(ae("pointHex",g)));return w.assertValidity(),w}static fromPrivateKey(g){return d.BASE.multiply(c(g))}static msm(g,w){return po(d,n,g,w)}_setWindowSize(g){p.setWindowSize(this,g)}assertValidity(){l(this)}hasEvenY(){let{y:g}=this.toAffine();if(t.isOdd)return!t.isOdd(g);throw new Error("Field doesn't support isOdd")}equals(g){u(g);let{px:w,py:b,pz:y}=this,{px:x,py:A,pz:_}=g,v=t.eql(t.mul(w,_),t.mul(x,y)),B=t.eql(t.mul(b,_),t.mul(A,y));return v&&B}negate(){return new d(this.px,t.neg(this.py),this.pz)}double(){let{a:g,b:w}=e,b=t.mul(w,Id),{px:y,py:x,pz:A}=this,_=t.ZERO,v=t.ZERO,B=t.ZERO,k=t.mul(y,y),J=t.mul(x,x),H=t.mul(A,A),V=t.mul(y,x);return V=t.add(V,V),B=t.mul(y,A),B=t.add(B,B),_=t.mul(g,B),v=t.mul(b,H),v=t.add(_,v),_=t.sub(J,v),v=t.add(J,v),v=t.mul(_,v),_=t.mul(V,_),B=t.mul(b,B),H=t.mul(g,H),V=t.sub(k,H),V=t.mul(g,V),V=t.add(V,B),B=t.add(k,k),k=t.add(B,k),k=t.add(k,H),k=t.mul(k,V),v=t.add(v,k),H=t.mul(x,A),H=t.add(H,H),k=t.mul(H,V),_=t.sub(_,k),B=t.mul(H,J),B=t.add(B,B),B=t.add(B,B),new d(_,v,B)}add(g){u(g);let{px:w,py:b,pz:y}=this,{px:x,py:A,pz:_}=g,v=t.ZERO,B=t.ZERO,k=t.ZERO,J=e.a,H=t.mul(e.b,Id),V=t.mul(w,x),D=t.mul(b,A),I=t.mul(y,_),N=t.add(w,b),S=t.add(x,A);N=t.mul(N,S),S=t.add(V,D),N=t.sub(N,S),S=t.add(w,y);let E=t.add(x,_);return S=t.mul(S,E),E=t.add(V,I),S=t.sub(S,E),E=t.add(b,y),v=t.add(A,_),E=t.mul(E,v),v=t.add(D,I),E=t.sub(E,v),k=t.mul(J,S),v=t.mul(H,I),k=t.add(v,k),v=t.sub(D,k),k=t.add(D,k),B=t.mul(v,k),D=t.add(V,V),D=t.add(D,V),I=t.mul(J,I),S=t.mul(H,S),D=t.add(D,I),I=t.sub(V,I),I=t.mul(J,I),S=t.add(S,I),V=t.mul(D,S),B=t.add(B,V),V=t.mul(E,S),v=t.mul(N,v),v=t.sub(v,V),V=t.mul(N,D),k=t.mul(E,k),k=t.add(k,V),new d(v,B,k)}subtract(g){return this.add(g.negate())}is0(){return this.equals(d.ZERO)}wNAF(g){return p.wNAFCached(this,g,d.normalizeZ)}multiplyUnsafe(g){let{endo:w,n:b}=e;qe("scalar",g,Ut,b);let y=d.ZERO;if(g===Ut)return y;if(this.is0()||g===ve)return this;if(!w||p.hasPrecomputes(this))return p.wNAFCachedUnsafe(this,g,d.normalizeZ);let{k1neg:x,k1:A,k2neg:_,k2:v}=w.splitScalar(g),B=y,k=y,J=this;for(;A>Ut||v>Ut;)A&ve&&(B=B.add(J)),v&ve&&(k=k.add(J)),J=J.double(),A>>=ve,v>>=ve;return x&&(B=B.negate()),_&&(k=k.negate()),k=new d(t.mul(k.px,w.beta),k.py,k.pz),B.add(k)}multiply(g){let{endo:w,n:b}=e;qe("scalar",g,ve,b);let y,x;if(w){let{k1neg:A,k1:_,k2neg:v,k2:B}=w.splitScalar(g),{p:k,f:J}=this.wNAF(_),{p:H,f:V}=this.wNAF(B);k=p.constTimeNegate(A,k),H=p.constTimeNegate(v,H),H=new d(t.mul(H.px,w.beta),H.py,H.pz),y=k.add(H),x=J.add(V)}else{let{p:A,f:_}=this.wNAF(g);y=A,x=_}return d.normalizeZ([y,x])[0]}multiplyAndAddUnsafe(g,w,b){let y=d.BASE,x=(_,v)=>v===Ut||v===ve||!_.equals(y)?_.multiplyUnsafe(v):_.multiply(v),A=x(this,w).add(x(g,b));return A.is0()?void 0:A}toAffine(g){return f(this,g)}isTorsionFree(){let{h:g,isTorsionFree:w}=e;if(g===ve)return!0;if(w)return w(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:g,clearCofactor:w}=e;return g===ve?this:w?w(d,this):this.multiplyUnsafe(e.h)}toRawBytes(g=!0){return st("isCompressed",g),this.assertValidity(),s(d,this,g)}toHex(g=!0){return st("isCompressed",g),Ct(this.toRawBytes(g))}}d.BASE=new d(e.Gx,e.Gy,t.ONE),d.ZERO=new d(t.ZERO,t.ONE,t.ZERO);let h=e.nBitLength,p=ho(d,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:a}}function qy(r){let e=Wn(r);return dt(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function kd(r){let e=qy(r),{Fp:t,n}=e,s=t.BYTES+1,o=2*t.BYTES+1;function i(I){return ee(I,n)}function a(I){return uo(I,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:u,weierstrassEquation:f,isWithinCurveOrder:l}=Ky({...e,toBytes(I,N,S){let E=N.toAffine(),C=t.toBytes(E.x),L=kt;return st("isCompressed",S),S?L(Uint8Array.from([N.hasEvenY()?2:3]),C):L(Uint8Array.from([4]),C,t.toBytes(E.y))},fromBytes(I){let N=I.length,S=I[0],E=I.subarray(1);if(N===s&&(S===2||S===3)){let C=It(E);if(!zn(C,ve,t.ORDER))throw new Error("Point is not on curve");let L=f(C),M;try{M=t.sqrt(L)}catch($){let O=$ instanceof Error?": "+$.message:"";throw new Error("Point is not on curve"+O)}let U=(M&ve)===ve;return(S&1)===1!==U&&(M=t.neg(M)),{x:C,y:M}}else if(N===o&&S===4){let C=t.fromBytes(E.subarray(0,t.BYTES)),L=t.fromBytes(E.subarray(t.BYTES,2*t.BYTES));return{x:C,y:L}}else{let C=s,L=o;throw new Error("invalid Point, expected length of "+C+", or uncompressed "+L+", got "+N)}}}),d=I=>Ct(Xt(I,e.nByteLength));function h(I){let N=n>>ve;return I>N}function p(I){return h(I)?i(-I):I}let m=(I,N,S)=>It(I.slice(N,S));class g{constructor(N,S,E){this.r=N,this.s=S,this.recovery=E,this.assertValidity()}static fromCompact(N){let S=e.nByteLength;return N=ae("compactSignature",N,S*2),new g(m(N,0,S),m(N,S,2*S))}static fromDER(N){let{r:S,s:E}=Mt.toSig(ae("DER",N));return new g(S,E)}assertValidity(){qe("r",this.r,ve,n),qe("s",this.s,ve,n)}addRecoveryBit(N){return new g(this.r,this.s,N)}recoverPublicKey(N){let{r:S,s:E,recovery:C}=this,L=_(ae("msgHash",N));if(C==null||![0,1,2,3].includes(C))throw new Error("recovery id invalid");let M=C===2||C===3?S+e.n:S;if(M>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let U=C&1?"03":"02",K=c.fromHex(U+d(M)),$=a(M),O=i(-L*$),Q=i(E*$),ne=c.BASE.multiplyAndAddUnsafe(K,O,Q);if(!ne)throw new Error("point at infinify");return ne.assertValidity(),ne}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return mr(this.toDERHex())}toDERHex(){return Mt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return mr(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}}let w={isValidPrivateKey(I){try{return u(I),!0}catch{return!1}},normPrivateKeyToScalar:u,randomPrivateKey:()=>{let I=kc(e.n);return Qf(e.randomBytes(I),e.n)},precompute(I=8,N=c.BASE){return N._setWindowSize(I),N.multiply(BigInt(3)),N}};function b(I,N=!0){return c.fromPrivateKey(I).toRawBytes(N)}function y(I){let N=jt(I),S=typeof I=="string",E=(N||S)&&I.length;return N?E===s||E===o:S?E===2*s||E===2*o:I instanceof c}function x(I,N,S=!0){if(y(I))throw new Error("first arg must be private key");if(!y(N))throw new Error("second arg must be public key");return c.fromHex(N).multiply(u(I)).toRawBytes(S)}let A=e.bits2int||function(I){if(I.length>8192)throw new Error("input is too large");let N=It(I),S=I.length*8-e.nBitLength;return S>0?N>>BigInt(S):N},_=e.bits2int_modN||function(I){return i(A(I))},v=Gn(e.nBitLength);function B(I){return qe("num < 2^"+e.nBitLength,I,Ut,v),Xt(I,e.nByteLength)}function k(I,N,S=J){if(["recovered","canonical"].some(xe=>xe in S))throw new Error("sign() legacy options not supported");let{hash:E,randomBytes:C}=e,{lowS:L,prehash:M,extraEntropy:U}=S;L==null&&(L=!0),I=ae("msgHash",I),Cd(S),M&&(I=ae("prehashed msgHash",E(I)));let K=_(I),$=u(N),O=[B($),B(K)];if(U!=null&&U!==!1){let xe=U===!0?C(t.BYTES):U;O.push(ae("extraEntropy",xe))}let Q=kt(...O),ne=K;function be(xe){let Ee=A(xe);if(!l(Ee))return;let Be=a(Ee),Ke=c.BASE.multiply(Ee).toAffine(),De=i(Ke.x);if(De===Ut)return;let ht=i(Be*i(ne+De*$));if(ht===Ut)return;let xt=(Ke.x===De?0:2)|Number(Ke.y&ve),Mn=ht;return L&&h(ht)&&(Mn=p(ht),xt^=1),new g(De,Mn,xt)}return{seed:Q,k2sig:be}}let J={lowS:e.lowS,prehash:!1},H={lowS:e.lowS,prehash:!1};function V(I,N,S=J){let{seed:E,k2sig:C}=k(I,N,S),L=e;return _c(L.hash.outputLen,L.nByteLength,L.hmac)(E,C)}c.BASE._setWindowSize(8);function D(I,N,S,E=H){let C=I;N=ae("msgHash",N),S=ae("publicKey",S);let{lowS:L,prehash:M,format:U}=E;if(Cd(E),"strict"in E)throw new Error("options.strict was renamed to lowS");if(U!==void 0&&U!=="compact"&&U!=="der")throw new Error("format must be compact or der");let K=typeof C=="string"||jt(C),$=!K&&!U&&typeof C=="object"&&C!==null&&typeof C.r=="bigint"&&typeof C.s=="bigint";if(!K&&!$)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let O,Q;try{if($&&(O=new g(C.r,C.s)),K){try{U!=="compact"&&(O=g.fromDER(C))}catch(xt){if(!(xt instanceof Mt.Err))throw xt}!O&&U!=="der"&&(O=g.fromCompact(C))}Q=c.fromHex(S)}catch{return!1}if(!O||L&&O.hasHighS())return!1;M&&(N=e.hash(N));let{r:ne,s:be}=O,xe=_(N),Ee=a(be),Be=i(xe*Ee),Ke=i(ne*Ee),De=c.BASE.multiplyAndAddUnsafe(Q,Be,Ke)?.toAffine();return De?i(De.x)===ne:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:x,sign:V,verify:D,ProjectivePoint:c,Signature:g,utils:w}}function $y(r){return{hash:r,hmac:(e,...t)=>Ll(r,e,wc(...t)),randomBytes:oo}}function Td(r,e){let t=n=>kd({...r,...$y(n)});return Object.freeze({...t(e),create:t})}var Pd=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Ld=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),zy=BigInt(1),Nl=BigInt(2),Nd=(r,e)=>(r+e/Nl)/e;function Gy(r){let e=Pd,t=BigInt(3),n=BigInt(6),s=BigInt(11),o=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),u=r*r*r%e,f=u*u*r%e,l=ie(f,t,e)*f%e,d=ie(l,t,e)*f%e,h=ie(d,Nl,e)*u%e,p=ie(h,s,e)*h%e,m=ie(p,o,e)*p%e,g=ie(m,a,e)*m%e,w=ie(g,c,e)*g%e,b=ie(w,a,e)*m%e,y=ie(b,t,e)*f%e,x=ie(y,i,e)*p%e,A=ie(x,n,e)*u%e,_=ie(A,Nl,e);if(!Pl.eql(Pl.sqr(_),r))throw new Error("Cannot find square root");return _}var Pl=Yt(Pd,void 0,void 0,{sqrt:Gy}),Ye=Td({a:BigInt(0),b:BigInt(7),Fp:Pl,n:Ld,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=Ld,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-zy*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),a=Nd(o*r,e),c=Nd(-n*r,e),u=ee(r-a*t-c*s,e),f=ee(-a*n-c*o,e),l=u>i,d=f>i;if(l&&(u=e-u),d&&(f=e-f),u>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:l,k1:u,k2neg:d,k2:f}}}},Bd),zE=BigInt(0);var GE=Ye.ProjectivePoint;function Ve(r,e){e==null&&(e=r.reduce((s,o)=>s+o.length,0));let t=Ce(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}function Dl(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Dd(r,e){let t=on.digest(e instanceof Uint8Array?e:e.subarray());if(Dl(t))return t.then(({digest:n})=>Ye.sign(n,r).toDERRawBytes()).catch(n=>{throw new cs(String(n))});try{return Ye.sign(t.digest,r).toDERRawBytes()}catch(n){throw new cs(String(n))}}function Rd(r,e,t){let n=on.digest(t instanceof Uint8Array?t:t.subarray());if(Dl(n))return n.then(({digest:s})=>Ye.verify(e,s,r)).catch(s=>{throw new ls(String(s))});try{return Ye.verify(e,n.digest,r)}catch(s){throw new ls(String(s))}}var hs=class{type="secp256k1";raw;_key;constructor(e){this._key=Od(e),this.raw=Md(this._key)}toMultihash(){return _t.digest(pt(this))}toCID(){return me.createV1(114,this.toMultihash())}toString(){return X.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}verify(e,t){return Rd(this._key,t,e)}},xi=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=Ud(e),this.publicKey=new hs(t??Fd(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}sign(e){return Dd(this.raw,e)}};function Rl(r){return new hs(r)}async function Vd(){let r=Wy();return new xi(r)}function Md(r){return Ye.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Ud(r){try{return Ye.getPublicKey(r,!0),r}catch(e){throw new Un(String(e))}}function Od(r){try{return Ye.ProjectivePoint.fromHex(r),r}catch(e){throw new zr(String(e))}}function Fd(r){try{return Ye.getPublicKey(r,!0)}catch(e){throw new Un(String(e))}}function Wy(){return Ye.utils.randomPrivateKey()}async function Hd(r,e){if(r==="Ed25519")return uh();if(r==="secp256k1")return Vd();if(r==="RSA")return kl(e??2048);throw new $t}function mn(r){let{Type:e,Data:t}=mt.decode(r),n=t??new Uint8Array;switch(e){case ye.RSA:return Il(n);case ye.Ed25519:return Mc(n);case ye.secp256k1:return Rl(n);default:throw new $t}}function Kd(r){let{Type:e,Data:t}=mt.decode(r.digest),n=t??new Uint8Array;switch(e){case ye.Ed25519:return Mc(n);case ye.secp256k1:return Rl(n);default:throw new $t}}function pt(r){return mt.encode({Type:ye[r.type],Data:r.raw})}var qd=Symbol.for("nodejs.util.inspect.custom"),jy=114,ds=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[zs]=!0;toString(){return this.string==null&&(this.string=X.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return me.createV1(jy,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return ue(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return ue(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[qd](){return`PeerId(${this.toString()})`}},ps=class extends ds{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},ms=class extends ds{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},gs=class extends ds{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},Zy=2336,ys=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=_t.digest(P(this.url))}[qd](){return`PeerId(${this.url})`}[zs]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return me.createV1(Zy,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=te(e)),e.toString()===this.toString())}};var Xy=114,$d=2336;function bt(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=rt(X.decode(`z${r}`));else{if(e==null)throw new R('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=rt(e.decode(r))}return gn(t)}function Ml(r){if(r.type==="Ed25519")return new ms({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new gs({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new ps({multihash:r.toCID().multihash,publicKey:r});throw new $t}function zd(r){return Ml(r.publicKey)}function gn(r){if(Jy(r))return new ps({multihash:r});if(Yy(r))try{let e=Kd(r);if(e.type==="Ed25519")return new ms({multihash:r,publicKey:e});if(e.type==="secp256k1")return new gs({multihash:r,publicKey:e})}catch{let t=te(r.digest);return new ys(new URL(t))}throw new Xs("Supplied PeerID Multihash is invalid")}function vi(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==Xy&&r.code!==$d)throw new Zs("Supplied PeerID CID is invalid");if(r.code===$d){let e=te(r.multihash.digest);return new ys(new URL(e))}return gn(r.multihash)}function Yy(r){return r.code===_t.code}function Jy(r){return r.code===on.code}var de=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var Ol=hr(Wd(),1);var bs=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Fl=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},jd=r=>globalThis.DOMException===void 0?new Fl(r):new DOMException(r),Zd=r=>{let e=r.reason===void 0?jd("This operation was aborted."):r.reason;return e instanceof Error?e:jd(e)};function xs(r,e){let{milliseconds:t,fallback:n,message:s,customTimers:o={setTimeout,clearTimeout}}=e,i,c=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:d}=e;d.aborted&&f(Zd(d));let h=()=>{f(Zd(d))};d.addEventListener("abort",h,{once:!0}),r.finally(()=>{d.removeEventListener("abort",h)})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let l=new bs;i=o.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(d){f(d)}return}typeof r.cancel=="function"&&r.cancel(),s===!1?u():s instanceof Error?f(s):(l.message=s??`Promise timed out after ${t} milliseconds`,f(l))},t),(async()=>{try{u(await r)}catch(d){f(d)}})()}).finally(()=>{c.clear()});return c.clear=()=>{o.clearTimeout.call(void 0,i),i=void 0},c}function Vl(r,e,t){let n=0,s=r.length;for(;s>0;){let o=Math.trunc(s/2),i=n+o;t(r[i],e)<=0?(n=++i,s-=o+1):s=o}return n}var vs=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let s=Vl(this.#e,n,(o,i)=>i.priority-o.priority);this.#e.splice(s,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var ir=class extends Ol.default{#e;#t;#o=0;#a;#c;#p=0;#n;#l;#r;#m;#s=0;#u;#i;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:vs,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#r=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#i=e.autoStart===!1}get#b(){return this.#t||this.#o<this.#a}get#x(){return this.#s<this.#u}#v(){this.#s--,this.#f(),this.emit("next")}#E(){this.#w(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#o=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#r.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#i){let e=!this.#A;if(this.#b&&this.#x){let t=this.#r.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#t||this.#n!==void 0||(this.#n=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#o===0&&this.#s===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#o=this.#e?this.#s:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,s)=>{this.#r.enqueue(async()=>{this.#s++,this.#o++;try{t.signal?.throwIfAborted();let o=e({signal:t.signal});t.timeout&&(o=xs(Promise.resolve(o),{milliseconds:t.timeout})),t.signal&&(o=Promise.race([o,this.#S(t.signal)]));let i=await o;n(i),this.emit("completed",i)}catch(o){if(o instanceof bs&&!t.throwOnTimeout){n();return}s(o),this.emit("error",o)}finally{this.#v()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#i?(this.#i=!1,this.#h(),this):this}pause(){this.#i=!0}clear(){this.#r=new this.#m}async onEmpty(){this.#r.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#r.size<e||await this.#d("next",()=>this.#r.size<e)}async onIdle(){this.#s===0&&this.#r.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let s=()=>{t&&!t()||(this.off(e,s),n())};this.on(e,s)})}get size(){return this.#r.size}sizeBy(e){return this.#r.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#i}};function Ai(r){let e=[Ze.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var Hl=60;function Si(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:Ze[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:Ze[e.type],TTL:e.TTL??e.ttl??Hl,data:e.data instanceof Uint8Array?te(e.data):e.data}))}}var tw=4;function Kl(r,e={}){let t=new ir({concurrency:e.queryConcurrency??tw});return async(n,s={})=>{let o=new URLSearchParams;o.set("name",n),Ai(s.types).forEach(a=>{o.append("type",Ze[a])}),s.onProgress?.(new de("dns:query",{detail:n}));let i=await t.add(async()=>{let a=await fetch(`${r}?${o}`,{headers:{accept:"application/dns-json"},signal:s?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=Si(await a.json());return s.onProgress?.(new de("dns:response",{detail:c})),c},{signal:s.signal});if(i==null)throw new Error("No DNS response received");return i}}function Xd(){return[Kl("https://cloudflare-dns.com/dns-query"),Kl("https://dns.google/resolve")]}var Qd=hr(Jd(),1);var ql=class{lru;constructor(e){this.lru=(0,Qd.default)(e)}get(e,t){let n=!0,s=[];for(let o of t){let i=this.getAnswers(e,o);if(i.length===0){n=!1;break}s.push(...i)}if(n)return Si({answers:s})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,s=this.lru.get(n);if(s!=null){let o=s.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:Ze[a.type]}));return o.length===0&&this.lru.remove(n),o}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,s=this.lru.get(n)??[];s.push({expires:Date.now()+(t.TTL??Hl)*1e3,value:t}),this.lru.set(n,s)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function ep(r){return new ql(r)}var rw=1e3,_i=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=ep(e.cacheSize??rw),Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Xd())}async query(e,t={}){let n=Ai(t.types),s=t.cached!==!1?this.cache.get(e,n):void 0;if(s!=null)return t.onProgress?.(new de("dns:cache",{detail:s})),s;let o=`${e.split(".").pop()}.`,i=(this.resolvers[o]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let u=await c(e,{...t,types:n});for(let f of u.Answer)this.cache.add(e,f);return u}catch(u){a.push(u),t.onProgress?.(new de("dns:error",{detail:u}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${e} ${n} failed`)}};var Ze;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(Ze||(Ze={}));function tp(r={}){return new _i(r)}var Bi=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let o=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",u=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let l=this.readChar();if(l===void 0)return;let d=Number.parseInt(l,e);if(!Number.isNaN(d))return d});if(f===void 0)break;if(o*=e,o+=f,o>u||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:o})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[s]=i[0],t[s+1]=i[1],t[s+2]=i[2],t[s+3]=i[3],[s+4,!0]}let o=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(o===void 0)return[s,!1];t[s]=o>>8,t[s+1]=o&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let o=new Uint8Array(14),i=16-(n+2),[a]=e(o.subarray(0,i));return t.set(o.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var rp=45,nw=15,yn=new Bi;function Ci(r){if(!(r.length>nw))return yn.new(r).parseWith(()=>yn.readIPv4Addr())}function Ii(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>rp))return yn.new(r).parseWith(()=>yn.readIPv6Addr())}function _r(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>rp))return yn.new(r).parseWith(()=>yn.readIPAddr())}function np(r,e,t){let n=0;for(let s of r)if(!(n<e)){if(n>t)break;if(s!==255)return!1;n++}return!0}function sp(r,e,t,n){let s=0;for(let o of r)if(!(s<t)){if(s>n)break;if(o!==e[s])return!1;s++}return!0}function $l(r){switch(r.length){case Br:return r.join(".");case Cr:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function op(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;n&128;)e++,n=n<<1;if(n&128)return-1;for(let s=t+1;s<r.length;s++)if(r[s]!=0)return-1;break}return e}function ip(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Br=4,Cr=16,NS=parseInt("0xFFFF",16),sw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Es(r,e){e.length===Cr&&r.length===Br&&np(e,0,11)&&(e=e.slice(12)),e.length===Br&&r.length===Cr&&sp(r,sw,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=r[s]&e[s];return n}function ap(r,e){if(typeof e=="string"&&(e=_r(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function zl(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Br,s=Ci(e);if(s==null&&(n=Cr,s=Ii(e),s==null))throw new Error("Failed to parse given CIDR: "+r);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=Gl(o,8*n);return{network:Es(s,i),mask:i}}function Gl(r,e){if(e!==8*Br&&e!==8*Cr)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let s=0;s<t;s++){if(r>=8){n[s]=255,r-=8;continue}n[s]=255-(255>>r),r=0}return n}var wn=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=zl(e));else{let n=_r(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n.length*8){let o=_r(t);if(o==null)throw new Error("Failed to parse mask");this.mask=o}else this.mask=Gl(s,8*n.length);this.network=Es(n,this.mask)}}contains(e){return ap({network:this.network,mask:this.mask},e)}toString(){let e=op(this.mask),t=e!==-1?String(e):ip(this.mask);return $l(this.network)+"/"+t}};function ut(r){return!!Ci(r)}function bn(r){return!!Ii(r)}function ki(r){return!!_r(r)}var cp=ut,ow=bn,Wl=function(r){let e=0;if(r=r.toString().trim(),cp(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(ow(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let o=cp(t[n]),i;o&&(i=Wl(t[n]),t[n]=te(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,te(i.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let o=[n,1];for(n=9-t.length;n>0;n--)o.push("0");t.splice.apply(t,o)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let o=parseInt(t[n],16);s[e++]=o>>8&255,s[e++]=o&255}return s}throw new Error("invalid ip address")},lp=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let o=0;o<t;o++)s.push(r[e+o]);return s.join(".")}if(t===16){let s=[];for(let o=0;o<t;o+=2)s.push(n.getUint16(e+o).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var xn={},jl={},aw=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];aw.forEach(r=>{let e=cw(...r);jl[e.code]=e,xn[e.name]=e});function cw(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function W(r){if(typeof r=="number"){if(jl[r]!=null)return jl[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(xn[r]!=null)return xn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var lw=W("ip4"),uw=W("ip6"),fw=W("ipcidr");function Jl(r,e){switch(W(r).code){case 4:case 41:return dw(e);case 42:return Yl(e);case 43:return te(e,"base10");case 6:case 273:case 33:case 132:return hp(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Yl(e);case 421:return yw(e);case 444:return fp(e);case 445:return fp(e);case 466:return gw(e);case 481:return globalThis.encodeURIComponent(Yl(e));default:return te(e,"base16")}}function Ql(r,e){switch(W(r).code){case 4:return up(e);case 41:return up(e);case 42:return Xl(e);case 43:return P(e,"base10");case 6:case 273:case 33:case 132:return tu(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Xl(e);case 421:return pw(e);case 444:return ww(e);case 445:return bw(e);case 466:return mw(e);case 481:return Xl(globalThis.decodeURIComponent(e));default:return P(e,"base16")}}function eu(r){let e,t;if(r.stringTuples().forEach(([n,s])=>{(n===lw.code||n===uw.code)&&(t=s),n===fw.code&&(e=s)}),e==null||t==null)throw new Error("Invalid multiaddr");return new wn(t,e)}var Zl=Object.values(Xn).map(r=>r.decoder),hw=function(){let r=Zl[0].or(Zl[1]);return Zl.slice(2).forEach(e=>r=r.or(e)),r}();function up(r){if(!ki(r))throw new Error("invalid ip address");return Wl(r)}function dw(r){let e=lp(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!ki(e))throw new Error("invalid ip address");return e}function tu(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function hp(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Xl(r){let e=P(r),t=Uint8Array.from(ke(e.length));return Ve([t,e],t.length+e.length)}function Yl(r){let e=it(r);if(r=r.slice(pe(e)),r.length!==e)throw new Error("inconsistent lengths");return te(r)}function pw(r){let e;r[0]==="Q"||r[0]==="1"?e=rt(X.decode(`z${r}`)).bytes:e=me.parse(r).multihash.bytes;let t=Uint8Array.from(ke(e.length));return Ve([t,e],t.length+e.length)}function mw(r){let e=hw.decode(r),t=Uint8Array.from(ke(e.length));return Ve([t,e],t.length+e.length)}function gw(r){let e=it(r),t=r.slice(pe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+te(t,"base64url")}function yw(r){let e=it(r),t=r.slice(pe(e));if(t.length!==e)throw new Error("inconsistent lengths");return te(t,"base58btc")}function ww(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=We.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=tu(n);return Ve([t,s],t.length+s.length)}function bw(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=We.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=tu(n);return Ve([t,s],t.length+s.length)}function fp(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=te(e,"base32"),s=hp(t);return`${n}:${s}`}function dp(r){r=ru(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let o=0;o<s.length;o++){let i=s[o],a=W(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(o++,o>=s.length)throw mp("invalid address: "+r);if(a.path===!0){n=ru(s.slice(o).join("/")),e.push([a.code,Ql(a.code,n)]),t.push([a.code,n]);break}let c=Ql(a.code,s[o]);e.push([a.code,c]),t.push([a.code,Jl(a.code,c)])}return{string:pp(t),bytes:su(e),tuples:e,stringTuples:t,path:n}}function nu(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let o=it(r,s),i=pe(o),a=W(o),c=xw(a,r.slice(s+i));if(c===0){e.push([o]),t.push([o]),s+=i;continue}let u=r.slice(s+i,s+i+c);if(s+=c+i,s>r.length)throw mp("Invalid address Uint8Array: "+te(r,"base16"));e.push([o,u]);let f=Jl(o,u);if(t.push([o,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:pp(t),tuples:e,stringTuples:t,path:n}}function pp(r){let e=[];return r.map(t=>{let n=W(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),ru(e.join("/"))}function su(r){return Ve(r.map(e=>{let t=W(e[0]),n=Uint8Array.from(ke(t.code));return e.length>1&&e[1]!=null&&(n=Ve([n,e[1]])),n}))}function xw(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=it(e instanceof Uint8Array?e:Uint8Array.from(e));return t+pe(t)}}function ru(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function mp(r){return new Error("Error parsing address: "+r)}var vw=Symbol.for("nodejs.util.inspect.custom"),iu=Symbol.for("@multiformats/js-multiaddr/multiaddr"),Ew=[W("dns").code,W("dns4").code,W("dns6").code,W("dnsaddr").code],ou=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},Ti=class r{bytes;#e;#t;#o;#a;[iu]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=nu(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=dp(e)}else if(ar(e))t=nu(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#o=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,o="",i=W("tcp"),a=W("udp"),c=W("ip4"),u=W("ip6"),f=W("dns6"),l=W("ip6zone");for(let[h,p]of this.stringTuples())h===l.code&&(o=`%${p??""}`),Ew.includes(h)&&(t=i.name,s=443,n=`${p??""}${o}`,e=h===f.code?6:4),(h===i.code||h===a.code)&&(t=W(h).name,s=parseInt(p??"")),(h===c.code||h===u.code)&&(t=W(h).name,n=`${p??""}${o}`,e=h===u.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#t.map(([e])=>Object.assign({},W(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>W(e).name)}tuples(){return this.#t.map(([e,t])=>t==null?[e]:[e,t])}stringTuples(){return this.#o.map(([e,t])=>t==null?[e]:[e,t])}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(su(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===xn.p2p.code&&e.push([n,s]),n===xn["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?te(X.decode(`z${n}`),"base58btc"):te(me.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return ue(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(o=>o.resolvable);if(t==null)return[this];let n=vn.get(t.name);if(n==null)throw new ou(`no available resolver for ${t.name}`);return(await n(this,e)).map(o=>j(o))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[vw](){return`Multiaddr(${this.#e})`}};var vn=new Map;function ar(r){return!!r?.[iu]}function j(r){return new Ti(r)}var Aw=32,{code:Sw}=W("dnsaddr"),au=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}},Ir=async function(e,t={}){let n=t.maxRecursiveDepth??Aw;if(n===0)throw new au("Max recursive depth reached");let[,s]=e.stringTuples().find(([u])=>u===Sw)??[],i=await(t?.dns??tp()).query(`_dnsaddr.${s}`,{signal:t?.signal,types:[Ze.TXT]}),a=e.getPeerId(),c=[];for(let u of i.Answer){let f=u.data.replace(/["']/g,"").trim().split("=")[1];if(f==null||a!=null&&!f.includes(a))continue;let l=j(f);if(f.startsWith("/dnsaddr")){let d=await l.resolve({...t,maxRecursiveDepth:n-1});c.push(...d.map(h=>h.toString()))}else c.push(l.toString())}return c};var Sp=hr(Ap(),1),Pi=Sp.default;var Tw={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Ir}},transportManager:{faultTolerance:Kt.FATAL_ALL}};async function _p(r){let e=Pi(Tw,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new R("Private network is enforced, but no protector was provided");return e}function Lw(r,e){try{if(typeof r=="string"&&r.length>0)return Nw(r);if(typeof r=="number"&&isFinite(r))return e?.long?Dw(r):Pw(r);throw new Error("Value is not a string or number.")}catch(t){let n=Rw(t)?`${t.message}. value=${JSON.stringify(r)}`:"An unknown error has occured.";throw new Error(n)}}function Nw(r){if(r=String(r),r.length>100)throw new Error("Value exceeds the maximum length of 100 characters.");let e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(!e)return NaN;let t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*315576e5;case"weeks":case"week":case"w":return t*6048e5;case"days":case"day":case"d":return t*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return t*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return t*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return t*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:throw new Error(`The unit ${n} was matched, but no matching case exists.`)}}var Ri=Lw;function Pw(r){let e=Math.abs(r);return e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function Dw(r){let e=Math.abs(r);return e>=864e5?Di(r,e,864e5,"day"):e>=36e5?Di(r,e,36e5,"hour"):e>=6e4?Di(r,e,6e4,"minute"):e>=1e3?Di(r,e,1e3,"second"):`${r} ms`}function Di(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}function Rw(r){return typeof r=="object"&&r!==null&&"message"in r}function lu(r){t.debug=t,t.default=t,t.coerce=c,t.disable=o,t.enable=s,t.enabled=i,t.humanize=Ri,t.destroy=u,Object.keys(r).forEach(f=>{t[f]=r[f]}),t.names=[],t.skips=[],t.formatters={};function e(f){let l=0;for(let d=0;d<f.length;d++)l=(l<<5)-l+f.charCodeAt(d),l|=0;return t.colors[Math.abs(l)%t.colors.length]}t.selectColor=e;function t(f){let l,d=null,h,p;function m(...g){if(!m.enabled)return;let w=m,b=Number(new Date),y=b-(l||b);w.diff=y,w.prev=l,w.curr=b,l=b,g[0]=t.coerce(g[0]),typeof g[0]!="string"&&g.unshift("%O");let x=0;g[0]=g[0].replace(/%([a-zA-Z%])/g,(_,v)=>{if(_==="%%")return"%";x++;let B=t.formatters[v];if(typeof B=="function"){let k=g[x];_=B.call(w,k),g.splice(x,1),x--}return _}),t.formatArgs.call(w,g),(w.log||t.log).apply(w,g)}return m.namespace=f,m.useColors=t.useColors(),m.color=t.selectColor(f),m.extend=n,m.destroy=t.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==t.namespaces&&(h=t.namespaces,p=t.enabled(f)),p),set:g=>{d=g}}),typeof t.init=="function"&&t.init(m),m}function n(f,l){let d=t(this.namespace+(typeof l>"u"?":":l)+f);return d.log=this.log,d}function s(f){t.save(f),t.namespaces=f,t.names=[],t.skips=[];let l,d=(typeof f=="string"?f:"").split(/[\s,]+/),h=d.length;for(l=0;l<h;l++)d[l]&&(f=d[l].replace(/\*/g,".*?"),f[0]==="-"?t.skips.push(new RegExp("^"+f.substr(1)+"$")):t.names.push(new RegExp("^"+f+"$")))}function o(){let f=[...t.names.map(a),...t.skips.map(a).map(l=>"-"+l)].join(",");return t.enable(""),f}function i(f){if(f[f.length-1]==="*")return!0;let l,d;for(l=0,d=t.skips.length;l<d;l++)if(t.skips[l].test(f))return!1;for(l=0,d=t.names.length;l<d;l++)if(t.names[l].test(f))return!0;return!1}function a(f){return f.toString().substring(2,f.toString().length-2).replace(/\.\*\?$/,"*")}function c(f){return f instanceof Error?f.stack??f.message:f}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Mi=Kw(),Mw=["#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"];function Uw(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function Ow(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Ri(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(n=t))}),r.splice(n,0,e)}var Fw=console.debug??console.log??(()=>{});function Vw(r){try{r?Mi?.setItem("debug",r):Mi?.removeItem("debug")}catch{}}function Hw(){let r;try{r=Mi?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function Kw(){try{return localStorage}catch{}}function qw(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Bp=lu({formatArgs:Ow,save:Vw,load:Hw,useColors:Uw,setupFormatters:qw,colors:Mw,storage:Mi,log:Fw});var Ge=Bp;Ge.formatters.b=r=>r==null?"undefined":X.baseEncode(r);Ge.formatters.t=r=>r==null?"undefined":We.baseEncode(r);Ge.formatters.m=r=>r==null?"undefined":Jc.baseEncode(r);Ge.formatters.p=r=>r==null?"undefined":r.toString();Ge.formatters.c=r=>r==null?"undefined":r.toString();Ge.formatters.k=r=>r==null?"undefined":r.toString();Ge.formatters.a=r=>r==null?"undefined":r.toString();Ge.formatters.e=r=>r==null?"undefined":Cp(r.stack)??Cp(r.message)??r.toString();function $w(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function Ui(){return{forComponent(r){return zw(r)}}}function zw(r){let e=$w(`${r}:trace`);return Ge.enabled(`${r}:trace`)&&Ge.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=Ge(`${r}:trace`)),Object.assign(Ge(r),{error:Ge(`${r}:error`),trace:e})}function Cp(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function kr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}function Oi(r){let e=rt(X.decode(`z${r}`));return gn(e)}var Ot=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return kr(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return kr(this.map.values(),e=>e.key)}values(){return kr(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Tr=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return kr(this.set.entries(),e=>{let t=Oi(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Oi(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return kr(this.set.values(),e=>Oi(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var Np=Symbol.for("@achingbrain/uint8arraylist");function Lp(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function Vi(r){return!!r?.[Np]}var we=class r{bufs;length;[Np]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Vi(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Vi(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Lp(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Lp(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Vi(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return Ve(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Ve(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),o=new r;return o.length=s,o.bufs=[...n],o}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let o=0;o<this.bufs.length;o++){let i=this.bufs[o],a=s,c=a+i.byteLength;if(s=c,e>=c)continue;let u=e>=a&&e<c,f=t>a&&t<=c;if(u&&f){if(e===a&&t===c){n.push(i);break}let l=e-a;n.push(i.subarray(l,l+(t-e)));break}if(u){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(f){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Vi(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let o=256,i=new Int32Array(o);for(let l=0;l<o;l++)i[l]=-1;for(let l=0;l<s;l++)i[n[l]]=l;let a=i,c=this.byteLength-n.byteLength,u=n.byteLength-1,f;for(let l=t;l<=c;l+=f){f=0;for(let d=u;d>=0;d--){let h=this.get(l+d);if(n[d]!==h){f=Math.max(1,d-a[h]);break}}if(f===0)return l}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ce(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ce(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!ue(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,o)=>s+o.byteLength,0)),n.length=t,n}};var uu=64,ft=class{fp;h;seed;constructor(e,t,n,s=2){if(s>uu)throw new TypeError("Invalid Fingerprint Size");let o=t.hashV(e,n),i=fe(s);for(let a=0;a<i.length;a++)i[a]=o[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ue(this.fp,e.fp):!1}};function Lr(r,e){return Math.floor(Math.random()*(e-r))+r}var Nr=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof ft))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof ft))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof ft))throw new TypeError("Invalid Fingerprint");let t=Lr(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof ft))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var fu={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Pp={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},Dp=new globalThis.TextEncoder;function Gw(r,e){let t=fu[e],n=Pp[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function Ww(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=fu[e],s=Pp[e],o=r;for(;o.length>0;){let i=Dp.encodeInto(o,t);o=o.slice(i.read);for(let a=0;a<i.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function hu(r,{size:e=32,utf8Buffer:t}={}){if(!fu[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return Ww(r,e,t);r=Dp.encode(r)}return Gw(r,e)}var jw=hr(Tp(),1);var Ss={hash:r=>Number(hu(r,{size:32})),hashV:(r,e)=>Zw(Ss.hash(r,e))};function Zw(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),P(e,"base16")}var Xw=500,_s=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Ss,this.seed=e.seed??Lr(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=P(e));let t=new ft(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new Nr(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new Nr(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let o=[n,s],i=o[Lr(0,o.length-1)];this.buckets[i]==null&&(this.buckets[i]=new Nr(this.bucketSize));for(let a=0;a<Xw;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new Nr(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=P(e));let t=new ft(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let o=(n^t.hash())%this.filterSize;return this.buckets[o]?.has(t)??!1}remove(e){typeof e=="string"&&(e=P(e));let t=new ft(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let o=(n^t.hash())%this.filterSize,i=this.buckets[o]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Yw={1:.5,2:.84,4:.95,8:.98};function Jw(r=.001){return r>.002?2:r>1e-5?4:8}function Rp(r,e=.001){let t=Jw(e),n=Yw[t],s=Math.round(r/n),o=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),uu);return{filterSize:s,bucketSize:t,fingerprintSize:o}}var Hi=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Ss,this.seed=e.seed??Lr(0,Math.pow(2,10)),this.filterSeries=[new _s({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=P(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new _s({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=P(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=P(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Bs(r,e=.001,t){return new Hi({...Rp(r,e),...t??{}})}var Cs;(function(r){let e;r.codec=()=>(e==null&&(e=Oe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={publicKey:fe(0),payloadType:fe(0),payload:fe(0),signature:fe(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.publicKey=t.bytes();break}case 2:{o.payloadType=t.bytes();break}case 3:{o.payload=t.bytes();break}case 5:{o.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(Cs||(Cs={}));var Ki=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var Sn=class r{static createFromProtobuf=async e=>{let t=Cs.decode(e),n=mn(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t==null)throw new Error("Missing private key");let n=e.domain,s=e.codec,o=e.marshal(),i=Mp(n,s,o),a=await t.sign(i.subarray());return new r({publicKey:t.publicKey,payloadType:s,payload:o,signature:a})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new Ki("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:s,signature:o}=e;this.publicKey=t,this.payloadType=n,this.payload=s,this.signature=o}marshal(){return this.marshaled==null&&(this.marshaled=Cs.encode({publicKey:pt(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return ue(this.marshal(),e.marshal())}async validate(e){let t=Mp(e,this.payloadType,this.payload);return this.publicKey.verify(t.subarray(),this.signature)}},Mp=(r,e,t)=>{let n=P(r),s=ke(n.byteLength),o=ke(e.length),i=ke(t.length);return new we(s,n,o,e,i,t)};function Up(r,e){let t=(n,s)=>n.toString().localeCompare(s.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,s)=>e[s].equals(n)))}var Op="libp2p-peer-record",Fp=Uint8Array.from([3,1]);var Is;(function(r){let e;(function(n){let s;n.codec=()=>(s==null&&(s=Oe((o,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),o.multiaddr!=null&&o.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(o.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(o,i,a={})=>{let c={multiaddr:fe(0)},u=i==null?o.len:o.pos+i;for(;o.pos<u;){let f=o.uint32();switch(f>>>3){case 1:{c.multiaddr=o.bytes();break}default:{o.skipType(f&7);break}}}return c})),s),n.encode=o=>Ue(o,n.codec()),n.decode=(o,i)=>Me(o,n.codec(),i)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=Oe((n,s,o={})=>{if(o.lengthDelimited!==!1&&s.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(s.uint32(10),s.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(s.uint32(16),s.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)s.uint32(26),r.AddressInfo.codec().encode(i,s);o.lengthDelimited!==!1&&s.ldelim()},(n,s,o={})=>{let i={peerId:fe(0),seq:0n,addresses:[]},a=s==null?n.len:n.pos+s;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(o.limits?.addresses!=null&&i.addresses.length===o.limits.addresses)throw new Er('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:o.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),t),r.encode=n=>Ue(n,r.codec()),r.decode=(n,s)=>Me(n,r.codec(),s)})(Is||(Is={}));var Pr=class r{static createFromProtobuf=e=>{let t=Is.decode(e),n=gn(rt(t.peerId)),s=(t.addresses??[]).map(i=>j(i.multiaddr)),o=t.seq;return new r({peerId:n,multiaddrs:s,seqNumber:o})};static DOMAIN=Op;static CODEC=Fp;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:s}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=s??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Is.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!Up(this.multiaddrs,e.multiaddrs))}};function Qw(r){return r[Symbol.asyncIterator]!=null}function eb(r){if(Qw(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var ks=eb;var cr={},_n=r=>{r.addEventListener("message",e=>{_n.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{_n.dispatchEvent("message",r,e)})};_n.addEventListener=(r,e)=>{cr[r]==null&&(cr[r]=[]),cr[r].push(e)};_n.removeEventListener=(r,e)=>{cr[r]!=null&&(cr[r]=cr[r].filter(t=>t===e))};_n.dispatchEvent=function(r,e,t){cr[r]!=null&&cr[r].forEach(n=>n(e,t))};var du=_n;var pu="lock:worker:request-read",mu="lock:worker:release-read",gu="lock:master:grant-read",yu="lock:worker:request-write",wu="lock:worker:release-write",bu="lock:master:grant-write";var Vp=(r=21)=>Math.random().toString().substring(2);var Hp=(r,e,t,n,s)=>(o,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{o.postMessage({type:s,name:a.name,identifier:a.identifier}),await new Promise(c=>{let u=f=>{if(f?.data==null)return;let l={type:f.data.type,name:f.data.name,identifier:f.data.identifier};l.type===n&&l.identifier===a.identifier&&(o.removeEventListener("message",u),c())};o.addEventListener("message",u)})}}}))},Kp=(r,e,t,n)=>async()=>{let s=Vp();return globalThis.postMessage({type:e,identifier:s,name:r}),new Promise(o=>{let i=a=>{if(a?.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===s&&(globalThis.removeEventListener("message",i),o(()=>{globalThis.postMessage({type:n,identifier:s,name:r})}))};globalThis.addEventListener("message",i)})},tb={singleProcess:!1},qp=r=>{if(r=Object.assign({},tb,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return du.addEventListener("message",Hp(t,"requestReadLock",pu,mu,gu)),du.addEventListener("message",Hp(t,"requestWriteLock",yu,wu,bu)),t}return{isWorker:!0,readLock:t=>Kp(t,pu,gu,mu),writeLock:t=>Kp(t,yu,bu,wu)}};var Dr={},lr;async function xu(r,e){let t,n=new Promise(s=>{t=s});return r.add(async()=>xs((async()=>{await new Promise(s=>{t(()=>{s()})})})(),{milliseconds:e.timeout})),n}var rb=(r,e)=>{if(lr.isWorker===!0)return{readLock:lr.readLock(r,e),writeLock:lr.writeLock(r,e)};let t=new ir({concurrency:1}),n;return{async readLock(){if(n!=null)return xu(n,e);n=new ir({concurrency:e.concurrency,autoStart:!1});let s=n,o=xu(n,e);return t.add(async()=>{s.start(),await s.onIdle().then(()=>{n===s&&(n=null)})}),o},async writeLock(){return n=null,xu(t,e)}}},nb={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function vu(r){let e=Object.assign({},nb,r);return lr==null&&(lr=qp(e),lr.isWorker!==!0&&(lr.addEventListener("requestReadLock",t=>{Dr[t.data.name]!=null&&Dr[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),lr.addEventListener("requestWriteLock",async t=>{Dr[t.data.name]!=null&&Dr[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),Dr[e.name]==null&&(Dr[e.name]=rb(e.name,e)),Dr[e.name]}var Bn;(function(r){let e;(function(s){let o;s.codec=()=>(o==null&&(o=Oe((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:"",value:fe(0)},f=a==null?i.len:i.pos+a;for(;i.pos<f;){let l=i.uint32();switch(l>>>3){case 1:{u.key=i.string();break}case 2:{u.value=i.bytes();break}default:{i.skipType(l&7);break}}}return u})),o),s.encode=i=>Ue(i,s.codec()),s.decode=(i,a)=>Me(i,s.codec(),a)})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(s){let o;s.codec=()=>(o==null&&(o=Oe((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),$i.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:""},f=a==null?i.len:i.pos+a;for(;i.pos<f;){let l=i.uint32();switch(l>>>3){case 1:{u.key=i.string();break}case 2:{u.value=$i.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(l&7);break}}}return u})),o),s.encode=i=>Ue(i,s.codec()),s.decode=(i,a)=>Me(i,s.codec(),a)})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=Oe((s,o,i={})=>{if(i.lengthDelimited!==!1&&o.fork(),s.addresses!=null)for(let a of s.addresses)o.uint32(10),qi.codec().encode(a,o);if(s.protocols!=null)for(let a of s.protocols)o.uint32(18),o.string(a);if(s.publicKey!=null&&(o.uint32(34),o.bytes(s.publicKey)),s.peerRecordEnvelope!=null&&(o.uint32(42),o.bytes(s.peerRecordEnvelope)),s.metadata!=null&&s.metadata.size!==0)for(let[a,c]of s.metadata.entries())o.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},o);if(s.tags!=null&&s.tags.size!==0)for(let[a,c]of s.tags.entries())o.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},o);i.lengthDelimited!==!1&&o.ldelim()},(s,o,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=o==null?s.len:s.pos+o;for(;s.pos<c;){let u=s.uint32();switch(u>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new Er('Decode error - map field "addresses" had too many elements');a.addresses.push(qi.codec().decode(s,s.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new Er('Decode error - map field "protocols" had too many elements');a.protocols.push(s.string());break}case 4:{a.publicKey=s.bytes();break}case 5:{a.peerRecordEnvelope=s.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Qn('Decode error - map field "metadata" had too many elements');let f=r.Peer$metadataEntry.codec().decode(s,s.uint32());a.metadata.set(f.key,f.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Qn('Decode error - map field "tags" had too many elements');let f=r.Peer$tagsEntry.codec().decode(s,s.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(f.key,f.value);break}default:{s.skipType(u&7);break}}}return a})),n),r.encode=s=>Ue(s,r.codec()),r.decode=(s,o)=>Me(s,r.codec(),o)})(Bn||(Bn={}));var qi;(function(r){let e;r.codec=()=>(e==null&&(e=Oe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={multiaddr:fe(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.multiaddr=t.bytes();break}case 2:{o.isCertified=t.bool();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(qi||(qi={}));var $i;(function(r){let e;r.codec=()=>(e==null&&(e=Oe((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={value:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.value=t.uint32();break}case 2:{o.expiry=t.uint64();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Ue(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})($i||($i={}));function Cn(r,e){let t=Bn.decode(e);if(t.publicKey!=null&&r.publicKey==null){let o=mn(t.publicKey);r=Ml(o)}let n=new Map,s=BigInt(Date.now());for(let[o,i]of t.tags.entries())i.expiry!=null&&i.expiry<s||n.set(o,i);return{...t,id:r,addresses:t.addresses.map(({multiaddr:o,isCertified:i})=>({multiaddr:j(o),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var Ft="/",$p=new TextEncoder().encode(Ft),zi=$p[0],Rr=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=P(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==zi)throw new Error("Invalid key")}toString(e="utf8"){return te(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Ft))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=$p),this._buf[0]!==zi){let e=new Uint8Array(this._buf.byteLength+1);e.fill(zi,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===zi;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let s=0;s<t.length;s++){if(n.length<s+1)return!1;let o=t[s],i=n[s];if(o<i)return!0;if(o>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Ft).slice(1)}type(){return sb(this.baseNamespace())}name(){return ob(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Ft)||(e+=Ft),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Ft):new r(e.slice(0,-1).join(Ft))}child(e){return this.toString()===Ft?e:e.toString()===Ft?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...ib(e.map(t=>t.namespaces()))])}};function sb(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function ob(r){let e=r.split(":");return e[e.length-1]}function ib(r){return[].concat(...r)}var Eu="/peers/";function In(r){if(!Gs(r)||r.type==null)throw new R("Invalid PeerId");let e=r.toCID().toString();return new Rr(`${Eu}${e}`)}async function zp(r,e,t){let n=new Map;for(let s of t){if(s==null)continue;if(s.multiaddr instanceof Uint8Array&&(s.multiaddr=j(s.multiaddr)),!ar(s.multiaddr))throw new R("Multiaddr was invalid");if(!await e(r,s.multiaddr))continue;let o=s.isCertified??!1,i=s.multiaddr.toString(),a=n.get(i);a!=null?s.isCertified=a.isCertified||o:n.set(i,{multiaddr:s.multiaddr,isCertified:o})}return[...n.values()].sort((s,o)=>s.multiaddr.toString().localeCompare(o.multiaddr.toString())).map(({isCertified:s,multiaddr:o})=>({isCertified:s,multiaddr:o.bytes}))}async function Wi(r,e,t,n){if(e==null)throw new R("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new R("publicKey bytes do not match peer id publicKey bytes");let s=n.existingPeer;if(s!=null&&!r.equals(s.id))throw new R("peer id did not match existing peer id");let o=s?.addresses??[],i=new Set(s?.protocols??[]),a=s?.metadata??new Map,c=s?.tags??new Map,u=s?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(o=[],e.multiaddrs!=null&&o.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&o.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=Gi(d,{validate:Gp})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=Gi(d,{validate:Wp,map:jp})}e.peerRecordEnvelope!=null&&(u=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&o.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&o.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of d)p==null?a.delete(h):a.set(h,p);a=Gi([...a.entries()],{validate:Gp})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,m]of d)m==null?h.delete(p):h.set(p,m);c=Gi([...h.entries()],{validate:Wp,map:jp})}e.peerRecordEnvelope!=null&&(u=e.peerRecordEnvelope)}let f;s?.id.publicKey!=null?f=pt(s.id.publicKey):e.publicKey!=null?f=pt(e.publicKey):r.publicKey!=null&&(f=pt(r.publicKey));let l={addresses:await zp(r,n.addressFilter??(async()=>!0),o),protocols:[...i.values()].sort((d,h)=>d.localeCompare(h)),metadata:a,tags:c,publicKey:f,peerRecordEnvelope:u};return r.type!=="RSA"&&delete l.publicKey,l}function Gi(r,e){let t=new Map;for(let[n,s]of r)s!=null&&e.validate(n,s);for(let[n,s]of r.sort(([o],[i])=>o.localeCompare(i)))s!=null&&t.set(n,e.map?.(n,s)??s);return t}function Gp(r,e){if(typeof r!="string")throw new R("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new R("Metadata value must be a Uint8Array")}function Wp(r,e){if(typeof r!="string")throw new R("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new R("Tag value must be an integer");if(e.value<0||e.value>100)throw new R("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new R("Tag ttl must be an integer");if(e.ttl<0)throw new R("Tag ttl must be between greater than 0")}}function jp(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function ji(r,e){let t=r.toString().split("/")[2],n=me.parse(t,We),s=vi(n);return Cn(s,e)}function ab(r){return r==null?{}:{prefix:Eu,filters:(r.filters??[]).map(e=>({key:t,value:n})=>e(ji(t,n))),orders:(r.orders??[]).map(e=>(t,n)=>e(ji(t.key,t.value),ji(n.key,n.value)))}}var Zi=class{peerId;datastore;lock;addressFilter;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=vu({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(In(e))}async delete(e){if(this.peerId.equals(e))throw new R("Cannot delete self peer");await this.datastore.delete(In(e))}async load(e){let t=await this.datastore.get(In(e));return Cn(e,t)}async save(e,t){let{existingBuf:n,existingPeer:s}=await this.#e(e),o=await Wi(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,o,n,s)}async patch(e,t){let{existingBuf:n,existingPeer:s}=await this.#e(e),o=await Wi(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:s});return this.#t(e,o,n,s)}async merge(e,t){let{existingBuf:n,existingPeer:s}=await this.#e(e),o=await Wi(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:s});return this.#t(e,o,n,s)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(ab(e??{}))){let s=ji(t,n);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(In(e)),n=Cn(e,t);return{existingBuf:t,existingPeer:n}}catch(t){t.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",t)}return{}}async#t(e,t,n,s){let o=Bn.encode(t);return n!=null&&ue(o,n)?{peer:Cn(e,o),previous:s,updated:!1}:(await this.datastore.put(In(e),o),{peer:Cn(e,o),previous:s,updated:!0})}};var Au=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new Zi(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let s of this.store.all(t))e(s)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await ks(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let s=await this.store.save(e,t);return this.#e(e,s),s.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let s=await this.store.patch(e,t);return this.#e(e,s),s.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let s=await this.store.merge(e,t);return this.#e(e,s),s.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await Sn.openAndCertify(e,Pr.DOMAIN),s=vi(n.publicKey.toCID());if(t?.equals(s)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,s),!1;let o=Pr.createFromProtobuf(n.payload),i;try{i=await this.get(s)}catch(a){if(a.name!=="NotFoundError")throw a}if(i?.peerRecordEnvelope!=null){let a=await Sn.createFromProtobuf(i.peerRecordEnvelope),c=Pr.createFromProtobuf(a.payload);if(c.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",c.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(a=>({isCertified:!0,multiaddr:a}))}),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function Zp(r,e={}){return new Au(r,e)}var Xi=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};function cb(r){return r[Symbol.asyncIterator]!=null}function lb(r){if(cb(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Su=lb;function ub(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Xp=ub;function fb(r){return r[Symbol.asyncIterator]!=null}function hb(r,e){let t=0;if(fb(r))return async function*(){for await(let c of r)await e(c,t++)&&(yield c)}();let n=Xp(r),{value:s,done:o}=n.next();if(o===!0)return function*(){}();let i=e(s,t++);if(typeof i.then=="function")return async function*(){await i&&(yield s);for await(let c of n)await e(c,t++)&&(yield c)}();let a=e;return function*(){i===!0&&(yield s);for(let c of n)a(c,t++)&&(yield c)}()}var Mr=hb;function db(r){return r[Symbol.asyncIterator]!=null}function pb(r,e){return db(r)?async function*(){yield*(await ks(r)).sort(e)}():function*(){yield*ks(r).sort(e)}()}var _u=pb;function mb(r){return r[Symbol.asyncIterator]!=null}function gb(r,e){return mb(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var Bu=gb;var Yi=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:s}of e)await this.put(n,s,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,s){e.push({key:n,value:s})},delete(n){t.push(n)},commit:async n=>{await Su(this.putMany(e,n)),e=[],await Su(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let s=e.prefix;n=Mr(n,o=>o.key.toString().startsWith(s))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((s,o)=>Mr(s,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((s,o)=>_u(s,o),n)),e.offset!=null){let s=0,o=e.offset;n=Mr(n,()=>s++>=o)}return e.limit!=null&&(n=Bu(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let s=e.prefix;n=Mr(n,o=>o.toString().startsWith(s))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((s,o)=>Mr(s,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((s,o)=>_u(s,o),n)),e.offset!=null){let s=e.offset,o=0;n=Mr(n,()=>o++>=s)}return e.limit!=null&&(n=Bu(n,e.limit)),n}};var Ji=class extends Yi{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw new Xi;return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new Rr(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new Rr(e)}};function Yp(r,e){let t,n=function(){let s=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(s,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var Qp=hr(Jp(),1),yb=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],wb=yb.map(r=>new Qp.Netmask(r));function Cu(r){for(let e of wb)if(e.contains(r))return!0;return!1}function bb(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function xb(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),s=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return Cu(s)}function vb(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function Eb(r){let e=r.split(":"),t=e[e.length-1];return Cu(t)}function Ab(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function kn(r){return ut(r)?Cu(r):bb(r)?xb(r):vb(r)?Eb(r):bn(r)?Ab(r):void 0}var em=864e13;var Sb=448,Iu=449,_b=53,Bb=54,Cb=55,Ib=56,Qi=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=new Map}has(e){let t=this.findHost(e);for(let n of this.mappings.values())if(n.domain===t)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let s=kn(n)===!0;this.mappings.set(n,{domain:e,verified:s,expires:s?em-Date.now():0,lastVerified:s?em-Date.now():void 0})})}remove(e){let t=this.findHost(e),n=!1;for(let[s,o]of this.mappings.entries())o.domain===t&&(this.log("removing %s to %s DNS mapping %e",s,o.domain,new Error("where")),this.mappings.delete(s),n=n||o.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr.stringTuples(),i=o[0][1];if(i!=null)for(let[a,c]of this.mappings.entries()){if(i!==a)continue;this.maybeAddSNITuple(o,c.domain)&&(e.splice(n,1),n--,t.push({multiaddr:j(`/${o.map(f=>[W(f[0]).name,f[1]].join("/")).join("/")}`),verified:c.verified,type:"dns-mapping",expires:c.expires,lastVerified:c.lastVerified}))}}return t}maybeAddSNITuple(e,t){for(let n=0;n<e.length;n++)if(e[n][0]===Sb&&e[n+1]?.[0]!==Iu)return e.splice(n+1,0,[Iu,t]),!0;return!1}confirm(e,t){let n=this.findHost(e),s=!1;for(let[o,i]of this.mappings.entries())i.domain===n&&(this.log("marking %s to %s DNS mapping as verified",o,i.domain),s=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return s}unconfirm(e,t){let n=this.findHost(e),s=!1;for(let[o,i]of this.mappings.entries())i.domain===n&&(this.log("removing verification of %s to %s DNS mapping",o,i.domain),s=s||i.verified,i.verified=!1,i.expires=Date.now()+t);return s}findHost(e){for(let t of e.stringTuples())if(t[0]===Iu||t[0]===_b||t[0]===Bb||t[0]===Cb||t[0]===Ib)return t[1]}};var ku=4,Tu=41,Lu=6,kb=273,ea=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=new Map}has(e){let t=e.stringTuples();for(let n of this.mappings.values())for(let s of n)if(s.externalIp===t[0][1])return!0;return!1}add(e,t,n,s=t,o="tcp"){let i=`${e}-${t}-${o}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:s,externalFamily:ut(n)?4:6,protocol:o,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=e.stringTuples(),n=t[0][1]??"",s=t[1][0]===Lu?"tcp":"udp",o=parseInt(t[1][1]??"0"),i=!1;for(let[a,c]of this.mappings.entries()){for(let u=0;u<c.length;u++){let f=c[u];f.externalIp===n&&f.externalPort===o&&f.protocol===s&&(this.log("removing %s:%s to %s:%s %s IP mapping",f.externalIp,f.externalPort,n,o,s),i=i||f.verified,c.splice(u,1),u--)}c.length===0&&this.mappings.delete(a)}return i}getAll(e){let t=[];for(let{multiaddr:n}of e){let s=n.stringTuples(),o;if((s[0][0]===ku||s[0][0]===Tu)&&s[1][0]===Lu?o=`${s[0][1]}-${s[1][1]}-tcp`:(s[0][0]===ku||s[0][0]===Tu)&&s[1][0]===kb&&(o=`${s[0][1]}-${s[1][1]}-udp`),o==null)continue;let i=this.mappings.get(o);if(i!=null)for(let a of i)s[0][0]=a.externalFamily===4?ku:Tu,s[0][1]=a.externalIp,s[1][1]=`${a.externalPort}`,t.push({multiaddr:j(`/${s.map(c=>[W(c[0]).name,c[1]].join("/")).join("/")}`),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}confirm(e,t){let s=e.stringTuples()[0][1],o=!1;for(let i of this.mappings.values())for(let a of i)a.externalIp===s&&(this.log("marking %s to %s IP mapping as verified",a.internalIp,a.externalIp),o=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return o}unconfirm(e,t){let n=e.stringTuples(),s=n[0][1]??"",o=n[1][0]===Lu?"tcp":"udp",i=parseInt(n[1][1]??"0"),a=!1;for(let c of this.mappings.values())for(let u=0;u<c.length;u++){let f=c[u];f.externalIp===s&&f.externalPort===i&&f.protocol===o&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",f.externalIp,f.externalPort,s,i,o),a=a||f.verified,f.verified=!1,f.expires=Date.now()+t)}return a}};function tm(r){try{let[[e,t]]=r.stringTuples();if(t==null)return!1;if(e===4)return t.startsWith("169.254.");if(e===41)return t.toLowerCase().startsWith("fe80")}catch{}return!1}var Tb=4,Lb=41,Nb=53,Pb=54,Db=55,Rb=56;function Ur(r){try{let[[e,t]]=r.stringTuples();if(t==null)return!0;if(e===Nb||e===Pb||e===Db||e===Rb)return!1;if(e===Tb||e===Lb)return kn(t)??!1}catch{}return!0}var Mb={maxObservedAddresses:10},ta=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=new Map,this.maxObservedAddresses=t.maxObservedAddresses??Mb.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Ur(e)||tm(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:j(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),s=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},o=s.verified;return s.verified=!0,s.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,s),o}};var Ub={maxObservedAddresses:10},ra=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=new Map,this.maxObservedAddresses=t.maxObservedAddresses??Ub.maxObservedAddresses}get(e,t){if(Ur(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),s=this.addresses.get(n);return s==null&&(s={verified:!1,expires:0},this.addresses.set(n,s)),{multiaddr:e,verified:s.verified,type:"transport",expires:s.expires,lastVerified:s.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),s=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},o=s.verified;return s.verified=!0,s.expires=Date.now()+t,s.lastVerified=Date.now(),this.addresses.set(n,s),o}unconfirm(e,t){let n=this.toKey(e),s=this.addresses.get(n)??{verified:!1,expires:0},o=s.verified;return s.verified=!1,s.expires=Date.now()+t,this.addresses.set(n,s),o}toKey(e){let t=e.toOptions();return`${t.host}-${t.port}-${t.transport}`}};var rm=6e4,nm={maxObservedAddresses:10,addressVerificationTTL:rm*10,addressVerificationRetry:rm*5},Ob=r=>r;function Nu(r,e){let t=r.getPeerId();return t!=null&&bt(t).equals(e)&&(r=r.decapsulate(j(`/p2p/${e.toString()}`))),r}var na=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:s=[],appendAnnounce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(s.map(i=>i.toString())),this.appendAnnounce=new Set(o.map(i=>i.toString())),this.observed=new ta(e,t),this.dnsMappings=new Qi(e,t),this.ipMappings=new ea(e,t),this.transportAddresses=new ra(e,t),this.announceFilter=t.announceFilter??Ob,this.observedAddressFilter=Bs(1024),this.addressVerificationTTL=t.addressVerificationTTL??nm.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??nm.addressVerificationRetry,this._updatePeerStoreAddresses=Yp(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getPeerId()===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>j(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>j(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>j(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=e.stringTuples(),n=`${t[0][1]}:${t[1][1]}`;this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=Nu(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=Nu(e,this.components.peerId);let n=!0;(t?.type==="observed"||this.observed.has(e))&&(n=this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)),(t?.type==="transport"||this.transportAddresses.has(e))&&(n=this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&(n=this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&(n=this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=Nu(e,this.components.peerId);let n=!1;this.observed.has(e)&&(n=this.observed.remove(e)),this.transportAddresses.has(e)&&(n=this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)),this.dnsMappings.has(e)&&(n=this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)),this.ipMappings.has(e)&&(n=this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)),n&&this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let s=n.multiaddr.toString();return e.has(s)?!1:(e.add(s),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let s=j(n);return s.protos().pop()?.path===!0||s.getPeerId()===this.components.peerId.toString()?s:s.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return e.map(n=>({multiaddr:n,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];return t=t.concat(this.components.transportManager.getAddrs().map(n=>this.transportAddresses.get(n,this.addressVerificationTTL))),t=t.concat(this.getAppendAnnounceAddrs().map(n=>({multiaddr:n,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(j(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,s=t,o="tcp"){this.ipMappings.add(e,t,n,s,o),this.observed.removePrefixed(`/ip${ut(n)?4:6}/${n}/${o}/${s}`)}removePublicAddressMapping(e,t,n,s=t,o="tcp"){this.ipMappings.remove(j(`/ip${ut(n)?4:6}/${n}/${o}/${s}`))&&this._updatePeerStoreAddresses()}};var sm;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(sm||(sm={}));var sa=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},oa=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},Tn=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},Ls=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},ia=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},aa=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},ca=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},Ns=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},Or=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},la=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},ua=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},Fr=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},Vr=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},fa=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}};var Pu=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=Ui())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>to(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},Vb=["metrics","connectionProtector","dns"],Hb=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function om(r={}){let e=new Pu(r);return new Proxy(e,{get(n,s,o){if(typeof s=="string"&&!Hb.includes(s)){let i=e.components[s];if(i==null&&!Vb.includes(s))throw new sa(`${s} not set`);return i}return Reflect.get(n,s,o)},set(n,s,o){return typeof s=="string"?e.components[s]=o:Reflect.set(n,s,o),!0}})}function im(r){let e={};for(let t of Object.values(r.components))for(let n of Kb(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of qb(t))if(e[n]!==!0)throw new oa(`Service "${$b(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function Kb(r){return Array.isArray(r?.[Fn])?r[Fn]:[]}function qb(r){return Array.isArray(r?.[ac])?r[ac]:[]}function $b(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}var zb=r=>r.toString().split("/").slice(1),Ln=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),z=r=>({match:e=>Ln(t=>t===r).match(e),pattern:r}),Hr=()=>({match:r=>Ln(e=>typeof e=="string").match(r),pattern:"{string}"}),Ps=()=>({match:r=>Ln(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),re=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{X.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Ds=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Qc.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),Z=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),Pe=(...r)=>({match:e=>{let t;for(let n of r){let s=n.match(e);s!==!1&&(t==null||s.length<t.length)&&(t=s)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),G=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function ce(...r){function e(s){let o=zb(s);for(let i of r){let a=i.match(o);if(a===!1)return!1;o=a}return o}function t(s){return e(s)!==!1}function n(s){let o=e(s);return o===!1?!1:o.length===0}return{matchers:r,matches:t,exactMatch:n}}var da=G(z("dns4"),Hr()),pa=G(z("dns6"),Hr()),ma=G(z("dnsaddr"),Hr()),Ru=G(z("dns"),Hr()),w4=ce(da,Z(re())),b4=ce(pa,Z(re())),x4=ce(ma,Z(re())),v4=ce(Pe(Ru,ma,da,pa),Z(re())),am=G(z("ip4"),Ln(ut)),cm=G(z("ip6"),Ln(bn)),Mu=Pe(am,cm),Vt=Pe(Mu,Ru,da,pa,ma),E4=ce(Pe(Mu,G(Pe(Ru,ma,da,pa),Z(re())))),A4=ce(am),S4=ce(cm),_4=ce(Mu),Uu=G(Vt,z("tcp"),Ps()),Rs=G(Vt,z("udp"),Ps()),Ou=ce(G(Uu,Z(re()))),B4=ce(Rs),Fu=G(Rs,z("quic"),Z(re())),ga=G(Rs,z("quic-v1"),Z(re())),Gb=Pe(Fu,ga),C4=ce(Fu),I4=ce(ga),Du=Pe(Vt,Uu,Rs,Fu,ga),lm=Pe(G(Du,z("ws"),Z(re()))),Ms=ce(lm),um=Pe(G(Du,z("wss"),Z(re())),G(Du,z("tls"),Z(G(z("sni"),Hr())),z("ws"),Z(re()))),Vu=ce(um),fm=G(Rs,z("webrtc-direct"),Z(Ds()),Z(Ds()),Z(re())),Hu=ce(fm),hm=G(ga,z("webtransport"),Z(Ds()),Z(Ds()),Z(re())),Ku=ce(hm),ha=Pe(lm,um,G(Uu,Z(re())),G(Gb,Z(re())),G(Vt,Z(re())),fm,hm,re()),k4=ce(ha),Wb=G(ha,z("p2p-circuit"),re()),Us=ce(Wb),jb=Pe(G(ha,z("p2p-circuit"),z("webrtc"),Z(re())),G(ha,z("webrtc"),Z(re())),G(z("webrtc"),Z(re()))),qu=ce(jb),Zb=Pe(G(Vt,z("tcp"),Ps(),z("http"),Z(re())),G(Vt,z("http"),Z(re()))),T4=ce(Zb),Xb=Pe(G(Vt,z("tcp"),Pe(G(z("443"),z("http")),G(Ps(),z("https"))),Z(re())),G(Vt,z("tls"),z("http"),Z(re())),G(Vt,z("https"),Z(re()))),L4=ce(Xb),Yb=Pe(G(z("memory"),Hr(),Z(re()))),N4=ce(Yb);var Jb=4,Qb=41;function dm(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{if(Ms.matches(e))return!1;let t=e.stringTuples();return t[0][0]===Jb||t[0][0]===Qb?!!kn(`${t[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}var pm=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},ex=new WeakMap;function tx({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:s}={})=>{if(s?.aborted)return Promise.reject(pm());let o,i,a,c=r??clearTimeout,u=()=>{c(o),a(pm())},f=()=>{s&&s.removeEventListener("abort",u)},l=new Promise((d,h)=>{i=()=>{f(),d(n)},a=h,o=(e??setTimeout)(i,t)});return s&&s.addEventListener("abort",u,{once:!0}),ex.set(l,()=>{c(o),o=null,i()}),l}}var rx=tx(),mm=rx;var ya=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},wa=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var ba=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new $u}async consume(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(s,i.consumedPoints,this.blockDuration)),new ya("Rate limit exceeded",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await mm(a)}return i}penalty(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,-t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,s=this.points+1;return this.memoryStorage.set(this.getKey(e),s,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:s,isFirstInDuration:!1}}set(e,t,n=0){let s=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},$u=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let s=this.storage.get(e);if(s!=null){let o=s.expiresAt!=null?s.expiresAt.getTime()-new Date().getTime():-1;return s.expiresAt==null||o>0?(s.value+=t,{remainingPoints:0,msBeforeNext:o,consumedPoints:s.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let s=n*1e3,o=this.storage.get(e);o!=null&&clearTimeout(o.timeoutId);let i={value:t,expiresAt:s>0?new Date(Date.now()+s):void 0};return this.storage.set(e,i),s>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},s),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function xa(r){if(Gs(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:bt(t),r.forEach(n=>{if(!ar(n))throw new qt("Invalid multiaddr");let s=n.getPeerId();if(s==null){if(e!=null)throw new R("Multiaddrs must all have the same peer id or have no peer id")}else{let o=bt(s);if(e?.equals(o)!==!0)throw new R("Multiaddrs must all have the same peer id or have no peer id")}})}return{peerId:e,multiaddrs:r}}var nx=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function gm(r,e){let t=r?.streams?.map(s=>s.protocol)??[],n=e?.closableProtocols??nx;if(!(t.filter(s=>s!=null&&!n.includes(s)).length>0))try{await r?.close(e)}catch(s){r?.abort(s)}}var ym="last-dial-failure",wm="last-dial-success";var va=100,Ea=50;async function bm(r,e){let t=!1;for(let s of vn.keys())if(t=r.protoNames().includes(s),t)break;if(!t)return[r];let n=await r.resolve(e);return e.log("resolved %s to",r,n.map(s=>s.toString())),n}function Os(r){try{let e;if(typeof r=="string"?e=j(r):e=r,!e.protoNames().includes("ipcidr")){let n=e.protoNames().includes("ip6")?"/ipcidr/128":"/ipcidr/32";e=e.encapsulate(n)}return eu(e)}catch{throw new Error(`Can't convert to IpNet, Invalid multiaddr format: ${r}`)}}var sx={maxConnections:va,allow:[]},Aa=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??sx.maxConnections,this.allow=(t.allow??[]).map(n=>Os(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length;if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;let n=new Ot;for(let a of e){let c=a.remotePeer;if(!n.has(c)){n.set(c,0);try{let u=await this.peerStore.get(c);n.set(c,[...u.tags.values()].reduce((f,l)=>f+l.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags",u)}}}let s=this.sortConnections(e,n),o=Math.max(t-this.maxConnections,0),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(u=>u.contains(a.remoteAddr.nodeAddress().address))||i.push(a),i.length===o)break;await Promise.all(i.map(async a=>{await gm(a,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:i})}sortConnections(e,t){return e.sort((n,s)=>{let o=n.timeline.open,i=s.timeline.open;return o<i?1:o>i?-1:0}).sort((n,s)=>n.direction==="outbound"&&s.direction==="inbound"?1:n.direction==="inbound"&&s.direction==="outbound"?-1:0).sort((n,s)=>n.streams.length>s.streams.length?1:n.streams.length<s.streams.length?-1:0).sort((n,s)=>{let o=t.get(n.remotePeer)??0,i=t.get(s.remotePeer)??0;return o>i?1:o<i?-1:0})}};function he(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Sa=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Nn=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Sa(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new Sa(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var zu=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function _a(r={}){return ox(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function ox(r,e){e=e??{};let t=e.onEnd,n=new Nn,s,o,i,a=he(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((g,w)=>{o=b=>{o=null,n.push(b);try{g(r(n))}catch(y){w(y)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=he()})}},u=g=>o!=null?o(g):(n.push(g),s),f=g=>(n=new Nn,o!=null?o({error:g}):(n.push({error:g}),s)),l=g=>{if(i)return s;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:g})},d=g=>i?s:(i=!0,g!=null?f(g):u({done:!0})),h=()=>(n=new Nn,d(),{done:!0}),p=g=>(d(g),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:l,end:d,get readableLength(){return n.size},onEmpty:async g=>{let w=g?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let b,y;w!=null&&(b=new Promise((x,A)=>{y=()=>{A(new zu)},w.addEventListener("abort",y)}));try{await Promise.race([a.promise,b])}finally{y!=null&&w!=null&&w?.removeEventListener("abort",y)}}},t==null)return s;let m=s;return s={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(g){return m.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return m.return(),t!=null&&(t(),t=void 0),{done:!0}},push:l,end(g){return m.end(g),t!=null&&(t(g),t=void 0),s},get readableLength(){return m.readableLength},onEmpty:g=>m.onEmpty(g)},s}var Gu=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Pn(r,e,t,n){let s=new Gu(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((o,i)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,u)}let c=l=>{try{if(n?.filter?.(l)===!1)return}catch(d){a(),i(d);return}a(),o(l)},u=l=>{a(),i(l.detail)},f=()=>{a(),i(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,u)})}var Ba=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function ur(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Ba(t?.errorMessage,t?.errorCode,t?.errorName));let n,s=new Ba(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((o,i)=>{n=()=>{i(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var Ca=class{deferred;signal;constructor(e){this.signal=e,this.deferred=he(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new et)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function ix(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Ia=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=ix(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,se(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new et),this.cleanup())}async join(e={}){let t=new Ca(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await ur(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var Dn=class extends Et{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new wa;let n=new Ia(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let o=0;o<this.queue.length;o++)if(this.queue[o]===n){this.queue.splice(o,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new et)}),this.clear()}async onEmpty(e){this.size!==0&&await Pn(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Pn(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Pn(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=_a({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},o=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new et("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("error",o),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",o),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var ka=class extends Dn{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};function Ht(r){let e=new globalThis.AbortController;function t(){e.abort();for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}for(let o of r){if(o?.aborted===!0){t();break}o?.addEventListener!=null&&o.addEventListener("abort",t)}function n(){for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}function ax(r,e){let t=Ou.exactMatch(r.multiaddr),n=Ou.exactMatch(e.multiaddr);if(t&&!n)return-1;if(!t&&n)return 1;let s=Vu.exactMatch(r.multiaddr),o=Vu.exactMatch(e.multiaddr);if(s&&!o)return-1;if(!s&&o)return 1;let i=Ms.exactMatch(r.multiaddr),a=Ms.exactMatch(e.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=qu.exactMatch(r.multiaddr),u=qu.exactMatch(e.multiaddr);if(c&&!u)return-1;if(!c&&u)return 1;let f=Hu.exactMatch(r.multiaddr),l=Hu.exactMatch(e.multiaddr);if(f&&!l)return-1;if(!f&&l)return 1;let d=Ku.exactMatch(r.multiaddr),h=Ku.exactMatch(e.multiaddr);return d&&!h?-1:!d&&h?1:0}function cx(r,e){let t=Ur(r.multiaddr),n=Ur(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function lx(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function ux(r,e){let t=Us.exactMatch(r.multiaddr),n=Us.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function xm(r){return r.sort(ax).sort(lx).sort(ux).sort(cx)}var Ta={maxParallelDials:Ea,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:5e3,resolvers:{dnsaddr:Ir}},La=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??Ta.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??Ta.maxDialQueueLength,this.dialTimeout=t.dialTimeout??Ta.dialTimeout,this.connections=t.connections??new Ot,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,se(1/0,this.shutDownController.signal);for(let[n,s]of Object.entries(t.resolvers??{}))vn.set(n,s);this.queue=new ka({concurrency:t.maxParallelDials??Ta.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{n.detail.name!==et.name&&this.log.error("error in dial queue - %e",n.detail)})}start(){this.shutDownController=new AbortController,se(1/0,this.shutDownController.signal)}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:s}=xa(e),o=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:s.find(c=>c.equals(a.remoteAddr)));if(o?.status==="open")return this.log("already connected to %a",o.remoteAddr),t.onProgress?.(new de("dial-queue:already-connected")),o;let i=this.queue.queue.find(a=>{if(n?.equals(a.options.peerId)===!0)return!0;let c=a.options.multiaddrs;if(c==null)return!1;for(let u of s)if(c.has(u.toString()))return!0;return!1});if(i!=null){this.log("joining existing dial target for %p",n);for(let a of s)i.options.multiaddrs.add(a.toString());return t.onProgress?.(new de("dial-queue:already-in-dial-queue")),i.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new jr("Dial queue is full");return this.log("creating dial target for %p",n,s.map(a=>a.toString())),t.onProgress?.(new de("dial-queue:add-to-dial-queue")),this.queue.add(async a=>{a?.onProgress?.(new de("dial-queue:start-dial"));let c=Ht([this.shutDownController.signal,a.signal]);se(1/0,c);let u;try{u=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),a?.onProgress?.(new de("dial-queue:calculated-addresses",u)),u.map(({multiaddr:f})=>f.toString()).forEach(f=>{a?.multiaddrs.add(f)})}catch(f){throw c.clear(),f}try{let f=0,l=[];for(let d of u){if(f===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",f,n),new jr("Peer had more than maxPeerAddrsToDial");f++;try{let h=await this.components.transportManager.dial(d.multiaddr,{...a,signal:c});this.log("dial to %a succeeded",d.multiaddr);try{await this.components.peerStore.merge(h.remotePeer,{multiaddrs:[h.remoteAddr],metadata:{[wm]:P(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}return h}catch(h){if(this.log.error("dial failed to %a",d.multiaddr,h),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[ym]:P(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}if(c.aborted)throw new Js(h.message);l.push(h)}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}finally{c.clear()}},{peerId:n,priority:t.priority??Xu,multiaddrs:new Set(s.map(a=>a.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async calculateMultiaddrs(e,t=new Set,n={}){let s=[...t].map(l=>({multiaddr:j(l),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new jr("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new Ns("The dial request is blocked by gater.allowDialPeer");if(s.length===0){this.log("loading multiaddrs for %p",e);try{let l=await this.components.peerStore.get(e);s.push(...l.addresses),this.log("loaded multiaddrs for %p",e,s.map(({multiaddr:d})=>d.toString()))}catch(l){if(l.name!=="NotFoundError")throw l}}if(s.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let l=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,s.map(({multiaddr:d})=>d.toString())),s.push(...l.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(l){l.name!=="NoPeerRoutersError"&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,l)}}}let o=(await Promise.all(s.map(async l=>{let d=await bm(l.multiaddr,{dns:this.components.dns,...n,log:this.log});return d.length===1&&d[0].equals(l.multiaddr)?l:d.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let l=`/p2p/${e.toString()}`;o=o.map(d=>d.multiaddr.protos().pop()?.path===!0?d:d.multiaddr.getPeerId()==null?{multiaddr:d.multiaddr.encapsulate(l),isCertified:d.isCertified}:d)}let i=o.filter(l=>{if(this.components.transportManager.dialTransportForMultiaddr(l.multiaddr)==null)return!1;let d=l.multiaddr.getPeerId();return e!=null&&d!=null?e.equals(d):!0}),a=new Map;for(let l of i){let d=l.multiaddr.toString(),h=a.get(d);if(h!=null){h.isCertified=h.isCertified||l.isCertified||!1;continue}a.set(d,l)}let c=[...a.values()];if(c.length===0)throw new Or("The dial request has no valid addresses");let u=[];for(let l of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(l.multiaddr)||u.push(l);let f=this.addressSorter==null?xm(u):u.sort(this.addressSorter);if(f.length===0)throw new Ns("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",e??"unknown peer",o.map(({multiaddr:l})=>l.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",f.map(({multiaddr:l})=>l.toString())),f}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(s=>s.toString())),t);return t.runOnLimitedConnection===!1?n.find(s=>!Us.matches(s.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var Na=class extends Dn{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Cm=hr(_m(),1);var hx=Object.prototype.toString,dx=r=>hx.call(r)==="[object Error]",px=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed","terminated"]);function Yu(r){return r&&dx(r)&&r.name==="TypeError"&&typeof r.message=="string"?r.message==="Load failed"?r.stack===void 0:px.has(r.message):!1}var Ju=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}},Bm=(r,e,t)=>{let n=t.retries-(e-1);return r.attemptNumber=e,r.retriesLeft=n,r};async function Qu(r,e){return new Promise((t,n)=>{e={...e},e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.retries??=10;let s=Cm.default.operation(e),o=()=>{s.stop(),n(e.signal?.reason)};e.signal&&!e.signal.aborted&&e.signal.addEventListener("abort",o,{once:!0});let i=()=>{e.signal?.removeEventListener("abort",o),s.stop()};s.attempt(async a=>{try{let c=await r(a);i(),t(c)}catch(c){try{if(!(c instanceof Error))throw new TypeError(`Non-error was thrown: "${c}". You should only throw errors.`);if(c instanceof Ju)throw c.originalError;if(c instanceof TypeError&&!Yu(c))throw c;if(Bm(c,a,e),await e.shouldRetry(c)||(s.stop(),n(c)),await e.onFailedAttempt(c),!s.retry(c))throw s.mainError()}catch(u){Bm(u,a,e),i(),n(u)}}})})}var Pa=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new Na({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(s=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,s)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);Im(t)&&(this.queue.has(e)||this.queue.add(async n=>{await Qu(async s=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(o){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,s,this.retries,o),o}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let s={};[...t.tags.keys()].forEach(o=>{o.startsWith(ic)&&(s[o]=void 0)}),await this.peerStore.merge(e,{tags:s}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>Im(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)})}stop(){this.started=!1,this.queue.abort()}};function Im(r){for(let e of r.tags.keys())if(e.startsWith(ic))return!0;return!1}var Xu=50,ef={maxConnections:va,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Da=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??ef.maxConnections,this.maxConnections<1)throw new R("Connection Manager maxConnections must be greater than 0");this.connections=new Ot,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>Os(n)),this.deny=(t.deny??[]).map(n=>Os(n)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??ef.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new ba({points:t.inboundConnectionThreshold??ef.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Aa({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:t.allow?.map(n=>j(n))}),this.dialQueue=new La(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??Ea,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??5e3,resolvers:t.resolvers??{dnsaddr:Ir},connections:this.connections}),this.reconnectQueue=new Pa({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let s of n.streams){let o=`${s.direction} ${s.protocol??"unnegotiated"}`;e[o]=(e[o]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let s of n){let o={};for(let i of s.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;o[a]=(o[a]??0)+1}for(let[i,a]of Object.entries(o))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,s]of Object.entries(e)){s=s.sort((i,a)=>i-a);let o=Math.floor(s.length*.9);t[n]=s[o]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await Ef(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await Af(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(s){this.log.error(s)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}onConnect(e){this._onConnect(e).catch(t=>{this.log.error(t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,s=!this.connections.has(n),o=this.connections.get(n)??[];o.push(t),this.connections.set(n,o),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,o=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,o),o.length===0&&(this.log("onDisconnect remove all connections for peer %p",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new vt("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted();let{peerId:n}=xa(e);if(this.peerId.equals(n))throw new Wr("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>c.limits==null);if(a!=null)return this.log("had an existing non-limited connection to %p",n),t.onProgress?.(new de("dial-queue:already-connected")),a}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??Xu});if(s.status!=="open")throw new Gr("Remote closed connection during opening");let o=this.connections.get(s.remotePeer);o==null&&(o=[],this.connections.set(s.remotePeer,o));let i=!1;for(let a of o)if(a.id===s.id&&(i=!0),t.force!==!0&&a.id!==s.id&&a.remoteAddr.equals(s.remoteAddr))return s.abort(new qt("Duplicate multiaddr connection")),a;return i||o.push(s),s}finally{this.outboundPendingConnections--}}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async s=>{try{await s.close(t)}catch(o){s.abort(o)}}))}async acceptIncomingConnection(e){if(this.deny.some(s=>s.contains(e.remoteAddr.nodeAddress().address)))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(s=>s.contains(e.remoteAddr.nodeAddress().address)))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let s=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(s,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,s),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>j(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var Rn=class{movingAverage;variance;deviation;forecast;timespan;previousTime;constructor(e){this.timespan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timespan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),s=e-this.movingAverage,o=n*s;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+s*o),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*s}else this.movingAverage=e;this.previousTime=t}};var yx=1.2,wx=2,bx=2e3,Ra=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new Rn(e.interval??5e3),this.failure=new Rn(e.interval??5e3),this.next=new Rn(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??wx,this.timeoutMultiplier=e.timeoutMultiplier??yx,this.minTimeout=e.minTimeout??bx,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),s=Ht([e.signal,n]);return se(1/0,s,n),s.start=Date.now(),s.timeout=t,s}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var tf=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=he(),this.haveNext=he()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=he(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=he(),await ur(this.readNext.promise,t?.signal,t)}};function km(){return new tf}var Ma=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var rf=class extends Error{code;constructor(e,t){super(e),this.code=t}},nf=class extends rf{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function Ua(r,e){let t=km();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new we;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,u=new Promise((f,l)=>{c=()=>{l(new nf("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:l,value:d}=await Promise.race([n.next(),u]);return l===!0?new we:d}for(;s.byteLength<i;){let{value:l,done:d}=await Promise.race([n.next(),u]);if(d===!0)throw new Ma("unexpected end of input");s.append(l)}let f=s.sublist(0,i);return s.consume(i),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*i}()}return r}}}var xx=1e4,vx="1.0.0",Ex="ping",Ax="ipfs",Tm=32,Sx=!0,Oa=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??Ax}/${Ex}/${vx}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??xx,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??Sx,this.timeout=new Ra({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[Fn]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,se(1/0,this.abortController.signal),this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),s=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),o=Ua(s);t=Date.now(),await Promise.all([o.write(dn(Tm),{signal:n}),o.read(Tm,{signal:n})]),e.rtt=Date.now()-t,await o.unwrap().close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;e.rtt=(Date.now()-t)/2}}).catch(t=>{this.log.error("error during heartbeat",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};function _x(r){return r[Symbol.asyncIterator]!=null}function Bx(...r){let e=[];for(let t of r)_x(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=_a({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Fs=Bx;var Fa=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new Tn("No content routers available");let n=this,s=new Tr;for await(let o of Fs(...n.routers.map(i=>i.findProviders(e,t))))o!=null&&(o.multiaddrs.length>0&&await this.components.peerStore.merge(o.id,{multiaddrs:o.multiaddrs}),!s.has(o.id)&&(s.add(o.id),yield o))}async provide(e,t={}){if(this.routers.length===0)throw new Tn("No content routers available");await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new Tn("No content routers available");await Promise.all(this.routers.map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new vt;await Promise.all(this.routers.map(async s=>{await s.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new vt;return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var Va=globalThis.CustomEvent??Event;async function*sf(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,s=new EventTarget,o=[],i=he(),a=he(),c=!1,u,f=!1;s.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(o.length===t&&(i=he(),await i.promise),f)break;let m={done:!1};o.push(m),p().then(g=>{m.done=!0,m.ok=!0,m.value=g,s.dispatchEvent(new Va("task-complete"))},g=>{m.done=!0,m.err=g,s.dispatchEvent(new Va("task-complete"))})}c=!0,s.dispatchEvent(new Va("task-complete"))}catch(p){u=p,s.dispatchEvent(new Va("task-complete"))}});function l(){return n?o[0]?.done:!!o.find(p=>p.done)}function*d(){for(;o.length>0&&o[0].done;){let p=o[0];if(o.shift(),p.ok)yield p.value;else throw f=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;l();)for(let p=0;p<o.length;p++)if(o[p].done){let m=o[p];if(o.splice(p,1),p--,m.ok)yield m.value;else throw f=!0,i.resolve(),m.err;i.resolve()}}for(;;){if(l()||(a=he(),await a.promise),u!=null)throw u;if(n?yield*d():yield*h(),c&&o.length===0)break}}var Ha=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[]}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new Ls("No peer routers available");if(e.toString()===this.peerId.toString())throw new ia("Should not try to find self");let n=this,s=Fs(...this.routers.map(o=>async function*(){try{yield await o.findPeer(e,t)}catch(i){n.log.error(i)}}()));for await(let o of s)if(o!=null)return o.multiaddrs.length>0&&await this.peerStore.merge(o.id,{multiaddrs:o.multiaddrs}),o;throw new js}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Ls("No peer routers available");let n=this,s=Bs(1024);for await(let o of sf(async function*(){let i=Fs(...n.routers.map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}}()))o!=null&&(o.multiaddrs.length>0&&await this.peerStore.merge(o.id,{multiaddrs:o.multiaddrs}),!s.has(o.id.toMultihash().bytes)&&(s.add(o.id.toMultihash().bytes),yield o))}};var Ka=class extends Et{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,se(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,se(1/0,this.shutdownController.signal)}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=Ht([this.shutdownController.signal,e?.signal]);se(1/0,t);try{for(;;)this.needNext?.resolve(),this.needNext=he(),yield(await Pn(this,"walk:peer",t,{errorEvent:"walk:error"})).detail}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,se(1/0,this.walkController.signal);let e=Ht([this.walkController.signal,this.shutdownController.signal]);se(1/0,e);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let s=dn(32),o=Date.now();for await(let i of this.peerRouting.getClosestPeers(s,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-o,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await ur(this.needNext.promise,e)),o=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",s,this.walkers,n)}catch(s){this.log.error("randomwalk errored",s),this.safeDispatchEvent("walk:error",{detail:s})}this.log("no walkers left, ended walk")}).catch(s=>{this.log.error("randomwalk errored",s)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var of=32,af=64,qa=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new aa(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e))throw new ca(`Handler already registered for protocol ${e}`);let s=Pi.bind({ignoreUndefined:!0})({maxInboundStreams:of,maxOutboundStreams:af},n);this.handlers.set(e,{handler:t,options:s}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new R("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,s=this.topologies.get(e);return s==null&&(s=new Map,this.topologies.set(e,s)),s.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let s of n.protocols){let o=this.topologies.get(s);if(o!=null)for(let i of o.values())i.filter?.has(t)!==!1&&(i.filter?.remove(t),i.onDisconnect?.(t))}}).catch(n=>{n.name!=="NotFoundError"&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,s=(n?.protocols??[]).filter(o=>!t.protocols.includes(o));for(let o of s){let i=this.topologies.get(o);if(i!=null)for(let a of i.values())a.filter?.has(t.id)!==!1&&(a.filter?.remove(t.id),a.onDisconnect?.(t.id))}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,s=e.detail.peerId;for(let o of t){let i=this.topologies.get(o);if(i!=null)for(let a of i.values())n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(s)!==!0&&(a.filter?.add(s),a.onConnect?.(s,n))}}};var cf=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Lm(r){let{name:e,metrics:t}=r,n;return t!=null?n=new cf({name:e,metrics:t}):n=new Map,n}var $a=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=new Map,this.listeners=Lm({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Kt.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new R("Transport must have a valid tag");if(this.transports.has(t))throw new R(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let s=n.pop();s!=null&&e.push(s.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new fa(`No transport available for address ${String(e)}`);return t?.onProgress?.(new de("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new vt("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,s]of this.transports.entries()){let o=s.listenFilter(e),i=[];for(let u of o){this.log("creating listener for %s on %a",n,u);let f=s.createListener({upgrader:this.components.upgrader}),l=this.listeners.get(n)??[];l==null&&(l=[],this.listeners.set(n,l)),l.push(f),f.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:f})}),f.addEventListener("close",()=>{let d=l.findIndex(h=>h===f);l.splice(d,1),this.components.events.safeDispatchEvent("transport:close",{detail:f})}),i.push(f.listen(u))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(u=>u.status==="fulfilled")==null&&this.faultTolerance!==Kt.NO_FATAL)throw new Or(`Transport (${n}) could not listen on any available address`)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===Kt.FATAL_ALL)throw new Or(n);this.log(`libp2p in dial mode only: ${n}`)}}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let s=t.pop();s!=null&&n.push(s.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};var _e="/multistream/1.0.0";var za=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Ga=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Wa=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Vs(r,e={}){let t=Ua(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=pe(e.maxDataLength));let n=e?.lengthDecoder??it,s=e?.lengthEncoder??ke;return{read:async i=>{let a=-1,c=new we;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new za("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Wa("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Ga("message length too long");return t.read(a,i)},write:async(i,a)=>{await t.write(new we(s(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new we(...i.flatMap(u=>[s(u.byteLength),u]));await t.write(c,a)},unwrap:()=>t.unwrap()}}var Cx=P(`
|
|
7
|
-
`);async function
|
|
8
|
-
`),i=
|
|
9
|
-
`);await
|
|
10
|
-
`),t),t.log.trace("select: reading protocol response");let u=await
|
|
11
|
-
`;yield new we(Uint8Array.from([19]),
|
|
12
|
-
`),ke(_.length),
|
|
13
|
-
`),
|
|
14
|
-
`)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',_e,e)}finally{c=!0,u=!1,f.resolve()}}async function w(){if(d){await h.promise;return}d=!0;try{t.log.trace("optimistic: reading multistream select header");let b=await
|
|
15
|
-
`),t),t.log.trace('handle: responded with "%s" for "%s"',_e,s);continue}if(e.includes(s))return t.log.trace('handle: respond with "%s" for "%s"',s,s),await
|
|
16
|
-
`),t),t.log.trace('handle: responded with "%s" for "%s"',s,s),{stream:n.unwrap(),protocol:s};if(s==="ls"){let o=new we(...e.map(i=>
|
|
17
|
-
`))),
|
|
18
|
-
`));t.log.trace('handle: respond with "%s" for %s',e,s),await
|
|
19
|
-
`),t),t.log('handle: responded with "na" for "%s"',s)}}var Px=500,hf=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;limits;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:s,close:o,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.limits=e.limits,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=s,this._close=o,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[vf]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new Ws("the connection is being closed");if(this.status==="closed")throw new Gr("the connection is closed");if(Array.isArray(e)||(e=[e]),this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new Zr("Cannot open protocol stream on limited connection");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(Px);se(1/0,t),e={...e,signal:t}}try{this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.status!=="closed"&&(this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this._abort(e),this.status="closed",this.timeline.close=Date.now())}};function Dm(r){return new hf(r)}function Mx(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return of}function Ux(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??af}function Rm(r,e,t){let n=0;return t.streams.forEach(s=>{s.direction===e&&s.protocol===r&&n++}),n}var ec=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;outboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;constructor(e,t){this.components=e,this.connectionEncrypters=new Map,t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=new Map,t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??3e3,this.outboundUpgradeTimeout=t.outboundUpgradeTimeout??3e3,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??2e3,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??2e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new la(`The multiaddr connection is blocked by gater.${e}`)}async upgradeInbound(e,t={}){let n=!1;try{if(this.metrics.dials?.increment({inbound:!0}),n=await this.components.connectionManager.acceptIncomingConnection(e),!n)throw new ua("Connection denied");await this.shouldBlockConnection("denyInboundConnection",e),await this._performUpgrade(e,"inbound",t)}catch(s){throw this.metrics.errors?.increment({inbound:!0}),s}finally{n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t={}){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getPeerId(),s;return n!=null&&(s=bt(n),await this.shouldBlockConnection("denyOutboundConnection",s,e)),await this._performUpgrade(e,"outbound",t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),n}}async _performUpgrade(e,t,n){let s,o,i,a,c,u=AbortSignal.timeout(t==="inbound"?this.inboundUpgradeTimeout:this.outboundUpgradeTimeout),f=Ht([u,n.signal]);se(1/0,u,f),n.signal=f,this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t);let l=e;if(n?.skipProtection!==!0){let d=this.components.connectionProtector;d!=null&&(e.log("protecting the %s connection",t),l=await d.protect(e,n))}try{if(s=l,n?.skipEncryption!==!0){n?.onProgress?.(new de(`upgrader:encrypt-${t}-connection`)),{conn:s,remotePeer:o,protocol:c}=await(t==="inbound"?this._encryptInbound(l,{...n,signal:f}):this._encryptOutbound(l,{...n,signal:f}));let d={...l,...s};await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",o,d)}else{let d=e.remoteAddr.getPeerId();if(d==null)throw new qt(`${t} connection that skipped encryption must have a peer id`);let h=bt(d);c="native",o=h}if(o.equals(this.components.peerId)){let d=new Wr("Can not dial self");throw e.abort(d),d}if(i=s,n?.muxerFactory!=null)a=n.muxerFactory;else if(this.streamMuxers.size>0){n?.onProgress?.(new de(`upgrader:multiplex-${t}-connection`));let d=await(t==="inbound"?this._multiplexInbound({...l,...s},this.streamMuxers,n):this._multiplexOutbound({...l,...s},this.streamMuxers,n));a=d.muxerFactory,i=d.stream}}catch(d){throw e.log.error("failed to upgrade inbound connection %s %a - %e",t==="inbound"?"from":"to",e.remoteAddr,d),d}finally{f.clear()}return await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",o,e),e.log("successfully upgraded %s connection",t),this._createConnection({cryptoProtocol:c,direction:t,maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:o,limits:n?.limits})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:s,upgradedConn:o,remotePeer:i,muxerFactory:a,limits:c}=e,u,f,l;a!=null&&(u=a.createStreamMuxer({direction:n,onIncomingStream:p=>{l!=null&&Promise.resolve().then(async()=>{let m=this.components.registrar.getProtocols(),g=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);se(1/0,g);let{stream:w,protocol:b}=await qs(p,m,{signal:g,log:p.log,yieldBytes:!1});if(l==null)return;l.log("incoming stream opened on %s",b);let y=Mx(b,this.components.registrar);if(Rm(b,"inbound",l)===y){let A=new Qs(`Too many inbound protocol streams for protocol "${b}" - limit ${y}`);throw p.abort(A),A}p.source=w.source,p.sink=w.sink,p.protocol=b,w.closeWrite!=null&&(p.closeWrite=w.closeWrite),w.closeRead!=null&&(p.closeRead=w.closeRead),w.close!=null&&(p.close=w.close),await this.components.peerStore.merge(i,{protocols:[b]}),this.components.metrics?.trackProtocolStream(p,l),this._onStream({connection:l,stream:p,protocol:b})}).catch(async m=>{l.log.error("error handling incoming stream id %s - %e",p.id,m),p.timeline.close==null&&await p.close()})}}),f=async(p,m={})=>{if(u==null)throw new Fr("Connection is not multiplexed");l.log.trace("starting new stream for protocols %s",p);let g=await u.newStream();l.log.trace("started new stream %s for protocols %s",g.id,p);try{if(m.signal==null){g.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",p);let A=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);se(1/0,A),m={...m,signal:A}}g.log.trace("selecting protocol from protocols %s",p);let{stream:w,protocol:b}=await Hs(g,p,{...m,log:g.log,yieldBytes:!0});g.log.trace("selected protocol %s",b);let y=Ux(b,this.components.registrar,m),x=Rm(b,"outbound",l);if(x>=y){let A=new eo(`Too many outbound protocol streams for protocol "${b}" - ${x}/${y}`);throw g.abort(A),A}return await this.components.peerStore.merge(i,{protocols:[b]}),g.source=w.source,g.sink=w.sink,g.protocol=b,w.closeWrite!=null&&(g.closeWrite=w.closeWrite),w.closeRead!=null&&(g.closeRead=w.closeRead),w.close!=null&&(g.close=w.close),this.components.metrics?.trackProtocolStream(g,l),g}catch(w){throw l.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",n==="inbound"?"from":"to",e.maConn.remoteAddr,p,w),g.timeline.close==null&&g.abort(w),w}},Promise.all([u.sink(o.source),o.sink(u.source)]).catch(p=>{l.log.error("error piping data through muxer - %e",p)}));let d=s.timeline;s.timeline=new Proxy(d,{set:(...p)=>(p[1]==="close"&&p[2]!=null&&d.close==null&&(async()=>{try{l.status==="open"&&await l.close()}catch(m){l.log.error("error closing connection after timeline close %e",m)}finally{this.events.safeDispatchEvent("connection:close",{detail:l})}})().catch(m=>{l.log.error("error thrown while dispatching connection:close event %e",m)}),Reflect.set(...p))}),s.timeline.upgraded=Date.now();let h=()=>{throw new Fr("Connection is not multiplexed")};return l=Dm({remoteAddr:s.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:s.timeline,multiplexer:u?.protocol,encryption:t,limits:c,logger:this.components.logger,newStream:f??h,getStreams:()=>u?.streams??[],close:async p=>{await u?.close(p),await s.close(p)},abort:p=>{s.abort(p),u?.abort(p)}}),this.events.safeDispatchEvent("connection:open",{detail:l}),l.__maConnTimeline=d,l}_onStream(e){let{connection:t,stream:n,protocol:s}=e,{handler:o,options:i}=this.components.registrar.getHandler(s);if(t.limits!=null&&i.runOnLimitedConnection!==!0)throw new Zr("Cannot open protocol stream on limited connection");o({connection:t,stream:n})}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let{stream:s,protocol:o}=await qs(e,n,{...t,log:e.log}),i=this.connectionEncrypters.get(o);if(i==null)throw new Vr(`no crypto module found for ${o}`);return e.log("encrypting inbound connection to %a using %s",e.remoteAddr,o),{...await i.secureInbound(s,t),protocol:o}}catch(s){throw e.log.error("encrypting inbound connection from %a failed",e.remoteAddr,s),new Vr(s.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let{stream:s,protocol:o}=await Hs(e,n,{...t,log:e.log,yieldBytes:!0}),i=this.connectionEncrypters.get(o);if(i==null)throw new Vr(`no crypto module found for ${o}`);return e.log("encrypting outbound connection to %a using %s",e.remoteAddr,o),{...await i.secureOutbound(s,t),protocol:o}}catch(s){throw e.log.error("encrypting outbound connection to %a failed",e.remoteAddr,s),new Vr(s.message)}}async _multiplexOutbound(e,t,n){let s=Array.from(t.keys());e.log("outbound selecting muxer %s",s);try{e.log.trace("selecting stream muxer from %s",s);let{stream:o,protocol:i}=await Hs(e,s,{...n,log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",i);let a=t.get(i);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new Fr(String(o))}}async _multiplexInbound(e,t,n){let s=Array.from(t.keys());e.log("inbound handling muxers %s",s);try{let{stream:o,protocol:i}=await qs(e,s,{...n,log:e.log}),a=t.get(i);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new Fr(String(o))}}};var Mm="2.4.2",Um="js-libp2p";var tc=class extends Et{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Et,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),u=this.dispatchEvent(new CustomEvent(a.type,{detail:a.detail}));return c||u},se(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Ui(),this.log=this.logger.forComponent("libp2p"),this.services={};let s=this.components=om({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:Um,version:Mm},logger:this.logger,events:t,datastore:e.datastore??new Ji,connectionGater:dm(e.connectionGater),dns:e.dns});this.peerStore=this.configureComponent("peerStore",Zp(s,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),s.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(u=>u.multiaddr)};s.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(s)),this.components.upgrader=new ec(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),streamMuxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,outboundUpgradeTimeout:e.connectionManager?.outboundUpgradeTimeout}),this.configureComponent("transportManager",new $a(this.components,e.transportManager)),this.configureComponent("connectionManager",new Da(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Oa(this.components,e.connectionMonitor)),this.configureComponent("registrar",new qa(this.components)),this.configureComponent("addressManager",new na(this.components,e.addresses));let o=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Ha(this.components,{routers:o}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new Fa(this.components,{routers:i})),this.configureComponent("randomWalk",new Ka(this.components)),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],u=c(this.components);if(u==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=u,this.configureComponent(a,u),u[nc]!=null&&(this.log("registering service %s for content routing",a),i.push(u[nc])),u[oc]!=null&&(this.log("registering service %s for peer routing",a),o.push(u[oc])),u[sc]!=null&&(this.log("registering service %s for peer discovery",a),u[sc].addEventListener?.("peer",f=>{this.#e(f)}))}im(s)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(e){throw this.log.error("An error occurred starting libp2p",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new Tr;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new R("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new R("no protocols were provided to open a stream");return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){ar(e)&&(e=bt(e.getPeerId()??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Ve([P("/pk/"),e.toMultihash().bytes]),s=await this.contentRouting.get(n,t),o=mn(s);return await this.peerStore.patch(e,{publicKey:o}),o}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async s=>{await this.components.registrar.handle(s,t,n)}))}async unhandle(e){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function Fx(r={}){r.privateKey??=await Hd("Ed25519");let e=new tc({...await _p(r),peerId:zd(r.privateKey)});return r.start!==!1&&await e.start(),e}return Ym(Vx);})();
|
|
6
|
+
`)}`:`${t} :`}};Sh=tr;T.Constructed=Sh;tr.NAME="CONSTRUCTED";var To=class extends Le{fromBER(e,t,n){return t}toBER(e){return ct}};To.override="EndOfContentValueBlock";var _h,Lo=class extends Ae{constructor(e={}){super(e,To),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};_h=Lo;T.EndOfContent=_h;Lo.NAME=es;var Ch,an=class extends Ae{constructor(e={}){super(e,Le),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Ch=an;T.Null=Ch;an.NAME="NULL";var Po=class extends Dt(Le){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=q.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=q.BufferSourceConverter.toUint8Array(e);return Nt(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,fl.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};Po.NAME="BooleanValueBlock";var Bh,No=class extends Ae{constructor(e={}){super(e,Po),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Bh=No;T.Boolean=Bh;No.NAME="BOOLEAN";var Do=class extends Dt(mt){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=mt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let o=0;o<this.value.length;o++){let i=this.value[o].constructor.NAME;if(i===es){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==xh)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?mt.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Do.NAME="OctetStringValueBlock";var Ih,Ro=class r extends Ae{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,o;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((o=n.value)===null||o===void 0)&&o.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Do),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let o=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(o.byteLength){let i=li(o,0,o.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?tr.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${q.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return q.BufferSourceConverter.concat(e)}};Ih=Ro;T.OctetString=Ih;Ro.NAME=xh;var Mo=class extends Dt(mt){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=mt.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===es){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==vh)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let u=a.valueBlock;if(this.unusedBits>0&&u.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=u.unusedBits}return s}let o=q.BufferSourceConverter.toUint8Array(e);if(!Nt(this,o,t,n))return-1;let i=o.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=li(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return mt.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return ct;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};Mo.NAME="BitStringValueBlock";var kh,cn=class extends Ae{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,o;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((o=n.value)===null||o===void 0)&&o.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Mo),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return tr.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};kh=cn;T.BitString=kh;cn.NAME=vh;var Th;function py(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,u=0,f=c<i?i:c,l=0;for(let d=f;d>=0;d--,l++){switch(!0){case l<a.length:u=o[i-l]+a[c-l]+t[0];break;default:u=o[i-l]+t[0]}switch(t[0]=u/10,!0){case l>=o.length:o=Ao(new Uint8Array([u%10]),o);break;default:o[i-l]=u%10}}return t[0]>0&&(o=Ao(t,o)),o}function bh(r){if(r>=Jn.length)for(let e=Jn.length;e<=r;e++){let t=new Uint8Array([0]),n=Jn[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let o=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=o[0]/10,n[s]=o[0]%10}t[0]>0&&(n=Ao(t,n)),Jn.push(n)}return Jn[r]}function my(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,u,f=0;for(let l=c;l>=0;l--,f++)switch(u=o[i-f]-a[c-f]-t,!0){case u<0:t=1,o[i-f]=u+10;break;default:t=0,o[i-f]=u}if(t>0)for(let l=i-c+1;l>=0;l--,f++)if(u=o[i-f]-t,u<0)t=1,o[i-f]=u+10;else{t=0,o[i-f]=u;break}return o.slice()}var ts=class extends Dt(Le){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=fl.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(gh(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let o=this.fromBER(e,t,n);if(o===-1)return o;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):s!==0&&i.length<s&&(s-i.length>1&&(s=i.length+1),this.valueHexView=i.subarray(s-i.length)),o}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,o=this.valueHexView,i="",a=!1;for(let c=o.byteLength-1;c>=0;c--){s=o[c];for(let u=0;u<8;u++){if((s&1)===1)switch(n){case e:t=my(bh(n),t),i="-";break;default:t=py(t,bh(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=wh.charAt(t[c]));return a===!1&&(i+=wh.charAt(0)),i}};Th=ts;ts.NAME="IntegerValueBlock";Object.defineProperty(Th.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var Lh,Se=class r extends Ae{constructor(e={}){super(e,ts),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return So(),BigInt(this.valueBlock.toString())}static fromBigInt(e){So();let t=BigInt(e),n=new Qn,s=t.toString(16).replace(/^-/,""),o=new Uint8Array(q.Convert.FromHex(s));if(t<0){let a=new Uint8Array(o.length+(o[0]&128?1:0));a[0]|=128;let u=BigInt(`0x${q.Convert.ToHex(a)}`)+t,f=q.BufferSourceConverter.toUint8Array(q.Convert.FromHex(u.toString(16)));f[0]|=128,n.write(f)}else o[0]&128&&n.write(new Uint8Array([0])),n.write(o);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};Lh=Se;T.Integer=Lh;Se.NAME="INTEGER";var Ph,Oo=class extends Se{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};Ph=Oo;T.Enumerated=Ph;Oo.NAME="ENUMERATED";var rs=class extends Dt(Le){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=q.BufferSourceConverter.toUint8Array(e);if(!Nt(this,s,t,n))return-1;let o=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=o[a]&127,this.blockLength++,!!(o[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,o[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=xr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){So();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,o=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)o[i]=s[i]|128;return o[this.blockLength-1]=s[this.blockLength-1],o.buffer}let t=er(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",ct;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),o=t.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n}toString(){let e="";if(this.isHexOnly)e=q.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};rs.NAME="sidBlock";var Uo=class extends Le{constructor({value:e=un,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let o=new rs;if(s=o.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=o.error,s;this.value.length===0&&(o.isFirstSid=!0),this.blockLength+=o.blockLength,n-=o.blockLength,this.value.push(o)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,ct;t.push(s)}return hl(t)}fromString(e){this.value=[];let t=0,n=0,s="",o=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,o){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;i.valueDec=c+a,o=!1}else{let i=new rs;if(s>Number.MAX_SAFE_INTEGER){So();let a=BigInt(s);i.valueBigInt=a}else if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,o=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Uo.NAME="ObjectIdentifierValueBlock";var Nh,ln=class extends Ae{constructor(e={}){super(e,Uo),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Nh=ln;T.ObjectIdentifier=Nh;ln.NAME="OBJECT IDENTIFIER";var ns=class extends Dt(Tt){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=q.BufferSourceConverter.toUint8Array(e);if(!Nt(this,s,t,n))return-1;let o=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=o[a]&127,this.blockLength++,!!(o[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,o[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=xr(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,o=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)o[i]=s[i]|128;return o[this.blockLength-1]=s[this.blockLength-1],o.buffer}let t=er(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",ct;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),o=t.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n.buffer}toString(){let e="";return this.isHexOnly?e=q.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};ns.NAME="relativeSidBlock";var Fo=class extends Le{constructor({value:e=un,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let o=new ns;if(s=o.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=o.error,s;this.blockLength+=o.blockLength,n-=o.blockLength,this.value.push(o)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let o=this.value[s].toBER(e);if(o.byteLength===0)return this.error=this.value[s].error,ct;n.push(o)}return hl(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let o=new ns;if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return!0;this.value.push(o)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Fo.NAME="RelativeObjectIdentifierValueBlock";var Dh,Vo=class extends Ae{constructor(e={}){super(e,Fo),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};Dh=Vo;T.RelativeObjectIdentifier=Dh;Vo.NAME="RelativeObjectIdentifier";var Rh,Lt=class extends tr{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};Rh=Lt;T.Sequence=Rh;Lt.NAME="SEQUENCE";var Mh,Ho=class extends tr{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};Mh=Ho;T.Set=Mh;Ho.NAME="SET";var Ko=class extends Dt(Le){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=un}toJSON(){return{...super.toJSON(),value:this.value}}};Ko.NAME="StringValueBlock";var qo=class extends Ko{};qo.NAME="SimpleStringValueBlock";var Fe=class extends Bo{constructor({...e}={}){super(e,qo)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,q.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};Fe.NAME="SIMPLE STRING";var $o=class extends Fe{fromBuffer(e){this.valueBlock.valueHexView=q.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=q.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=q.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(q.Convert.FromUtf8String(e)),this.valueBlock.value=e}};$o.NAME="Utf8StringValueBlock";var Oh,Pt=class extends $o{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};Oh=Pt;T.Utf8String=Oh;Pt.NAME="UTF8String";var zo=class extends Fe{fromBuffer(e){this.valueBlock.value=q.Convert.ToUtf16String(e),this.valueBlock.valueHexView=q.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(q.Convert.FromUtf16String(e))}};zo.NAME="BmpStringValueBlock";var Uh,Go=class extends zo{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};Uh=Go;T.BmpString=Uh;Go.NAME="BMPString";var Wo=class extends Fe{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let o=er(e.charCodeAt(s),8),i=new Uint8Array(o);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[s*4+c+a]=i[c]}this.valueBlock.value=e}};Wo.NAME="UniversalStringValueBlock";var Fh,jo=class extends Wo{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};Fh=jo;T.UniversalString=Fh;jo.NAME="UniversalString";var Vh,Zo=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};Vh=Zo;T.NumericString=Vh;Zo.NAME="NumericString";var Hh,Xo=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};Hh=Xo;T.PrintableString=Hh;Xo.NAME="PrintableString";var Kh,Yo=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};Kh=Yo;T.TeletexString=Kh;Yo.NAME="TeletexString";var qh,Jo=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};qh=Jo;T.VideotexString=qh;Jo.NAME="VideotexString";var $h,Qo=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};$h=Qo;T.IA5String=$h;Qo.NAME="IA5String";var zh,ei=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};zh=ei;T.GraphicString=zh;ei.NAME="GraphicString";var Gh,ss=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};Gh=ss;T.VisibleString=Gh;ss.NAME="VisibleString";var Wh,ti=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Wh=ti;T.GeneralString=Wh;ti.NAME="GeneralString";var jh,ri=class extends Fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};jh=ri;T.CharacterString=jh;ri.NAME="CharacterString";var Zh,os=class extends ss{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,q.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=ze(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=ze(this.month,2),t[2]=ze(this.day,2),t[3]=ze(this.hour,2),t[4]=ze(this.minute,2),t[5]=ze(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};Zh=os;T.UTCTime=Zh;os.NAME="UTCTime";var Xh,ni=class extends os{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",o=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let l=new Number(e[e.length-1]);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let l=1,d=n.indexOf("+"),h="";if(d===-1&&(d=n.indexOf("-"),l=-1),d!==-1){if(h=n.substring(d+1),n=n.substring(0,d),h.length!==2&&h.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(h.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=l*p,h.length===4){if(p=parseInt(h.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=l*p}}}let u=n.indexOf(".");if(u===-1&&(u=n.indexOf(",")),u!==-1){let l=new Number(`0${n.substring(u)}`);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");o=l.valueOf(),s=n.substring(0,u)}else s=n;switch(!0){case s.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,u!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=60*o;this.minute=Math.floor(l),l=60*(l-this.minute),this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case s.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=60*o;this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case s.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,u!==-1){let l=1e3*o;this.millisecond=Math.floor(l)}break;default:throw new Error("Wrong input string for conversion")}let f=i.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let l=1;l<f.length;l++)switch(l){case 1:this.year=parseInt(f[l],10);break;case 2:this.month=parseInt(f[l],10);break;case 3:this.day=parseInt(f[l],10);break;case 4:this.hour=parseInt(f[l],10)+a;break;case 5:this.minute=parseInt(f[l],10)+c;break;case 6:this.second=parseInt(f[l],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let l=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=l.getUTCFullYear(),this.month=l.getUTCMonth(),this.day=l.getUTCDay(),this.hour=l.getUTCHours(),this.minute=l.getUTCMinutes(),this.second=l.getUTCSeconds(),this.millisecond=l.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(ze(this.year,4)),t.push(ze(this.month,2)),t.push(ze(this.day,2)),t.push(ze(this.hour,2)),t.push(ze(this.minute,2)),t.push(ze(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(ze(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Xh=ni;T.GeneralizedTime=Xh;ni.NAME="GeneralizedTime";var Yh,si=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};Yh=si;T.DATE=Yh;si.NAME="DATE";var Jh,oi=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};Jh=oi;T.TimeOfDay=Jh;oi.NAME="TimeOfDay";var Qh,ii=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};Qh=ii;T.DateTime=Qh;ii.NAME="DateTime";var ed,ai=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};ed=ai;T.Duration=ed;ai.NAME="Duration";var td,ci=class extends Pt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};td=ci;T.TIME=td;ci.NAME="TIME";function W(r,e="utf8"){let t=wo[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function fn(r){if(isNaN(r)||r<=0)throw new R("random bytes length must be a Number bigger than 0");return Qr(r)}var is=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},as=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},ui=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var rd={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new ui("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var rr=rd;async function nd(r){let e=await rr.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await yy(e);return{privateKey:t[0],publicKey:t[1]}}async function sd(r,e){let t=await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await rr.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function od(r,e,t){let n=await rr.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return rr.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function yy(r){if(r.privateKey==null||r.publicKey==null)throw new R("Private and public key are required");return Promise.all([rr.get().subtle.exportKey("jwk",r.privateKey),rr.get().subtle.exportKey("jwk",r.publicKey)])}function ml(r){if(r.kty!=="RSA")throw new R("invalid key type");if(r.n==null)throw new R("invalid key modulus");return N(r.n,"base64url").length*8}var hn=class{type="RSA";_key;_raw;_multihash;constructor(e,t){this._key=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=cs.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return me.createV1(114,this._multihash)}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}verify(e,t){return od(this._key,t,e)}},ls=class{type="RSA";_key;_raw;publicKey;constructor(e,t){this._key=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=cs.jwkToPkcs1(this._key)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}sign(e){return sd(this._key,e)}};var fi=8192,gl=18;function id(r){let{result:e}=pl(r),t=e.valueBlock.value;return{n:gt(t[1]),e:gt(t[2]),d:gt(t[3]),p:gt(t[4]),q:gt(t[5]),dp:gt(t[6]),dq:gt(t[7]),qi:gt(t[8]),kty:"RSA",alg:"RS256"}}function wy(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new R("JWK was missing components");let t=new Lt({value:[new Se({value:0}),Se.fromBigInt(yt(N(r.n,"base64url"))),Se.fromBigInt(yt(N(r.e,"base64url"))),Se.fromBigInt(yt(N(r.d,"base64url"))),Se.fromBigInt(yt(N(r.p,"base64url"))),Se.fromBigInt(yt(N(r.q,"base64url"))),Se.fromBigInt(yt(N(r.dp,"base64url"))),Se.fromBigInt(yt(N(r.dq,"base64url"))),Se.fromBigInt(yt(N(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function ad(r){let{result:e}=pl(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:gt(t[0]),e:gt(t[1])}}function yl(r){if(r.n==null||r.e==null)throw new R("JWK was missing components");let t=new Lt({value:[new Lt({value:[new ln({value:"1.2.840.113549.1.1.1"}),new an]}),new cn({valueHex:new Lt({value:[Se.fromBigInt(yt(N(r.n,"base64url"))),Se.fromBigInt(yt(N(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function gt(r){let e=r.valueBlock.valueHexView;for(;e[0]===0;)e=e.subarray(1);return W(e,"base64url")}function yt(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}function cd(r){let e=id(r);return ld(e)}function wl(r){let e=ad(r);if(ml(e)>fi)throw new Hr("Key size is too large");let t=sn(pt.encode({Type:ye.RSA,Data:r})),n=tt(gl,t);return new hn(e,n)}function ld(r){if(ml(r)>fi)throw new R("Key size is too large");let e=ud(r),t=sn(pt.encode({Type:ye.RSA,Data:yl(e.publicKey)})),n=tt(gl,t);return new ls(e.privateKey,new hn(e.publicKey,n))}async function bl(r){if(r>fi)throw new R("Key size is too large");let e=await nd(r),t=sn(pt.encode({Type:ye.RSA,Data:yl(e.publicKey)})),n=tt(gl,t);return new ls(e.privateKey,new hn(e.publicKey,n))}function ud(r){if(r==null)throw new R("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var hi=class extends Jr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Tf(e);let n=Kn(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let s=this.blockLen,o=new Uint8Array(s);o.set(n.length>s?e.create().update(n).digest():n);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=e.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),o.fill(0)}update(e){return Yr(this),this.iHash.update(e),this}digestInto(e){Yr(this),Xr(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));let{oHash:t,iHash:n,finished:s,destroyed:o,blockLen:i,outputLen:a}=this;return e=e,e.finished=s,e.destroyed=o,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},xl=(r,e,t)=>new hi(r,e).update(t).digest();xl.create=(r,e)=>new hi(r,e);function fd(r){r.lowS!==void 0&&st("lowS",r.lowS),r.prehash!==void 0&&st("prehash",r.prehash)}function by(r){let e=zn(r);ht(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("invalid endomorphism, can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:xy,hexToBytes:vy}=io,vl=class extends Error{constructor(e=""){super(e)}},Rt={Err:vl,_tlv:{encode:(r,e)=>{let{Err:t}=Rt;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,s=fr(n);if(s.length/2&128)throw new t("tlv.encode: long form length too big");let o=n>127?fr(s.length/2|128):"";return fr(r)+o+s+e},decode(r,e){let{Err:t}=Rt,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let s=e[n++],o=!!(s&128),i=0;if(!o)i=s;else{let c=s&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let u=e.subarray(n,n+c);if(u.length!==c)throw new t("tlv.decode: length bytes not complete");if(u[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let f of u)i=i<<8|f;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=Rt;if(r<Mt)throw new e("integer: negative integers are not allowed");let t=fr(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Rt;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return xy(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Rt,s=typeof r=="string"?vy(r):r;tn(s);let{v:o,l:i}=n.decode(48,s);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,o),{v:u,l:f}=n.decode(2,c);if(f.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(u)}},hexFromSig(r){let{_tlv:e,_int:t}=Rt,n=e.encode(2,t.encode(r.r)),s=e.encode(2,t.encode(r.s)),o=n+s;return e.encode(48,o)}},Mt=BigInt(0),ve=BigInt(1),nE=BigInt(2),hd=BigInt(3),sE=BigInt(4);function Ey(r){let e=by(r),{Fp:t}=e,n=Xt(e.n,e.nBitLength),s=e.toBytes||((m,g,w)=>{let b=g.toAffine();return It(Uint8Array.from([4]),t.toBytes(b.x),t.toBytes(b.y))}),o=e.fromBytes||(m=>{let g=m.subarray(1),w=t.fromBytes(g.subarray(0,t.BYTES)),b=t.fromBytes(g.subarray(t.BYTES,2*t.BYTES));return{x:w,y:b}});function i(m){let{a:g,b:w}=e,b=t.sqr(m),y=t.mul(b,m);return t.add(t.add(y,t.mul(m,g)),w)}if(!t.eql(t.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function a(m){return qn(m,ve,e.n)}function c(m){let{allowedPrivateKeyLengths:g,nByteLength:w,wrapPrivateKey:b,n:y}=e;if(g&&typeof m!="bigint"){if(Wt(m)&&(m=Ct(m)),typeof m!="string"||!g.includes(m.length))throw new Error("invalid private key");m=m.padStart(w*2,"0")}let x;try{x=typeof m=="bigint"?m:Bt(ae("private key",m,w))}catch{throw new Error("invalid private key, expected hex or "+w+" bytes, got "+typeof m)}return b&&(x=te(x,y)),qe("private key",x,ve,y),x}function u(m){if(!(m instanceof d))throw new Error("ProjectivePoint expected")}let f=pr((m,g)=>{let{px:w,py:b,pz:y}=m;if(t.eql(y,t.ONE))return{x:w,y:b};let x=m.is0();g==null&&(g=x?t.ONE:t.inv(y));let A=t.mul(w,g),_=t.mul(b,g),v=t.mul(y,g);if(x)return{x:t.ZERO,y:t.ZERO};if(!t.eql(v,t.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}),l=pr(m=>{if(m.is0()){if(e.allowInfinityPoint&&!t.is0(m.py))return;throw new Error("bad point: ZERO")}let{x:g,y:w}=m.toAffine();if(!t.isValid(g)||!t.isValid(w))throw new Error("bad point: x or y not FE");let b=t.sqr(w),y=i(g);if(!t.eql(b,y))throw new Error("bad point: equation left != right");if(!m.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class d{constructor(g,w,b){if(this.px=g,this.py=w,this.pz=b,g==null||!t.isValid(g))throw new Error("x required");if(w==null||!t.isValid(w))throw new Error("y required");if(b==null||!t.isValid(b))throw new Error("z required");Object.freeze(this)}static fromAffine(g){let{x:w,y:b}=g||{};if(!g||!t.isValid(w)||!t.isValid(b))throw new Error("invalid affine point");if(g instanceof d)throw new Error("projective point not allowed");let y=x=>t.eql(x,t.ZERO);return y(w)&&y(b)?d.ZERO:new d(w,b,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(g){let w=t.invertBatch(g.map(b=>b.pz));return g.map((b,y)=>b.toAffine(w[y])).map(d.fromAffine)}static fromHex(g){let w=d.fromAffine(o(ae("pointHex",g)));return w.assertValidity(),w}static fromPrivateKey(g){return d.BASE.multiply(c(g))}static msm(g,w){return uo(d,n,g,w)}_setWindowSize(g){p.setWindowSize(this,g)}assertValidity(){l(this)}hasEvenY(){let{y:g}=this.toAffine();if(t.isOdd)return!t.isOdd(g);throw new Error("Field doesn't support isOdd")}equals(g){u(g);let{px:w,py:b,pz:y}=this,{px:x,py:A,pz:_}=g,v=t.eql(t.mul(w,_),t.mul(x,y)),C=t.eql(t.mul(b,_),t.mul(A,y));return v&&C}negate(){return new d(this.px,t.neg(this.py),this.pz)}double(){let{a:g,b:w}=e,b=t.mul(w,hd),{px:y,py:x,pz:A}=this,_=t.ZERO,v=t.ZERO,C=t.ZERO,k=t.mul(y,y),Q=t.mul(x,x),H=t.mul(A,A),V=t.mul(y,x);return V=t.add(V,V),C=t.mul(y,A),C=t.add(C,C),_=t.mul(g,C),v=t.mul(b,H),v=t.add(_,v),_=t.sub(Q,v),v=t.add(Q,v),v=t.mul(_,v),_=t.mul(V,_),C=t.mul(b,C),H=t.mul(g,H),V=t.sub(k,H),V=t.mul(g,V),V=t.add(V,C),C=t.add(k,k),k=t.add(C,k),k=t.add(k,H),k=t.mul(k,V),v=t.add(v,k),H=t.mul(x,A),H=t.add(H,H),k=t.mul(H,V),_=t.sub(_,k),C=t.mul(H,Q),C=t.add(C,C),C=t.add(C,C),new d(_,v,C)}add(g){u(g);let{px:w,py:b,pz:y}=this,{px:x,py:A,pz:_}=g,v=t.ZERO,C=t.ZERO,k=t.ZERO,Q=e.a,H=t.mul(e.b,hd),V=t.mul(w,x),D=t.mul(b,A),I=t.mul(y,_),P=t.add(w,b),S=t.add(x,A);P=t.mul(P,S),S=t.add(V,D),P=t.sub(P,S),S=t.add(w,y);let E=t.add(x,_);return S=t.mul(S,E),E=t.add(V,I),S=t.sub(S,E),E=t.add(b,y),v=t.add(A,_),E=t.mul(E,v),v=t.add(D,I),E=t.sub(E,v),k=t.mul(Q,S),v=t.mul(H,I),k=t.add(v,k),v=t.sub(D,k),k=t.add(D,k),C=t.mul(v,k),D=t.add(V,V),D=t.add(D,V),I=t.mul(Q,I),S=t.mul(H,S),D=t.add(D,I),I=t.sub(V,I),I=t.mul(Q,I),S=t.add(S,I),V=t.mul(D,S),C=t.add(C,V),V=t.mul(E,S),v=t.mul(P,v),v=t.sub(v,V),V=t.mul(P,D),k=t.mul(E,k),k=t.add(k,V),new d(v,C,k)}subtract(g){return this.add(g.negate())}is0(){return this.equals(d.ZERO)}wNAF(g){return p.wNAFCached(this,g,d.normalizeZ)}multiplyUnsafe(g){let{endo:w,n:b}=e;qe("scalar",g,Mt,b);let y=d.ZERO;if(g===Mt)return y;if(this.is0()||g===ve)return this;if(!w||p.hasPrecomputes(this))return p.wNAFCachedUnsafe(this,g,d.normalizeZ);let{k1neg:x,k1:A,k2neg:_,k2:v}=w.splitScalar(g),C=y,k=y,Q=this;for(;A>Mt||v>Mt;)A&ve&&(C=C.add(Q)),v&ve&&(k=k.add(Q)),Q=Q.double(),A>>=ve,v>>=ve;return x&&(C=C.negate()),_&&(k=k.negate()),k=new d(t.mul(k.px,w.beta),k.py,k.pz),C.add(k)}multiply(g){let{endo:w,n:b}=e;qe("scalar",g,ve,b);let y,x;if(w){let{k1neg:A,k1:_,k2neg:v,k2:C}=w.splitScalar(g),{p:k,f:Q}=this.wNAF(_),{p:H,f:V}=this.wNAF(C);k=p.constTimeNegate(A,k),H=p.constTimeNegate(v,H),H=new d(t.mul(H.px,w.beta),H.py,H.pz),y=k.add(H),x=Q.add(V)}else{let{p:A,f:_}=this.wNAF(g);y=A,x=_}return d.normalizeZ([y,x])[0]}multiplyAndAddUnsafe(g,w,b){let y=d.BASE,x=(_,v)=>v===Mt||v===ve||!_.equals(y)?_.multiplyUnsafe(v):_.multiply(v),A=x(this,w).add(x(g,b));return A.is0()?void 0:A}toAffine(g){return f(this,g)}isTorsionFree(){let{h:g,isTorsionFree:w}=e;if(g===ve)return!0;if(w)return w(d,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:g,clearCofactor:w}=e;return g===ve?this:w?w(d,this):this.multiplyUnsafe(e.h)}toRawBytes(g=!0){return st("isCompressed",g),this.assertValidity(),s(d,this,g)}toHex(g=!0){return st("isCompressed",g),Ct(this.toRawBytes(g))}}d.BASE=new d(e.Gx,e.Gy,t.ONE),d.ZERO=new d(t.ZERO,t.ONE,t.ZERO);let h=e.nBitLength,p=lo(d,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:d,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:a}}function Ay(r){let e=zn(r);return ht(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function dd(r){let e=Ay(r),{Fp:t,n}=e,s=t.BYTES+1,o=2*t.BYTES+1;function i(I){return te(I,n)}function a(I){return ao(I,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:u,weierstrassEquation:f,isWithinCurveOrder:l}=Ey({...e,toBytes(I,P,S){let E=P.toAffine(),B=t.toBytes(E.x),L=It;return st("isCompressed",S),S?L(Uint8Array.from([P.hasEvenY()?2:3]),B):L(Uint8Array.from([4]),B,t.toBytes(E.y))},fromBytes(I){let P=I.length,S=I[0],E=I.subarray(1);if(P===s&&(S===2||S===3)){let B=Bt(E);if(!qn(B,ve,t.ORDER))throw new Error("Point is not on curve");let L=f(B),M;try{M=t.sqrt(L)}catch($){let U=$ instanceof Error?": "+$.message:"";throw new Error("Point is not on curve"+U)}let O=(M&ve)===ve;return(S&1)===1!==O&&(M=t.neg(M)),{x:B,y:M}}else if(P===o&&S===4){let B=t.fromBytes(E.subarray(0,t.BYTES)),L=t.fromBytes(E.subarray(t.BYTES,2*t.BYTES));return{x:B,y:L}}else{let B=s,L=o;throw new Error("invalid Point, expected length of "+B+", or uncompressed "+L+", got "+P)}}}),d=I=>Ct(Zt(I,e.nByteLength));function h(I){let P=n>>ve;return I>P}function p(I){return h(I)?i(-I):I}let m=(I,P,S)=>Bt(I.slice(P,S));class g{constructor(P,S,E){this.r=P,this.s=S,this.recovery=E,this.assertValidity()}static fromCompact(P){let S=e.nByteLength;return P=ae("compactSignature",P,S*2),new g(m(P,0,S),m(P,S,2*S))}static fromDER(P){let{r:S,s:E}=Rt.toSig(ae("DER",P));return new g(S,E)}assertValidity(){qe("r",this.r,ve,n),qe("s",this.s,ve,n)}addRecoveryBit(P){return new g(this.r,this.s,P)}recoverPublicKey(P){let{r:S,s:E,recovery:B}=this,L=_(ae("msgHash",P));if(B==null||![0,1,2,3].includes(B))throw new Error("recovery id invalid");let M=B===2||B===3?S+e.n:S;if(M>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let O=B&1?"03":"02",K=c.fromHex(O+d(M)),$=a(M),U=i(-L*$),ee=i(E*$),ne=c.BASE.multiplyAndAddUnsafe(K,U,ee);if(!ne)throw new Error("point at infinify");return ne.assertValidity(),ne}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return hr(this.toDERHex())}toDERHex(){return Rt.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return hr(this.toCompactHex())}toCompactHex(){return d(this.r)+d(this.s)}}let w={isValidPrivateKey(I){try{return u(I),!0}catch{return!1}},normPrivateKeyToScalar:u,randomPrivateKey:()=>{let I=Ec(e.n);return qf(e.randomBytes(I),e.n)},precompute(I=8,P=c.BASE){return P._setWindowSize(I),P.multiply(BigInt(3)),P}};function b(I,P=!0){return c.fromPrivateKey(I).toRawBytes(P)}function y(I){let P=Wt(I),S=typeof I=="string",E=(P||S)&&I.length;return P?E===s||E===o:S?E===2*s||E===2*o:I instanceof c}function x(I,P,S=!0){if(y(I))throw new Error("first arg must be private key");if(!y(P))throw new Error("second arg must be public key");return c.fromHex(P).multiply(u(I)).toRawBytes(S)}let A=e.bits2int||function(I){if(I.length>8192)throw new Error("input is too large");let P=Bt(I),S=I.length*8-e.nBitLength;return S>0?P>>BigInt(S):P},_=e.bits2int_modN||function(I){return i(A(I))},v=$n(e.nBitLength);function C(I){return qe("num < 2^"+e.nBitLength,I,Mt,v),Zt(I,e.nByteLength)}function k(I,P,S=Q){if(["recovered","canonical"].some(xe=>xe in S))throw new Error("sign() legacy options not supported");let{hash:E,randomBytes:B}=e,{lowS:L,prehash:M,extraEntropy:O}=S;L==null&&(L=!0),I=ae("msgHash",I),fd(S),M&&(I=ae("prehashed msgHash",E(I)));let K=_(I),$=u(P),U=[C($),C(K)];if(O!=null&&O!==!1){let xe=O===!0?B(t.BYTES):O;U.push(ae("extraEntropy",xe))}let ee=It(...U),ne=K;function be(xe){let Ee=A(xe);if(!l(Ee))return;let Ce=a(Ee),Ke=c.BASE.multiply(Ee).toAffine(),De=i(Ke.x);if(De===Mt)return;let ft=i(Ce*i(ne+De*$));if(ft===Mt)return;let bt=(Ke.x===De?0:2)|Number(Ke.y&ve),Dn=ft;return L&&h(ft)&&(Dn=p(ft),bt^=1),new g(De,Dn,bt)}return{seed:ee,k2sig:be}}let Q={lowS:e.lowS,prehash:!1},H={lowS:e.lowS,prehash:!1};function V(I,P,S=Q){let{seed:E,k2sig:B}=k(I,P,S),L=e;return wc(L.hash.outputLen,L.nByteLength,L.hmac)(E,B)}c.BASE._setWindowSize(8);function D(I,P,S,E=H){let B=I;P=ae("msgHash",P),S=ae("publicKey",S);let{lowS:L,prehash:M,format:O}=E;if(fd(E),"strict"in E)throw new Error("options.strict was renamed to lowS");if(O!==void 0&&O!=="compact"&&O!=="der")throw new Error("format must be compact or der");let K=typeof B=="string"||Wt(B),$=!K&&!O&&typeof B=="object"&&B!==null&&typeof B.r=="bigint"&&typeof B.s=="bigint";if(!K&&!$)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let U,ee;try{if($&&(U=new g(B.r,B.s)),K){try{O!=="compact"&&(U=g.fromDER(B))}catch(bt){if(!(bt instanceof Rt.Err))throw bt}!U&&O!=="der"&&(U=g.fromCompact(B))}ee=c.fromHex(S)}catch{return!1}if(!U||L&&U.hasHighS())return!1;M&&(P=e.hash(P));let{r:ne,s:be}=U,xe=_(P),Ee=a(be),Ce=i(xe*Ee),Ke=i(ne*Ee),De=c.BASE.multiplyAndAddUnsafe(ee,Ce,Ke)?.toAffine();return De?i(De.x)===ne:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:x,sign:V,verify:D,ProjectivePoint:c,Signature:g,utils:w}}function Sy(r){return{hash:r,hmac:(e,...t)=>xl(r,e,fc(...t)),randomBytes:Qr}}function pd(r,e){let t=n=>dd({...r,...Sy(n)});return{...t(e),create:t}}var yd=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),md=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),_y=BigInt(1),El=BigInt(2),gd=(r,e)=>(r+e/El)/e;function Cy(r){let e=yd,t=BigInt(3),n=BigInt(6),s=BigInt(11),o=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),u=r*r*r%e,f=u*u*r%e,l=ie(f,t,e)*f%e,d=ie(l,t,e)*f%e,h=ie(d,El,e)*u%e,p=ie(h,s,e)*h%e,m=ie(p,o,e)*p%e,g=ie(m,a,e)*m%e,w=ie(g,c,e)*g%e,b=ie(w,a,e)*m%e,y=ie(b,t,e)*f%e,x=ie(y,i,e)*p%e,A=ie(x,n,e)*u%e,_=ie(A,El,e);if(!Al.eql(Al.sqr(_),r))throw new Error("Cannot find square root");return _}var Al=Xt(yd,void 0,void 0,{sqrt:Cy}),Ye=pd({a:BigInt(0),b:BigInt(7),Fp:Al,n:md,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=md,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-_y*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,i=BigInt("0x100000000000000000000000000000000"),a=gd(o*r,e),c=gd(-n*r,e),u=te(r-a*t-c*s,e),f=te(-a*n-c*o,e),l=u>i,d=f>i;if(l&&(u=e-u),d&&(f=e-f),u>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:l,k1:u,k2neg:d,k2:f}}}},sn),dE=BigInt(0);var pE=Ye.ProjectivePoint;function Ve(r,e){e==null&&(e=r.reduce((s,o)=>s+o.length,0));let t=Be(e),n=0;for(let s of r)t.set(s,n),n+=s.length;return t}function Sl(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function wd(r,e){let t=rn.digest(e instanceof Uint8Array?e:e.subarray());if(Sl(t))return t.then(({digest:n})=>Ye.sign(n,r).toDERRawBytes()).catch(n=>{throw new is(String(n))});try{return Ye.sign(t.digest,r).toDERRawBytes()}catch(n){throw new is(String(n))}}function bd(r,e,t){let n=rn.digest(t instanceof Uint8Array?t:t.subarray());if(Sl(n))return n.then(({digest:s})=>Ye.verify(e,s,r)).catch(s=>{throw new as(String(s))});try{return Ye.verify(e,n.digest,r)}catch(s){throw new as(String(s))}}var us=class{type="secp256k1";raw;_key;constructor(e){this._key=Ed(e),this.raw=xd(this._key)}toMultihash(){return St.digest(dt(this))}toCID(){return me.createV1(114,this.toMultihash())}toString(){return Y.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}verify(e,t){return bd(this._key,t,e)}},di=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=vd(e),this.publicKey=new us(t??Ad(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ue(this.raw,e.raw)}sign(e){return wd(this.raw,e)}};function _l(r){return new us(r)}async function Sd(){let r=By();return new di(r)}function xd(r){return Ye.ProjectivePoint.fromHex(r).toRawBytes(!0)}function vd(r){try{return Ye.getPublicKey(r,!0),r}catch(e){throw new Rn(String(e))}}function Ed(r){try{return Ye.ProjectivePoint.fromHex(r),r}catch(e){throw new Hr(String(e))}}function Ad(r){try{return Ye.getPublicKey(r,!0)}catch(e){throw new Rn(String(e))}}function By(){return Ye.utils.randomPrivateKey()}async function _d(r,e){if(r==="Ed25519")return eh();if(r==="secp256k1")return Sd();if(r==="RSA")return bl(e??2048);throw new qt}function dn(r){let{Type:e,Data:t}=pt.decode(r),n=t??new Uint8Array;switch(e){case ye.RSA:return wl(n);case ye.Ed25519:return kc(n);case ye.secp256k1:return _l(n);default:throw new qt}}function Cd(r){let{Type:e,Data:t}=pt.decode(r.digest),n=t??new Uint8Array;switch(e){case ye.Ed25519:return kc(n);case ye.secp256k1:return _l(n);default:throw new qt}}function dt(r){return pt.encode({Type:ye[r.type],Data:r.raw})}var Bd=Symbol.for("nodejs.util.inspect.custom"),Iy=114,fs=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[qs]=!0;toString(){return this.string==null&&(this.string=Y.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return me.createV1(Iy,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return ue(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return ue(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Bd](){return`PeerId(${this.toString()})`}},hs=class extends fs{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},ds=class extends fs{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},ps=class extends fs{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},ky=2336,ms=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=St.digest(N(this.url))}[Bd](){return`PeerId(${this.url})`}[qs]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return me.createV1(ky,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=W(e)),e.toString()===this.toString())}};var Ty=114,Id=2336;function wt(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=rt(Y.decode(`z${r}`));else{if(e==null)throw new R('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=rt(e.decode(r))}return pn(t)}function Cl(r){if(r.type==="Ed25519")return new ds({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new ps({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new hs({multihash:r.toCID().multihash,publicKey:r});throw new qt}function kd(r){return Cl(r.publicKey)}function pn(r){if(Py(r))return new hs({multihash:r});if(Ly(r))try{let e=Cd(r);if(e.type==="Ed25519")return new ds({multihash:r,publicKey:e});if(e.type==="secp256k1")return new ps({multihash:r,publicKey:e})}catch{let t=W(r.digest);return new ms(new URL(t))}throw new js("Supplied PeerID Multihash is invalid")}function pi(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==Ty&&r.code!==Id)throw new Ws("Supplied PeerID CID is invalid");if(r.code===Id){let e=W(r.multihash.digest);return new ms(new URL(e))}return pn(r.multihash)}function Ly(r){return r.code===St.code}function Py(r){return r.code===rn.code}var de=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var Il=lr(Ld(),1);var ys=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},kl=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Pd=r=>globalThis.DOMException===void 0?new kl(r):new DOMException(r),Nd=r=>{let e=r.reason===void 0?Pd("This operation was aborted."):r.reason;return e instanceof Error?e:Pd(e)};function ws(r,e){let{milliseconds:t,fallback:n,message:s,customTimers:o={setTimeout,clearTimeout}}=e,i,a,u=new Promise((f,l)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&l(Nd(h)),a=()=>{l(Nd(h))},h.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(f,l);return}let d=new ys;i=o.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(h){l(h)}return}typeof r.cancel=="function"&&r.cancel(),s===!1?f():s instanceof Error?l(s):(d.message=s??`Promise timed out after ${t} milliseconds`,l(d))},t),(async()=>{try{f(await r)}catch(h){l(h)}})()}).finally(()=>{u.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return u.clear=()=>{o.clearTimeout.call(void 0,i),i=void 0},u}function Tl(r,e,t){let n=0,s=r.length;for(;s>0;){let o=Math.trunc(s/2),i=n+o;t(r[i],e)<=0?(n=++i,s-=o+1):s=o}return n}var bs=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let s=Tl(this.#e,n,(o,i)=>i.priority-o.priority);this.#e.splice(s,0,n)}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var nr=class extends Il.default{#e;#t;#o=0;#a;#c;#p=0;#n;#l;#r;#m;#s=0;#u;#i;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:bs,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);this.#e=e.carryoverConcurrencyCount,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#c=e.interval,this.#r=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#i=e.autoStart===!1}get#b(){return this.#t||this.#o<this.#a}get#x(){return this.#s<this.#u}#v(){this.#s--,this.#f(),this.emit("next")}#E(){this.#w(),this.#y(),this.#l=void 0}get#A(){let e=Date.now();if(this.#n===void 0){let t=this.#p-e;if(t<0)this.#o=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#E()},t)),!0}return!1}#f(){if(this.#r.size===0)return this.#n&&clearInterval(this.#n),this.#n=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#i){let e=!this.#A;if(this.#b&&this.#x){let t=this.#r.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#t||this.#n!==void 0||(this.#n=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#o===0&&this.#s===0&&this.#n&&(clearInterval(this.#n),this.#n=void 0),this.#o=this.#e?this.#s:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#u=e,this.#h()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,s)=>{this.#r.enqueue(async()=>{this.#s++,this.#o++;try{t.signal?.throwIfAborted();let o=e({signal:t.signal});t.timeout&&(o=ws(Promise.resolve(o),{milliseconds:t.timeout})),t.signal&&(o=Promise.race([o,this.#S(t.signal)]));let i=await o;n(i),this.emit("completed",i)}catch(o){if(o instanceof ys&&!t.throwOnTimeout){n();return}s(o),this.emit("error",o)}finally{this.#v()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#i?(this.#i=!1,this.#h(),this):this}pause(){this.#i=!0}clear(){this.#r=new this.#m}async onEmpty(){this.#r.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#r.size<e||await this.#d("next",()=>this.#r.size<e)}async onIdle(){this.#s===0&&this.#r.size===0||await this.#d("idle")}async#d(e,t){return new Promise(n=>{let s=()=>{t&&!t()||(this.off(e,s),n())};this.on(e,s)})}get size(){return this.#r.size}sizeBy(e){return this.#r.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#i}};function gi(r){let e=[Ze.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var Ll=60;function yi(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:Ze[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:Ze[e.type],TTL:e.TTL??e.ttl??Ll,data:e.data instanceof Uint8Array?W(e.data):e.data}))}}var Ry=4;function Pl(r,e={}){let t=new nr({concurrency:e.queryConcurrency??Ry});return async(n,s={})=>{let o=new URLSearchParams;o.set("name",n),gi(s.types).forEach(a=>{o.append("type",Ze[a])}),s.onProgress?.(new de("dns:query",{detail:n}));let i=await t.add(async()=>{let a=await fetch(`${r}?${o}`,{headers:{accept:"application/dns-json"},signal:s?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=yi(await a.json());return s.onProgress?.(new de("dns:response",{detail:c})),c},{signal:s.signal});if(i==null)throw new Error("No DNS response received");return i}}function Dd(){return[Pl("https://cloudflare-dns.com/dns-query"),Pl("https://dns.google/resolve")]}var Od=lr(Md(),1);var Nl=class{lru;constructor(e){this.lru=(0,Od.default)(e)}get(e,t){let n=!0,s=[];for(let o of t){let i=this.getAnswers(e,o);if(i.length===0){n=!1;break}s.push(...i)}if(n)return yi({answers:s})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,s=this.lru.get(n);if(s!=null){let o=s.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:Ze[a.type]}));return o.length===0&&this.lru.remove(n),o}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,s=this.lru.get(n)??[];s.push({expires:Date.now()+(t.TTL??Ll)*1e3,value:t}),this.lru.set(n,s)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Ud(r){return new Nl(r)}var My=1e3,wi=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=Ud(e.cacheSize??My),Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Dd())}async query(e,t={}){let n=gi(t.types),s=t.cached!==!1?this.cache.get(e,n):void 0;if(s!=null)return t.onProgress?.(new de("dns:cache",{detail:s})),s;let o=`${e.split(".").pop()}.`,i=(this.resolvers[o]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let u=await c(e,{...t,types:n});for(let f of u.Answer)this.cache.add(e,f);return u}catch(u){a.push(u),t.onProgress?.(new de("dns:error",{detail:u}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${e} ${n} failed`)}};var Ze;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(Ze||(Ze={}));function Fd(r={}){return new wi(r)}var bi=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let o=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",u=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let l=this.readChar();if(l===void 0)return;let d=Number.parseInt(l,e);if(!Number.isNaN(d))return d});if(f===void 0)break;if(o*=e,o+=f,o>u||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:o})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[s]=i[0],t[s+1]=i[1],t[s+2]=i[2],t[s+3]=i[3],[s+4,!0]}let o=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(o===void 0)return[s,!1];t[s]=o>>8,t[s+1]=o&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let o=new Uint8Array(14),i=16-(n+2),[a]=e(o.subarray(0,i));return t.set(o.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Vd=45,Oy=15,mn=new bi;function xi(r){if(!(r.length>Oy))return mn.new(r).parseWith(()=>mn.readIPv4Addr())}function vi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Vd))return mn.new(r).parseWith(()=>mn.readIPv6Addr())}function vr(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Vd))return mn.new(r).parseWith(()=>mn.readIPAddr())}function Hd(r,e,t){let n=0;for(let s of r)if(!(n<e)){if(n>t)break;if(s!==255)return!1;n++}return!0}function Kd(r,e,t,n){let s=0;for(let o of r)if(!(s<t)){if(s>n)break;if(o!==e[s])return!1;s++}return!0}function Dl(r){switch(r.length){case Er:return r.join(".");case Ar:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function qd(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;n&128;)e++,n=n<<1;if(n&128)return-1;for(let s=t+1;s<r.length;s++)if(r[s]!=0)return-1;break}return e}function $d(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Er=4,Ar=16,eS=parseInt("0xFFFF",16),Uy=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function xs(r,e){e.length===Ar&&r.length===Er&&Hd(e,0,11)&&(e=e.slice(12)),e.length===Er&&r.length===Ar&&Kd(r,Uy,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=r[s]&e[s];return n}function zd(r,e){if(typeof e=="string"&&(e=vr(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function Rl(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Er,s=xi(e);if(s==null&&(n=Ar,s=vi(e),s==null))throw new Error("Failed to parse given CIDR: "+r);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=Ml(o,8*n);return{network:xs(s,i),mask:i}}function Ml(r,e){if(e!==8*Er&&e!==8*Ar)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let s=0;s<t;s++){if(r>=8){n[s]=255,r-=8;continue}n[s]=255-(255>>r),r=0}return n}var gn=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=Rl(e));else{let n=vr(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n.length*8){let o=vr(t);if(o==null)throw new Error("Failed to parse mask");this.mask=o}else this.mask=Ml(s,8*n.length);this.network=xs(n,this.mask)}}contains(e){return zd({network:this.network,mask:this.mask},e)}toString(){let e=qd(this.mask),t=e!==-1?String(e):$d(this.mask);return Dl(this.network)+"/"+t}};function lt(r){return!!xi(r)}function yn(r){return!!vi(r)}function Ei(r){return!!vr(r)}var Gd=lt,Fy=yn,Ol=function(r){let e=0;if(r=r.toString().trim(),Gd(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(Fy(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let o=Gd(t[n]),i;o&&(i=Ol(t[n]),t[n]=W(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,W(i.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let o=[n,1];for(n=9-t.length;n>0;n--)o.push("0");t.splice.apply(t,o)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let o=parseInt(t[n],16);s[e++]=o>>8&255,s[e++]=o&255}return s}throw new Error("invalid ip address")},Wd=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let o=0;o<t;o++)s.push(r[e+o]);return s.join(".")}if(t===16){let s=[];for(let o=0;o<t;o+=2)s.push(n.getUint16(e+o).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var wn={},Ul={},Hy=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];Hy.forEach(r=>{let e=Ky(...r);Ul[e.code]=e,wn[e.name]=e});function Ky(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function j(r){if(typeof r=="number"){if(Ul[r]!=null)return Ul[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(wn[r]!=null)return wn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var qy=j("ip4"),$y=j("ip6"),zy=j("ipcidr");function Kl(r,e){switch(j(r).code){case 4:case 41:return Wy(e);case 42:return Hl(e);case 43:return W(e,"base10");case 6:case 273:case 33:case 132:return Xd(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Hl(e);case 421:return Yy(e);case 444:return Zd(e);case 445:return Zd(e);case 466:return Xy(e);case 481:return globalThis.encodeURIComponent(Hl(e));default:return W(e,"base16")}}function ql(r,e){switch(j(r).code){case 4:return jd(e);case 41:return jd(e);case 42:return Vl(e);case 43:return N(e,"base10");case 6:case 273:case 33:case 132:return zl(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Vl(e);case 421:return jy(e);case 444:return Jy(e);case 445:return Qy(e);case 466:return Zy(e);case 481:return Vl(globalThis.decodeURIComponent(e));default:return N(e,"base16")}}function $l(r){let e,t;if(r.stringTuples().forEach(([n,s])=>{(n===qy.code||n===$y.code)&&(t=s),n===zy.code&&(e=s)}),e==null||t==null)throw new Error("Invalid multiaddr");return new gn(t,e)}var Fl=Object.values(jn).map(r=>r.decoder),Gy=function(){let r=Fl[0].or(Fl[1]);return Fl.slice(2).forEach(e=>r=r.or(e)),r}();function jd(r){if(!Ei(r))throw new Error("invalid ip address");return Ol(r)}function Wy(r){let e=Wd(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Ei(e))throw new Error("invalid ip address");return e}function zl(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function Xd(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Vl(r){let e=N(r),t=Uint8Array.from(ke(e.length));return Ve([t,e],t.length+e.length)}function Hl(r){let e=it(r);if(r=r.slice(pe(e)),r.length!==e)throw new Error("inconsistent lengths");return W(r)}function jy(r){let e;r[0]==="Q"||r[0]==="1"?e=rt(Y.decode(`z${r}`)).bytes:e=me.parse(r).multihash.bytes;let t=Uint8Array.from(ke(e.length));return Ve([t,e],t.length+e.length)}function Zy(r){let e=Gy.decode(r),t=Uint8Array.from(ke(e.length));return Ve([t,e],t.length+e.length)}function Xy(r){let e=it(r),t=r.slice(pe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+W(t,"base64url")}function Yy(r){let e=it(r),t=r.slice(pe(e));if(t.length!==e)throw new Error("inconsistent lengths");return W(t,"base58btc")}function Jy(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=We.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=zl(n);return Ve([t,s],t.length+s.length)}function Qy(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=We.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=zl(n);return Ve([t,s],t.length+s.length)}function Zd(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=W(e,"base32"),s=Xd(t);return`${n}:${s}`}function Yd(r){r=Gl(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let o=0;o<s.length;o++){let i=s[o],a=j(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(o++,o>=s.length)throw Qd("invalid address: "+r);if(a.path===!0){n=Gl(s.slice(o).join("/")),e.push([a.code,ql(a.code,n)]),t.push([a.code,n]);break}let c=ql(a.code,s[o]);e.push([a.code,c]),t.push([a.code,Kl(a.code,c)])}return{string:Jd(t),bytes:jl(e),tuples:e,stringTuples:t,path:n}}function Wl(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let o=it(r,s),i=pe(o),a=j(o),c=ew(a,r.slice(s+i));if(c===0){e.push([o]),t.push([o]),s+=i;continue}let u=r.slice(s+i,s+i+c);if(s+=c+i,s>r.length)throw Qd("Invalid address Uint8Array: "+W(r,"base16"));e.push([o,u]);let f=Kl(o,u);if(t.push([o,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:Jd(t),tuples:e,stringTuples:t,path:n}}function Jd(r){let e=[];return r.map(t=>{let n=j(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),Gl(e.join("/"))}function jl(r){return Ve(r.map(e=>{let t=j(e[0]),n=Uint8Array.from(ke(t.code));return e.length>1&&e[1]!=null&&(n=Ve([n,e[1]])),n}))}function ew(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=it(e instanceof Uint8Array?e:Uint8Array.from(e));return t+pe(t)}}function Gl(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function Qd(r){return new Error("Error parsing address: "+r)}var tw=Symbol.for("nodejs.util.inspect.custom"),Xl=Symbol.for("@multiformats/js-multiaddr/multiaddr"),rw=[j("dns").code,j("dns4").code,j("dns6").code,j("dnsaddr").code],Zl=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},Ai=class r{bytes;#e;#t;#o;#a;[Xl]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Wl(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=Yd(e)}else if(sr(e))t=Wl(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#o=t.stringTuples,this.#a=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,o="",i=j("tcp"),a=j("udp"),c=j("ip4"),u=j("ip6"),f=j("dns6"),l=j("ip6zone");for(let[h,p]of this.stringTuples())h===l.code&&(o=`%${p??""}`),rw.includes(h)&&(t=i.name,s=443,n=`${p??""}${o}`,e=h===f.code?6:4),(h===i.code||h===a.code)&&(t=j(h).name,s=parseInt(p??"")),(h===c.code||h===u.code)&&(t=j(h).name,n=`${p??""}${o}`,e=h===u.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#t.map(([e])=>Object.assign({},j(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>j(e).name)}tuples(){return this.#t.map(([e,t])=>t==null?[e]:[e,t])}stringTuples(){return this.#o.map(([e,t])=>t==null?[e]:[e,t])}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(jl(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===wn.p2p.code&&e.push([n,s]),n===wn["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?W(Y.decode(`z${n}`),"base58btc"):W(me.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(e){return ue(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(o=>o.resolvable);if(t==null)return[this];let n=bn.get(t.name);if(n==null)throw new Zl(`no available resolver for ${t.name}`);return(await n(this,e)).map(o=>Z(o))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[tw](){return`Multiaddr(${this.#e})`}};var bn=new Map;function sr(r){return!!r?.[Xl]}function Z(r){return new Ai(r)}var nw=32,{code:sw}=j("dnsaddr"),Yl=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}},Sr=async function(e,t={}){let n=t.maxRecursiveDepth??nw;if(n===0)throw new Yl("Max recursive depth reached");let[,s]=e.stringTuples().find(([u])=>u===sw)??[],i=await(t?.dns??Fd()).query(`_dnsaddr.${s}`,{signal:t?.signal,types:[Ze.TXT]}),a=e.getPeerId(),c=[];for(let u of i.Answer){let f=u.data.replace(/["']/g,"").trim().split("=")[1];if(f==null||a!=null&&!f.includes(a))continue;let l=Z(f);if(f.startsWith("/dnsaddr")){let d=await l.resolve({...t,maxRecursiveDepth:n-1});c.push(...d.map(h=>h.toString()))}else c.push(l.toString())}return c};var cp=lr(ap(),1),Ci=cp.default;var uw={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Sr}},transportManager:{faultTolerance:Ht.FATAL_ALL}};async function lp(r){let e=Ci(uw,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new R("Private network is enforced, but no protector was provided");return e}function fw(r,e){try{if(typeof r=="string"&&r.length>0)return hw(r);if(typeof r=="number"&&isFinite(r))return e?.long?pw(r):dw(r);throw new Error("Value is not a string or number.")}catch(t){let n=mw(t)?`${t.message}. value=${JSON.stringify(r)}`:"An unknown error has occured.";throw new Error(n)}}function hw(r){if(r=String(r),r.length>100)throw new Error("Value exceeds the maximum length of 100 characters.");let e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(!e)return NaN;let t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*315576e5;case"weeks":case"week":case"w":return t*6048e5;case"days":case"day":case"d":return t*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return t*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return t*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return t*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:throw new Error(`The unit ${n} was matched, but no matching case exists.`)}}var Ii=fw;function dw(r){let e=Math.abs(r);return e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function pw(r){let e=Math.abs(r);return e>=864e5?Bi(r,e,864e5,"day"):e>=36e5?Bi(r,e,36e5,"hour"):e>=6e4?Bi(r,e,6e4,"minute"):e>=1e3?Bi(r,e,1e3,"second"):`${r} ms`}function Bi(r,e,t,n){let s=e>=t*1.5;return`${Math.round(r/t)} ${n}${s?"s":""}`}function mw(r){return typeof r=="object"&&r!==null&&"message"in r}function Ql(r){t.debug=t,t.default=t,t.coerce=c,t.disable=o,t.enable=s,t.enabled=i,t.humanize=Ii,t.destroy=u,Object.keys(r).forEach(f=>{t[f]=r[f]}),t.names=[],t.skips=[],t.formatters={};function e(f){let l=0;for(let d=0;d<f.length;d++)l=(l<<5)-l+f.charCodeAt(d),l|=0;return t.colors[Math.abs(l)%t.colors.length]}t.selectColor=e;function t(f){let l,d=null,h,p;function m(...g){if(!m.enabled)return;let w=m,b=Number(new Date),y=b-(l||b);w.diff=y,w.prev=l,w.curr=b,l=b,g[0]=t.coerce(g[0]),typeof g[0]!="string"&&g.unshift("%O");let x=0;g[0]=g[0].replace(/%([a-zA-Z%])/g,(_,v)=>{if(_==="%%")return"%";x++;let C=t.formatters[v];if(typeof C=="function"){let k=g[x];_=C.call(w,k),g.splice(x,1),x--}return _}),t.formatArgs.call(w,g),(w.log||t.log).apply(w,g)}return m.namespace=f,m.useColors=t.useColors(),m.color=t.selectColor(f),m.extend=n,m.destroy=t.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==t.namespaces&&(h=t.namespaces,p=t.enabled(f)),p),set:g=>{d=g}}),typeof t.init=="function"&&t.init(m),m}function n(f,l){let d=t(this.namespace+(typeof l>"u"?":":l)+f);return d.log=this.log,d}function s(f){t.save(f),t.namespaces=f,t.names=[],t.skips=[];let l,d=(typeof f=="string"?f:"").split(/[\s,]+/),h=d.length;for(l=0;l<h;l++)d[l]&&(f=d[l].replace(/\*/g,".*?"),f[0]==="-"?t.skips.push(new RegExp("^"+f.substr(1)+"$")):t.names.push(new RegExp("^"+f+"$")))}function o(){let f=[...t.names.map(a),...t.skips.map(a).map(l=>"-"+l)].join(",");return t.enable(""),f}function i(f){if(f[f.length-1]==="*")return!0;let l,d;for(l=0,d=t.skips.length;l<d;l++)if(t.skips[l].test(f))return!1;for(l=0,d=t.names.length;l<d;l++)if(t.names[l].test(f))return!0;return!1}function a(f){return f.toString().substring(2,f.toString().length-2).replace(/\.\*\?$/,"*")}function c(f){return f instanceof Error?f.stack??f.message:f}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var ki=Ew(),gw=["#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"];function yw(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function ww(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Ii(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!=="%%"&&(t++,s==="%c"&&(n=t))}),r.splice(n,0,e)}var bw=console.debug??console.log??(()=>{});function xw(r){try{r?ki?.setItem("debug",r):ki?.removeItem("debug")}catch{}}function vw(){let r;try{r=ki?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function Ew(){try{return localStorage}catch{}}function Aw(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var up=Ql({formatArgs:ww,save:xw,load:vw,useColors:yw,setupFormatters:Aw,colors:gw,storage:ki,log:bw});var Ge=up;Ge.formatters.b=r=>r==null?"undefined":Y.baseEncode(r);Ge.formatters.t=r=>r==null?"undefined":We.baseEncode(r);Ge.formatters.m=r=>r==null?"undefined":zc.baseEncode(r);Ge.formatters.p=r=>r==null?"undefined":r.toString();Ge.formatters.c=r=>r==null?"undefined":r.toString();Ge.formatters.k=r=>r==null?"undefined":r.toString();Ge.formatters.a=r=>r==null?"undefined":r.toString();Ge.formatters.e=r=>r==null?"undefined":fp(r.stack)??fp(r.message)??r.toString();function Sw(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function Ti(){return{forComponent(r){return _w(r)}}}function _w(r){let e=Sw(`${r}:trace`);return Ge.enabled(`${r}:trace`)&&Ge.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=Ge(`${r}:trace`)),Object.assign(Ge(r),{error:Ge(`${r}:error`),trace:e})}function fp(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function _r(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}function Li(r){let e=rt(Y.decode(`z${r}`));return pn(e)}var Ot=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return _r(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return _r(this.map.values(),e=>e.key)}values(){return _r(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Cr=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return _r(this.set.entries(),e=>{let t=Li(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Li(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return _r(this.set.values(),e=>Li(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var gp=Symbol.for("@achingbrain/uint8arraylist");function mp(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function Ni(r){return!!r?.[gp]}var we=class r{bufs;length;[gp]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Ni(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Ni(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=mp(this.bufs,e);return t.buf[t.index]}set(e,t){let n=mp(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Ni(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return Ve(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:Ve(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),o=new r;return o.length=s,o.bufs=[...n],o}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let o=0;o<this.bufs.length;o++){let i=this.bufs[o],a=s,c=a+i.byteLength;if(s=c,e>=c)continue;let u=e>=a&&e<c,f=t>a&&t<=c;if(u&&f){if(e===a&&t===c){n.push(i);break}let l=e-a;n.push(i.subarray(l,l+(t-e)));break}if(u){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(f){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Ni(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let o=256,i=new Int32Array(o);for(let l=0;l<o;l++)i[l]=-1;for(let l=0;l<s;l++)i[n[l]]=l;let a=i,c=this.byteLength-n.byteLength,u=n.byteLength-1,f;for(let l=t;l<=c;l+=f){f=0;for(let d=u;d>=0;d--){let h=this.get(l+d);if(n[d]!==h){f=Math.max(1,d-a[h]);break}}if(f===0)return l}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Be(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Be(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=fe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=fe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=fe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!ue(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,o)=>s+o.byteLength,0)),n.length=t,n}};var eu=64,ut=class{fp;h;seed;constructor(e,t,n,s=2){if(s>eu)throw new TypeError("Invalid Fingerprint Size");let o=t.hashV(e,n),i=fe(s);for(let a=0;a<i.length;a++)i[a]=o[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ue(this.fp,e.fp):!1}};function Br(r,e){return Math.floor(Math.random()*(e-r))+r}var Ir=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof ut))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof ut))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof ut))throw new TypeError("Invalid Fingerprint");let t=Br(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof ut))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var tu={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},yp={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},wp=new globalThis.TextEncoder;function Cw(r,e){let t=tu[e],n=yp[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function Bw(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=tu[e],s=yp[e],o=r;for(;o.length>0;){let i=wp.encodeInto(o,t);o=o.slice(i.read);for(let a=0;a<i.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function ru(r,{size:e=32,utf8Buffer:t}={}){if(!tu[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return Bw(r,e,t);r=wp.encode(r)}return Cw(r,e)}var Iw=lr(pp(),1);var Es={hash:r=>Number(ru(r,{size:32})),hashV:(r,e)=>kw(Es.hash(r,e))};function kw(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),N(e,"base16")}var Tw=500,As=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Es,this.seed=e.seed??Br(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=N(e));let t=new ut(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new Ir(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new Ir(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let o=[n,s],i=o[Br(0,o.length-1)];this.buckets[i]==null&&(this.buckets[i]=new Ir(this.bucketSize));for(let a=0;a<Tw;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new Ir(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=N(e));let t=new ut(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let o=(n^t.hash())%this.filterSize;return this.buckets[o]?.has(t)??!1}remove(e){typeof e=="string"&&(e=N(e));let t=new ut(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let o=(n^t.hash())%this.filterSize,i=this.buckets[o]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Lw={1:.5,2:.84,4:.95,8:.98};function Pw(r=.001){return r>.002?2:r>1e-5?4:8}function bp(r,e=.001){let t=Pw(e),n=Lw[t],s=Math.round(r/n),o=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),eu);return{filterSize:s,bucketSize:t,fingerprintSize:o}}var Di=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Es,this.seed=e.seed??Br(0,Math.pow(2,10)),this.filterSeries=[new As({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=N(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new As({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=N(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=N(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Ss(r,e=.001,t){return new Di({...bp(r,e),...t??{}})}var _s;(function(r){let e;r.codec=()=>(e==null&&(e=Ue((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={publicKey:fe(0),payloadType:fe(0),payload:fe(0),signature:fe(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.publicKey=t.bytes();break}case 2:{o.payloadType=t.bytes();break}case 3:{o.payload=t.bytes();break}case 5:{o.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(_s||(_s={}));var Ri=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var En=class r{static createFromProtobuf=async e=>{let t=_s.decode(e),n=dn(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t==null)throw new Error("Missing private key");let n=e.domain,s=e.codec,o=e.marshal(),i=xp(n,s,o),a=await t.sign(i.subarray());return new r({publicKey:t.publicKey,payloadType:s,payload:o,signature:a})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new Ri("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:s,signature:o}=e;this.publicKey=t,this.payloadType=n,this.payload=s,this.signature=o}marshal(){return this.marshaled==null&&(this.marshaled=_s.encode({publicKey:dt(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return ue(this.marshal(),e.marshal())}async validate(e){let t=xp(e,this.payloadType,this.payload);return this.publicKey.verify(t.subarray(),this.signature)}},xp=(r,e,t)=>{let n=N(r),s=ke(n.byteLength),o=ke(e.length),i=ke(t.length);return new we(s,n,o,e,i,t)};function vp(r,e){let t=(n,s)=>n.toString().localeCompare(s.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,s)=>e[s].equals(n)))}var Ep="libp2p-peer-record",Ap=Uint8Array.from([3,1]);var Cs;(function(r){let e;(function(n){let s;n.codec=()=>(s==null&&(s=Ue((o,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),o.multiaddr!=null&&o.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(o.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(o,i,a={})=>{let c={multiaddr:fe(0)},u=i==null?o.len:o.pos+i;for(;o.pos<u;){let f=o.uint32();switch(f>>>3){case 1:{c.multiaddr=o.bytes();break}default:{o.skipType(f&7);break}}}return c})),s),n.encode=o=>Oe(o,n.codec()),n.decode=(o,i)=>Me(o,n.codec(),i)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=Ue((n,s,o={})=>{if(o.lengthDelimited!==!1&&s.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(s.uint32(10),s.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(s.uint32(16),s.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)s.uint32(26),r.AddressInfo.codec().encode(i,s);o.lengthDelimited!==!1&&s.ldelim()},(n,s,o={})=>{let i={peerId:fe(0),seq:0n,addresses:[]},a=s==null?n.len:n.pos+s;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(o.limits?.addresses!=null&&i.addresses.length===o.limits.addresses)throw new br('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:o.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),t),r.encode=n=>Oe(n,r.codec()),r.decode=(n,s)=>Me(n,r.codec(),s)})(Cs||(Cs={}));var kr=class r{static createFromProtobuf=e=>{let t=Cs.decode(e),n=pn(rt(t.peerId)),s=(t.addresses??[]).map(i=>Z(i.multiaddr)),o=t.seq;return new r({peerId:n,multiaddrs:s,seqNumber:o})};static DOMAIN=Ep;static CODEC=Ap;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:s}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=s??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Cs.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!vp(this.multiaddrs,e.multiaddrs))}};function Nw(r){return r[Symbol.asyncIterator]!=null}function Dw(r){if(Nw(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Bs=Dw;var or={},An=r=>{r.addEventListener("message",e=>{An.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{An.dispatchEvent("message",r,e)})};An.addEventListener=(r,e)=>{or[r]==null&&(or[r]=[]),or[r].push(e)};An.removeEventListener=(r,e)=>{or[r]!=null&&(or[r]=or[r].filter(t=>t===e))};An.dispatchEvent=function(r,e,t){or[r]!=null&&or[r].forEach(n=>n(e,t))};var nu=An;var su="lock:worker:request-read",ou="lock:worker:release-read",iu="lock:master:grant-read",au="lock:worker:request-write",cu="lock:worker:release-write",lu="lock:master:grant-write";var Sp=(r=21)=>Math.random().toString().substring(2);var _p=(r,e,t,n,s)=>(o,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{o.postMessage({type:s,name:a.name,identifier:a.identifier}),await new Promise(c=>{let u=f=>{if(f?.data==null)return;let l={type:f.data.type,name:f.data.name,identifier:f.data.identifier};l.type===n&&l.identifier===a.identifier&&(o.removeEventListener("message",u),c())};o.addEventListener("message",u)})}}}))},Cp=(r,e,t,n)=>async()=>{let s=Sp();return globalThis.postMessage({type:e,identifier:s,name:r}),new Promise(o=>{let i=a=>{if(a?.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===s&&(globalThis.removeEventListener("message",i),o(()=>{globalThis.postMessage({type:n,identifier:s,name:r})}))};globalThis.addEventListener("message",i)})},Rw={singleProcess:!1},Bp=r=>{if(r=Object.assign({},Rw,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return nu.addEventListener("message",_p(t,"requestReadLock",su,ou,iu)),nu.addEventListener("message",_p(t,"requestWriteLock",au,cu,lu)),t}return{isWorker:!0,readLock:t=>Cp(t,su,iu,ou),writeLock:t=>Cp(t,au,lu,cu)}};var Tr={},ir;async function uu(r,e){let t,n=new Promise(s=>{t=s});return r.add(async()=>ws((async()=>{await new Promise(s=>{t(()=>{s()})})})(),{milliseconds:e.timeout})),n}var Mw=(r,e)=>{if(ir.isWorker===!0)return{readLock:ir.readLock(r,e),writeLock:ir.writeLock(r,e)};let t=new nr({concurrency:1}),n;return{async readLock(){if(n!=null)return uu(n,e);n=new nr({concurrency:e.concurrency,autoStart:!1});let s=n,o=uu(n,e);return t.add(async()=>{s.start(),await s.onIdle().then(()=>{n===s&&(n=null)})}),o},async writeLock(){return n=null,uu(t,e)}}},Ow={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function fu(r){let e=Object.assign({},Ow,r);return ir==null&&(ir=Bp(e),ir.isWorker!==!0&&(ir.addEventListener("requestReadLock",t=>{Tr[t.data.name]!=null&&Tr[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),ir.addEventListener("requestWriteLock",async t=>{Tr[t.data.name]!=null&&Tr[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),Tr[e.name]==null&&(Tr[e.name]=Mw(e.name,e)),Tr[e.name]}var Sn;(function(r){let e;(function(s){let o;s.codec=()=>(o==null&&(o=Ue((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:"",value:fe(0)},f=a==null?i.len:i.pos+a;for(;i.pos<f;){let l=i.uint32();switch(l>>>3){case 1:{u.key=i.string();break}case 2:{u.value=i.bytes();break}default:{i.skipType(l&7);break}}}return u})),o),s.encode=i=>Oe(i,s.codec()),s.decode=(i,a)=>Me(i,s.codec(),a)})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(s){let o;s.codec=()=>(o==null&&(o=Ue((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),Oi.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:""},f=a==null?i.len:i.pos+a;for(;i.pos<f;){let l=i.uint32();switch(l>>>3){case 1:{u.key=i.string();break}case 2:{u.value=Oi.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(l&7);break}}}return u})),o),s.encode=i=>Oe(i,s.codec()),s.decode=(i,a)=>Me(i,s.codec(),a)})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=Ue((s,o,i={})=>{if(i.lengthDelimited!==!1&&o.fork(),s.addresses!=null)for(let a of s.addresses)o.uint32(10),Mi.codec().encode(a,o);if(s.protocols!=null)for(let a of s.protocols)o.uint32(18),o.string(a);if(s.publicKey!=null&&(o.uint32(34),o.bytes(s.publicKey)),s.peerRecordEnvelope!=null&&(o.uint32(42),o.bytes(s.peerRecordEnvelope)),s.metadata!=null&&s.metadata.size!==0)for(let[a,c]of s.metadata.entries())o.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},o);if(s.tags!=null&&s.tags.size!==0)for(let[a,c]of s.tags.entries())o.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},o);i.lengthDelimited!==!1&&o.ldelim()},(s,o,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=o==null?s.len:s.pos+o;for(;s.pos<c;){let u=s.uint32();switch(u>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new br('Decode error - map field "addresses" had too many elements');a.addresses.push(Mi.codec().decode(s,s.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new br('Decode error - map field "protocols" had too many elements');a.protocols.push(s.string());break}case 4:{a.publicKey=s.bytes();break}case 5:{a.peerRecordEnvelope=s.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Yn('Decode error - map field "metadata" had too many elements');let f=r.Peer$metadataEntry.codec().decode(s,s.uint32());a.metadata.set(f.key,f.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Yn('Decode error - map field "tags" had too many elements');let f=r.Peer$tagsEntry.codec().decode(s,s.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(f.key,f.value);break}default:{s.skipType(u&7);break}}}return a})),n),r.encode=s=>Oe(s,r.codec()),r.decode=(s,o)=>Me(s,r.codec(),o)})(Sn||(Sn={}));var Mi;(function(r){let e;r.codec=()=>(e==null&&(e=Ue((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={multiaddr:fe(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.multiaddr=t.bytes();break}case 2:{o.isCertified=t.bool();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(Mi||(Mi={}));var Oi;(function(r){let e;r.codec=()=>(e==null&&(e=Ue((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let o={value:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{o.value=t.uint32();break}case 2:{o.expiry=t.uint64();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>Oe(t,r.codec()),r.decode=(t,n)=>Me(t,r.codec(),n)})(Oi||(Oi={}));function _n(r,e){let t=Sn.decode(e);if(t.publicKey!=null&&r.publicKey==null){let o=dn(t.publicKey);r=Cl(o)}let n=new Map,s=BigInt(Date.now());for(let[o,i]of t.tags.entries())i.expiry!=null&&i.expiry<s||n.set(o,i);return{...t,id:r,addresses:t.addresses.map(({multiaddr:o,isCertified:i})=>({multiaddr:Z(o),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var Ut="/",Ip=new TextEncoder().encode(Ut),Ui=Ip[0],Lr=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=N(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Ui)throw new Error("Invalid key")}toString(e="utf8"){return W(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Ut))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=Ip),this._buf[0]!==Ui){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Ui,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Ui;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let s=0;s<t.length;s++){if(n.length<s+1)return!1;let o=t[s],i=n[s];if(o<i)return!0;if(o>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Ut).slice(1)}type(){return Uw(this.baseNamespace())}name(){return Fw(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Ut)||(e+=Ut),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Ut):new r(e.slice(0,-1).join(Ut))}child(e){return this.toString()===Ut?e:e.toString()===Ut?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...Vw(e.map(t=>t.namespaces()))])}};function Uw(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function Fw(r){let e=r.split(":");return e[e.length-1]}function Vw(r){return[].concat(...r)}var hu="/peers/";function Cn(r){if(!$s(r)||r.type==null)throw new R("Invalid PeerId");let e=r.toCID().toString();return new Lr(`${hu}${e}`)}async function kp(r,e,t){let n=new Map;for(let s of t){if(s==null)continue;if(s.multiaddr instanceof Uint8Array&&(s.multiaddr=Z(s.multiaddr)),!sr(s.multiaddr))throw new R("Multiaddr was invalid");if(!await e(r,s.multiaddr))continue;let o=s.isCertified??!1,i=s.multiaddr.toString(),a=n.get(i);a!=null?s.isCertified=a.isCertified||o:n.set(i,{multiaddr:s.multiaddr,isCertified:o})}return[...n.values()].sort((s,o)=>s.multiaddr.toString().localeCompare(o.multiaddr.toString())).map(({isCertified:s,multiaddr:o})=>({isCertified:s,multiaddr:o.bytes}))}async function Vi(r,e,t,n){if(e==null)throw new R("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new R("publicKey bytes do not match peer id publicKey bytes");let s=n.existingPeer;if(s!=null&&!r.equals(s.id))throw new R("peer id did not match existing peer id");let o=s?.addresses??[],i=new Set(s?.protocols??[]),a=s?.metadata??new Map,c=s?.tags??new Map,u=s?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(o=[],e.multiaddrs!=null&&o.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&o.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=Fi(d,{validate:Tp})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=Fi(d,{validate:Lp,map:Pp})}e.peerRecordEnvelope!=null&&(u=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&o.push(...e.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),e.addresses!=null&&o.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let d=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of d)p==null?a.delete(h):a.set(h,p);a=Fi([...a.entries()],{validate:Tp})}if(e.tags!=null){let d=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,m]of d)m==null?h.delete(p):h.set(p,m);c=Fi([...h.entries()],{validate:Lp,map:Pp})}e.peerRecordEnvelope!=null&&(u=e.peerRecordEnvelope)}let f;s?.id.publicKey!=null?f=dt(s.id.publicKey):e.publicKey!=null?f=dt(e.publicKey):r.publicKey!=null&&(f=dt(r.publicKey));let l={addresses:await kp(r,n.addressFilter??(async()=>!0),o),protocols:[...i.values()].sort((d,h)=>d.localeCompare(h)),metadata:a,tags:c,publicKey:f,peerRecordEnvelope:u};return r.type!=="RSA"&&delete l.publicKey,l}function Fi(r,e){let t=new Map;for(let[n,s]of r)s!=null&&e.validate(n,s);for(let[n,s]of r.sort(([o],[i])=>o.localeCompare(i)))s!=null&&t.set(n,e.map?.(n,s)??s);return t}function Tp(r,e){if(typeof r!="string")throw new R("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new R("Metadata value must be a Uint8Array")}function Lp(r,e){if(typeof r!="string")throw new R("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new R("Tag value must be an integer");if(e.value<0||e.value>100)throw new R("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new R("Tag ttl must be an integer");if(e.ttl<0)throw new R("Tag ttl must be between greater than 0")}}function Pp(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function Hi(r,e){let t=r.toString().split("/")[2],n=me.parse(t,We),s=pi(n);return _n(s,e)}function Hw(r){return r==null?{}:{prefix:hu,filters:(r.filters??[]).map(e=>({key:t,value:n})=>e(Hi(t,n))),orders:(r.orders??[]).map(e=>(t,n)=>e(Hi(t.key,t.value),Hi(n.key,n.value)))}}var Ki=class{peerId;datastore;lock;addressFilter;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=fu({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(Cn(e))}async delete(e){if(this.peerId.equals(e))throw new R("Cannot delete self peer");await this.datastore.delete(Cn(e))}async load(e){let t=await this.datastore.get(Cn(e));return _n(e,t)}async save(e,t){let{existingBuf:n,existingPeer:s}=await this.#e(e),o=await Vi(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,o,n,s)}async patch(e,t){let{existingBuf:n,existingPeer:s}=await this.#e(e),o=await Vi(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:s});return this.#t(e,o,n,s)}async merge(e,t){let{existingBuf:n,existingPeer:s}=await this.#e(e),o=await Vi(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:s});return this.#t(e,o,n,s)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(Hw(e??{}))){let s=Hi(t,n);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(Cn(e)),n=_n(e,t);return{existingBuf:t,existingPeer:n}}catch(t){t.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",t)}return{}}async#t(e,t,n,s){let o=Sn.encode(t);return n!=null&&ue(o,n)?{peer:_n(e,o),previous:s,updated:!1}:(await this.datastore.put(Cn(e),o),{peer:_n(e,o),previous:s,updated:!0})}};var du=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new Ki(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let s of this.store.all(t))e(s)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await Bs(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let s=await this.store.save(e,t);return this.#e(e,s),s.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let s=await this.store.patch(e,t);return this.#e(e,s),s.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let s=await this.store.merge(e,t);return this.#e(e,s),s.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await En.openAndCertify(e,kr.DOMAIN),s=pi(n.publicKey.toCID());if(t?.equals(s)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,s),!1;let o=kr.createFromProtobuf(n.payload),i;try{i=await this.get(s)}catch(a){if(a.name!=="NotFoundError")throw a}if(i?.peerRecordEnvelope!=null){let a=await En.createFromProtobuf(i.peerRecordEnvelope),c=kr.createFromProtobuf(a.payload);if(c.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",c.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(a=>({isCertified:!0,multiaddr:a}))}),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function Np(r,e={}){return new du(r,e)}var qi=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};function Kw(r){return r[Symbol.asyncIterator]!=null}function qw(r){if(Kw(r))return(async()=>{for await(let e of r);})();for(let e of r);}var pu=qw;function $w(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var Dp=$w;function zw(r){return r[Symbol.asyncIterator]!=null}function Gw(r,e){let t=0;if(zw(r))return async function*(){for await(let c of r)await e(c,t++)&&(yield c)}();let n=Dp(r),{value:s,done:o}=n.next();if(o===!0)return function*(){}();let i=e(s,t++);if(typeof i.then=="function")return async function*(){await i&&(yield s);for await(let c of n)await e(c,t++)&&(yield c)}();let a=e;return function*(){i===!0&&(yield s);for(let c of n)a(c,t++)&&(yield c)}()}var Pr=Gw;function Ww(r){return r[Symbol.asyncIterator]!=null}function jw(r,e){return Ww(r)?async function*(){yield*(await Bs(r)).sort(e)}():function*(){yield*Bs(r).sort(e)}()}var mu=jw;function Zw(r){return r[Symbol.asyncIterator]!=null}function Xw(r,e){return Zw(r)?async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}}():function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}}()}var gu=Xw;var $i=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:s}of e)await this.put(n,s,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,s){e.push({key:n,value:s})},delete(n){t.push(n)},commit:async n=>{await pu(this.putMany(e,n)),e=[],await pu(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let s=e.prefix;n=Pr(n,o=>o.key.toString().startsWith(s))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((s,o)=>Pr(s,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((s,o)=>mu(s,o),n)),e.offset!=null){let s=0,o=e.offset;n=Pr(n,()=>s++>=o)}return e.limit!=null&&(n=gu(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let s=e.prefix;n=Pr(n,o=>o.toString().startsWith(s))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((s,o)=>Pr(s,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((s,o)=>mu(s,o),n)),e.offset!=null){let s=e.offset,o=0;n=Pr(n,()=>o++>=s)}return e.limit!=null&&(n=gu(n,e.limit)),n}};var zi=class extends $i{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw new qi;return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new Lr(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new Lr(e)}};function Rp(r,e){let t,n=function(){let s=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(s,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var Op=lr(Mp(),1),Yw=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],Jw=Yw.map(r=>new Op.Netmask(r));function yu(r){for(let e of Jw)if(e.contains(r))return!0;return!1}function Qw(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function eb(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),s=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return yu(s)}function tb(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function rb(r){let e=r.split(":"),t=e[e.length-1];return yu(t)}function nb(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function Bn(r){return lt(r)?yu(r):Qw(r)?eb(r):tb(r)?rb(r):yn(r)?nb(r):void 0}var Up=864e13;var sb=448,wu=449,ob=53,ib=54,ab=55,cb=56,Gi=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=new Map}has(e){let t=this.findHost(e);for(let n of this.mappings.values())if(n.domain===t)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let s=Bn(n)===!0;this.mappings.set(n,{domain:e,verified:s,expires:s?Up-Date.now():0,lastVerified:s?Up-Date.now():void 0})})}remove(e){let t=this.findHost(e),n=!1;for(let[s,o]of this.mappings.entries())o.domain===t&&(this.log("removing %s to %s DNS mapping %e",s,o.domain,new Error("where")),this.mappings.delete(s),n=n||o.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr.stringTuples(),i=o[0][1];if(i!=null)for(let[a,c]of this.mappings.entries()){if(i!==a)continue;this.maybeAddSNITuple(o,c.domain)&&(e.splice(n,1),n--,t.push({multiaddr:Z(`/${o.map(f=>[j(f[0]).name,f[1]].join("/")).join("/")}`),verified:c.verified,type:"dns-mapping",expires:c.expires,lastVerified:c.lastVerified}))}}return t}maybeAddSNITuple(e,t){for(let n=0;n<e.length;n++)if(e[n][0]===sb&&e[n+1]?.[0]!==wu)return e.splice(n+1,0,[wu,t]),!0;return!1}confirm(e,t){let n=this.findHost(e),s=!1;for(let[o,i]of this.mappings.entries())i.domain===n&&(this.log("marking %s to %s DNS mapping as verified",o,i.domain),s=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return s}unconfirm(e,t){let n=this.findHost(e),s=!1;for(let[o,i]of this.mappings.entries())i.domain===n&&(this.log("removing verification of %s to %s DNS mapping",o,i.domain),s=s||i.verified,i.verified=!1,i.expires=Date.now()+t);return s}findHost(e){for(let t of e.stringTuples())if(t[0]===wu||t[0]===ob||t[0]===ib||t[0]===ab||t[0]===cb)return t[1]}};var bu=4,xu=41,vu=6,lb=273,Wi=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=new Map}has(e){let t=e.stringTuples();for(let n of this.mappings.values())for(let s of n)if(s.externalIp===t[0][1])return!0;return!1}add(e,t,n,s=t,o="tcp"){let i=`${e}-${t}-${o}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:s,externalFamily:lt(n)?4:6,protocol:o,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=e.stringTuples(),n=t[0][1]??"",s=t[1][0]===vu?"tcp":"udp",o=parseInt(t[1][1]??"0"),i=!1;for(let[a,c]of this.mappings.entries()){for(let u=0;u<c.length;u++){let f=c[u];f.externalIp===n&&f.externalPort===o&&f.protocol===s&&(this.log("removing %s:%s to %s:%s %s IP mapping",f.externalIp,f.externalPort,n,o,s),i=i||f.verified,c.splice(u,1),u--)}c.length===0&&this.mappings.delete(a)}return i}getAll(e){let t=[];for(let{multiaddr:n}of e){let s=n.stringTuples(),o;if((s[0][0]===bu||s[0][0]===xu)&&s[1][0]===vu?o=`${s[0][1]}-${s[1][1]}-tcp`:(s[0][0]===bu||s[0][0]===xu)&&s[1][0]===lb&&(o=`${s[0][1]}-${s[1][1]}-udp`),o==null)continue;let i=this.mappings.get(o);if(i!=null)for(let a of i)s[0][0]=a.externalFamily===4?bu:xu,s[0][1]=a.externalIp,s[1][1]=`${a.externalPort}`,t.push({multiaddr:Z(`/${s.map(c=>[j(c[0]).name,c[1]].join("/")).join("/")}`),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}confirm(e,t){let s=e.stringTuples()[0][1],o=!1;for(let i of this.mappings.values())for(let a of i)a.externalIp===s&&(this.log("marking %s to %s IP mapping as verified",a.internalIp,a.externalIp),o=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return o}unconfirm(e,t){let n=e.stringTuples(),s=n[0][1]??"",o=n[1][0]===vu?"tcp":"udp",i=parseInt(n[1][1]??"0"),a=!1;for(let c of this.mappings.values())for(let u=0;u<c.length;u++){let f=c[u];f.externalIp===s&&f.externalPort===i&&f.protocol===o&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",f.externalIp,f.externalPort,s,i,o),a=a||f.verified,f.verified=!1,f.expires=Date.now()+t)}return a}};function Fp(r){try{let[[e,t]]=r.stringTuples();if(t==null)return!1;if(e===4)return t.startsWith("169.254.");if(e===41)return t.toLowerCase().startsWith("fe80")}catch{}return!1}var ub=4,fb=41,hb=53,db=54,pb=55,mb=56;function Nr(r){try{let[[e,t]]=r.stringTuples();if(t==null)return!0;if(e===hb||e===db||e===pb||e===mb)return!1;if(e===ub||e===fb)return Bn(t)??!1}catch{}return!0}var gb={maxObservedAddresses:10},ji=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=new Map,this.maxObservedAddresses=t.maxObservedAddresses??gb.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Nr(e)||Fp(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:Z(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),s=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},o=s.verified;return s.verified=!0,s.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,s),o}};var yb={maxObservedAddresses:10},Zi=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=new Map,this.maxObservedAddresses=t.maxObservedAddresses??yb.maxObservedAddresses}get(e,t){if(Nr(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),s=this.addresses.get(n);return s==null&&(s={verified:!1,expires:0},this.addresses.set(n,s)),{multiaddr:e,verified:s.verified,type:"transport",expires:s.expires,lastVerified:s.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),s=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},o=s.verified;return s.verified=!0,s.expires=Date.now()+t,s.lastVerified=Date.now(),this.addresses.set(n,s),o}unconfirm(e,t){let n=this.toKey(e),s=this.addresses.get(n)??{verified:!1,expires:0},o=s.verified;return s.verified=!1,s.expires=Date.now()+t,this.addresses.set(n,s),o}toKey(e){let t=e.toOptions();return`${t.host}-${t.port}-${t.transport}`}};var Vp=6e4,Hp={maxObservedAddresses:10,addressVerificationTTL:Vp*10,addressVerificationRetry:Vp*5},wb=r=>r;function Eu(r,e){let t=r.getPeerId();return t!=null&&wt(t).equals(e)&&(r=r.decapsulate(Z(`/p2p/${e.toString()}`))),r}var Xi=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:s=[],appendAnnounce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(s.map(i=>i.toString())),this.appendAnnounce=new Set(o.map(i=>i.toString())),this.observed=new ji(e,t),this.dnsMappings=new Gi(e,t),this.ipMappings=new Wi(e,t),this.transportAddresses=new Zi(e,t),this.announceFilter=t.announceFilter??wb,this.observedAddressFilter=Ss(1024),this.addressVerificationTTL=t.addressVerificationTTL??Hp.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??Hp.addressVerificationRetry,this._updatePeerStoreAddresses=Rp(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getPeerId()===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>Z(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>Z(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>Z(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=e.stringTuples(),n=`${t[0][1]}:${t[1][1]}`;this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=Eu(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=Eu(e,this.components.peerId);let n=!0;(t?.type==="observed"||this.observed.has(e))&&(n=this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)),(t?.type==="transport"||this.transportAddresses.has(e))&&(n=this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&(n=this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&(n=this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=Eu(e,this.components.peerId);let n=!1;this.observed.has(e)&&(n=this.observed.remove(e)),this.transportAddresses.has(e)&&(n=this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)),this.dnsMappings.has(e)&&(n=this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)),this.ipMappings.has(e)&&(n=this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)),n&&this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let s=n.multiaddr.toString();return e.has(s)?!1:(e.add(s),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let s=Z(n);return s.protos().pop()?.path===!0||s.getPeerId()===this.components.peerId.toString()?s:s.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return e.map(n=>({multiaddr:n,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];return t=t.concat(this.components.transportManager.getAddrs().map(n=>this.transportAddresses.get(n,this.addressVerificationTTL))),t=t.concat(this.getAppendAnnounceAddrs().map(n=>({multiaddr:n,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(Z(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,s=t,o="tcp"){this.ipMappings.add(e,t,n,s,o),this.observed.removePrefixed(`/ip${lt(n)?4:6}/${n}/${o}/${s}`)}removePublicAddressMapping(e,t,n,s=t,o="tcp"){this.ipMappings.remove(Z(`/ip${lt(n)?4:6}/${n}/${o}/${s}`))&&this._updatePeerStoreAddresses()}};var Kp;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(Kp||(Kp={}));var Yi=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},Ji=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},In=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},ks=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},Qi=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},ea=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},ta=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},Ts=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},Dr=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},ra=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},na=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},Rr=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},Mr=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},sa=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}};var Au=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=Ti())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Qs(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},xb=["metrics","connectionProtector","dns"],vb=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function qp(r={}){let e=new Au(r);return new Proxy(e,{get(n,s,o){if(typeof s=="string"&&!vb.includes(s)){let i=e.components[s];if(i==null&&!xb.includes(s))throw new Yi(`${s} not set`);return i}return Reflect.get(n,s,o)},set(n,s,o){return typeof s=="string"?e.components[s]=o:Reflect.set(n,s,o),!0}})}function $p(r){let e={};for(let t of Object.values(r.components))for(let n of Eb(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of Ab(t))if(e[n]!==!0)throw new Ji(`Service "${Sb(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function Eb(r){return Array.isArray(r?.[On])?r[On]:[]}function Ab(r){return Array.isArray(r?.[ec])?r[ec]:[]}function Sb(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}var _b=r=>r.toString().split("/").slice(1),kn=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),z=r=>({match:e=>kn(t=>t===r).match(e),pattern:r}),Or=()=>({match:r=>kn(e=>typeof e=="string").match(r),pattern:"{string}"}),Ls=()=>({match:r=>kn(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),re=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{Y.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Ps=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Gc.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),X=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),Ne=(...r)=>({match:e=>{let t;for(let n of r){let s=n.match(e);s!==!1&&(t==null||s.length<t.length)&&(t=s)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),G=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function ce(...r){function e(s){let o=_b(s);for(let i of r){let a=i.match(o);if(a===!1)return!1;o=a}return o}function t(s){return e(s)!==!1}function n(s){let o=e(s);return o===!1?!1:o.length===0}return{matchers:r,matches:t,exactMatch:n}}var ia=G(z("dns4"),Or()),aa=G(z("dns6"),Or()),ca=G(z("dnsaddr"),Or()),_u=G(z("dns"),Or()),V6=ce(ia,X(re())),H6=ce(aa,X(re())),K6=ce(ca,X(re())),q6=ce(Ne(_u,ca,ia,aa),X(re())),zp=G(z("ip4"),kn(lt)),Gp=G(z("ip6"),kn(yn)),Cu=Ne(zp,Gp),Ft=Ne(Cu,_u,ia,aa,ca),$6=ce(Ne(Cu,G(Ne(_u,ca,ia,aa),X(re())))),z6=ce(zp),G6=ce(Gp),W6=ce(Cu),Bu=G(Ft,z("tcp"),Ls()),Ns=G(Ft,z("udp"),Ls()),Iu=ce(G(Bu,X(re()))),j6=ce(Ns),ku=G(Ns,z("quic"),X(re())),la=G(Ns,z("quic-v1"),X(re())),Cb=Ne(ku,la),Z6=ce(ku),X6=ce(la),Su=Ne(Ft,Bu,Ns,ku,la),Wp=Ne(G(Su,z("ws"),X(re()))),Ds=ce(Wp),jp=Ne(G(Su,z("wss"),X(re())),G(Su,z("tls"),X(G(z("sni"),Or())),z("ws"),X(re()))),Tu=ce(jp),Zp=G(Ns,z("webrtc-direct"),X(Ps()),X(Ps()),X(re())),Lu=ce(Zp),Xp=G(la,z("webtransport"),X(Ps()),X(Ps()),X(re())),Pu=ce(Xp),oa=Ne(Wp,jp,G(Bu,X(re())),G(Cb,X(re())),G(Ft,X(re())),Zp,Xp,re()),Y6=ce(oa),Bb=G(oa,z("p2p-circuit"),re()),Rs=ce(Bb),Ib=Ne(G(oa,z("p2p-circuit"),z("webrtc"),X(re())),G(oa,z("webrtc"),X(re())),G(z("webrtc"),X(re()))),Nu=ce(Ib),kb=Ne(G(Ft,z("tcp"),Ls(),z("http"),X(re())),G(Ft,z("http"),X(re()))),J6=ce(kb),Tb=Ne(G(Ft,z("tcp"),Ne(G(z("443"),z("http")),G(Ls(),z("https"))),X(re())),G(Ft,z("tls"),z("http"),X(re())),G(Ft,z("https"),X(re()))),Q6=ce(Tb),Lb=Ne(G(z("memory"),Or(),X(re()))),e3=ce(Lb);var Pb=4,Nb=41;function Yp(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{if(Ds.matches(e))return!1;let t=e.stringTuples();return t[0][0]===Pb||t[0][0]===Nb?!!Bn(`${t[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}var Jp=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},Db=new WeakMap;function Rb({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:s}={})=>{if(s?.aborted)return Promise.reject(Jp());let o,i,a,c=r??clearTimeout,u=()=>{c(o),a(Jp())},f=()=>{s&&s.removeEventListener("abort",u)},l=new Promise((d,h)=>{i=()=>{f(),d(n)},a=h,o=(e??setTimeout)(i,t)});return s&&s.addEventListener("abort",u,{once:!0}),Db.set(l,()=>{c(o),o=null,i()}),l}}var Mb=Rb(),Qp=Mb;var ua=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},fa=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var ha=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new Du}async consume(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(s,i.consumedPoints,this.blockDuration)),new ua("Rate limit exceeded",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await Qp(a)}return i}penalty(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let s=this.getKey(e),o=this._getKeySecDuration(n),i=this.memoryStorage.incrby(s,-t,o);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,s=this.points+1;return this.memoryStorage.set(this.getKey(e),s,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:s,isFirstInDuration:!1}}set(e,t,n=0){let s=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},Du=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let s=this.storage.get(e);if(s!=null){let o=s.expiresAt!=null?s.expiresAt.getTime()-new Date().getTime():-1;return s.expiresAt==null||o>0?(s.value+=t,{remainingPoints:0,msBeforeNext:o,consumedPoints:s.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let s=n*1e3,o=this.storage.get(e);o!=null&&clearTimeout(o.timeoutId);let i={value:t,expiresAt:s>0?new Date(Date.now()+s):void 0};return this.storage.set(e,i),s>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},s),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:s===0?-1:s,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function da(r){if($s(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:wt(t),r.forEach(n=>{if(!sr(n))throw new Kt("Invalid multiaddr");let s=n.getPeerId();if(s==null){if(e!=null)throw new R("Multiaddrs must all have the same peer id or have no peer id")}else{let o=wt(s);if(e?.equals(o)!==!0)throw new R("Multiaddrs must all have the same peer id or have no peer id")}})}return{peerId:e,multiaddrs:r}}var Ob=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function em(r,e){let t=r?.streams?.map(s=>s.protocol)??[],n=e?.closableProtocols??Ob;if(!(t.filter(s=>s!=null&&!n.includes(s)).length>0))try{await r?.close(e)}catch(s){r?.abort(s)}}var tm="last-dial-failure",rm="last-dial-success";var pa=100,ma=50;async function nm(r,e){let t=!1;for(let s of bn.keys())if(t=r.protoNames().includes(s),t)break;if(!t)return[r];let n=await r.resolve(e);return e.log("resolved %s to",r,n.map(s=>s.toString())),n}function Ms(r){try{let e;if(typeof r=="string"?e=Z(r):e=r,!e.protoNames().includes("ipcidr")){let n=e.protoNames().includes("ip6")?"/ipcidr/128":"/ipcidr/32";e=e.encapsulate(n)}return $l(e)}catch{throw new Error(`Can't convert to IpNet, Invalid multiaddr format: ${r}`)}}var Ub={maxConnections:pa,allow:[]},ga=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Ub.maxConnections,this.allow=(t.allow??[]).map(n=>Ms(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length;if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;let n=new Ot;for(let a of e){let c=a.remotePeer;if(!n.has(c)){n.set(c,0);try{let u=await this.peerStore.get(c);n.set(c,[...u.tags.values()].reduce((f,l)=>f+l.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags",u)}}}let s=this.sortConnections(e,n),o=Math.max(t-this.maxConnections,0),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(u=>u.contains(a.remoteAddr.nodeAddress().address))||i.push(a),i.length===o)break;await Promise.all(i.map(async a=>{await em(a,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:i})}sortConnections(e,t){return e.sort((n,s)=>{let o=n.timeline.open,i=s.timeline.open;return o<i?1:o>i?-1:0}).sort((n,s)=>n.direction==="outbound"&&s.direction==="inbound"?1:n.direction==="inbound"&&s.direction==="outbound"?-1:0).sort((n,s)=>n.streams.length>s.streams.length?1:n.streams.length<s.streams.length?-1:0).sort((n,s)=>{let o=t.get(n.remotePeer)??0,i=t.get(s.remotePeer)??0;return o>i?1:o<i?-1:0})}};function he(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var ya=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Tn=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new ya(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new ya(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var Ru=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function wa(r={}){return Fb(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Fb(r,e){e=e??{};let t=e.onEnd,n=new Tn,s,o,i,a=he(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((g,w)=>{o=b=>{o=null,n.push(b);try{g(r(n))}catch(y){w(y)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=he()})}},u=g=>o!=null?o(g):(n.push(g),s),f=g=>(n=new Tn,o!=null?o({error:g}):(n.push({error:g}),s)),l=g=>{if(i)return s;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:g})},d=g=>i?s:(i=!0,g!=null?f(g):u({done:!0})),h=()=>(n=new Tn,d(),{done:!0}),p=g=>(d(g),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:l,end:d,get readableLength(){return n.size},onEmpty:async g=>{let w=g?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let b,y;w!=null&&(b=new Promise((x,A)=>{y=()=>{A(new Ru)},w.addEventListener("abort",y)}));try{await Promise.race([a.promise,b])}finally{y!=null&&w!=null&&w?.removeEventListener("abort",y)}}},t==null)return s;let m=s;return s={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(g){return m.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return m.return(),t!=null&&(t(),t=void 0),{done:!0}},push:l,end(g){return m.end(g),t!=null&&(t(g),t=void 0),s},get readableLength(){return m.readableLength},onEmpty:g=>m.onEmpty(g)},s}var Mu=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Ln(r,e,t,n){let s=new Mu(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((o,i)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,u)}let c=l=>{try{if(n?.filter?.(l)===!1)return}catch(d){a(),i(d);return}a(),o(l)},u=l=>{a(),i(l.detail)},f=()=>{a(),i(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,u)})}var ba=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function ar(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new ba(t?.errorMessage,t?.errorCode,t?.errorName));let n,s=new ba(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((o,i)=>{n=()=>{i(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var xa=class{deferred;signal;constructor(e){this.signal=e,this.deferred=he(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new et)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function Vb(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var va=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=Vb(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,se(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new et),this.cleanup())}async join(e={}){let t=new xa(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await ar(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var Pn=class extends vt{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new fa;let n=new va(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let o=0;o<this.queue.length;o++)if(this.queue[o]===n){this.queue.splice(o,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new et)}),this.clear()}async onEmpty(e){this.size!==0&&await Ln(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Ln(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Ln(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=wa({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},o=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new et("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("error",o),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",o),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var Ea=class extends Pn{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};function Vt(r){let e=new globalThis.AbortController;function t(){e.abort();for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}for(let o of r){if(o?.aborted===!0){t();break}o?.addEventListener!=null&&o.addEventListener("abort",t)}function n(){for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}function Hb(r,e){let t=Iu.exactMatch(r.multiaddr),n=Iu.exactMatch(e.multiaddr);if(t&&!n)return-1;if(!t&&n)return 1;let s=Tu.exactMatch(r.multiaddr),o=Tu.exactMatch(e.multiaddr);if(s&&!o)return-1;if(!s&&o)return 1;let i=Ds.exactMatch(r.multiaddr),a=Ds.exactMatch(e.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=Nu.exactMatch(r.multiaddr),u=Nu.exactMatch(e.multiaddr);if(c&&!u)return-1;if(!c&&u)return 1;let f=Lu.exactMatch(r.multiaddr),l=Lu.exactMatch(e.multiaddr);if(f&&!l)return-1;if(!f&&l)return 1;let d=Pu.exactMatch(r.multiaddr),h=Pu.exactMatch(e.multiaddr);return d&&!h?-1:!d&&h?1:0}function Kb(r,e){let t=Nr(r.multiaddr),n=Nr(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function qb(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function $b(r,e){let t=Rs.exactMatch(r.multiaddr),n=Rs.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function sm(r){return r.sort(Hb).sort(qb).sort($b).sort(Kb)}var Aa={maxParallelDials:ma,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:5e3,resolvers:{dnsaddr:Sr}},Sa=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??Aa.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??Aa.maxDialQueueLength,this.dialTimeout=t.dialTimeout??Aa.dialTimeout,this.connections=t.connections??new Ot,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,se(1/0,this.shutDownController.signal);for(let[n,s]of Object.entries(t.resolvers??{}))bn.set(n,s);this.queue=new Ea({concurrency:t.maxParallelDials??Aa.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{n.detail.name!==et.name&&this.log.error("error in dial queue - %e",n.detail)})}start(){this.shutDownController=new AbortController,se(1/0,this.shutDownController.signal)}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:s}=da(e),o=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:s.find(c=>c.equals(a.remoteAddr)));if(o?.status==="open")return this.log("already connected to %a",o.remoteAddr),t.onProgress?.(new de("dial-queue:already-connected")),o;let i=this.queue.queue.find(a=>{if(n?.equals(a.options.peerId)===!0)return!0;let c=a.options.multiaddrs;if(c==null)return!1;for(let u of s)if(c.has(u.toString()))return!0;return!1});if(i!=null){this.log("joining existing dial target for %p",n);for(let a of s)i.options.multiaddrs.add(a.toString());return t.onProgress?.(new de("dial-queue:already-in-dial-queue")),i.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new $r("Dial queue is full");return this.log("creating dial target for %p",n,s.map(a=>a.toString())),t.onProgress?.(new de("dial-queue:add-to-dial-queue")),this.queue.add(async a=>{a?.onProgress?.(new de("dial-queue:start-dial"));let c=Vt([this.shutDownController.signal,a.signal]);se(1/0,c);let u;try{u=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),a?.onProgress?.(new de("dial-queue:calculated-addresses",u)),u.map(({multiaddr:f})=>f.toString()).forEach(f=>{a?.multiaddrs.add(f)})}catch(f){throw c.clear(),f}try{let f=0,l=[];for(let d of u){if(f===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",f,n),new $r("Peer had more than maxPeerAddrsToDial");f++;try{let h=await this.components.transportManager.dial(d.multiaddr,{...a,signal:c});this.log("dial to %a succeeded",d.multiaddr);try{await this.components.peerStore.merge(h.remotePeer,{multiaddrs:[h.remoteAddr],metadata:{[rm]:N(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}return h}catch(h){if(this.log.error("dial failed to %a",d.multiaddr,h),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[tm]:N(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}if(c.aborted)throw new Xs(h.message);l.push(h)}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}finally{c.clear()}},{peerId:n,priority:t.priority??Vu,multiaddrs:new Set(s.map(a=>a.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async calculateMultiaddrs(e,t=new Set,n={}){let s=[...t].map(l=>({multiaddr:Z(l),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new $r("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new Ts("The dial request is blocked by gater.allowDialPeer");if(s.length===0){this.log("loading multiaddrs for %p",e);try{let l=await this.components.peerStore.get(e);s.push(...l.addresses),this.log("loaded multiaddrs for %p",e,s.map(({multiaddr:d})=>d.toString()))}catch(l){if(l.name!=="NotFoundError")throw l}}if(s.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let l=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,s.map(({multiaddr:d})=>d.toString())),s.push(...l.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(l){l.name!=="NoPeerRoutersError"&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,l)}}}let o=(await Promise.all(s.map(async l=>{let d=await nm(l.multiaddr,{dns:this.components.dns,...n,log:this.log});return d.length===1&&d[0].equals(l.multiaddr)?l:d.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let l=`/p2p/${e.toString()}`;o=o.map(d=>d.multiaddr.protos().pop()?.path===!0?d:d.multiaddr.getPeerId()==null?{multiaddr:d.multiaddr.encapsulate(l),isCertified:d.isCertified}:d)}let i=o.filter(l=>{if(this.components.transportManager.dialTransportForMultiaddr(l.multiaddr)==null)return!1;let d=l.multiaddr.getPeerId();return e!=null&&d!=null?e.equals(d):!0}),a=new Map;for(let l of i){let d=l.multiaddr.toString(),h=a.get(d);if(h!=null){h.isCertified=h.isCertified||l.isCertified||!1;continue}a.set(d,l)}let c=[...a.values()];if(c.length===0)throw new Dr("The dial request has no valid addresses");let u=[];for(let l of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(l.multiaddr)||u.push(l);let f=this.addressSorter==null?sm(u):u.sort(this.addressSorter);if(f.length===0)throw new Ts("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",e??"unknown peer",o.map(({multiaddr:l})=>l.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",f.map(({multiaddr:l})=>l.toString())),f}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(s=>s.toString())),t);return t.runOnLimitedConnection===!1?n.find(s=>!Rs.matches(s.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var _a=class extends Pn{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var fm=lr(lm(),1);var Gb=Object.prototype.toString,Wb=r=>Gb.call(r)==="[object Error]",jb=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed","terminated"]);function Hu(r){return r&&Wb(r)&&r.name==="TypeError"&&typeof r.message=="string"?r.message==="Load failed"?r.stack===void 0:jb.has(r.message):!1}var Ku=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}},um=(r,e,t)=>{let n=t.retries-(e-1);return r.attemptNumber=e,r.retriesLeft=n,r};async function qu(r,e){return new Promise((t,n)=>{e={...e},e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.retries??=10;let s=fm.default.operation(e),o=()=>{s.stop(),n(e.signal?.reason)};e.signal&&!e.signal.aborted&&e.signal.addEventListener("abort",o,{once:!0});let i=()=>{e.signal?.removeEventListener("abort",o),s.stop()};s.attempt(async a=>{try{let c=await r(a);i(),t(c)}catch(c){try{if(!(c instanceof Error))throw new TypeError(`Non-error was thrown: "${c}". You should only throw errors.`);if(c instanceof Ku)throw c.originalError;if(c instanceof TypeError&&!Hu(c))throw c;if(um(c,a,e),await e.shouldRetry(c)||(s.stop(),n(c)),await e.onFailedAttempt(c),!s.retry(c))throw s.mainError()}catch(u){um(u,a,e),i(),n(u)}}})})}var Ca=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new _a({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(s=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,s)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);hm(t)&&(this.queue.has(e)||this.queue.add(async n=>{await qu(async s=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(o){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,s,this.retries,o),o}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let s={};[...t.tags.keys()].forEach(o=>{o.startsWith(Qa)&&(s[o]=void 0)}),await this.peerStore.merge(e,{tags:s}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>hm(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)})}stop(){this.started=!1,this.queue.abort()}};function hm(r){for(let e of r.tags.keys())if(e.startsWith(Qa))return!0;return!1}var Vu=50,$u={maxConnections:pa,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Ba=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??$u.maxConnections,this.maxConnections<1)throw new R("Connection Manager maxConnections must be greater than 0");this.connections=new Ot,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>Ms(n)),this.deny=(t.deny??[]).map(n=>Ms(n)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??$u.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new ha({points:t.inboundConnectionThreshold??$u.inboundConnectionThreshold,duration:1}),this.connectionPruner=new ga({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:t.allow?.map(n=>Z(n))}),this.dialQueue=new Sa(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??ma,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??5e3,resolvers:t.resolvers??{dnsaddr:Sr},connections:this.connections}),this.reconnectQueue=new Ca({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let s of n.streams){let o=`${s.direction} ${s.protocol??"unnegotiated"}`;e[o]=(e[o]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let s of n){let o={};for(let i of s.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;o[a]=(o[a]??0)+1}for(let[i,a]of Object.entries(o))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,s]of Object.entries(e)){s=s.sort((i,a)=>i-a);let o=Math.floor(s.length*.9);t[n]=s[o]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await hf(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await df(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(s){this.log.error(s)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}onConnect(e){this._onConnect(e).catch(t=>{this.log.error(t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,s=!this.connections.has(n),o=this.connections.get(n)??[];o.push(t),this.connections.set(n,o),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,o=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,o),o.length===0&&(this.log("onDisconnect remove all connections for peer %p",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new xt("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted();let{peerId:n}=da(e);if(this.peerId.equals(n))throw new qr("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>c.limits==null);if(a!=null)return this.log("had an existing non-limited connection to %p",n),t.onProgress?.(new de("dial-queue:already-connected")),a}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??Vu});if(s.status!=="open")throw new Kr("Remote closed connection during opening");let o=this.connections.get(s.remotePeer);o==null&&(o=[],this.connections.set(s.remotePeer,o));let i=!1;for(let a of o)if(a.id===s.id&&(i=!0),t.force!==!0&&a.id!==s.id&&a.remoteAddr.equals(s.remoteAddr))return s.abort(new Kt("Duplicate multiaddr connection")),a;return i||o.push(s),s}finally{this.outboundPendingConnections--}}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async s=>{try{await s.close(t)}catch(o){s.abort(o)}}))}async acceptIncomingConnection(e){if(this.deny.some(s=>s.contains(e.remoteAddr.nodeAddress().address)))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(s=>s.contains(e.remoteAddr.nodeAddress().address)))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let s=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(s,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,s),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>Z(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var Nn=class{movingAverage;variance;deviation;forecast;timespan;previousTime;constructor(e){this.timespan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timespan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),s=e-this.movingAverage,o=n*s;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+s*o),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*s}else this.movingAverage=e;this.previousTime=t}};var Yb=1.2,Jb=2,Qb=2e3,Ia=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new Nn(e.interval??5e3),this.failure=new Nn(e.interval??5e3),this.next=new Nn(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??Jb,this.timeoutMultiplier=e.timeoutMultiplier??Yb,this.minTimeout=e.minTimeout??Qb,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),s=Vt([e.signal,n]);return se(1/0,s,n),s.start=Date.now(),s.timeout=t,s}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var zu=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=he(),this.haveNext=he()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=he(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=he(),await ar(this.readNext.promise,t?.signal,t)}};function dm(){return new zu}var ka=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var Gu=class extends Error{code;constructor(e,t){super(e),this.code=t}},Wu=class extends Gu{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function Ta(r,e){let t=dm();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new we;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,u=new Promise((f,l)=>{c=()=>{l(new Wu("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:l,value:d}=await Promise.race([n.next(),u]);return l===!0?new we:d}for(;s.byteLength<i;){let{value:l,done:d}=await Promise.race([n.next(),u]);if(d===!0)throw new ka("unexpected end of input");s.append(l)}let f=s.sublist(0,i);return s.consume(i),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*i}()}return r}}}var ex=1e4,tx="1.0.0",rx="ping",nx="ipfs",pm=32,sx=!0,La=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??nx}/${rx}/${tx}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??ex,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??sx,this.timeout=new Ia({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[On]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,se(1/0,this.abortController.signal),this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),s=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),o=Ta(s);t=Date.now(),await Promise.all([o.write(fn(pm),{signal:n}),o.read(pm,{signal:n})]),e.rtt=Date.now()-t,await o.unwrap().close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;e.rtt=(Date.now()-t)/2}}).catch(t=>{this.log.error("error during heartbeat",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};function ox(r){return r[Symbol.asyncIterator]!=null}function ix(...r){let e=[];for(let t of r)ox(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=wa({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)t.push(s)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Os=ix;var Pa=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],s)=>({...s,cid:n.toString()}),getAttributesFromYieldedValue:(n,s)=>({...s,providers:[...Array.isArray(s.providers)?s.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],s)=>({...s,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],s)=>({...s,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:W(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:W(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new In("No content routers available");let n=this,s=new Cr;for await(let o of Os(...n.routers.map(i=>i.findProviders(e,t))))o!=null&&(o.multiaddrs.length>0&&await this.components.peerStore.merge(o.id,{multiaddrs:o.multiaddrs}),!s.has(o.id)&&(s.add(o.id),yield o))}async provide(e,t={}){if(this.routers.length===0)throw new In("No content routers available");await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new In("No content routers available");await Promise.all(this.routers.map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new xt;await Promise.all(this.routers.map(async s=>{await s.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new xt;return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var Na=globalThis.CustomEvent??Event;async function*ju(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,s=new EventTarget,o=[],i=he(),a=he(),c=!1,u,f=!1;s.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(o.length===t&&(i=he(),await i.promise),f)break;let m={done:!1};o.push(m),p().then(g=>{m.done=!0,m.ok=!0,m.value=g,s.dispatchEvent(new Na("task-complete"))},g=>{m.done=!0,m.err=g,s.dispatchEvent(new Na("task-complete"))})}c=!0,s.dispatchEvent(new Na("task-complete"))}catch(p){u=p,s.dispatchEvent(new Na("task-complete"))}});function l(){return n?o[0]?.done:!!o.find(p=>p.done)}function*d(){for(;o.length>0&&o[0].done;){let p=o[0];if(o.shift(),p.ok)yield p.value;else throw f=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;l();)for(let p=0;p<o.length;p++)if(o[p].done){let m=o[p];if(o.splice(p,1),p--,m.ok)yield m.value;else throw f=!0,i.resolve(),m.err;i.resolve()}}for(;;){if(l()||(a=he(),await a.promise),u!=null)throw u;if(n?yield*d():yield*h(),c&&o.length===0)break}}var Da=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],s)=>({...s,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],s)=>({...s,key:W(n,"base36")}),getAttributesFromYieldedValue:(n,s)=>({...s,peers:[...Array.isArray(s.peers)?s.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new ks("No peer routers available");if(e.toString()===this.peerId.toString())throw new Qi("Should not try to find self");let n=this,s=Os(...this.routers.map(o=>async function*(){try{yield await o.findPeer(e,t)}catch(i){n.log.error(i)}}()));for await(let o of s)if(o!=null)return o.multiaddrs.length>0&&await this.peerStore.merge(o.id,{multiaddrs:o.multiaddrs}),o;throw new Gs}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new ks("No peer routers available");let n=this,s=Ss(1024);for await(let o of ju(async function*(){let i=Os(...n.routers.map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}}()))o!=null&&(o.multiaddrs.length>0&&await this.peerStore.merge(o.id,{multiaddrs:o.multiaddrs}),!s.has(o.id.toMultihash().bytes)&&(s.add(o.id.toMultihash().bytes),yield o))}};var Ra=class extends vt{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,se(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,se(1/0,this.shutdownController.signal)}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=Vt([this.shutdownController.signal,e?.signal]);se(1/0,t);try{for(;;)this.needNext?.resolve(),this.needNext=he(),yield(await Ln(this,"walk:peer",t,{errorEvent:"walk:error"})).detail}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,se(1/0,this.walkController.signal);let e=Vt([this.walkController.signal,this.shutdownController.signal]);se(1/0,e);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let s=fn(32),o=Date.now();for await(let i of this.peerRouting.getClosestPeers(s,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-o,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await ar(this.needNext.promise,e)),o=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",s,this.walkers,n)}catch(s){this.log.error("randomwalk errored",s),this.safeDispatchEvent("walk:error",{detail:s})}this.log("no walkers left, ended walk")}).catch(s=>{this.log.error("randomwalk errored",s)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var Zu=32,Xu=64,Ma=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new ea(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e))throw new ta(`Handler already registered for protocol ${e}`);let s=Ci.bind({ignoreUndefined:!0})({maxInboundStreams:Zu,maxOutboundStreams:Xu},n);this.handlers.set(e,{handler:t,options:s}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new R("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,s=this.topologies.get(e);return s==null&&(s=new Map,this.topologies.set(e,s)),s.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let s of n.protocols){let o=this.topologies.get(s);if(o!=null)for(let i of o.values())i.filter?.has(t)!==!1&&(i.filter?.remove(t),i.onDisconnect?.(t))}}).catch(n=>{n.name!=="NotFoundError"&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,s=(n?.protocols??[]).filter(o=>!t.protocols.includes(o));for(let o of s){let i=this.topologies.get(o);if(i!=null)for(let a of i.values())a.filter?.has(t.id)!==!1&&(a.filter?.remove(t.id),a.onDisconnect?.(t.id))}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,s=e.detail.peerId;for(let o of t){let i=this.topologies.get(o);if(i!=null)for(let a of i.values())n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(s)!==!0&&(a.filter?.add(s),a.onConnect?.(s,n))}}};var Yu=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function mm(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Yu({name:e,metrics:t}):n=new Map,n}var Oa=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=new Map,this.listeners=mm({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Ht.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new R("Transport must have a valid tag");if(this.transports.has(t))throw new R(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let s=n.pop();s!=null&&e.push(s.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new sa(`No transport available for address ${String(e)}`);return t?.onProgress?.(new de("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new xt("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,s]of this.transports.entries()){let o=s.listenFilter(e),i=[];for(let u of o){this.log("creating listener for %s on %a",n,u);let f=s.createListener({upgrader:this.components.upgrader}),l=this.listeners.get(n)??[];l==null&&(l=[],this.listeners.set(n,l)),l.push(f),f.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:f})}),f.addEventListener("close",()=>{let d=l.findIndex(h=>h===f);l.splice(d,1),this.components.events.safeDispatchEvent("transport:close",{detail:f})}),i.push(f.listen(u))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(u=>u.status==="fulfilled")==null&&this.faultTolerance!==Ht.NO_FATAL)throw new Dr(`Transport (${n}) could not listen on any available address`)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===Ht.FATAL_ALL)throw new Dr(n);this.log(`libp2p in dial mode only: ${n}`)}}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let s=t.pop();s!=null&&n.push(s.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};var _e="/multistream/1.0.0";var Ua=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Fa=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Va=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Us(r,e={}){let t=Ta(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=pe(e.maxDataLength));let n=e?.lengthDecoder??it,s=e?.lengthEncoder??ke;return{read:async i=>{let a=-1,c=new we;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Ua("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new Va("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Fa("message length too long");return t.read(a,i)},write:async(i,a)=>{await t.write(new we(s(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new we(...i.flatMap(u=>[s(u.byteLength),u]));await t.write(c,a)},unwrap:()=>t.unwrap()}}var ax=N(`
|
|
7
|
+
`);async function Fr(r,e,t){await r.write(e,t)}async function gm(r,e,t){await r.writeV(e,t)}async function cx(r,e){let t=await r.read(e);if(t.byteLength===0||t.get(t.byteLength-1)!==ax[0])throw e.log.error("Invalid mss message - missing newline",t),new Zs("Missing newline");return t.sublist(0,-1)}async function cr(r,e){let t=await cx(r,e);return W(t.subarray())}async function Fs(r,e,t){if(e=Array.isArray(e)?[...e]:[e],e.length===1&&t.negotiateFully===!1)return lx(r,e[0],t);let n=Us(r,{...t,maxDataLength:1024}),s=e.shift();if(s==null)throw new Error("At least one protocol must be specified");t.log.trace('select: write ["%s", "%s"]',_e,s);let o=N(`${_e}
|
|
8
|
+
`),i=N(`${s}
|
|
9
|
+
`);await gm(n,[o,i],t),t.log.trace("select: reading multistream-select header");let a=await cr(n,t);if(t.log.trace('select: read "%s"',a),a===_e&&(t.log.trace("select: reading protocol response"),a=await cr(n,t),t.log.trace('select: read "%s"',a)),a===s)return{stream:n.unwrap(),protocol:s};for(let c of e){t.log.trace('select: write "%s"',c),await Fr(n,N(`${c}
|
|
10
|
+
`),t),t.log.trace("select: reading protocol response");let u=await cr(n,t);if(t.log.trace('select: read "%s" for "%s"',u,c),u===c)return{stream:n.unwrap(),protocol:c}}throw new Mn("protocol selection failed")}function lx(r,e,t){let n=r.sink.bind(r),s=r.source,o=!1,i=!1,a=he(),c=!1,u=!1,f=he(),l=!1,d=!1,h=he(),p=Us({sink:n,source:s},{...t,maxDataLength:1024});r.sink=async b=>{let{sink:y}=p.unwrap();await y(async function*(){let x=!1;for await(let A of b){if(u&&await f.promise,c)yield A;else{u=!0,t.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',_e,e,A.byteLength);let _=`${e}
|
|
11
|
+
`;yield new we(Uint8Array.from([19]),N(`${_e}
|
|
12
|
+
`),ke(_.length),N(_),A).subarray(),t.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',_e,e,A.byteLength),c=!0,u=!1,f.resolve(),m().catch(v=>{t.log.error("could not finish optimistic protocol negotiation of %s",e,v)})}x=!0}x||await m()}())};async function m(){if(i){t.log.trace("optimistic: already negotiating %s stream",e),await a.promise;return}i=!0;try{c||(t.log.trace("optimistic: doing send protocol for %s stream",e),await g()),l||(t.log.trace("optimistic: doing read protocol for %s stream",e),await w())}finally{i=!1,o=!0,a.resolve()}}async function g(){if(u){await f.promise;return}u=!0;try{t.log.trace('optimistic: write ["%s", "%s", data] in source',_e,e),await p.writeV([N(`${_e}
|
|
13
|
+
`),N(`${e}
|
|
14
|
+
`)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',_e,e)}finally{c=!0,u=!1,f.resolve()}}async function w(){if(d){await h.promise;return}d=!0;try{t.log.trace("optimistic: reading multistream select header");let b=await cr(p,t);if(t.log.trace('optimistic: read multistream select header "%s"',b),b===_e&&(b=await cr(p,t)),t.log.trace('optimistic: read protocol "%s", expecting "%s"',b,e),b!==e)throw new Mn("protocol selection failed")}finally{l=!0,d=!1,h.resolve()}}if(r.source=async function*(){await m(),t.log.trace('optimistic: reading data from "%s" stream',e),yield*p.unwrap().source}(),r.closeRead!=null){let b=r.closeRead.bind(r);r.closeRead=async y=>{o||await m().catch(x=>{t.log.error("could not negotiate protocol before close read",x)}),await b(y)}}if(r.closeWrite!=null){let b=r.closeWrite.bind(r);r.closeWrite=async y=>{o||await m().catch(x=>{t.log.error("could not negotiate protocol before close write",x)}),await b(y)}}if(r.close!=null){let b=r.close.bind(r);r.close=async y=>{let x=[];u&&x.push(f.promise),d&&x.push(h.promise),x.length>0?await ar(Promise.all(x),y?.signal):(o=!0,i=!1,a.resolve()),await b(y)}}return{stream:r,protocol:e}}function Ha(r){return r[Symbol.asyncIterator]!=null}var Ka=r=>{let e=pe(r),t=Be(e);return ke(r,t),Ka.bytes=e,t};Ka.bytes=0;function qa(r,e){e=e??{};let t=e.lengthEncoder??Ka;function*n(s){let o=t(s.byteLength);o instanceof Uint8Array?yield o:yield*o,s instanceof Uint8Array?yield s:yield*s}return Ha(r)?async function*(){for await(let s of r)yield*n(s)}():function*(){for(let s of r)yield*n(s)}()}qa.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Ka;return new we(t(r.byteLength),r)};var $a=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},za=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ga=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Vs=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var ux=8,fx=1024*1024*4,Vr;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Vr||(Vr={}));var ef=r=>{let e=it(r);return ef.bytes=pe(e),e};ef.bytes=0;function Qu(r,e){let t=new we,n=Vr.LENGTH,s=-1,o=e?.lengthDecoder??ef,i=e?.maxLengthLength??ux,a=e?.maxDataLength??fx;function*c(){for(;t.byteLength>0;){if(n===Vr.LENGTH)try{if(s=o(t),s<0)throw new $a("Invalid message length");if(s>a)throw new za("Message length too long");let u=o.bytes;t.consume(u),e?.onLength!=null&&e.onLength(s),n=Vr.DATA}catch(u){if(u instanceof RangeError){if(t.byteLength>i)throw new Ga("Message length length too long");break}throw u}if(n===Vr.DATA){if(t.byteLength<s)break;let u=t.sublist(0,s);t.consume(s),e?.onData!=null&&e.onData(u),yield u,n=Vr.LENGTH}}}return Ha(r)?async function*(){for await(let u of r)t.append(u),yield*c();if(t.byteLength>0)throw new Vs("Unexpected end of input")}():function*(){for(let u of r)t.append(u),yield*c();if(t.byteLength>0)throw new Vs("Unexpected end of input")}()}Qu.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:o,value:i}=await r.next(t);if(o===!0)return;i!=null&&(yield i)}catch(o){if(o.code==="ERR_UNDER_READ")return{done:!0,value:null};throw o}finally{t=1}}();return Qu(n,{...e??{},onLength:o=>{t=o}})};async function Hs(r,e,t){e=Array.isArray(e)?e:[e],t.log.trace("handle: available protocols %s",e);let n=Us(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){t.log.trace("handle: reading incoming string");let s=await cr(n,t);if(t.log.trace('handle: read "%s"',s),s===_e){t.log.trace('handle: respond with "%s" for "%s"',_e,s),await Fr(n,N(`${_e}
|
|
15
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',_e,s);continue}if(e.includes(s))return t.log.trace('handle: respond with "%s" for "%s"',s,s),await Fr(n,N(`${s}
|
|
16
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',s,s),{stream:n.unwrap(),protocol:s};if(s==="ls"){let o=new we(...e.map(i=>qa.single(N(`${i}
|
|
17
|
+
`))),N(`
|
|
18
|
+
`));t.log.trace('handle: respond with "%s" for %s',e,s),await Fr(n,o,t),t.log.trace('handle: responded with "%s" for %s',e,s);continue}t.log.trace('handle: respond with "na" for "%s"',s),await Fr(n,N(`na
|
|
19
|
+
`),t),t.log('handle: responded with "na" for "%s"',s)}}var dx=500,tf=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;limits;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:s,close:o,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.limits=e.limits,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=s,this._close=o,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[ff]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new zs("the connection is being closed");if(this.status==="closed")throw new Kr("the connection is closed");if(Array.isArray(e)||(e=[e]),this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new zr("Cannot open protocol stream on limited connection");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(dx);se(1/0,t),e={...e,signal:t}}try{this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.status!=="closed"&&(this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this._abort(e),this.status="closed",this.timeline.close=Date.now())}};function wm(r){return new tf(r)}function gx(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return Zu}function yx(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??Xu}function bm(r,e,t){let n=0;return t.streams.forEach(s=>{s.direction===e&&s.protocol===r&&n++}),n}var Wa=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;outboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;constructor(e,t){this.components=e,this.connectionEncrypters=new Map,t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=new Map,t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??3e3,this.outboundUpgradeTimeout=t.outboundUpgradeTimeout??3e3,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??2e3,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??2e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new ra(`The multiaddr connection is blocked by gater.${e}`)}async upgradeInbound(e,t={}){let n=!1;try{if(this.metrics.dials?.increment({inbound:!0}),n=await this.components.connectionManager.acceptIncomingConnection(e),!n)throw new na("Connection denied");await this.shouldBlockConnection("denyInboundConnection",e),await this._performUpgrade(e,"inbound",t)}catch(s){throw this.metrics.errors?.increment({inbound:!0}),s}finally{n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t={}){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getPeerId(),s;return n!=null&&(s=wt(n),await this.shouldBlockConnection("denyOutboundConnection",s,e)),await this._performUpgrade(e,"outbound",t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),n}}async _performUpgrade(e,t,n){let s,o,i,a,c,u=AbortSignal.timeout(t==="inbound"?this.inboundUpgradeTimeout:this.outboundUpgradeTimeout),f=Vt([u,n.signal]);se(1/0,u,f),n.signal=f,this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t);let l=e;if(n?.skipProtection!==!0){let d=this.components.connectionProtector;d!=null&&(e.log("protecting the %s connection",t),l=await d.protect(e,n))}try{if(s=l,n?.skipEncryption!==!0){n?.onProgress?.(new de(`upgrader:encrypt-${t}-connection`)),{conn:s,remotePeer:o,protocol:c}=await(t==="inbound"?this._encryptInbound(l,{...n,signal:f}):this._encryptOutbound(l,{...n,signal:f}));let d={...l,...s};await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",o,d)}else{let d=e.remoteAddr.getPeerId();if(d==null)throw new Kt(`${t} connection that skipped encryption must have a peer id`);let h=wt(d);c="native",o=h}if(o.equals(this.components.peerId)){let d=new qr("Can not dial self");throw e.abort(d),d}if(i=s,n?.muxerFactory!=null)a=n.muxerFactory;else if(this.streamMuxers.size>0){n?.onProgress?.(new de(`upgrader:multiplex-${t}-connection`));let d=await(t==="inbound"?this._multiplexInbound({...l,...s},this.streamMuxers,n):this._multiplexOutbound({...l,...s},this.streamMuxers,n));a=d.muxerFactory,i=d.stream}}catch(d){throw e.log.error("failed to upgrade inbound connection %s %a - %e",t==="inbound"?"from":"to",e.remoteAddr,d),d}finally{f.clear()}return await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",o,e),e.log("successfully upgraded %s connection",t),this._createConnection({cryptoProtocol:c,direction:t,maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:o,limits:n?.limits})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:s,upgradedConn:o,remotePeer:i,muxerFactory:a,limits:c}=e,u,f,l;a!=null&&(u=a.createStreamMuxer({direction:n,onIncomingStream:p=>{l!=null&&Promise.resolve().then(async()=>{let m=this.components.registrar.getProtocols(),g=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);se(1/0,g);let{stream:w,protocol:b}=await Hs(p,m,{signal:g,log:p.log,yieldBytes:!1});if(l==null)return;l.log("incoming stream opened on %s",b);let y=gx(b,this.components.registrar);if(bm(b,"inbound",l)===y){let A=new Ys(`Too many inbound protocol streams for protocol "${b}" - limit ${y}`);throw p.abort(A),A}p.source=w.source,p.sink=w.sink,p.protocol=b,w.closeWrite!=null&&(p.closeWrite=w.closeWrite),w.closeRead!=null&&(p.closeRead=w.closeRead),w.close!=null&&(p.close=w.close),await this.components.peerStore.merge(i,{protocols:[b]}),this.components.metrics?.trackProtocolStream(p,l),this._onStream({connection:l,stream:p,protocol:b})}).catch(async m=>{l.log.error("error handling incoming stream id %s - %e",p.id,m),p.timeline.close==null&&await p.close()})}}),f=async(p,m={})=>{if(u==null)throw new Rr("Connection is not multiplexed");l.log.trace("starting new stream for protocols %s",p);let g=await u.newStream();l.log.trace("started new stream %s for protocols %s",g.id,p);try{if(m.signal==null){g.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",p);let A=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);se(1/0,A),m={...m,signal:A}}g.log.trace("selecting protocol from protocols %s",p);let{stream:w,protocol:b}=await Fs(g,p,{...m,log:g.log,yieldBytes:!0});g.log.trace("selected protocol %s",b);let y=yx(b,this.components.registrar,m),x=bm(b,"outbound",l);if(x>=y){let A=new Js(`Too many outbound protocol streams for protocol "${b}" - ${x}/${y}`);throw g.abort(A),A}return await this.components.peerStore.merge(i,{protocols:[b]}),g.source=w.source,g.sink=w.sink,g.protocol=b,w.closeWrite!=null&&(g.closeWrite=w.closeWrite),w.closeRead!=null&&(g.closeRead=w.closeRead),w.close!=null&&(g.close=w.close),this.components.metrics?.trackProtocolStream(g,l),g}catch(w){throw l.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",n==="inbound"?"from":"to",e.maConn.remoteAddr,p,w),g.timeline.close==null&&g.abort(w),w}},Promise.all([u.sink(o.source),o.sink(u.source)]).catch(p=>{l.log.error("error piping data through muxer - %e",p)}));let d=s.timeline;s.timeline=new Proxy(d,{set:(...p)=>(p[1]==="close"&&p[2]!=null&&d.close==null&&(async()=>{try{l.status==="open"&&await l.close()}catch(m){l.log.error("error closing connection after timeline close %e",m)}finally{this.events.safeDispatchEvent("connection:close",{detail:l})}})().catch(m=>{l.log.error("error thrown while dispatching connection:close event %e",m)}),Reflect.set(...p))}),s.timeline.upgraded=Date.now();let h=()=>{throw new Rr("Connection is not multiplexed")};return l=wm({remoteAddr:s.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:s.timeline,multiplexer:u?.protocol,encryption:t,limits:c,logger:this.components.logger,newStream:f??h,getStreams:()=>u?.streams??[],close:async p=>{await u?.close(p),await s.close(p)},abort:p=>{s.abort(p),u?.abort(p)}}),this.events.safeDispatchEvent("connection:open",{detail:l}),l.__maConnTimeline=d,l}_onStream(e){let{connection:t,stream:n,protocol:s}=e,{handler:o,options:i}=this.components.registrar.getHandler(s);if(t.limits!=null&&i.runOnLimitedConnection!==!0)throw new zr("Cannot open protocol stream on limited connection");o({connection:t,stream:n})}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let{stream:s,protocol:o}=await Hs(e,n,{...t,log:e.log}),i=this.connectionEncrypters.get(o);if(i==null)throw new Mr(`no crypto module found for ${o}`);return e.log("encrypting inbound connection to %a using %s",e.remoteAddr,o),{...await i.secureInbound(s,t),protocol:o}}catch(s){throw e.log.error("encrypting inbound connection from %a failed",e.remoteAddr,s),new Mr(s.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let{stream:s,protocol:o}=await Fs(e,n,{...t,log:e.log,yieldBytes:!0}),i=this.connectionEncrypters.get(o);if(i==null)throw new Mr(`no crypto module found for ${o}`);return e.log("encrypting outbound connection to %a using %s",e.remoteAddr,o),{...await i.secureOutbound(s,t),protocol:o}}catch(s){throw e.log.error("encrypting outbound connection to %a failed",e.remoteAddr,s),new Mr(s.message)}}async _multiplexOutbound(e,t,n){let s=Array.from(t.keys());e.log("outbound selecting muxer %s",s);try{e.log.trace("selecting stream muxer from %s",s);let{stream:o,protocol:i}=await Fs(e,s,{...n,log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",i);let a=t.get(i);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new Rr(String(o))}}async _multiplexInbound(e,t,n){let s=Array.from(t.keys());e.log("inbound handling muxers %s",s);try{let{stream:o,protocol:i}=await Hs(e,s,{...n,log:e.log}),a=t.get(i);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new Rr(String(o))}}};var xm="2.5.0",vm="js-libp2p";var ja=class extends vt{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new vt,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),u=this.dispatchEvent(new CustomEvent(a.type,{detail:a.detail}));return c||u},se(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Ti(),this.log=this.logger.forComponent("libp2p"),this.services={};let s=this.components=qp({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:vm,version:xm},logger:this.logger,events:t,datastore:e.datastore??new zi,connectionGater:Yp(e.connectionGater),dns:e.dns});this.peerStore=this.configureComponent("peerStore",Np(s,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),s.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(u=>u.multiaddr)};s.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(s)),this.components.upgrader=new Wa(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),streamMuxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,outboundUpgradeTimeout:e.connectionManager?.outboundUpgradeTimeout}),this.configureComponent("transportManager",new Oa(this.components,e.transportManager)),this.configureComponent("connectionManager",new Ba(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new La(this.components,e.connectionMonitor)),this.configureComponent("registrar",new Ma(this.components)),this.configureComponent("addressManager",new Xi(this.components,e.addresses));let o=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Da(this.components,{routers:o}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new Pa(this.components,{routers:i})),this.configureComponent("randomWalk",new Ra(this.components)),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],u=c(this.components);if(u==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=u,this.configureComponent(a,u),u[Xa]!=null&&(this.log("registering service %s for content routing",a),i.push(u[Xa])),u[Ja]!=null&&(this.log("registering service %s for peer routing",a),o.push(u[Ja])),u[Ya]!=null&&(this.log("registering service %s for peer discovery",a),u[Ya].addEventListener?.("peer",f=>{this.#e(f)}))}$p(s)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(e){throw this.log.error("An error occurred starting libp2p",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new Cr;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new R("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new R("no protocols were provided to open a stream");return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){sr(e)&&(e=wt(e.getPeerId()??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Ve([N("/pk/"),e.toMultihash().bytes]),s=await this.contentRouting.get(n,t),o=dn(s);return await this.peerStore.patch(e,{publicKey:o}),o}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async s=>{await this.components.registrar.handle(s,t,n)}))}async unhandle(e){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function bx(r={}){r.privateKey??=await _d("Ed25519");let e=new ja({...await lp(r),peerId:kd(r.privateKey)});return r.start!==!1&&await e.start(),e}return Rm(xx);})();
|
|
20
20
|
/*! Bundled license information:
|
|
21
21
|
|
|
22
22
|
pvtsutils/build/index.js:
|
|
@@ -63,9 +63,6 @@ pvtsutils/build/index.js:
|
|
|
63
63
|
@noble/curves/esm/ed25519.js:
|
|
64
64
|
(*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
|
65
65
|
|
|
66
|
-
@noble/hashes/esm/utils.js:
|
|
67
|
-
(*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
|
68
|
-
|
|
69
66
|
pvutils/build/utils.es.js:
|
|
70
67
|
(*!
|
|
71
68
|
Copyright (c) Peculiar Ventures, LLC
|