@libp2p/circuit-relay-v2 2.0.0 → 2.0.1-21fe841f2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.min.js +2 -2
- package/package.json +8 -8
- package/dist/typedoc-urls.json +0 -12
package/dist/index.min.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PCircuitRelayV2 = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
2
|
-
"use strict";var Libp2PCircuitRelayV2=(()=>{var nf=Object.create;var yn=Object.defineProperty;var sf=Object.getOwnPropertyDescriptor;var of=Object.getOwnPropertyNames;var af=Object.getPrototypeOf,cf=Object.prototype.hasOwnProperty;var bo=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),_t=(r,t)=>{for(var e in t)yn(r,e,{get:t[e],enumerable:!0})},La=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of of(t))!cf.call(r,s)&&s!==e&&yn(r,s,{get:()=>t[s],enumerable:!(n=sf(t,s))||n.enumerable});return r};var wo=(r,t,e)=>(e=r!=null?nf(af(r)):{},La(t||!r||!r.__esModule?yn(e,"default",{value:r,enumerable:!0}):e,r)),lf=r=>La(yn({},"__esModule",{value:!0}),r);var Pc=bo(xr=>{"use strict";var Ud="[object ArrayBuffer]",ge=class r{static isArrayBuffer(t){return Object.prototype.toString.call(t)===Ud}static toArrayBuffer(t){return this.isArrayBuffer(t)?t:t.byteLength===t.buffer.byteLength||t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:this.toUint8Array(t.buffer).slice(t.byteOffset,t.byteOffset+t.byteLength).buffer}static toUint8Array(t){return this.toView(t,Uint8Array)}static toView(t,e){if(t.constructor===e)return t;if(this.isArrayBuffer(t))return new e(t);if(this.isArrayBufferView(t))return new e(t.buffer,t.byteOffset,t.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(t){return this.isArrayBufferView(t)||this.isArrayBuffer(t)}static isArrayBufferView(t){return ArrayBuffer.isView(t)||t&&this.isArrayBuffer(t.buffer)}static isEqual(t,e){let n=r.toUint8Array(t),s=r.toUint8Array(e);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(...t){let e;Array.isArray(t[0])&&!(t[1]instanceof Function)||Array.isArray(t[0])&&t[1]instanceof Function?e=t[0]:t[t.length-1]instanceof Function?e=t.slice(0,t.length-1):e=t;let n=0;for(let i of e)n+=i.byteLength;let s=new Uint8Array(n),o=0;for(let i of e){let a=this.toUint8Array(i);s.set(a,o),o+=a.length}return t[t.length-1]instanceof Function?this.toView(s,t[t.length-1]):s.buffer}},_i="string",Dd=/^[0-9a-f]+$/i,Od=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,Md=/^[a-zA-Z0-9-_]+$/,Pn=class{static fromString(t){let e=unescape(encodeURIComponent(t)),n=new Uint8Array(e.length);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return n.buffer}static toString(t){let e=ge.toUint8Array(t),n="";for(let o=0;o<e.length;o++)n+=String.fromCharCode(e[o]);return decodeURIComponent(escape(n))}},$t=class{static toString(t,e=!1){let n=ge.toArrayBuffer(t),s=new DataView(n),o="";for(let i=0;i<n.byteLength;i+=2){let a=s.getUint16(i,e);o+=String.fromCharCode(a)}return o}static fromString(t,e=!1){let n=new ArrayBuffer(t.length*2),s=new DataView(n);for(let o=0;o<t.length;o++)s.setUint16(o*2,t.charCodeAt(o),e);return n}},Vn=class r{static isHex(t){return typeof t===_i&&Dd.test(t)}static isBase64(t){return typeof t===_i&&Od.test(t)}static isBase64Url(t){return typeof t===_i&&Md.test(t)}static ToString(t,e="utf8"){let n=ge.toUint8Array(t);switch(e.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 $t.toString(n,!0);case"utf16":case"utf16be":return $t.toString(n);default:throw new Error(`Unknown type of encoding '${e}'`)}}static FromString(t,e="utf8"){if(!t)return new ArrayBuffer(0);switch(e.toLowerCase()){case"utf8":return this.FromUtf8String(t);case"binary":return this.FromBinary(t);case"hex":return this.FromHex(t);case"base64":return this.FromBase64(t);case"base64url":return this.FromBase64Url(t);case"utf16le":return $t.fromString(t,!0);case"utf16":case"utf16be":return $t.fromString(t);default:throw new Error(`Unknown type of encoding '${e}'`)}}static ToBase64(t){let e=ge.toUint8Array(t);if(typeof btoa<"u"){let n=this.ToString(e,"binary");return btoa(n)}else return Buffer.from(e).toString("base64")}static FromBase64(t){let e=this.formatString(t);if(!e)return new ArrayBuffer(0);if(!r.isBase64(e))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(e)):new Uint8Array(Buffer.from(e,"base64")).buffer}static FromBase64Url(t){let e=this.formatString(t);if(!e)return new ArrayBuffer(0);if(!r.isBase64Url(e))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(e.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(t){return this.ToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(t,e=r.DEFAULT_UTF8_ENCODING){switch(e){case"ascii":return this.FromBinary(t);case"utf8":return Pn.fromString(t);case"utf16":case"utf16be":return $t.fromString(t);case"utf16le":case"usc2":return $t.fromString(t,!0);default:throw new Error(`Unknown type of encoding '${e}'`)}}static ToUtf8String(t,e=r.DEFAULT_UTF8_ENCODING){switch(e){case"ascii":return this.ToBinary(t);case"utf8":return Pn.toString(t);case"utf16":case"utf16be":return $t.toString(t);case"utf16le":case"usc2":return $t.toString(t,!0);default:throw new Error(`Unknown type of encoding '${e}'`)}}static FromBinary(t){let e=t.length,n=new Uint8Array(e);for(let s=0;s<e;s++)n[s]=t.charCodeAt(s);return n.buffer}static ToBinary(t){let e=ge.toUint8Array(t),n="";for(let s=0;s<e.length;s++)n+=String.fromCharCode(e[s]);return n}static ToHex(t){let e=ge.toUint8Array(t),n="",s=e.length;for(let o=0;o<s;o++){let i=e[o];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(t){let e=this.formatString(t);if(!e)return new ArrayBuffer(0);if(!r.isHex(e))throw new TypeError("Argument 'hexString' is not HEX encoded");e.length%2&&(e=`0${e}`);let n=new Uint8Array(e.length/2);for(let s=0;s<e.length;s=s+2){let o=e.slice(s,s+2);n[s/2]=parseInt(o,16)}return n.buffer}static ToUtf16String(t,e=!1){return $t.toString(t,e)}static FromUtf16String(t,e=!1){return $t.fromString(t,e)}static Base64Padding(t){let e=4-t.length%4;if(e<4)for(let n=0;n<e;n++)t+="=";return t}static formatString(t){return t?.replace(/[\n\r\t ]/g,"")||""}};Vn.DEFAULT_UTF8_ENCODING="utf8";function Pd(r,...t){let e=arguments[0];for(let n=1;n<arguments.length;n++){let s=arguments[n];for(let o in s)e[o]=s[o]}return e}function Vd(...r){let t=r.map(s=>s.byteLength).reduce((s,o)=>s+o),e=new Uint8Array(t),n=0;return r.map(s=>new Uint8Array(s)).forEach(s=>{for(let o of s)e[n++]=o}),e.buffer}function Hd(r,t){if(!(r&&t)||r.byteLength!==t.byteLength)return!1;let e=new Uint8Array(r),n=new Uint8Array(t);for(let s=0;s<r.byteLength;s++)if(e[s]!==n[s])return!1;return!0}xr.BufferSourceConverter=ge;xr.Convert=Vn;xr.assign=Pd;xr.combine=Vd;xr.isEqual=Hd});var Au=bo((pn,Js)=>{(function(r,t){"use strict";var e={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(l){if(!Array.isArray(l)&&!ArrayBuffer.isView(l))return!1;for(var d=0;d<l.length;d++)if(!Number.isInteger(l[d])||l[d]<0||l[d]>255)return!1;return!0}function s(l,d){return(l&65535)*d+(((l>>>16)*d&65535)<<16)}function o(l,d){return l<<d|l>>>32-d}function i(l){return l^=l>>>16,l=s(l,2246822507),l^=l>>>13,l=s(l,3266489909),l^=l>>>16,l}function a(l,d){l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535],d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535];var g=[0,0,0,0];return g[3]+=l[3]+d[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=l[2]+d[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=l[1]+d[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=l[0]+d[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function c(l,d){l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535],d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535];var g=[0,0,0,0];return g[3]+=l[3]*d[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=l[2]*d[3],g[1]+=g[2]>>>16,g[2]&=65535,g[2]+=l[3]*d[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=l[1]*d[3],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=l[2]*d[2],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=l[3]*d[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=l[0]*d[3]+l[1]*d[2]+l[2]*d[1]+l[3]*d[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function h(l,d){return d%=64,d===32?[l[1],l[0]]:d<32?[l[0]<<d|l[1]>>>32-d,l[1]<<d|l[0]>>>32-d]:(d-=32,[l[1]<<d|l[0]>>>32-d,l[0]<<d|l[1]>>>32-d])}function f(l,d){return d%=64,d===0?l:d<32?[l[0]<<d|l[1]>>>32-d,l[1]<<d]:[l[1]<<d-32,0]}function u(l,d){return[l[0]^d[0],l[1]^d[1]]}function p(l){return l=u(l,[0,l[0]>>>1]),l=c(l,[4283543511,3981806797]),l=u(l,[0,l[0]>>>1]),l=c(l,[3301882366,444984403]),l=u(l,[0,l[0]>>>1]),l}e.x86.hash32=function(l,d){if(e.inputValidation&&!n(l))return t;d=d||0;for(var g=l.length%4,y=l.length-g,b=d,w=0,m=3432918353,v=461845907,A=0;A<y;A=A+4)w=l[A]|l[A+1]<<8|l[A+2]<<16|l[A+3]<<24,w=s(w,m),w=o(w,15),w=s(w,v),b^=w,b=o(b,13),b=s(b,5)+3864292196;switch(w=0,g){case 3:w^=l[A+2]<<16;case 2:w^=l[A+1]<<8;case 1:w^=l[A],w=s(w,m),w=o(w,15),w=s(w,v),b^=w}return b^=l.length,b=i(b),b>>>0},e.x86.hash128=function(l,d){if(e.inputValidation&&!n(l))return t;d=d||0;for(var g=l.length%16,y=l.length-g,b=d,w=d,m=d,v=d,A=0,_=0,x=0,B=0,C=597399067,et=2869860233,H=951274213,V=2716044179,U=0;U<y;U=U+16)A=l[U]|l[U+1]<<8|l[U+2]<<16|l[U+3]<<24,_=l[U+4]|l[U+5]<<8|l[U+6]<<16|l[U+7]<<24,x=l[U+8]|l[U+9]<<8|l[U+10]<<16|l[U+11]<<24,B=l[U+12]|l[U+13]<<8|l[U+14]<<16|l[U+15]<<24,A=s(A,C),A=o(A,15),A=s(A,et),b^=A,b=o(b,19),b+=w,b=s(b,5)+1444728091,_=s(_,et),_=o(_,16),_=s(_,H),w^=_,w=o(w,17),w+=m,w=s(w,5)+197830471,x=s(x,H),x=o(x,17),x=s(x,V),m^=x,m=o(m,15),m+=v,m=s(m,5)+2530024501,B=s(B,V),B=o(B,18),B=s(B,C),v^=B,v=o(v,13),v+=b,v=s(v,5)+850148119;switch(A=0,_=0,x=0,B=0,g){case 15:B^=l[U+14]<<16;case 14:B^=l[U+13]<<8;case 13:B^=l[U+12],B=s(B,V),B=o(B,18),B=s(B,C),v^=B;case 12:x^=l[U+11]<<24;case 11:x^=l[U+10]<<16;case 10:x^=l[U+9]<<8;case 9:x^=l[U+8],x=s(x,H),x=o(x,17),x=s(x,V),m^=x;case 8:_^=l[U+7]<<24;case 7:_^=l[U+6]<<16;case 6:_^=l[U+5]<<8;case 5:_^=l[U+4],_=s(_,et),_=o(_,16),_=s(_,H),w^=_;case 4:A^=l[U+3]<<24;case 3:A^=l[U+2]<<16;case 2:A^=l[U+1]<<8;case 1:A^=l[U],A=s(A,C),A=o(A,15),A=s(A,et),b^=A}return b^=l.length,w^=l.length,m^=l.length,v^=l.length,b+=w,b+=m,b+=v,w+=b,m+=b,v+=b,b=i(b),w=i(w),m=i(m),v=i(v),b+=w,b+=m,b+=v,w+=b,m+=b,v+=b,("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(w>>>0).toString(16)).slice(-8)+("00000000"+(m>>>0).toString(16)).slice(-8)+("00000000"+(v>>>0).toString(16)).slice(-8)},e.x64.hash128=function(l,d){if(e.inputValidation&&!n(l))return t;d=d||0;for(var g=l.length%16,y=l.length-g,b=[0,d],w=[0,d],m=[0,0],v=[0,0],A=[2277735313,289559509],_=[1291169091,658871167],x=0;x<y;x=x+16)m=[l[x+4]|l[x+5]<<8|l[x+6]<<16|l[x+7]<<24,l[x]|l[x+1]<<8|l[x+2]<<16|l[x+3]<<24],v=[l[x+12]|l[x+13]<<8|l[x+14]<<16|l[x+15]<<24,l[x+8]|l[x+9]<<8|l[x+10]<<16|l[x+11]<<24],m=c(m,A),m=h(m,31),m=c(m,_),b=u(b,m),b=h(b,27),b=a(b,w),b=a(c(b,[0,5]),[0,1390208809]),v=c(v,_),v=h(v,33),v=c(v,A),w=u(w,v),w=h(w,31),w=a(w,b),w=a(c(w,[0,5]),[0,944331445]);switch(m=[0,0],v=[0,0],g){case 15:v=u(v,f([0,l[x+14]],48));case 14:v=u(v,f([0,l[x+13]],40));case 13:v=u(v,f([0,l[x+12]],32));case 12:v=u(v,f([0,l[x+11]],24));case 11:v=u(v,f([0,l[x+10]],16));case 10:v=u(v,f([0,l[x+9]],8));case 9:v=u(v,[0,l[x+8]]),v=c(v,_),v=h(v,33),v=c(v,A),w=u(w,v);case 8:m=u(m,f([0,l[x+7]],56));case 7:m=u(m,f([0,l[x+6]],48));case 6:m=u(m,f([0,l[x+5]],40));case 5:m=u(m,f([0,l[x+4]],32));case 4:m=u(m,f([0,l[x+3]],24));case 3:m=u(m,f([0,l[x+2]],16));case 2:m=u(m,f([0,l[x+1]],8));case 1:m=u(m,[0,l[x]]),m=c(m,A),m=h(m,31),m=c(m,_),b=u(b,m)}return b=u(b,[0,l.length]),w=u(w,[0,l.length]),b=a(b,w),w=a(w,b),b=p(b),w=p(w),b=a(b,w),w=a(w,b),("00000000"+(b[0]>>>0).toString(16)).slice(-8)+("00000000"+(b[1]>>>0).toString(16)).slice(-8)+("00000000"+(w[0]>>>0).toString(16)).slice(-8)+("00000000"+(w[1]>>>0).toString(16)).slice(-8)},typeof pn<"u"?(typeof Js<"u"&&Js.exports&&(pn=Js.exports=e),pn.murmurHash3=e):typeof define=="function"&&define.amd?define([],function(){return e}):(e._murmurHash3=r.murmurHash3,e.noConflict=function(){return r.murmurHash3=e._murmurHash3,e._murmurHash3=t,e.noConflict=t,e},r.murmurHash3=e)})(pn)});var ia=bo((T1,Bu)=>{Bu.exports=Au()});var f0={};_t(f0,{RELAY_V2_HOP_CODEC:()=>Gt,RELAY_V2_STOP_CODEC:()=>Qe,circuitRelayServer:()=>Nu,circuitRelayTransport:()=>ju});var xo=Symbol.for("@libp2p/peer-id");var Da=Symbol.for("@libp2p/transport");var Ua;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Ua||(Ua={}));var ae=class extends Error{static name="AbortError";constructor(t="The operation was aborted"){super(t),this.name="AbortError"}};var pt=class extends Error{static name="InvalidParametersError";constructor(t="Invalid parameters"){super(t),this.name="InvalidParametersError"}},sr=class extends Error{static name="InvalidPublicKeyError";constructor(t="Invalid public key"){super(t),this.name="InvalidPublicKeyError"}};var bn=class extends Error{static name="InvalidMultihashError";constructor(t="Invalid Multihash"){super(t),this.name="InvalidMultihashError"}};var wn=class extends Error{static name="InvalidMessageError";constructor(t="Invalid message"){super(t),this.name="InvalidMessageError"}};var Mr=class extends Error{static name="DialError";constructor(t="Dial error"){super(t),this.name="DialError"}},xn=class extends Error{static name="ListenError";constructor(t="Listen error"){super(t),this.name="ListenError"}};var or=class extends Error{static name="UnsupportedKeyTypeError";constructor(t="Unsupported key type"){super(t),this.name="UnsupportedKeyTypeError"}};var Ft=(r,...t)=>{try{[...t]}catch{}};var qt=class extends EventTarget{#t=new Map;constructor(){super(),Ft(1/0,this)}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let s=this.#t.get(t);s==null&&(s=[],this.#t.set(t,s)),s.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let s=this.#t.get(t);s!=null&&(s=s.filter(({callback:o})=>o!==e),this.#t.set(t,s))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:s})=>!s),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};function Oa(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Ma(...r){let t=[];for(let e of r)Oa(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStart!=null&&await e.beforeStart()})),await Promise.all(t.map(async e=>{await e.start()})),await Promise.all(t.map(async e=>{e.afterStart!=null&&await e.afterStart()}))}async function Pa(...r){let t=[];for(let e of r)Oa(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStop!=null&&await e.beforeStop()})),await Promise.all(t.map(async e=>{await e.stop()})),await Promise.all(t.map(async e=>{e.afterStop!=null&&await e.afterStop()}))}var Va=Symbol.for("@libp2p/service-capabilities"),Ha=Symbol.for("@libp2p/service-dependencies");var Bo={};_t(Bo,{base58btc:()=>tt,base58flickr:()=>mf});var K0=new Uint8Array(0);function Fa(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ce(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 qa(r){return new TextEncoder().encode(r)}function Ka(r){return new TextDecoder().decode(r)}function uf(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var s=0;s<r.length;s++){var o=r.charAt(s),i=o.charCodeAt(0);if(e[i]!==255)throw new TypeError(o+" is ambiguous");e[i]=s}var a=r.length,c=r.charAt(0),h=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(d){if(d instanceof Uint8Array||(ArrayBuffer.isView(d)?d=new Uint8Array(d.buffer,d.byteOffset,d.byteLength):Array.isArray(d)&&(d=Uint8Array.from(d))),!(d instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(d.length===0)return"";for(var g=0,y=0,b=0,w=d.length;b!==w&&d[b]===0;)b++,g++;for(var m=(w-b)*f+1>>>0,v=new Uint8Array(m);b!==w;){for(var A=d[b],_=0,x=m-1;(A!==0||_<y)&&x!==-1;x--,_++)A+=256*v[x]>>>0,v[x]=A%a>>>0,A=A/a>>>0;if(A!==0)throw new Error("Non-zero carry");y=_,b++}for(var B=m-y;B!==m&&v[B]===0;)B++;for(var C=c.repeat(g);B<m;++B)C+=r.charAt(v[B]);return C}function p(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;var g=0;if(d[g]!==" "){for(var y=0,b=0;d[g]===c;)y++,g++;for(var w=(d.length-g)*h+1>>>0,m=new Uint8Array(w);d[g];){var v=e[d.charCodeAt(g)];if(v===255)return;for(var A=0,_=w-1;(v!==0||A<b)&&_!==-1;_--,A++)v+=a*m[_]>>>0,m[_]=v%256>>>0,v=v/256>>>0;if(v!==0)throw new Error("Non-zero carry");b=A,g++}if(d[g]!==" "){for(var x=w-b;x!==w&&m[x]===0;)x++;for(var B=new Uint8Array(y+(w-x)),C=y;x!==w;)B[C++]=m[x++];return B}}}function l(d){var g=p(d);if(g)return g;throw new Error(`Non-${t} character`)}return{encode:u,decodeUnsafe:p,decode:l}}var ff=uf,hf=ff,$a=hf;var vo=class{name;prefix;baseEncode;constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},Eo=class{name;prefix;baseDecode;prefixCodePoint;constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Ga(this,t)}},So=class{decoders;constructor(t){this.decoders=t}or(t){return Ga(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n!=null)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Ga(r,t){return new So({...r.decoders??{[r.prefix]:r},...t.decoders??{[t.prefix]:t}})}var Ao=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(t,e,n,s){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=s,this.encoder=new vo(t,e,n),this.decoder=new Eo(t,e,s)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}};function ir({name:r,prefix:t,encode:e,decode:n}){return new Ao(r,t,e,n)}function _e({name:r,prefix:t,alphabet:e}){let{encode:n,decode:s}=$a(e,r);return ir({prefix:t,name:r,encode:n,decode:o=>ce(s(o))})}function df(r,t,e,n){let s={};for(let f=0;f<t.length;++f)s[t[f]]=f;let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*e/8|0),a=0,c=0,h=0;for(let f=0;f<o;++f){let u=s[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<e|u,a+=e,a>=8&&(a-=8,i[h++]=255&c>>a)}if(a>=e||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function pf(r,t,e){let n=t[t.length-1]==="=",s=(1<<e)-1,o="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>e;)i-=e,o+=t[s&a>>i];if(i!==0&&(o+=t[s&a<<e-i]),n)for(;o.length*e&7;)o+="=";return o}function st({name:r,prefix:t,bitsPerChar:e,alphabet:n}){return ir({prefix:t,name:r,encode(s){return pf(s,n,e)},decode(s){return df(s,n,e,r)}})}var tt=_e({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),mf=_e({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var _o={};_t(_o,{base32:()=>le,base32hex:()=>wf,base32hexpad:()=>vf,base32hexpadupper:()=>Ef,base32hexupper:()=>xf,base32pad:()=>yf,base32padupper:()=>bf,base32upper:()=>gf,base32z:()=>Sf});var le=st({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),gf=st({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),yf=st({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bf=st({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),wf=st({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),xf=st({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vf=st({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ef=st({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Sf=st({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Af=Za,Wa=128,Bf=127,_f=~Bf,If=Math.pow(2,31);function Za(r,t,e){t=t||[],e=e||0;for(var n=e;r>=If;)t[e++]=r&255|Wa,r/=128;for(;r&_f;)t[e++]=r&255|Wa,r>>>=7;return t[e]=r|0,Za.bytes=e-n+1,t}var Tf=Io,kf=128,ja=127;function Io(r,n){var e=0,n=n||0,s=0,o=n,i,a=r.length;do{if(o>=a)throw Io.bytes=0,new RangeError("Could not decode varint");i=r[o++],e+=s<28?(i&ja)<<s:(i&ja)*Math.pow(2,s),s+=7}while(i>=kf);return Io.bytes=o-n,e}var Nf=Math.pow(2,7),Cf=Math.pow(2,14),Rf=Math.pow(2,21),Lf=Math.pow(2,28),Uf=Math.pow(2,35),Df=Math.pow(2,42),Of=Math.pow(2,49),Mf=Math.pow(2,56),Pf=Math.pow(2,63),Vf=function(r){return r<Nf?1:r<Cf?2:r<Rf?3:r<Lf?4:r<Uf?5:r<Df?6:r<Of?7:r<Mf?8:r<Pf?9:10},Hf={encode:Af,decode:Tf,encodingLength:Vf},Ff=Hf,Pr=Ff;function Vr(r,t=0){return[Pr.decode(r,t),Pr.decode.bytes]}function ar(r,t,e=0){return Pr.encode(r,t,e),t}function cr(r){return Pr.encodingLength(r)}function Wt(r,t){let e=t.byteLength,n=cr(r),s=n+cr(e),o=new Uint8Array(s+e);return ar(r,o,0),ar(e,o,n),o.set(t,s),new lr(r,e,t,o)}function Kt(r){let t=ce(r),[e,n]=Vr(t),[s,o]=Vr(t.subarray(n)),i=t.subarray(n+o);if(i.byteLength!==s)throw new Error("Incorrect length");return new lr(e,s,i,t)}function Xa(r,t){if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&Fa(r.bytes,e.bytes)}}var lr=class{code;size;digest;bytes;constructor(t,e,n,s){this.code=t,this.size=e,this.digest=n,this.bytes=s}};function Ya(r,t){let{bytes:e,version:n}=r;switch(n){case 0:return Kf(e,To(r),t??tt.encoder);default:return zf(e,To(r),t??le.encoder)}}var Ja=new WeakMap;function To(r){let t=Ja.get(r);if(t==null){let e=new Map;return Ja.set(r,e),e}return t}var mt=class r{code;version;multihash;bytes;"/";constructor(t,e,n,s){this.code=e,this.version=t,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:t,multihash:e}=this;if(t!==Hr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==$f)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}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:t,digest:e}=this.multihash,n=Wt(t,e);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(t){return r.equals(this,t)}static equals(t,e){let n=e;return n!=null&&t.code===n.code&&t.version===n.version&&Xa(t.multihash,n.multihash)}toString(t){return Ya(this,t)}toJSON(){return{"/":Ya(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:s,multihash:o,bytes:i}=e;return new r(n,s,o,i??Qa(n,s,o.bytes))}else if(e[Gf]===!0){let{version:n,multihash:s,code:o}=e,i=Kt(s);return r.create(n,o,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==Hr)throw new Error(`Version 0 CID must use dag-pb (code: ${Hr}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let s=Qa(t,e,n.bytes);return new r(t,e,n,s)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,Hr,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length!==0)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,s=ce(t.subarray(n,n+e.multihashSize));if(s.byteLength!==e.multihashSize)throw new Error("Incorrect length");let o=s.subarray(e.multihashSize-e.digestSize),i=new lr(e.multihashCode,e.digestSize,o,s);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[u,p]=Vr(t.subarray(e));return e+=p,u},s=n(),o=Hr;if(s===18?(s=0,e=0):o=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let i=e,a=n(),c=n(),h=e+c,f=h-i;return{version:s,codec:o,multihashCode:a,digestSize:c,multihashSize:f,size:h}}static parse(t,e){let[n,s]=qf(t,e),o=r.decode(s);if(o.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return To(o).set(n,t),o}};function qf(r,t){switch(r[0]){case"Q":{let e=t??tt;return[tt.prefix,e.decode(`${tt.prefix}${r}`)]}case tt.prefix:{let e=t??tt;return[tt.prefix,e.decode(r)]}case le.prefix:{let e=t??le;return[le.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}}function Kf(r,t,e){let{prefix:n}=e;if(n!==tt.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let s=t.get(n);if(s==null){let o=e.encode(r).slice(1);return t.set(n,o),o}else return s}function zf(r,t,e){let{prefix:n}=e,s=t.get(n);if(s==null){let o=e.encode(r);return t.set(n,o),o}else return s}var Hr=112,$f=18;function Qa(r,t,e){let n=cr(r),s=n+cr(t),o=new Uint8Array(s+e.byteLength);return ar(r,o,0),ar(t,o,n),o.set(e,s),o}var Gf=Symbol.for("@ipld/js-cid/CID");var ko={};_t(ko,{identity:()=>ue});var tc=0,Wf="identity",ec=ce;function jf(r){return Wt(tc,ec(r))}var ue={code:tc,name:Wf,encode:ec,digest:jf};function ct(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function rc(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function Zf(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function ur(r,...t){if(!Zf(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${r.length}`)}function nc(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");rc(r.outputLen),rc(r.blockLen)}function fr(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function sc(r,t){ur(r);let e=t.outputLen;if(r.length<e)throw new Error(`digestInto() expects output buffer of length at least ${e}`)}var qe=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var En=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),jt=(r,t)=>r<<32-t|r>>>t;var um=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function oc(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Fr(r){return typeof r=="string"&&(r=oc(r)),ur(r),r}function No(...r){let t=0;for(let n=0;n<r.length;n++){let s=r[n];ur(s),t+=s.length}let e=new Uint8Array(t);for(let n=0,s=0;n<r.length;n++){let o=r[n];e.set(o,s),s+=o.length}return e}var hr=class{clone(){return this._cloneInto()}},fm={}.toString;function Sn(r){let t=n=>r().update(Fr(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function dr(r=32){if(qe&&typeof qe.getRandomValues=="function")return qe.getRandomValues(new Uint8Array(r));if(qe&&typeof qe.randomBytes=="function")return qe.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function Xf(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let s=BigInt(32),o=BigInt(4294967295),i=Number(e>>s&o),a=Number(e&o),c=n?4:0,h=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+h,a,n)}var ic=(r,t,e)=>r&t^~r&e,ac=(r,t,e)=>r&t^r&e^t&e,pr=class extends hr{constructor(t,e,n,s){super(),this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=En(this.buffer)}update(t){fr(this);let{view:e,buffer:n,blockLen:s}=this;t=Fr(t);let o=t.length;for(let i=0;i<o;){let a=Math.min(s-this.pos,o-i);if(a===s){let c=En(t);for(;s<=o-i;i+=s)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===s&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){fr(this),sc(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:s,isLE:o}=this,{pos:i}=this;e[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>s-i&&(this.process(n,0),i=0);for(let u=i;u<s;u++)e[u]=0;Xf(n,s-8,BigInt(this.length*8),o),this.process(n,0);let a=En(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let h=c/4,f=this.get();if(h>f.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<h;u++)a.setUint32(4*u,f[u],o)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:s,finished:o,destroyed:i,pos:a}=this;return t.length=s,t.pos=a,t.finished=o,t.destroyed=i,s%e&&t.buffer.set(n),t}};var An=BigInt(4294967295),Co=BigInt(32);function cc(r,t=!1){return t?{h:Number(r&An),l:Number(r>>Co&An)}:{h:Number(r>>Co&An)|0,l:Number(r&An)|0}}function Yf(r,t=!1){let e=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:o,l:i}=cc(r[s],t);[e[s],n[s]]=[o,i]}return[e,n]}var Jf=(r,t)=>BigInt(r>>>0)<<Co|BigInt(t>>>0),Qf=(r,t,e)=>r>>>e,th=(r,t,e)=>r<<32-e|t>>>e,eh=(r,t,e)=>r>>>e|t<<32-e,rh=(r,t,e)=>r<<32-e|t>>>e,nh=(r,t,e)=>r<<64-e|t>>>e-32,sh=(r,t,e)=>r>>>e-32|t<<64-e,oh=(r,t)=>t,ih=(r,t)=>r,ah=(r,t,e)=>r<<e|t>>>32-e,ch=(r,t,e)=>t<<e|r>>>32-e,lh=(r,t,e)=>t<<e-32|r>>>64-e,uh=(r,t,e)=>r<<e-32|t>>>64-e;function fh(r,t,e,n){let s=(t>>>0)+(n>>>0);return{h:r+e+(s/2**32|0)|0,l:s|0}}var hh=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),dh=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,ph=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),mh=(r,t,e,n,s)=>t+e+n+s+(r/2**32|0)|0,gh=(r,t,e,n,s)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(s>>>0),yh=(r,t,e,n,s,o)=>t+e+n+s+o+(r/2**32|0)|0;var bh={fromBig:cc,split:Yf,toBig:Jf,shrSH:Qf,shrSL:th,rotrSH:eh,rotrSL:rh,rotrBH:nh,rotrBL:sh,rotr32H:oh,rotr32L:ih,rotlSH:ah,rotlSL:ch,rotlBH:lh,rotlBL:uh,add:fh,add3L:hh,add3H:dh,add4L:ph,add4H:mh,add5H:yh,add5L:gh},P=bh;var[wh,xh]=P.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))),Ie=new Uint32Array(80),Te=new Uint32Array(80),Ro=class extends pr{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:t,Al:e,Bh:n,Bl:s,Ch:o,Cl:i,Dh:a,Dl:c,Eh:h,El:f,Fh:u,Fl:p,Gh:l,Gl:d,Hh:g,Hl:y}=this;return[t,e,n,s,o,i,a,c,h,f,u,p,l,d,g,y]}set(t,e,n,s,o,i,a,c,h,f,u,p,l,d,g,y){this.Ah=t|0,this.Al=e|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=h|0,this.El=f|0,this.Fh=u|0,this.Fl=p|0,this.Gh=l|0,this.Gl=d|0,this.Hh=g|0,this.Hl=y|0}process(t,e){for(let m=0;m<16;m++,e+=4)Ie[m]=t.getUint32(e),Te[m]=t.getUint32(e+=4);for(let m=16;m<80;m++){let v=Ie[m-15]|0,A=Te[m-15]|0,_=P.rotrSH(v,A,1)^P.rotrSH(v,A,8)^P.shrSH(v,A,7),x=P.rotrSL(v,A,1)^P.rotrSL(v,A,8)^P.shrSL(v,A,7),B=Ie[m-2]|0,C=Te[m-2]|0,et=P.rotrSH(B,C,19)^P.rotrBH(B,C,61)^P.shrSH(B,C,6),H=P.rotrSL(B,C,19)^P.rotrBL(B,C,61)^P.shrSL(B,C,6),V=P.add4L(x,H,Te[m-7],Te[m-16]),U=P.add4H(V,_,et,Ie[m-7],Ie[m-16]);Ie[m]=U|0,Te[m]=V|0}let{Ah:n,Al:s,Bh:o,Bl:i,Ch:a,Cl:c,Dh:h,Dl:f,Eh:u,El:p,Fh:l,Fl:d,Gh:g,Gl:y,Hh:b,Hl:w}=this;for(let m=0;m<80;m++){let v=P.rotrSH(u,p,14)^P.rotrSH(u,p,18)^P.rotrBH(u,p,41),A=P.rotrSL(u,p,14)^P.rotrSL(u,p,18)^P.rotrBL(u,p,41),_=u&l^~u&g,x=p&d^~p&y,B=P.add5L(w,A,x,xh[m],Te[m]),C=P.add5H(B,b,v,_,wh[m],Ie[m]),et=B|0,H=P.rotrSH(n,s,28)^P.rotrBH(n,s,34)^P.rotrBH(n,s,39),V=P.rotrSL(n,s,28)^P.rotrBL(n,s,34)^P.rotrBL(n,s,39),U=n&o^n&a^o&a,k=s&i^s&c^i&c;b=g|0,w=y|0,g=l|0,y=d|0,l=u|0,d=p|0,{h:u,l:p}=P.add(h|0,f|0,C|0,et|0),h=a|0,f=c|0,a=o|0,c=i|0,o=n|0,i=s|0;let R=P.add3L(et,V,k);n=P.add3H(R,C,H,U),s=R|0}({h:n,l:s}=P.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:o,l:i}=P.add(this.Bh|0,this.Bl|0,o|0,i|0),{h:a,l:c}=P.add(this.Ch|0,this.Cl|0,a|0,c|0),{h,l:f}=P.add(this.Dh|0,this.Dl|0,h|0,f|0),{h:u,l:p}=P.add(this.Eh|0,this.El|0,u|0,p|0),{h:l,l:d}=P.add(this.Fh|0,this.Fl|0,l|0,d|0),{h:g,l:y}=P.add(this.Gh|0,this.Gl|0,g|0,y|0),{h:b,l:w}=P.add(this.Hh|0,this.Hl|0,b|0,w|0),this.set(n,s,o,i,a,c,h,f,u,p,l,d,g,y,b,w)}roundClean(){Ie.fill(0),Te.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 lc=Sn(()=>new Ro);var _n={};_t(_n,{aInRange:()=>kt,abool:()=>Zt,abytes:()=>mr,bitGet:()=>_h,bitLen:()=>Mo,bitMask:()=>Kr,bitSet:()=>Ih,bytesToHex:()=>he,bytesToNumberBE:()=>de,bytesToNumberLE:()=>Ne,concatBytes:()=>pe,createHmacDrbg:()=>Po,ensureBytes:()=>ot,equalBytes:()=>Ah,hexToBytes:()=>ze,hexToNumber:()=>Oo,inRange:()=>qr,isBytes:()=>ke,memoized:()=>Ge,notImplemented:()=>kh,numberToBytesBE:()=>Ce,numberToBytesLE:()=>$e,numberToHexUnpadded:()=>Ke,numberToVarBytesBE:()=>Sh,utf8ToBytes:()=>Bh,validateObject:()=>ee});var Do=BigInt(0),Bn=BigInt(1),vh=BigInt(2);function ke(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function mr(r){if(!ke(r))throw new Error("Uint8Array expected")}function Zt(r,t){if(typeof t!="boolean")throw new Error(`${r} must be valid boolean, got "${t}".`)}var Eh=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function he(r){mr(r);let t="";for(let e=0;e<r.length;e++)t+=Eh[r[e]];return t}function Ke(r){let t=r.toString(16);return t.length&1?`0${t}`:t}function Oo(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var fe={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function uc(r){if(r>=fe._0&&r<=fe._9)return r-fe._0;if(r>=fe._A&&r<=fe._F)return r-(fe._A-10);if(r>=fe._a&&r<=fe._f)return r-(fe._a-10)}function ze(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let t=r.length,e=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let s=0,o=0;s<e;s++,o+=2){let i=uc(r.charCodeAt(o)),a=uc(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 de(r){return Oo(he(r))}function Ne(r){return mr(r),Oo(he(Uint8Array.from(r).reverse()))}function Ce(r,t){return ze(r.toString(16).padStart(t*2,"0"))}function $e(r,t){return Ce(r,t).reverse()}function Sh(r){return ze(Ke(r))}function ot(r,t,e){let n;if(typeof t=="string")try{n=ze(t)}catch(o){throw new Error(`${r} must be valid hex string, got "${t}". Cause: ${o}`)}else if(ke(t))n=Uint8Array.from(t);else throw new Error(`${r} must be hex string or Uint8Array`);let s=n.length;if(typeof e=="number"&&s!==e)throw new Error(`${r} expected ${e} bytes, got ${s}`);return n}function pe(...r){let t=0;for(let n=0;n<r.length;n++){let s=r[n];mr(s),t+=s.length}let e=new Uint8Array(t);for(let n=0,s=0;n<r.length;n++){let o=r[n];e.set(o,s),s+=o.length}return e}function Ah(r,t){if(r.length!==t.length)return!1;let e=0;for(let n=0;n<r.length;n++)e|=r[n]^t[n];return e===0}function Bh(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}var Lo=r=>typeof r=="bigint"&&Do<=r;function qr(r,t,e){return Lo(r)&&Lo(t)&&Lo(e)&&t<=r&&r<e}function kt(r,t,e,n){if(!qr(t,e,n))throw new Error(`expected valid ${r}: ${e} <= n < ${n}, got ${typeof t} ${t}`)}function Mo(r){let t;for(t=0;r>Do;r>>=Bn,t+=1);return t}function _h(r,t){return r>>BigInt(t)&Bn}function Ih(r,t,e){return r|(e?Bn:Do)<<BigInt(t)}var Kr=r=>(vh<<BigInt(r-1))-Bn,Uo=r=>new Uint8Array(r),fc=r=>Uint8Array.from(r);function Po(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=Uo(r),s=Uo(r),o=0,i=()=>{n.fill(1),s.fill(0),o=0},a=(...u)=>e(s,n,...u),c=(u=Uo())=>{s=a(fc([0]),u),n=a(),u.length!==0&&(s=a(fc([1]),u),n=a())},h=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,p=[];for(;u<t;){n=a();let l=n.slice();p.push(l),u+=n.length}return pe(...p)};return(u,p)=>{i(),c(u);let l;for(;!(l=p(h()));)c();return i(),l}}var Th={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"||ke(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,t)=>t.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function ee(r,t,e={}){let n=(s,o,i)=>{let a=Th[o];if(typeof a!="function")throw new Error(`Invalid validator "${o}", expected function`);let c=r[s];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(s)}=${c} (${typeof c}), expected ${o}`)};for(let[s,o]of Object.entries(t))n(s,o,!1);for(let[s,o]of Object.entries(e))n(s,o,!0);return r}var kh=()=>{throw new Error("not implemented")};function Ge(r){let t=new WeakMap;return(e,...n)=>{let s=t.get(e);if(s!==void 0)return s;let o=r(e,...n);return t.set(e,o),o}}var ut=BigInt(0),rt=BigInt(1),We=BigInt(2),Nh=BigInt(3),Vo=BigInt(4),hc=BigInt(5),dc=BigInt(8),Ch=BigInt(9),Rh=BigInt(16);function Y(r,t){let e=r%t;return e>=ut?e:t+e}function Lh(r,t,e){if(e<=ut||t<ut)throw new Error("Expected power/modulo > 0");if(e===rt)return ut;let n=rt;for(;t>ut;)t&rt&&(n=n*r%e),r=r*r%e,t>>=rt;return n}function nt(r,t,e){let n=r;for(;t-- >ut;)n*=n,n%=e;return n}function In(r,t){if(r===ut||t<=ut)throw new Error(`invert: expected positive integers, got n=${r} mod=${t}`);let e=Y(r,t),n=t,s=ut,o=rt,i=rt,a=ut;for(;e!==ut;){let h=n/e,f=n%e,u=s-i*h,p=o-a*h;n=e,e=f,s=i,o=a,i=u,a=p}if(n!==rt)throw new Error("invert: does not exist");return Y(s,t)}function Uh(r){let t=(r-rt)/We,e,n,s;for(e=r-rt,n=0;e%We===ut;e/=We,n++);for(s=We;s<r&&Lh(s,t,r)!==r-rt;s++);if(n===1){let i=(r+rt)/Vo;return function(c,h){let f=c.pow(h,i);if(!c.eql(c.sqr(f),h))throw new Error("Cannot find square root");return f}}let o=(e+rt)/We;return function(a,c){if(a.pow(c,t)===a.neg(a.ONE))throw new Error("Cannot find square root");let h=n,f=a.pow(a.mul(a.ONE,s),e),u=a.pow(c,o),p=a.pow(c,e);for(;!a.eql(p,a.ONE);){if(a.eql(p,a.ZERO))return a.ZERO;let l=1;for(let g=a.sqr(p);l<h&&!a.eql(g,a.ONE);l++)g=a.sqr(g);let d=a.pow(f,rt<<BigInt(h-l-1));f=a.sqr(d),u=a.mul(u,d),p=a.mul(p,f),h=l}return u}}function Dh(r){if(r%Vo===Nh){let t=(r+rt)/Vo;return function(n,s){let o=n.pow(s,t);if(!n.eql(n.sqr(o),s))throw new Error("Cannot find square root");return o}}if(r%dc===hc){let t=(r-hc)/dc;return function(n,s){let o=n.mul(s,We),i=n.pow(o,t),a=n.mul(s,i),c=n.mul(n.mul(a,We),i),h=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(h),s))throw new Error("Cannot find square root");return h}}return r%Rh,Uh(r)}var pc=(r,t)=>(Y(r,t)&rt)===rt,Oh=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ho(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=Oh.reduce((n,s)=>(n[s]="function",n),t);return ee(r,e)}function Mh(r,t,e){if(e<ut)throw new Error("Expected power > 0");if(e===ut)return r.ONE;if(e===rt)return t;let n=r.ONE,s=t;for(;e>ut;)e&rt&&(n=r.mul(n,s)),s=r.sqr(s),e>>=rt;return n}function Ph(r,t){let e=new Array(t.length),n=t.reduce((o,i,a)=>r.is0(i)?o:(e[a]=o,r.mul(o,i)),r.ONE),s=r.inv(n);return t.reduceRight((o,i,a)=>r.is0(i)?o:(e[a]=r.mul(o,e[a]),r.mul(o,i)),s),e}function Fo(r,t){let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function Re(r,t,e=!1,n={}){if(r<=ut)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:s,nByteLength:o}=Fo(r,t);if(o>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=Dh(r),a=Object.freeze({ORDER:r,BITS:s,BYTES:o,MASK:Kr(s),ZERO:ut,ONE:rt,create:c=>Y(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ut<=c&&c<r},is0:c=>c===ut,isOdd:c=>(c&rt)===rt,neg:c=>Y(-c,r),eql:(c,h)=>c===h,sqr:c=>Y(c*c,r),add:(c,h)=>Y(c+h,r),sub:(c,h)=>Y(c-h,r),mul:(c,h)=>Y(c*h,r),pow:(c,h)=>Mh(a,c,h),div:(c,h)=>Y(c*In(h,r),r),sqrN:c=>c*c,addN:(c,h)=>c+h,subN:(c,h)=>c-h,mulN:(c,h)=>c*h,inv:c=>In(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>Ph(a,c),cmov:(c,h,f)=>f?h:c,toBytes:c=>e?$e(c,o):Ce(c,o),fromBytes:c=>{if(c.length!==o)throw new Error(`Fp.fromBytes: expected ${o}, got ${c.length}`);return e?Ne(c):de(c)}});return Object.freeze(a)}function mc(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function qo(r){let t=mc(r);return t+Math.ceil(t/2)}function gc(r,t,e=!1){let n=r.length,s=mc(t),o=qo(t);if(n<16||n<o||n>1024)throw new Error(`expected ${o}-1024 bytes of input, got ${n}`);let i=e?de(r):Ne(r),a=Y(i,t-rt)+rt;return e?$e(a,s):Ce(a,s)}var Hh=BigInt(0),Ko=BigInt(1),zo=new WeakMap,yc=new WeakMap;function Tn(r,t){let e=(o,i)=>{let a=i.negate();return o?a:i},n=o=>{if(!Number.isSafeInteger(o)||o<=0||o>t)throw new Error(`Wrong window size=${o}, should be [1..${t}]`)},s=o=>{n(o);let i=Math.ceil(t/o)+1,a=2**(o-1);return{windows:i,windowSize:a}};return{constTimeNegate:e,unsafeLadder(o,i){let a=r.ZERO,c=o;for(;i>Hh;)i&Ko&&(a=a.add(c)),c=c.double(),i>>=Ko;return a},precomputeWindow(o,i){let{windows:a,windowSize:c}=s(i),h=[],f=o,u=f;for(let p=0;p<a;p++){u=f,h.push(u);for(let l=1;l<c;l++)u=u.add(f),h.push(u);f=u.double()}return h},wNAF(o,i,a){let{windows:c,windowSize:h}=s(o),f=r.ZERO,u=r.BASE,p=BigInt(2**o-1),l=2**o,d=BigInt(o);for(let g=0;g<c;g++){let y=g*h,b=Number(a&p);a>>=d,b>h&&(b-=l,a+=Ko);let w=y,m=y+Math.abs(b)-1,v=g%2!==0,A=b<0;b===0?u=u.add(e(v,i[w])):f=f.add(e(A,i[m]))}return{p:f,f:u}},wNAFCached(o,i,a){let c=yc.get(o)||1,h=zo.get(o);return h||(h=this.precomputeWindow(o,c),c!==1&&zo.set(o,a(h))),this.wNAF(c,h,i)},setWindowSize(o,i){n(i),yc.set(o,i),zo.delete(o)}}}function kn(r,t,e,n){if(!Array.isArray(e)||!Array.isArray(n)||n.length!==e.length)throw new Error("arrays of points and scalars must have equal length");n.forEach((f,u)=>{if(!t.isValid(f))throw new Error(`wrong scalar at index ${u}`)}),e.forEach((f,u)=>{if(!(f instanceof r))throw new Error(`wrong point at index ${u}`)});let s=Mo(BigInt(e.length)),o=s>12?s-3:s>4?s-2:s?2:1,i=(1<<o)-1,a=new Array(i+1).fill(r.ZERO),c=Math.floor((t.BITS-1)/o)*o,h=r.ZERO;for(let f=c;f>=0;f-=o){a.fill(r.ZERO);for(let p=0;p<n.length;p++){let l=n[p],d=Number(l>>BigInt(f)&BigInt(i));a[d]=a[d].add(e[p])}let u=r.ZERO;for(let p=a.length-1,l=r.ZERO;p>0;p--)l=l.add(a[p]),u=u.add(l);if(h=h.add(u),f!==0)for(let p=0;p<o;p++)h=h.double()}return h}function zr(r){return Ho(r.Fp),ee(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Fo(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Xt=BigInt(0),Nt=BigInt(1),Nn=BigInt(2),Fh=BigInt(8),qh={zip215:!0};function Kh(r){let t=zr(r);return ee(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...t})}function bc(r){let t=Kh(r),{Fp:e,n,prehash:s,hash:o,randomBytes:i,nByteLength:a,h:c}=t,h=Nn<<BigInt(a*8)-Nt,f=e.create,u=Re(t.n,t.nBitLength),p=t.uvRatio||((S,E)=>{try{return{isValid:!0,value:e.sqrt(S*e.inv(E))}}catch{return{isValid:!1,value:Xt}}}),l=t.adjustScalarBytes||(S=>S),d=t.domain||((S,E,I)=>{if(Zt("phflag",I),E.length||I)throw new Error("Contexts/pre-hash are not supported");return S});function g(S,E){kt("coordinate "+S,E,Xt,h)}function y(S){if(!(S instanceof m))throw new Error("ExtendedPoint expected")}let b=Ge((S,E)=>{let{ex:I,ey:L,ez:O}=S,M=S.is0();E==null&&(E=M?Fh:e.inv(O));let K=f(I*E),G=f(L*E),z=f(O*E);if(M)return{x:Xt,y:Nt};if(z!==Nt)throw new Error("invZ was invalid");return{x:K,y:G}}),w=Ge(S=>{let{a:E,d:I}=t;if(S.is0())throw new Error("bad point: ZERO");let{ex:L,ey:O,ez:M,et:K}=S,G=f(L*L),z=f(O*O),X=f(M*M),Q=f(X*X),ht=f(G*E),dt=f(X*f(ht+z)),yt=f(Q+f(I*f(G*z)));if(dt!==yt)throw new Error("bad point: equation left != right (1)");let Bt=f(L*O),lt=f(M*K);if(Bt!==lt)throw new Error("bad point: equation left != right (2)");return!0});class m{constructor(E,I,L,O){this.ex=E,this.ey=I,this.ez=L,this.et=O,g("x",E),g("y",I),g("z",L),g("t",O),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(E){if(E instanceof m)throw new Error("extended point not allowed");let{x:I,y:L}=E||{};return g("x",I),g("y",L),new m(I,L,Nt,f(I*L))}static normalizeZ(E){let I=e.invertBatch(E.map(L=>L.ez));return E.map((L,O)=>L.toAffine(I[O])).map(m.fromAffine)}static msm(E,I){return kn(m,u,E,I)}_setWindowSize(E){_.setWindowSize(this,E)}assertValidity(){w(this)}equals(E){y(E);let{ex:I,ey:L,ez:O}=this,{ex:M,ey:K,ez:G}=E,z=f(I*G),X=f(M*O),Q=f(L*G),ht=f(K*O);return z===X&&Q===ht}is0(){return this.equals(m.ZERO)}negate(){return new m(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:E}=t,{ex:I,ey:L,ez:O}=this,M=f(I*I),K=f(L*L),G=f(Nn*f(O*O)),z=f(E*M),X=I+L,Q=f(f(X*X)-M-K),ht=z+K,dt=ht-G,yt=z-K,Bt=f(Q*dt),lt=f(ht*yt),Tt=f(Q*yt),ie=f(dt*ht);return new m(Bt,lt,ie,Tt)}add(E){y(E);let{a:I,d:L}=t,{ex:O,ey:M,ez:K,et:G}=this,{ex:z,ey:X,ez:Q,et:ht}=E;if(I===BigInt(-1)){let _a=f((M-O)*(X+z)),Ia=f((M+O)*(X-z)),yo=f(Ia-_a);if(yo===Xt)return this.double();let Ta=f(K*Nn*ht),ka=f(G*Nn*Q),Na=ka+Ta,Ca=Ia+_a,Ra=ka-Ta,Qu=f(Na*yo),tf=f(Ca*Ra),ef=f(Na*Ra),rf=f(yo*Ca);return new m(Qu,tf,rf,ef)}let dt=f(O*z),yt=f(M*X),Bt=f(G*L*ht),lt=f(K*Q),Tt=f((O+M)*(z+X)-dt-yt),ie=lt-Bt,Dr=lt+Bt,Or=f(yt-I*dt),Zu=f(Tt*ie),Xu=f(Dr*Or),Yu=f(Tt*Or),Ju=f(ie*Dr);return new m(Zu,Xu,Ju,Yu)}subtract(E){return this.add(E.negate())}wNAF(E){return _.wNAFCached(this,E,m.normalizeZ)}multiply(E){let I=E;kt("scalar",I,Nt,n);let{p:L,f:O}=this.wNAF(I);return m.normalizeZ([L,O])[0]}multiplyUnsafe(E){let I=E;return kt("scalar",I,Xt,n),I===Xt?A:this.equals(A)||I===Nt?this:this.equals(v)?this.wNAF(I).p:_.unsafeLadder(this,I)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(E){return b(this,E)}clearCofactor(){let{h:E}=t;return E===Nt?this:this.multiplyUnsafe(E)}static fromHex(E,I=!1){let{d:L,a:O}=t,M=e.BYTES;E=ot("pointHex",E,M),Zt("zip215",I);let K=E.slice(),G=E[M-1];K[M-1]=G&-129;let z=Ne(K),X=I?h:e.ORDER;kt("pointHex.y",z,Xt,X);let Q=f(z*z),ht=f(Q-Nt),dt=f(L*Q-O),{isValid:yt,value:Bt}=p(ht,dt);if(!yt)throw new Error("Point.fromHex: invalid y coordinate");let lt=(Bt&Nt)===Nt,Tt=(G&128)!==0;if(!I&&Bt===Xt&&Tt)throw new Error("Point.fromHex: x=0 and x_0=1");return Tt!==lt&&(Bt=f(-Bt)),m.fromAffine({x:Bt,y:z})}static fromPrivateKey(E){return C(E).point}toRawBytes(){let{x:E,y:I}=this.toAffine(),L=$e(I,e.BYTES);return L[L.length-1]|=E&Nt?128:0,L}toHex(){return he(this.toRawBytes())}}m.BASE=new m(t.Gx,t.Gy,Nt,f(t.Gx*t.Gy)),m.ZERO=new m(Xt,Nt,Nt,Xt);let{BASE:v,ZERO:A}=m,_=Tn(m,a*8);function x(S){return Y(S,n)}function B(S){return x(Ne(S))}function C(S){let E=a;S=ot("private key",S,E);let I=ot("hashed private key",o(S),2*E),L=l(I.slice(0,E)),O=I.slice(E,2*E),M=B(L),K=v.multiply(M),G=K.toRawBytes();return{head:L,prefix:O,scalar:M,point:K,pointBytes:G}}function et(S){return C(S).pointBytes}function H(S=new Uint8Array,...E){let I=pe(...E);return B(o(d(I,ot("context",S),!!s)))}function V(S,E,I={}){S=ot("message",S),s&&(S=s(S));let{prefix:L,scalar:O,pointBytes:M}=C(E),K=H(I.context,L,S),G=v.multiply(K).toRawBytes(),z=H(I.context,G,M,S),X=x(K+z*O);kt("signature.s",X,Xt,n);let Q=pe(G,$e(X,e.BYTES));return ot("result",Q,a*2)}let U=qh;function k(S,E,I,L=U){let{context:O,zip215:M}=L,K=e.BYTES;S=ot("signature",S,2*K),E=ot("message",E),M!==void 0&&Zt("zip215",M),s&&(E=s(E));let G=Ne(S.slice(K,2*K)),z,X,Q;try{z=m.fromHex(I,M),X=m.fromHex(S.slice(0,K),M),Q=v.multiplyUnsafe(G)}catch{return!1}if(!M&&z.isSmallOrder())return!1;let ht=H(O,X.toRawBytes(),z.toRawBytes(),E);return X.add(z.multiplyUnsafe(ht)).subtract(Q).clearCofactor().equals(m.ZERO)}return v._setWindowSize(8),{CURVE:t,getPublicKey:et,sign:V,verify:k,ExtendedPoint:m,utils:{getExtendedPublicKey:C,randomPrivateKey:()=>i(e.BYTES),precompute(S=8,E=m.BASE){return E._setWindowSize(S),E.multiply(BigInt(3)),E}}}}var $o=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),wc=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Um=BigInt(0),zh=BigInt(1),xc=BigInt(2),Dm=BigInt(3),$h=BigInt(5),Gh=BigInt(8);function Wh(r){let t=BigInt(10),e=BigInt(20),n=BigInt(40),s=BigInt(80),o=$o,a=r*r%o*r%o,c=nt(a,xc,o)*a%o,h=nt(c,zh,o)*r%o,f=nt(h,$h,o)*h%o,u=nt(f,t,o)*f%o,p=nt(u,e,o)*u%o,l=nt(p,n,o)*p%o,d=nt(l,s,o)*l%o,g=nt(d,s,o)*l%o,y=nt(g,t,o)*f%o;return{pow_p_5_8:nt(y,xc,o)*r%o,b2:a}}function jh(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function Zh(r,t){let e=$o,n=Y(t*t*t,e),s=Y(n*n*t,e),o=Wh(r*s).pow_p_5_8,i=Y(r*n*o,e),a=Y(t*i*i,e),c=i,h=Y(i*wc,e),f=a===r,u=a===Y(-r,e),p=a===Y(-r*wc,e);return f&&(i=c),(u||p)&&(i=h),pc(i,e)&&(i=Y(-i,e)),{isValid:f||u,value:i}}var Xh=Re($o,void 0,!0),Yh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Xh,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:Gh,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:lc,randomBytes:dr,adjustScalarBytes:jh,uvRatio:Zh},vc=bc(Yh);var Cn=32;function Ec(r,t,e){return vc.verify(t,e instanceof Uint8Array?e:e.subarray(),r)}var Rn=class{type="Ed25519";raw;constructor(t){this.raw=Go(t,Cn)}toMultihash(){return ue.digest(gr(this))}toCID(){return mt.createV1(114,this.toMultihash())}toString(){return tt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}verify(t,e){return Ec(this.raw,e,t)}};function Wo(r){return r=Go(r,Cn),new Rn(r)}function Go(r,t){if(r=Uint8Array.from(r??[]),r.length!==t)throw new pt(`Key must be a Uint8Array of length ${t}, got ${r.length}`);return r}function it(r=0){return new Uint8Array(r)}function Ct(r=0){return new Uint8Array(r)}var Qh=Math.pow(2,7),td=Math.pow(2,14),ed=Math.pow(2,21),jo=Math.pow(2,28),Zo=Math.pow(2,35),Xo=Math.pow(2,42),Yo=Math.pow(2,49),W=128,vt=127;function Et(r){if(r<Qh)return 1;if(r<td)return 2;if(r<ed)return 3;if(r<jo)return 4;if(r<Zo)return 5;if(r<Xo)return 6;if(r<Yo)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Jo(r,t,e=0){switch(Et(r)){case 8:t[e++]=r&255|W,r/=128;case 7:t[e++]=r&255|W,r/=128;case 6:t[e++]=r&255|W,r/=128;case 5:t[e++]=r&255|W,r/=128;case 4:t[e++]=r&255|W,r>>>=7;case 3:t[e++]=r&255|W,r>>>=7;case 2:t[e++]=r&255|W,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function rd(r,t,e=0){switch(Et(r)){case 8:t.set(e++,r&255|W),r/=128;case 7:t.set(e++,r&255|W),r/=128;case 6:t.set(e++,r&255|W),r/=128;case 5:t.set(e++,r&255|W),r/=128;case 4:t.set(e++,r&255|W),r>>>=7;case 3:t.set(e++,r&255|W),r>>>=7;case 2:t.set(e++,r&255|W),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function Qo(r,t){let e=r[t],n=0;if(n+=e&vt,e<W||(e=r[t+1],n+=(e&vt)<<7,e<W)||(e=r[t+2],n+=(e&vt)<<14,e<W)||(e=r[t+3],n+=(e&vt)<<21,e<W)||(e=r[t+4],n+=(e&vt)*jo,e<W)||(e=r[t+5],n+=(e&vt)*Zo,e<W)||(e=r[t+6],n+=(e&vt)*Xo,e<W)||(e=r[t+7],n+=(e&vt)*Yo,e<W))return n;throw new RangeError("Could not decode varint")}function nd(r,t){let e=r.get(t),n=0;if(n+=e&vt,e<W||(e=r.get(t+1),n+=(e&vt)<<7,e<W)||(e=r.get(t+2),n+=(e&vt)<<14,e<W)||(e=r.get(t+3),n+=(e&vt)<<21,e<W)||(e=r.get(t+4),n+=(e&vt)*jo,e<W)||(e=r.get(t+5),n+=(e&vt)*Zo,e<W)||(e=r.get(t+6),n+=(e&vt)*Xo,e<W)||(e=r.get(t+7),n+=(e&vt)*Yo,e<W))return n;throw new RangeError("Could not decode varint")}function zt(r,t,e=0){return t==null&&(t=Ct(Et(r))),t instanceof Uint8Array?Jo(r,t,e):rd(r,t,e)}function me(r,t=0){return r instanceof Uint8Array?Qo(r,t):nd(r,t)}var ti=new Float32Array([-0]),Le=new Uint8Array(ti.buffer);function Ac(r,t,e){ti[0]=r,t[e]=Le[0],t[e+1]=Le[1],t[e+2]=Le[2],t[e+3]=Le[3]}function Bc(r,t){return Le[0]=r[t],Le[1]=r[t+1],Le[2]=r[t+2],Le[3]=r[t+3],ti[0]}var ei=new Float64Array([-0]),St=new Uint8Array(ei.buffer);function _c(r,t,e){ei[0]=r,t[e]=St[0],t[e+1]=St[1],t[e+2]=St[2],t[e+3]=St[3],t[e+4]=St[4],t[e+5]=St[5],t[e+6]=St[6],t[e+7]=St[7]}function Ic(r,t){return St[0]=r[t],St[1]=r[t+1],St[2]=r[t+2],St[3]=r[t+3],St[4]=r[t+4],St[5]=r[t+5],St[6]=r[t+6],St[7]=r[t+7],ei[0]}var sd=BigInt(Number.MAX_SAFE_INTEGER),od=BigInt(Number.MIN_SAFE_INTEGER),Lt=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return je;if(t<sd&&t>od)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,s=t-(n<<32n);return e&&(n=~n|0n,s=~s|0n,++s>Tc&&(s=0n,++n>Tc&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(t){if(t===0)return je;let e=t<0;e&&(t=-t);let n=t>>>0,s=(t-n)/4294967296>>>0;return e&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):je}},je=new Lt(0,0);je.toBigInt=function(){return 0n};je.zzEncode=je.zzDecode=function(){return this};je.length=function(){return 1};var Tc=4294967296n;function kc(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function Nc(r,t,e){if(e-t<1)return"";let s,o=[],i=0,a;for(;t<e;)a=r[t++],a<128?o[i++]=a:a>191&&a<224?o[i++]=(a&31)<<6|r[t++]&63:a>239&&a<365?(a=((a&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,o[i++]=55296+(a>>10),o[i++]=56320+(a&1023)):o[i++]=(a&15)<<12|(r[t++]&63)<<6|r[t++]&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 ri(r,t,e){let n=e,s,o;for(let i=0;i<r.length;++i)s=r.charCodeAt(i),s<128?t[e++]=s:s<2048?(t[e++]=s>>6|192,t[e++]=s&63|128):(s&64512)===55296&&((o=r.charCodeAt(i+1))&64512)===56320?(s=65536+((s&1023)<<10)+(o&1023),++i,t[e++]=s>>18|240,t[e++]=s>>12&63|128,t[e++]=s>>6&63|128,t[e++]=s&63|128):(t[e++]=s>>12|224,t[e++]=s>>6&63|128,t[e++]=s&63|128);return e-n}function Yt(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function Un(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var ni=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,Yt(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Yt(this,4);return Un(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Yt(this,4);return Un(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Yt(this,4);let t=Bc(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw Yt(this,4);let t=Ic(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw Yt(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return Nc(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw Yt(this,t);this.pos+=t}else do if(this.pos>=this.len)throw Yt(this);while(this.buf[this.pos++]&128);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new Lt(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw Yt(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw Yt(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Yt(this,8);let t=Un(this.buf,this.pos+=4),e=Un(this.buf,this.pos+=4);return new Lt(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let t=Qo(this.buf,this.pos);return this.pos+=Et(t),t}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 si(r){return new ni(r instanceof Uint8Array?r:r.subarray())}function Ut(r,t,e){let n=si(r);return t.decode(n,void 0,e)}var oi={};_t(oi,{base10:()=>id});var id=_e({prefix:"9",name:"base10",alphabet:"0123456789"});var ii={};_t(ii,{base16:()=>ad,base16upper:()=>cd});var ad=st({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),cd=st({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var ai={};_t(ai,{base2:()=>ld});var ld=st({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ci={};_t(ci,{base256emoji:()=>pd});var Rc=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}"),ud=Rc.reduce((r,t,e)=>(r[e]=t,r),[]),fd=Rc.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function hd(r){return r.reduce((t,e)=>(t+=ud[e],t),"")}function dd(r){let t=[];for(let e of r){let n=fd[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var pd=ir({prefix:"\u{1F680}",name:"base256emoji",encode:hd,decode:dd});var li={};_t(li,{base36:()=>md,base36upper:()=>gd});var md=_e({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),gd=_e({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var ui={};_t(ui,{base64:()=>yd,base64pad:()=>bd,base64url:()=>wd,base64urlpad:()=>xd});var yd=st({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),bd=st({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),wd=st({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),xd=st({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var fi={};_t(fi,{base8:()=>vd});var vd=st({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var hi={};_t(hi,{identity:()=>Ed});var Ed=ir({prefix:"\0",name:"identity",encode:r=>Ka(r),decode:r=>qa(r)});var bg=new TextEncoder,wg=new TextDecoder;var mi={};_t(mi,{sha256:()=>yr,sha512:()=>Bd});function pi({name:r,code:t,encode:e}){return new di(r,t,e)}var di=class{name;code;encode;constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?Wt(this.code,e):e.then(n=>Wt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function Uc(r){return async t=>new Uint8Array(await crypto.subtle.digest(r,t))}var yr=pi({name:"sha2-256",code:18,encode:Uc("SHA-256")}),Bd=pi({name:"sha2-512",code:19,encode:Uc("SHA-512")});var $r={...hi,...ai,...fi,...oi,...ii,..._o,...li,...Bo,...ui,...ci},Cg={...mi,...ko};function Oc(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Dc=Oc("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),gi=Oc("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=Ct(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),_d={utf8:Dc,"utf-8":Dc,hex:$r.base16,latin1:gi,ascii:gi,binary:gi,...$r},Dn=_d;function F(r,t="utf8"){let e=Dn[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.decoder.decode(`${e.prefix}${r}`)}function yi(r){let t=r??8192,e=t>>>1,n,s=t;return function(i){if(i<1||i>e)return Ct(i);s+i>t&&(n=Ct(t),s=0);let a=n.subarray(s,s+=i);return s&7&&(s=(s|7)+1),a}}var Ze=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function bi(){}var xi=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},Id=yi();function Td(r){return globalThis.Buffer!=null?Ct(r):Id(r)}var Wr=class{len;head;tail;states;constructor(){this.len=0,this.head=new Ze(bi,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new Ze(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new vi((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(On,10,Lt.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=Lt.fromBigInt(t);return this._push(On,e.length(),e)}uint64Number(t){return this._push(Jo,Et(t),t)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=Lt.fromBigInt(t).zzEncode();return this._push(On,e.length(),e)}sint64Number(t){let e=Lt.fromNumber(t).zzEncode();return this._push(On,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(wi,1,t?1:0)}fixed32(t){return this._push(Gr,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=Lt.fromBigInt(t);return this._push(Gr,4,e.lo)._push(Gr,4,e.hi)}fixed64Number(t){let e=Lt.fromNumber(t);return this._push(Gr,4,e.lo)._push(Gr,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(Ac,4,t)}double(t){return this._push(_c,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(wi,1,0):this.uint32(e)._push(Nd,e,t)}string(t){let e=kc(t);return e!==0?this.uint32(e)._push(ri,e,t):this._push(wi,1,0)}fork(){return this.states=new xi(this),this.head=this.tail=new Ze(bi,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 Ze(bi,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=Td(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function wi(r,t,e){t[e]=r&255}function kd(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var vi=class extends Ze{next;constructor(t,e){super(kd,t,e),this.next=void 0}};function On(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function Gr(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function Nd(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(Wr.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(Cd,t,r),this},Wr.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(Rd,t,r),this});function Cd(r,t,e){t.set(r,e)}function Rd(r,t,e){r.length<40?ri(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(F(r),e)}function Ei(){return new Wr}function Dt(r,t){let e=Ei();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var br;(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"})(br||(br={}));function Mn(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function Xe(r){function t(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let e=function(o,i){let a=t(o);i.int32(a)},n=function(o){let i=o.int32();return t(i)};return Mn("enum",br.VARINT,e,n)}function Ot(r,t){return Mn("message",br.LENGTH_DELIMITED,r,t)}var jr=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var ft;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(ft||(ft={}));var Si;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(Si||(Si={}));(function(r){r.codec=()=>Xe(Si)})(ft||(ft={}));var re;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.Type=ft.codec().decode(e);break}case 2:{o.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(re||(re={}));var Ai;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.Type=ft.codec().decode(e);break}case 2:{o.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(Ai||(Ai={}));var sn={};_t(sn,{MAX_RSA_KEY_SIZE:()=>ks,generateRSAKeyPair:()=>Ll,jwkToJWKKeyPair:()=>Ul,jwkToPkcs1:()=>jd,jwkToPkix:()=>Li,jwkToRSAPrivateKey:()=>Rl,pkcs1ToJwk:()=>kl,pkcs1ToRSAPrivateKey:()=>Cl,pkixToJwk:()=>Nl,pkixToRSAPublicKey:()=>Ui});var Ld=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]),Ue=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),De=new Uint32Array(64),Bi=class extends pr{constructor(){super(64,32,8,!1),this.A=Ue[0]|0,this.B=Ue[1]|0,this.C=Ue[2]|0,this.D=Ue[3]|0,this.E=Ue[4]|0,this.F=Ue[5]|0,this.G=Ue[6]|0,this.H=Ue[7]|0}get(){let{A:t,B:e,C:n,D:s,E:o,F:i,G:a,H:c}=this;return[t,e,n,s,o,i,a,c]}set(t,e,n,s,o,i,a,c){this.A=t|0,this.B=e|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(t,e){for(let u=0;u<16;u++,e+=4)De[u]=t.getUint32(e,!1);for(let u=16;u<64;u++){let p=De[u-15],l=De[u-2],d=jt(p,7)^jt(p,18)^p>>>3,g=jt(l,17)^jt(l,19)^l>>>10;De[u]=g+De[u-7]+d+De[u-16]|0}let{A:n,B:s,C:o,D:i,E:a,F:c,G:h,H:f}=this;for(let u=0;u<64;u++){let p=jt(a,6)^jt(a,11)^jt(a,25),l=f+p+ic(a,c,h)+Ld[u]+De[u]|0,g=(jt(n,2)^jt(n,13)^jt(n,22))+ac(n,s,o)|0;f=h,h=c,c=a,a=i+l|0,i=o,o=s,s=n,n=l+g|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,h=h+this.G|0,f=f+this.H|0,this.set(n,s,o,i,a,c,h,f)}roundClean(){De.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var wr=Sn(()=>new Bi);var $=wo(Pc());function Ye(r,t){let e=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)e+=r[r.length-1-n]*Math.pow(2,t*n);return e}function Oe(r,t,e=-1){let n=e,s=r,o=0,i=Math.pow(2,t);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 h=new Uint8Array(c);for(let f=a-1;f>=0;f--){let u=Math.pow(2,f*t);h[o-f-1]=Math.floor(s/u),s-=h[o-f-1]*u}return c}i*=Math.pow(2,t)}return new ArrayBuffer(0)}function Hn(...r){let t=0,e=0;for(let o of r)t+=o.length;let n=new ArrayBuffer(t),s=new Uint8Array(n);for(let o of r)s.set(o,e),e+=o.length;return s}function Ii(){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 t=new ArrayBuffer(this.valueHex.byteLength),e=new Uint8Array(t);for(let a=0;a<this.valueHex.byteLength;a++)e[a]=0;e[0]=r[0]&128;let n=Ye(e,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,Ye(o,8)-n}function Vc(r){let t=r<0?r*-1:r,e=128;for(let n=1;n<8;n++){if(t<=e){if(r<0){let i=e-t,a=Oe(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let s=Oe(t,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}e*=Math.pow(2,8)}return new ArrayBuffer(0)}function Hc(r,t){if(r.byteLength!==t.byteLength)return!1;let e=new Uint8Array(r),n=new Uint8Array(t);for(let s=0;s<e.length;s++)if(e[s]!==n[s])return!1;return!0}function Rt(r,t){let e=r.toString(10);if(t<e.length)return"";let n=t-e.length,s=new Array(n);for(let i=0;i<n;i++)s[i]="0";return s.join("").concat(e)}var hy=Math.log(2);function Fn(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Ti(r){let t=0,e=0;for(let s=0;s<r.length;s++){let o=r[s];t+=o.byteLength}let n=new Uint8Array(t);for(let s=0;s<r.length;s++){let o=r[s];n.set(new Uint8Array(o),e),e+=o.byteLength}return n.buffer}function xe(r,t,e,n){return t instanceof Uint8Array?t.byteLength?e<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):t.byteLength-e-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 Xr=class{constructor(){this.items=[]}write(t){this.items.push(t)}final(){return Ti(this.items)}},Zr=[new Uint8Array([1])],Fc="0123456789";var Ar="",Jt=new ArrayBuffer(0),ki=new Uint8Array(0),Yr="EndOfContent",Kc="OCTET STRING",zc="BIT STRING";function ve(r){var t;return t=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?$.BufferSourceConverter.toUint8Array(o.valueHex):ki}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(!xe(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",Jt)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:$.Convert.ToHex(this.valueHexView)}}},t.NAME="hexBlock",t}var ye=class{constructor({blockLength:t=0,error:e=Ar,warnings:n=[],valueBeforeDecode:s=ki}={}){this.blockLength=t,this.error=e,this.warnings=n,this.valueBeforeDecodeView=$.BufferSourceConverter.toUint8Array(s)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(t){this.valueBeforeDecodeView=new Uint8Array(t)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:$.Convert.ToHex(this.valueBeforeDecodeView)}}};ye.NAME="baseBlock";var At=class extends ye{fromBER(t,e,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(t,e){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};At.NAME="valueBlock";var qn=class extends ve(ye){constructor({idBlock:t={}}={}){var e,n,s,o;super(),t?(this.isHexOnly=(e=t.isHexOnly)!==null&&e!==void 0?e:!1,this.valueHexView=t.valueHex?$.BufferSourceConverter.toUint8Array(t.valueHex):ki,this.tagClass=(n=t.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(s=t.tagNumber)!==null&&s!==void 0?s:-1,this.isConstructed=(o=t.isConstructed)!==null&&o!==void 0?o:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(t=!1){let e=0;switch(this.tagClass){case 1:e|=0;break;case 2:e|=64;break;case 3:e|=128;break;case 4:e|=192;break;default:return this.error="Unknown tag class",Jt}if(this.isConstructed&&(e|=32),this.tagNumber<31&&!this.isHexOnly){let s=new Uint8Array(1);if(!t){let o=this.tagNumber;o&=31,e|=o,s[0]=e}return s.buffer}if(!this.isHexOnly){let s=Oe(this.tagNumber,7),o=new Uint8Array(s),i=s.byteLength,a=new Uint8Array(i+1);if(a[0]=e|31,!t){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]=e|31,!t){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(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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,h=this.valueHexView=new Uint8Array(255),f=255;for(;o[c]&128;){if(h[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 p=new Uint8Array(f);for(let l=0;l<h.length;l++)p[l]=h[l];h=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,h[c-1]=o[c]&127;let u=new Uint8Array(c);for(let p=0;p<c;p++)u[p]=h[p];h=this.valueHexView=new Uint8Array(c),h.set(u),this.blockLength<=9?this.tagNumber=Ye(h,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 e+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};qn.NAME="identificationBlock";var Kn=class extends ye{constructor({lenBlock:t={}}={}){var e,n,s;super(),this.isIndefiniteForm=(e=t.isIndefiniteForm)!==null&&e!==void 0?e:!1,this.longFormUsed=(n=t.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(s=t.length)!==null&&s!==void 0?s:0}fromBER(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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,e+this.blockLength;if(this.longFormUsed=!!(o[0]&128),this.longFormUsed===!1)return this.length=o[0],this.blockLength=1,e+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=e+1,c=s.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=Ye(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,e+this.blockLength}toBER(t=!1){let e,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return e=new ArrayBuffer(1),t===!1&&(n=new Uint8Array(e),n[0]=128),e;if(this.longFormUsed){let s=Oe(this.length,8);if(s.byteLength>127)return this.error="Too big length",Jt;if(e=new ArrayBuffer(s.byteLength+1),t)return e;let o=new Uint8Array(s);n=new Uint8Array(e),n[0]=s.byteLength|128;for(let i=0;i<s.byteLength;i++)n[i+1]=o[i];return e}return e=new ArrayBuffer(1),t===!1&&(n=new Uint8Array(e),n[0]=this.length),e}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};Kn.NAME="lengthBlock";var N={},bt=class extends ye{constructor({name:t=Ar,optional:e=!1,primitiveSchema:n,...s}={},o){super(s),this.name=t,this.optional=e,n&&(this.primitiveSchema=n),this.idBlock=new qn(s),this.lenBlock=new Kn(s),this.valueBlock=o?new o(s):new At(s)}fromBER(t,e,n){let s=this.valueBlock.fromBER(t,e,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(t,e){let n=e||new Xr;e||$c(this);let s=this.idBlock.toBER(t);if(n.write(s),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(t,n),n.write(new ArrayBuffer(2));else{let o=this.valueBlock.toBER(t);this.lenBlock.length=o.byteLength;let i=this.lenBlock.toBER(t);n.write(i),n.write(o)}return e?Jt:n.final()}toJSON(){let t={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(t.primitiveSchema=this.primitiveSchema.toJSON()),t}toString(t="ascii"){return t==="ascii"?this.onAsciiEncoding():$.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${$.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(t){if(this===t)return!0;if(!(t instanceof this.constructor))return!1;let e=this.toBER(),n=t.toBER();return Hc(e,n)}};bt.NAME="BaseBlock";function $c(r){if(r instanceof N.Constructed)for(let t of r.valueBlock.value)$c(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var zn=class extends bt{constructor({value:t=Ar,...e}={},n){super(e,n),t&&this.fromString(t)}getValue(){return this.valueBlock.value}setValue(t){this.valueBlock.value=t}fromBER(t,e,n){let s=this.valueBlock.fromBER(t,e,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}'`}};zn.NAME="BaseStringBlock";var $n=class extends ve(At){constructor({isHexOnly:t=!0,...e}={}){super(e),this.isHexOnly=t}};$n.NAME="PrimitiveValueBlock";var Gc,Gn=class extends bt{constructor(t={}){super(t,$n),this.idBlock.isConstructed=!1}};Gc=Gn;N.Primitive=Gc;Gn.NAME="PRIMITIVE";function qd(r,t){if(r instanceof t)return r;let e=new t;return e.idBlock=r.idBlock,e.lenBlock=r.lenBlock,e.warnings=r.warnings,e.valueBeforeDecodeView=r.valueBeforeDecodeView,e}function _s(r,t=0,e=r.length){let n=t,s=new bt({},At),o=new ye;if(!xe(o,r,t,e))return s.error=o.error,{offset:-1,result:s};if(!r.subarray(t,t+e).length)return s.error="Zero buffer length",{offset:-1,result:s};let a=s.idBlock.fromBER(r,t,e);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),a===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(t=a,e-=s.idBlock.blockLength,a=s.lenBlock.fromBER(r,t,e),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),a===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};if(t=a,e-=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=bt;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=N.EndOfContent;break;case 1:c=N.Boolean;break;case 2:c=N.Integer;break;case 3:c=N.BitString;break;case 4:c=N.OctetString;break;case 5:c=N.Null;break;case 6:c=N.ObjectIdentifier;break;case 10:c=N.Enumerated;break;case 12:c=N.Utf8String;break;case 13:c=N.RelativeObjectIdentifier;break;case 14:c=N.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:c=N.Sequence;break;case 17:c=N.Set;break;case 18:c=N.NumericString;break;case 19:c=N.PrintableString;break;case 20:c=N.TeletexString;break;case 21:c=N.VideotexString;break;case 22:c=N.IA5String;break;case 23:c=N.UTCTime;break;case 24:c=N.GeneralizedTime;break;case 25:c=N.GraphicString;break;case 26:c=N.VisibleString;break;case 27:c=N.GeneralString;break;case 28:c=N.UniversalString;break;case 29:c=N.CharacterString;break;case 30:c=N.BmpString;break;case 31:c=N.DATE;break;case 32:c=N.TimeOfDay;break;case 33:c=N.DateTime;break;case 34:c=N.Duration;break;default:{let h=s.idBlock.isConstructed?new N.Constructed:new N.Primitive;h.idBlock=s.idBlock,h.lenBlock=s.lenBlock,h.warnings=s.warnings,s=h}}break;case 2:case 3:case 4:default:c=s.idBlock.isConstructed?N.Constructed:N.Primitive}return s=qd(s,c),a=s.fromBER(r,t,s.lenBlock.isIndefiniteForm?e:s.lenBlock.length),s.valueBeforeDecodeView=r.subarray(n,n+s.blockLength),{offset:a,result:s}}function Ni(r){if(!r.byteLength){let t=new bt({},At);return t.error="Input buffer has zero length",{offset:-1,result:t}}return _s($.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function Kd(r,t){return r?1:t}var ne=class extends At{constructor({value:t=[],isIndefiniteForm:e=!1,...n}={}){super(n),this.value=t,this.isIndefiniteForm=e}fromBER(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;if(this.valueBeforeDecodeView=s.subarray(e,e+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),e;let o=e;for(;Kd(this.isIndefiniteForm,n)>0;){let i=_s(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===Yr)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Yr?this.value.pop():this.warnings.push("No EndOfContent block encoded")),o}toBER(t,e){let n=e||new Xr;for(let s=0;s<this.value.length;s++)this.value[s].toBER(t,n);return e?Jt:n.final()}toJSON(){let t={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let e of this.value)t.value.push(e.toJSON());return t}};ne.NAME="ConstructedValueBlock";var Wc,Me=class extends bt{constructor(t={}){super(t,ne),this.idBlock.isConstructed=!0}fromBER(t,e,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(t,e,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 t=[];for(let n of this.valueBlock.value)t.push(n.toString("ascii").split(`
|
2
|
+
"use strict";var Libp2PCircuitRelayV2=(()=>{var sf=Object.create;var bn=Object.defineProperty;var of=Object.getOwnPropertyDescriptor;var af=Object.getOwnPropertyNames;var cf=Object.getPrototypeOf,lf=Object.prototype.hasOwnProperty;var wo=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),_t=(r,t)=>{for(var e in t)bn(r,e,{get:t[e],enumerable:!0})},Ua=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of af(t))!lf.call(r,s)&&s!==e&&bn(r,s,{get:()=>t[s],enumerable:!(n=of(t,s))||n.enumerable});return r};var xo=(r,t,e)=>(e=r!=null?sf(cf(r)):{},Ua(t||!r||!r.__esModule?bn(e,"default",{value:r,enumerable:!0}):e,r)),uf=r=>Ua(bn({},"__esModule",{value:!0}),r);var Vc=wo(xr=>{"use strict";var Ud="[object ArrayBuffer]",ge=class r{static isArrayBuffer(t){return Object.prototype.toString.call(t)===Ud}static toArrayBuffer(t){return this.isArrayBuffer(t)?t:t.byteLength===t.buffer.byteLength||t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:this.toUint8Array(t.buffer).slice(t.byteOffset,t.byteOffset+t.byteLength).buffer}static toUint8Array(t){return this.toView(t,Uint8Array)}static toView(t,e){if(t.constructor===e)return t;if(this.isArrayBuffer(t))return new e(t);if(this.isArrayBufferView(t))return new e(t.buffer,t.byteOffset,t.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(t){return this.isArrayBufferView(t)||this.isArrayBuffer(t)}static isArrayBufferView(t){return ArrayBuffer.isView(t)||t&&this.isArrayBuffer(t.buffer)}static isEqual(t,e){let n=r.toUint8Array(t),s=r.toUint8Array(e);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(...t){let e;Array.isArray(t[0])&&!(t[1]instanceof Function)||Array.isArray(t[0])&&t[1]instanceof Function?e=t[0]:t[t.length-1]instanceof Function?e=t.slice(0,t.length-1):e=t;let n=0;for(let i of e)n+=i.byteLength;let s=new Uint8Array(n),o=0;for(let i of e){let a=this.toUint8Array(i);s.set(a,o),o+=a.length}return t[t.length-1]instanceof Function?this.toView(s,t[t.length-1]):s.buffer}},Ii="string",Dd=/^[0-9a-f]+$/i,Od=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,Md=/^[a-zA-Z0-9-_]+$/,Vn=class{static fromString(t){let e=unescape(encodeURIComponent(t)),n=new Uint8Array(e.length);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return n.buffer}static toString(t){let e=ge.toUint8Array(t),n="";for(let o=0;o<e.length;o++)n+=String.fromCharCode(e[o]);return decodeURIComponent(escape(n))}},$t=class{static toString(t,e=!1){let n=ge.toArrayBuffer(t),s=new DataView(n),o="";for(let i=0;i<n.byteLength;i+=2){let a=s.getUint16(i,e);o+=String.fromCharCode(a)}return o}static fromString(t,e=!1){let n=new ArrayBuffer(t.length*2),s=new DataView(n);for(let o=0;o<t.length;o++)s.setUint16(o*2,t.charCodeAt(o),e);return n}},Hn=class r{static isHex(t){return typeof t===Ii&&Dd.test(t)}static isBase64(t){return typeof t===Ii&&Od.test(t)}static isBase64Url(t){return typeof t===Ii&&Md.test(t)}static ToString(t,e="utf8"){let n=ge.toUint8Array(t);switch(e.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 $t.toString(n,!0);case"utf16":case"utf16be":return $t.toString(n);default:throw new Error(`Unknown type of encoding '${e}'`)}}static FromString(t,e="utf8"){if(!t)return new ArrayBuffer(0);switch(e.toLowerCase()){case"utf8":return this.FromUtf8String(t);case"binary":return this.FromBinary(t);case"hex":return this.FromHex(t);case"base64":return this.FromBase64(t);case"base64url":return this.FromBase64Url(t);case"utf16le":return $t.fromString(t,!0);case"utf16":case"utf16be":return $t.fromString(t);default:throw new Error(`Unknown type of encoding '${e}'`)}}static ToBase64(t){let e=ge.toUint8Array(t);if(typeof btoa<"u"){let n=this.ToString(e,"binary");return btoa(n)}else return Buffer.from(e).toString("base64")}static FromBase64(t){let e=this.formatString(t);if(!e)return new ArrayBuffer(0);if(!r.isBase64(e))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(e)):new Uint8Array(Buffer.from(e,"base64")).buffer}static FromBase64Url(t){let e=this.formatString(t);if(!e)return new ArrayBuffer(0);if(!r.isBase64Url(e))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(e.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(t){return this.ToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(t,e=r.DEFAULT_UTF8_ENCODING){switch(e){case"ascii":return this.FromBinary(t);case"utf8":return Vn.fromString(t);case"utf16":case"utf16be":return $t.fromString(t);case"utf16le":case"usc2":return $t.fromString(t,!0);default:throw new Error(`Unknown type of encoding '${e}'`)}}static ToUtf8String(t,e=r.DEFAULT_UTF8_ENCODING){switch(e){case"ascii":return this.ToBinary(t);case"utf8":return Vn.toString(t);case"utf16":case"utf16be":return $t.toString(t);case"utf16le":case"usc2":return $t.toString(t,!0);default:throw new Error(`Unknown type of encoding '${e}'`)}}static FromBinary(t){let e=t.length,n=new Uint8Array(e);for(let s=0;s<e;s++)n[s]=t.charCodeAt(s);return n.buffer}static ToBinary(t){let e=ge.toUint8Array(t),n="";for(let s=0;s<e.length;s++)n+=String.fromCharCode(e[s]);return n}static ToHex(t){let e=ge.toUint8Array(t),n="",s=e.length;for(let o=0;o<s;o++){let i=e[o];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(t){let e=this.formatString(t);if(!e)return new ArrayBuffer(0);if(!r.isHex(e))throw new TypeError("Argument 'hexString' is not HEX encoded");e.length%2&&(e=`0${e}`);let n=new Uint8Array(e.length/2);for(let s=0;s<e.length;s=s+2){let o=e.slice(s,s+2);n[s/2]=parseInt(o,16)}return n.buffer}static ToUtf16String(t,e=!1){return $t.toString(t,e)}static FromUtf16String(t,e=!1){return $t.fromString(t,e)}static Base64Padding(t){let e=4-t.length%4;if(e<4)for(let n=0;n<e;n++)t+="=";return t}static formatString(t){return t?.replace(/[\n\r\t ]/g,"")||""}};Hn.DEFAULT_UTF8_ENCODING="utf8";function Pd(r,...t){let e=arguments[0];for(let n=1;n<arguments.length;n++){let s=arguments[n];for(let o in s)e[o]=s[o]}return e}function Vd(...r){let t=r.map(s=>s.byteLength).reduce((s,o)=>s+o),e=new Uint8Array(t),n=0;return r.map(s=>new Uint8Array(s)).forEach(s=>{for(let o of s)e[n++]=o}),e.buffer}function Hd(r,t){if(!(r&&t)||r.byteLength!==t.byteLength)return!1;let e=new Uint8Array(r),n=new Uint8Array(t);for(let s=0;s<r.byteLength;s++)if(e[s]!==n[s])return!1;return!0}xr.BufferSourceConverter=ge;xr.Convert=Hn;xr.assign=Pd;xr.combine=Vd;xr.isEqual=Hd});var Bu=wo((mn,Qs)=>{(function(r,t){"use strict";var e={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(l){if(!Array.isArray(l)&&!ArrayBuffer.isView(l))return!1;for(var d=0;d<l.length;d++)if(!Number.isInteger(l[d])||l[d]<0||l[d]>255)return!1;return!0}function s(l,d){return(l&65535)*d+(((l>>>16)*d&65535)<<16)}function o(l,d){return l<<d|l>>>32-d}function i(l){return l^=l>>>16,l=s(l,2246822507),l^=l>>>13,l=s(l,3266489909),l^=l>>>16,l}function a(l,d){l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535],d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535];var g=[0,0,0,0];return g[3]+=l[3]+d[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=l[2]+d[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=l[1]+d[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=l[0]+d[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function c(l,d){l=[l[0]>>>16,l[0]&65535,l[1]>>>16,l[1]&65535],d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535];var g=[0,0,0,0];return g[3]+=l[3]*d[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=l[2]*d[3],g[1]+=g[2]>>>16,g[2]&=65535,g[2]+=l[3]*d[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=l[1]*d[3],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=l[2]*d[2],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=l[3]*d[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=l[0]*d[3]+l[1]*d[2]+l[2]*d[1]+l[3]*d[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function h(l,d){return d%=64,d===32?[l[1],l[0]]:d<32?[l[0]<<d|l[1]>>>32-d,l[1]<<d|l[0]>>>32-d]:(d-=32,[l[1]<<d|l[0]>>>32-d,l[0]<<d|l[1]>>>32-d])}function f(l,d){return d%=64,d===0?l:d<32?[l[0]<<d|l[1]>>>32-d,l[1]<<d]:[l[1]<<d-32,0]}function u(l,d){return[l[0]^d[0],l[1]^d[1]]}function p(l){return l=u(l,[0,l[0]>>>1]),l=c(l,[4283543511,3981806797]),l=u(l,[0,l[0]>>>1]),l=c(l,[3301882366,444984403]),l=u(l,[0,l[0]>>>1]),l}e.x86.hash32=function(l,d){if(e.inputValidation&&!n(l))return t;d=d||0;for(var g=l.length%4,y=l.length-g,b=d,w=0,m=3432918353,v=461845907,A=0;A<y;A=A+4)w=l[A]|l[A+1]<<8|l[A+2]<<16|l[A+3]<<24,w=s(w,m),w=o(w,15),w=s(w,v),b^=w,b=o(b,13),b=s(b,5)+3864292196;switch(w=0,g){case 3:w^=l[A+2]<<16;case 2:w^=l[A+1]<<8;case 1:w^=l[A],w=s(w,m),w=o(w,15),w=s(w,v),b^=w}return b^=l.length,b=i(b),b>>>0},e.x86.hash128=function(l,d){if(e.inputValidation&&!n(l))return t;d=d||0;for(var g=l.length%16,y=l.length-g,b=d,w=d,m=d,v=d,A=0,_=0,x=0,B=0,C=597399067,et=2869860233,H=951274213,V=2716044179,U=0;U<y;U=U+16)A=l[U]|l[U+1]<<8|l[U+2]<<16|l[U+3]<<24,_=l[U+4]|l[U+5]<<8|l[U+6]<<16|l[U+7]<<24,x=l[U+8]|l[U+9]<<8|l[U+10]<<16|l[U+11]<<24,B=l[U+12]|l[U+13]<<8|l[U+14]<<16|l[U+15]<<24,A=s(A,C),A=o(A,15),A=s(A,et),b^=A,b=o(b,19),b+=w,b=s(b,5)+1444728091,_=s(_,et),_=o(_,16),_=s(_,H),w^=_,w=o(w,17),w+=m,w=s(w,5)+197830471,x=s(x,H),x=o(x,17),x=s(x,V),m^=x,m=o(m,15),m+=v,m=s(m,5)+2530024501,B=s(B,V),B=o(B,18),B=s(B,C),v^=B,v=o(v,13),v+=b,v=s(v,5)+850148119;switch(A=0,_=0,x=0,B=0,g){case 15:B^=l[U+14]<<16;case 14:B^=l[U+13]<<8;case 13:B^=l[U+12],B=s(B,V),B=o(B,18),B=s(B,C),v^=B;case 12:x^=l[U+11]<<24;case 11:x^=l[U+10]<<16;case 10:x^=l[U+9]<<8;case 9:x^=l[U+8],x=s(x,H),x=o(x,17),x=s(x,V),m^=x;case 8:_^=l[U+7]<<24;case 7:_^=l[U+6]<<16;case 6:_^=l[U+5]<<8;case 5:_^=l[U+4],_=s(_,et),_=o(_,16),_=s(_,H),w^=_;case 4:A^=l[U+3]<<24;case 3:A^=l[U+2]<<16;case 2:A^=l[U+1]<<8;case 1:A^=l[U],A=s(A,C),A=o(A,15),A=s(A,et),b^=A}return b^=l.length,w^=l.length,m^=l.length,v^=l.length,b+=w,b+=m,b+=v,w+=b,m+=b,v+=b,b=i(b),w=i(w),m=i(m),v=i(v),b+=w,b+=m,b+=v,w+=b,m+=b,v+=b,("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(w>>>0).toString(16)).slice(-8)+("00000000"+(m>>>0).toString(16)).slice(-8)+("00000000"+(v>>>0).toString(16)).slice(-8)},e.x64.hash128=function(l,d){if(e.inputValidation&&!n(l))return t;d=d||0;for(var g=l.length%16,y=l.length-g,b=[0,d],w=[0,d],m=[0,0],v=[0,0],A=[2277735313,289559509],_=[1291169091,658871167],x=0;x<y;x=x+16)m=[l[x+4]|l[x+5]<<8|l[x+6]<<16|l[x+7]<<24,l[x]|l[x+1]<<8|l[x+2]<<16|l[x+3]<<24],v=[l[x+12]|l[x+13]<<8|l[x+14]<<16|l[x+15]<<24,l[x+8]|l[x+9]<<8|l[x+10]<<16|l[x+11]<<24],m=c(m,A),m=h(m,31),m=c(m,_),b=u(b,m),b=h(b,27),b=a(b,w),b=a(c(b,[0,5]),[0,1390208809]),v=c(v,_),v=h(v,33),v=c(v,A),w=u(w,v),w=h(w,31),w=a(w,b),w=a(c(w,[0,5]),[0,944331445]);switch(m=[0,0],v=[0,0],g){case 15:v=u(v,f([0,l[x+14]],48));case 14:v=u(v,f([0,l[x+13]],40));case 13:v=u(v,f([0,l[x+12]],32));case 12:v=u(v,f([0,l[x+11]],24));case 11:v=u(v,f([0,l[x+10]],16));case 10:v=u(v,f([0,l[x+9]],8));case 9:v=u(v,[0,l[x+8]]),v=c(v,_),v=h(v,33),v=c(v,A),w=u(w,v);case 8:m=u(m,f([0,l[x+7]],56));case 7:m=u(m,f([0,l[x+6]],48));case 6:m=u(m,f([0,l[x+5]],40));case 5:m=u(m,f([0,l[x+4]],32));case 4:m=u(m,f([0,l[x+3]],24));case 3:m=u(m,f([0,l[x+2]],16));case 2:m=u(m,f([0,l[x+1]],8));case 1:m=u(m,[0,l[x]]),m=c(m,A),m=h(m,31),m=c(m,_),b=u(b,m)}return b=u(b,[0,l.length]),w=u(w,[0,l.length]),b=a(b,w),w=a(w,b),b=p(b),w=p(w),b=a(b,w),w=a(w,b),("00000000"+(b[0]>>>0).toString(16)).slice(-8)+("00000000"+(b[1]>>>0).toString(16)).slice(-8)+("00000000"+(w[0]>>>0).toString(16)).slice(-8)+("00000000"+(w[1]>>>0).toString(16)).slice(-8)},typeof mn<"u"?(typeof Qs<"u"&&Qs.exports&&(mn=Qs.exports=e),mn.murmurHash3=e):typeof define=="function"&&define.amd?define([],function(){return e}):(e._murmurHash3=r.murmurHash3,e.noConflict=function(){return r.murmurHash3=e._murmurHash3,e._murmurHash3=t,e.noConflict=t,e},r.murmurHash3=e)})(mn)});var aa=wo((k1,_u)=>{_u.exports=Bu()});var f0={};_t(f0,{RELAY_V2_HOP_CODEC:()=>Gt,RELAY_V2_STOP_CODEC:()=>Qe,circuitRelayServer:()=>Cu,circuitRelayTransport:()=>Zu});var vo=Symbol.for("@libp2p/peer-id");var Oa=Symbol.for("@libp2p/transport");var Da;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Da||(Da={}));var ae=class extends Error{static name="AbortError";constructor(t="The operation was aborted"){super(t),this.name="AbortError"}};var pt=class extends Error{static name="InvalidParametersError";constructor(t="Invalid parameters"){super(t),this.name="InvalidParametersError"}},sr=class extends Error{static name="InvalidPublicKeyError";constructor(t="Invalid public key"){super(t),this.name="InvalidPublicKeyError"}};var wn=class extends Error{static name="InvalidMultihashError";constructor(t="Invalid Multihash"){super(t),this.name="InvalidMultihashError"}};var xn=class extends Error{static name="InvalidMessageError";constructor(t="Invalid message"){super(t),this.name="InvalidMessageError"}};var Mr=class extends Error{static name="DialError";constructor(t="Dial error"){super(t),this.name="DialError"}},vn=class extends Error{static name="ListenError";constructor(t="Listen error"){super(t),this.name="ListenError"}};var or=class extends Error{static name="UnsupportedKeyTypeError";constructor(t="Unsupported key type"){super(t),this.name="UnsupportedKeyTypeError"}};var Ft=(r,...t)=>{try{[...t]}catch{}};var qt=class extends EventTarget{#t=new Map;constructor(){super(),Ft(1/0,this)}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let s=this.#t.get(t);s==null&&(s=[],this.#t.set(t,s)),s.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let s=this.#t.get(t);s!=null&&(s=s.filter(({callback:o})=>o!==e),this.#t.set(t,s))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:s})=>!s),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};function Ma(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Pa(...r){let t=[];for(let e of r)Ma(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStart!=null&&await e.beforeStart()})),await Promise.all(t.map(async e=>{await e.start()})),await Promise.all(t.map(async e=>{e.afterStart!=null&&await e.afterStart()}))}async function Va(...r){let t=[];for(let e of r)Ma(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStop!=null&&await e.beforeStop()})),await Promise.all(t.map(async e=>{await e.stop()})),await Promise.all(t.map(async e=>{e.afterStop!=null&&await e.afterStop()}))}var Ha=Symbol.for("@libp2p/service-capabilities"),Fa=Symbol.for("@libp2p/service-dependencies");var _o={};_t(_o,{base58btc:()=>tt,base58flickr:()=>gf});var K0=new Uint8Array(0);function qa(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ce(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 Ka(r){return new TextEncoder().encode(r)}function za(r){return new TextDecoder().decode(r)}function ff(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var s=0;s<r.length;s++){var o=r.charAt(s),i=o.charCodeAt(0);if(e[i]!==255)throw new TypeError(o+" is ambiguous");e[i]=s}var a=r.length,c=r.charAt(0),h=Math.log(a)/Math.log(256),f=Math.log(256)/Math.log(a);function u(d){if(d instanceof Uint8Array||(ArrayBuffer.isView(d)?d=new Uint8Array(d.buffer,d.byteOffset,d.byteLength):Array.isArray(d)&&(d=Uint8Array.from(d))),!(d instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(d.length===0)return"";for(var g=0,y=0,b=0,w=d.length;b!==w&&d[b]===0;)b++,g++;for(var m=(w-b)*f+1>>>0,v=new Uint8Array(m);b!==w;){for(var A=d[b],_=0,x=m-1;(A!==0||_<y)&&x!==-1;x--,_++)A+=256*v[x]>>>0,v[x]=A%a>>>0,A=A/a>>>0;if(A!==0)throw new Error("Non-zero carry");y=_,b++}for(var B=m-y;B!==m&&v[B]===0;)B++;for(var C=c.repeat(g);B<m;++B)C+=r.charAt(v[B]);return C}function p(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;var g=0;if(d[g]!==" "){for(var y=0,b=0;d[g]===c;)y++,g++;for(var w=(d.length-g)*h+1>>>0,m=new Uint8Array(w);d[g];){var v=e[d.charCodeAt(g)];if(v===255)return;for(var A=0,_=w-1;(v!==0||A<b)&&_!==-1;_--,A++)v+=a*m[_]>>>0,m[_]=v%256>>>0,v=v/256>>>0;if(v!==0)throw new Error("Non-zero carry");b=A,g++}if(d[g]!==" "){for(var x=w-b;x!==w&&m[x]===0;)x++;for(var B=new Uint8Array(y+(w-x)),C=y;x!==w;)B[C++]=m[x++];return B}}}function l(d){var g=p(d);if(g)return g;throw new Error(`Non-${t} character`)}return{encode:u,decodeUnsafe:p,decode:l}}var hf=ff,df=hf,Ga=df;var Eo=class{name;prefix;baseEncode;constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},So=class{name;prefix;baseDecode;prefixCodePoint;constructor(t,e,n){this.name=t,this.prefix=e;let s=e.codePointAt(0);if(s===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=s,this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Wa(this,t)}},Ao=class{decoders;constructor(t){this.decoders=t}or(t){return Wa(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n!=null)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Wa(r,t){return new Ao({...r.decoders??{[r.prefix]:r},...t.decoders??{[t.prefix]:t}})}var Bo=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(t,e,n,s){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=s,this.encoder=new Eo(t,e,n),this.decoder=new So(t,e,s)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}};function ir({name:r,prefix:t,encode:e,decode:n}){return new Bo(r,t,e,n)}function _e({name:r,prefix:t,alphabet:e}){let{encode:n,decode:s}=Ga(e,r);return ir({prefix:t,name:r,encode:n,decode:o=>ce(s(o))})}function pf(r,t,e,n){let s={};for(let f=0;f<t.length;++f)s[t[f]]=f;let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*e/8|0),a=0,c=0,h=0;for(let f=0;f<o;++f){let u=s[r[f]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<e|u,a+=e,a>=8&&(a-=8,i[h++]=255&c>>a)}if(a>=e||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function mf(r,t,e){let n=t[t.length-1]==="=",s=(1<<e)-1,o="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>e;)i-=e,o+=t[s&a>>i];if(i!==0&&(o+=t[s&a<<e-i]),n)for(;o.length*e&7;)o+="=";return o}function st({name:r,prefix:t,bitsPerChar:e,alphabet:n}){return ir({prefix:t,name:r,encode(s){return mf(s,n,e)},decode(s){return pf(s,n,e,r)}})}var tt=_e({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),gf=_e({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Io={};_t(Io,{base32:()=>le,base32hex:()=>xf,base32hexpad:()=>Ef,base32hexpadupper:()=>Sf,base32hexupper:()=>vf,base32pad:()=>bf,base32padupper:()=>wf,base32upper:()=>yf,base32z:()=>Af});var le=st({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),yf=st({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),bf=st({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),wf=st({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),xf=st({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),vf=st({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Ef=st({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Sf=st({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Af=st({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var To={};_t(To,{base36:()=>Pr,base36upper:()=>Bf});var Pr=_e({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Bf=_e({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var _f=Xa,ja=128,If=127,Tf=~If,kf=Math.pow(2,31);function Xa(r,t,e){t=t||[],e=e||0;for(var n=e;r>=kf;)t[e++]=r&255|ja,r/=128;for(;r&Tf;)t[e++]=r&255|ja,r>>>=7;return t[e]=r|0,Xa.bytes=e-n+1,t}var Nf=ko,Cf=128,Za=127;function ko(r,n){var e=0,n=n||0,s=0,o=n,i,a=r.length;do{if(o>=a)throw ko.bytes=0,new RangeError("Could not decode varint");i=r[o++],e+=s<28?(i&Za)<<s:(i&Za)*Math.pow(2,s),s+=7}while(i>=Cf);return ko.bytes=o-n,e}var Rf=Math.pow(2,7),Lf=Math.pow(2,14),Uf=Math.pow(2,21),Df=Math.pow(2,28),Of=Math.pow(2,35),Mf=Math.pow(2,42),Pf=Math.pow(2,49),Vf=Math.pow(2,56),Hf=Math.pow(2,63),Ff=function(r){return r<Rf?1:r<Lf?2:r<Uf?3:r<Df?4:r<Of?5:r<Mf?6:r<Pf?7:r<Vf?8:r<Hf?9:10},qf={encode:_f,decode:Nf,encodingLength:Ff},Kf=qf,Vr=Kf;function Hr(r,t=0){return[Vr.decode(r,t),Vr.decode.bytes]}function ar(r,t,e=0){return Vr.encode(r,t,e),t}function cr(r){return Vr.encodingLength(r)}function Wt(r,t){let e=t.byteLength,n=cr(r),s=n+cr(e),o=new Uint8Array(s+e);return ar(r,o,0),ar(e,o,n),o.set(t,s),new lr(r,e,t,o)}function Kt(r){let t=ce(r),[e,n]=Hr(t),[s,o]=Hr(t.subarray(n)),i=t.subarray(n+o);if(i.byteLength!==s)throw new Error("Incorrect length");return new lr(e,s,i,t)}function Ya(r,t){if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&qa(r.bytes,e.bytes)}}var lr=class{code;size;digest;bytes;constructor(t,e,n,s){this.code=t,this.size=e,this.digest=n,this.bytes=s}};function Ja(r,t){let{bytes:e,version:n}=r;switch(n){case 0:return $f(e,No(r),t??tt.encoder);default:return Gf(e,No(r),t??le.encoder)}}var Qa=new WeakMap;function No(r){let t=Qa.get(r);if(t==null){let e=new Map;return Qa.set(r,e),e}return t}var mt=class r{code;version;multihash;bytes;"/";constructor(t,e,n,s){this.code=e,this.version=t,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:t,multihash:e}=this;if(t!==Fr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==Wf)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}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:t,digest:e}=this.multihash,n=Wt(t,e);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(t){return r.equals(this,t)}static equals(t,e){let n=e;return n!=null&&t.code===n.code&&t.version===n.version&&Ya(t.multihash,n.multihash)}toString(t){return Ja(this,t)}toJSON(){return{"/":Ja(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:s,multihash:o,bytes:i}=e;return new r(n,s,o,i??tc(n,s,o.bytes))}else if(e[jf]===!0){let{version:n,multihash:s,code:o}=e,i=Kt(s);return r.create(n,o,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==Fr)throw new Error(`Version 0 CID must use dag-pb (code: ${Fr}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let s=tc(t,e,n.bytes);return new r(t,e,n,s)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,Fr,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length!==0)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,s=ce(t.subarray(n,n+e.multihashSize));if(s.byteLength!==e.multihashSize)throw new Error("Incorrect length");let o=s.subarray(e.multihashSize-e.digestSize),i=new lr(e.multihashCode,e.digestSize,o,s);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[u,p]=Hr(t.subarray(e));return e+=p,u},s=n(),o=Fr;if(s===18?(s=0,e=0):o=n(),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let i=e,a=n(),c=n(),h=e+c,f=h-i;return{version:s,codec:o,multihashCode:a,digestSize:c,multihashSize:f,size:h}}static parse(t,e){let[n,s]=zf(t,e),o=r.decode(s);if(o.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return No(o).set(n,t),o}};function zf(r,t){switch(r[0]){case"Q":{let e=t??tt;return[tt.prefix,e.decode(`${tt.prefix}${r}`)]}case tt.prefix:{let e=t??tt;return[tt.prefix,e.decode(r)]}case le.prefix:{let e=t??le;return[le.prefix,e.decode(r)]}case Pr.prefix:{let e=t??Pr;return[Pr.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}}function $f(r,t,e){let{prefix:n}=e;if(n!==tt.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let s=t.get(n);if(s==null){let o=e.encode(r).slice(1);return t.set(n,o),o}else return s}function Gf(r,t,e){let{prefix:n}=e,s=t.get(n);if(s==null){let o=e.encode(r);return t.set(n,o),o}else return s}var Fr=112,Wf=18;function tc(r,t,e){let n=cr(r),s=n+cr(t),o=new Uint8Array(s+e.byteLength);return ar(r,o,0),ar(t,o,n),o.set(e,s),o}var jf=Symbol.for("@ipld/js-cid/CID");var Co={};_t(Co,{identity:()=>ue});var ec=0,Zf="identity",rc=ce;function Xf(r){return Wt(ec,rc(r))}var ue={code:ec,name:Zf,encode:rc,digest:Xf};function ct(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function nc(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function Yf(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function ur(r,...t){if(!Yf(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${r.length}`)}function sc(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");nc(r.outputLen),nc(r.blockLen)}function fr(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function oc(r,t){ur(r);let e=t.outputLen;if(r.length<e)throw new Error(`digestInto() expects output buffer of length at least ${e}`)}var qe=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var Sn=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),jt=(r,t)=>r<<32-t|r>>>t;var hm=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ic(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function qr(r){return typeof r=="string"&&(r=ic(r)),ur(r),r}function Ro(...r){let t=0;for(let n=0;n<r.length;n++){let s=r[n];ur(s),t+=s.length}let e=new Uint8Array(t);for(let n=0,s=0;n<r.length;n++){let o=r[n];e.set(o,s),s+=o.length}return e}var hr=class{clone(){return this._cloneInto()}},dm={}.toString;function An(r){let t=n=>r().update(qr(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function dr(r=32){if(qe&&typeof qe.getRandomValues=="function")return qe.getRandomValues(new Uint8Array(r));if(qe&&typeof qe.randomBytes=="function")return qe.randomBytes(r);throw new Error("crypto.getRandomValues must be defined")}function Jf(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let s=BigInt(32),o=BigInt(4294967295),i=Number(e>>s&o),a=Number(e&o),c=n?4:0,h=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+h,a,n)}var ac=(r,t,e)=>r&t^~r&e,cc=(r,t,e)=>r&t^r&e^t&e,pr=class extends hr{constructor(t,e,n,s){super(),this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=Sn(this.buffer)}update(t){fr(this);let{view:e,buffer:n,blockLen:s}=this;t=qr(t);let o=t.length;for(let i=0;i<o;){let a=Math.min(s-this.pos,o-i);if(a===s){let c=Sn(t);for(;s<=o-i;i+=s)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===s&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){fr(this),oc(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:s,isLE:o}=this,{pos:i}=this;e[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>s-i&&(this.process(n,0),i=0);for(let u=i;u<s;u++)e[u]=0;Jf(n,s-8,BigInt(this.length*8),o),this.process(n,0);let a=Sn(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let h=c/4,f=this.get();if(h>f.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<h;u++)a.setUint32(4*u,f[u],o)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:s,finished:o,destroyed:i,pos:a}=this;return t.length=s,t.pos=a,t.finished=o,t.destroyed=i,s%e&&t.buffer.set(n),t}};var Bn=BigInt(4294967295),Lo=BigInt(32);function lc(r,t=!1){return t?{h:Number(r&Bn),l:Number(r>>Lo&Bn)}:{h:Number(r>>Lo&Bn)|0,l:Number(r&Bn)|0}}function Qf(r,t=!1){let e=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let s=0;s<r.length;s++){let{h:o,l:i}=lc(r[s],t);[e[s],n[s]]=[o,i]}return[e,n]}var th=(r,t)=>BigInt(r>>>0)<<Lo|BigInt(t>>>0),eh=(r,t,e)=>r>>>e,rh=(r,t,e)=>r<<32-e|t>>>e,nh=(r,t,e)=>r>>>e|t<<32-e,sh=(r,t,e)=>r<<32-e|t>>>e,oh=(r,t,e)=>r<<64-e|t>>>e-32,ih=(r,t,e)=>r>>>e-32|t<<64-e,ah=(r,t)=>t,ch=(r,t)=>r,lh=(r,t,e)=>r<<e|t>>>32-e,uh=(r,t,e)=>t<<e|r>>>32-e,fh=(r,t,e)=>t<<e-32|r>>>64-e,hh=(r,t,e)=>r<<e-32|t>>>64-e;function dh(r,t,e,n){let s=(t>>>0)+(n>>>0);return{h:r+e+(s/2**32|0)|0,l:s|0}}var ph=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),mh=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,gh=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),yh=(r,t,e,n,s)=>t+e+n+s+(r/2**32|0)|0,bh=(r,t,e,n,s)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(s>>>0),wh=(r,t,e,n,s,o)=>t+e+n+s+o+(r/2**32|0)|0;var xh={fromBig:lc,split:Qf,toBig:th,shrSH:eh,shrSL:rh,rotrSH:nh,rotrSL:sh,rotrBH:oh,rotrBL:ih,rotr32H:ah,rotr32L:ch,rotlSH:lh,rotlSL:uh,rotlBH:fh,rotlBL:hh,add:dh,add3L:ph,add3H:mh,add4L:gh,add4H:yh,add5H:wh,add5L:bh},P=xh;var[vh,Eh]=P.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))),Ie=new Uint32Array(80),Te=new Uint32Array(80),Uo=class extends pr{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:t,Al:e,Bh:n,Bl:s,Ch:o,Cl:i,Dh:a,Dl:c,Eh:h,El:f,Fh:u,Fl:p,Gh:l,Gl:d,Hh:g,Hl:y}=this;return[t,e,n,s,o,i,a,c,h,f,u,p,l,d,g,y]}set(t,e,n,s,o,i,a,c,h,f,u,p,l,d,g,y){this.Ah=t|0,this.Al=e|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=h|0,this.El=f|0,this.Fh=u|0,this.Fl=p|0,this.Gh=l|0,this.Gl=d|0,this.Hh=g|0,this.Hl=y|0}process(t,e){for(let m=0;m<16;m++,e+=4)Ie[m]=t.getUint32(e),Te[m]=t.getUint32(e+=4);for(let m=16;m<80;m++){let v=Ie[m-15]|0,A=Te[m-15]|0,_=P.rotrSH(v,A,1)^P.rotrSH(v,A,8)^P.shrSH(v,A,7),x=P.rotrSL(v,A,1)^P.rotrSL(v,A,8)^P.shrSL(v,A,7),B=Ie[m-2]|0,C=Te[m-2]|0,et=P.rotrSH(B,C,19)^P.rotrBH(B,C,61)^P.shrSH(B,C,6),H=P.rotrSL(B,C,19)^P.rotrBL(B,C,61)^P.shrSL(B,C,6),V=P.add4L(x,H,Te[m-7],Te[m-16]),U=P.add4H(V,_,et,Ie[m-7],Ie[m-16]);Ie[m]=U|0,Te[m]=V|0}let{Ah:n,Al:s,Bh:o,Bl:i,Ch:a,Cl:c,Dh:h,Dl:f,Eh:u,El:p,Fh:l,Fl:d,Gh:g,Gl:y,Hh:b,Hl:w}=this;for(let m=0;m<80;m++){let v=P.rotrSH(u,p,14)^P.rotrSH(u,p,18)^P.rotrBH(u,p,41),A=P.rotrSL(u,p,14)^P.rotrSL(u,p,18)^P.rotrBL(u,p,41),_=u&l^~u&g,x=p&d^~p&y,B=P.add5L(w,A,x,Eh[m],Te[m]),C=P.add5H(B,b,v,_,vh[m],Ie[m]),et=B|0,H=P.rotrSH(n,s,28)^P.rotrBH(n,s,34)^P.rotrBH(n,s,39),V=P.rotrSL(n,s,28)^P.rotrBL(n,s,34)^P.rotrBL(n,s,39),U=n&o^n&a^o&a,k=s&i^s&c^i&c;b=g|0,w=y|0,g=l|0,y=d|0,l=u|0,d=p|0,{h:u,l:p}=P.add(h|0,f|0,C|0,et|0),h=a|0,f=c|0,a=o|0,c=i|0,o=n|0,i=s|0;let R=P.add3L(et,V,k);n=P.add3H(R,C,H,U),s=R|0}({h:n,l:s}=P.add(this.Ah|0,this.Al|0,n|0,s|0)),{h:o,l:i}=P.add(this.Bh|0,this.Bl|0,o|0,i|0),{h:a,l:c}=P.add(this.Ch|0,this.Cl|0,a|0,c|0),{h,l:f}=P.add(this.Dh|0,this.Dl|0,h|0,f|0),{h:u,l:p}=P.add(this.Eh|0,this.El|0,u|0,p|0),{h:l,l:d}=P.add(this.Fh|0,this.Fl|0,l|0,d|0),{h:g,l:y}=P.add(this.Gh|0,this.Gl|0,g|0,y|0),{h:b,l:w}=P.add(this.Hh|0,this.Hl|0,b|0,w|0),this.set(n,s,o,i,a,c,h,f,u,p,l,d,g,y,b,w)}roundClean(){Ie.fill(0),Te.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 uc=An(()=>new Uo);var In={};_t(In,{aInRange:()=>kt,abool:()=>Zt,abytes:()=>mr,bitGet:()=>Th,bitLen:()=>Vo,bitMask:()=>zr,bitSet:()=>kh,bytesToHex:()=>he,bytesToNumberBE:()=>de,bytesToNumberLE:()=>Ne,concatBytes:()=>pe,createHmacDrbg:()=>Ho,ensureBytes:()=>ot,equalBytes:()=>_h,hexToBytes:()=>ze,hexToNumber:()=>Po,inRange:()=>Kr,isBytes:()=>ke,memoized:()=>Ge,notImplemented:()=>Ch,numberToBytesBE:()=>Ce,numberToBytesLE:()=>$e,numberToHexUnpadded:()=>Ke,numberToVarBytesBE:()=>Bh,utf8ToBytes:()=>Ih,validateObject:()=>ee});var Mo=BigInt(0),_n=BigInt(1),Sh=BigInt(2);function ke(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function mr(r){if(!ke(r))throw new Error("Uint8Array expected")}function Zt(r,t){if(typeof t!="boolean")throw new Error(`${r} must be valid boolean, got "${t}".`)}var Ah=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function he(r){mr(r);let t="";for(let e=0;e<r.length;e++)t+=Ah[r[e]];return t}function Ke(r){let t=r.toString(16);return t.length&1?`0${t}`:t}function Po(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var fe={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function fc(r){if(r>=fe._0&&r<=fe._9)return r-fe._0;if(r>=fe._A&&r<=fe._F)return r-(fe._A-10);if(r>=fe._a&&r<=fe._f)return r-(fe._a-10)}function ze(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let t=r.length,e=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let s=0,o=0;s<e;s++,o+=2){let i=fc(r.charCodeAt(o)),a=fc(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 de(r){return Po(he(r))}function Ne(r){return mr(r),Po(he(Uint8Array.from(r).reverse()))}function Ce(r,t){return ze(r.toString(16).padStart(t*2,"0"))}function $e(r,t){return Ce(r,t).reverse()}function Bh(r){return ze(Ke(r))}function ot(r,t,e){let n;if(typeof t=="string")try{n=ze(t)}catch(o){throw new Error(`${r} must be valid hex string, got "${t}". Cause: ${o}`)}else if(ke(t))n=Uint8Array.from(t);else throw new Error(`${r} must be hex string or Uint8Array`);let s=n.length;if(typeof e=="number"&&s!==e)throw new Error(`${r} expected ${e} bytes, got ${s}`);return n}function pe(...r){let t=0;for(let n=0;n<r.length;n++){let s=r[n];mr(s),t+=s.length}let e=new Uint8Array(t);for(let n=0,s=0;n<r.length;n++){let o=r[n];e.set(o,s),s+=o.length}return e}function _h(r,t){if(r.length!==t.length)return!1;let e=0;for(let n=0;n<r.length;n++)e|=r[n]^t[n];return e===0}function Ih(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}var Do=r=>typeof r=="bigint"&&Mo<=r;function Kr(r,t,e){return Do(r)&&Do(t)&&Do(e)&&t<=r&&r<e}function kt(r,t,e,n){if(!Kr(t,e,n))throw new Error(`expected valid ${r}: ${e} <= n < ${n}, got ${typeof t} ${t}`)}function Vo(r){let t;for(t=0;r>Mo;r>>=_n,t+=1);return t}function Th(r,t){return r>>BigInt(t)&_n}function kh(r,t,e){return r|(e?_n:Mo)<<BigInt(t)}var zr=r=>(Sh<<BigInt(r-1))-_n,Oo=r=>new Uint8Array(r),hc=r=>Uint8Array.from(r);function Ho(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=Oo(r),s=Oo(r),o=0,i=()=>{n.fill(1),s.fill(0),o=0},a=(...u)=>e(s,n,...u),c=(u=Oo())=>{s=a(hc([0]),u),n=a(),u.length!==0&&(s=a(hc([1]),u),n=a())},h=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,p=[];for(;u<t;){n=a();let l=n.slice();p.push(l),u+=n.length}return pe(...p)};return(u,p)=>{i(),c(u);let l;for(;!(l=p(h()));)c();return i(),l}}var Nh={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"||ke(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,t)=>t.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function ee(r,t,e={}){let n=(s,o,i)=>{let a=Nh[o];if(typeof a!="function")throw new Error(`Invalid validator "${o}", expected function`);let c=r[s];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(s)}=${c} (${typeof c}), expected ${o}`)};for(let[s,o]of Object.entries(t))n(s,o,!1);for(let[s,o]of Object.entries(e))n(s,o,!0);return r}var Ch=()=>{throw new Error("not implemented")};function Ge(r){let t=new WeakMap;return(e,...n)=>{let s=t.get(e);if(s!==void 0)return s;let o=r(e,...n);return t.set(e,o),o}}var ut=BigInt(0),rt=BigInt(1),We=BigInt(2),Rh=BigInt(3),Fo=BigInt(4),dc=BigInt(5),pc=BigInt(8),Lh=BigInt(9),Uh=BigInt(16);function Y(r,t){let e=r%t;return e>=ut?e:t+e}function Dh(r,t,e){if(e<=ut||t<ut)throw new Error("Expected power/modulo > 0");if(e===rt)return ut;let n=rt;for(;t>ut;)t&rt&&(n=n*r%e),r=r*r%e,t>>=rt;return n}function nt(r,t,e){let n=r;for(;t-- >ut;)n*=n,n%=e;return n}function Tn(r,t){if(r===ut||t<=ut)throw new Error(`invert: expected positive integers, got n=${r} mod=${t}`);let e=Y(r,t),n=t,s=ut,o=rt,i=rt,a=ut;for(;e!==ut;){let h=n/e,f=n%e,u=s-i*h,p=o-a*h;n=e,e=f,s=i,o=a,i=u,a=p}if(n!==rt)throw new Error("invert: does not exist");return Y(s,t)}function Oh(r){let t=(r-rt)/We,e,n,s;for(e=r-rt,n=0;e%We===ut;e/=We,n++);for(s=We;s<r&&Dh(s,t,r)!==r-rt;s++);if(n===1){let i=(r+rt)/Fo;return function(c,h){let f=c.pow(h,i);if(!c.eql(c.sqr(f),h))throw new Error("Cannot find square root");return f}}let o=(e+rt)/We;return function(a,c){if(a.pow(c,t)===a.neg(a.ONE))throw new Error("Cannot find square root");let h=n,f=a.pow(a.mul(a.ONE,s),e),u=a.pow(c,o),p=a.pow(c,e);for(;!a.eql(p,a.ONE);){if(a.eql(p,a.ZERO))return a.ZERO;let l=1;for(let g=a.sqr(p);l<h&&!a.eql(g,a.ONE);l++)g=a.sqr(g);let d=a.pow(f,rt<<BigInt(h-l-1));f=a.sqr(d),u=a.mul(u,d),p=a.mul(p,f),h=l}return u}}function Mh(r){if(r%Fo===Rh){let t=(r+rt)/Fo;return function(n,s){let o=n.pow(s,t);if(!n.eql(n.sqr(o),s))throw new Error("Cannot find square root");return o}}if(r%pc===dc){let t=(r-dc)/pc;return function(n,s){let o=n.mul(s,We),i=n.pow(o,t),a=n.mul(s,i),c=n.mul(n.mul(a,We),i),h=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(h),s))throw new Error("Cannot find square root");return h}}return r%Uh,Oh(r)}var mc=(r,t)=>(Y(r,t)&rt)===rt,Ph=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function qo(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=Ph.reduce((n,s)=>(n[s]="function",n),t);return ee(r,e)}function Vh(r,t,e){if(e<ut)throw new Error("Expected power > 0");if(e===ut)return r.ONE;if(e===rt)return t;let n=r.ONE,s=t;for(;e>ut;)e&rt&&(n=r.mul(n,s)),s=r.sqr(s),e>>=rt;return n}function Hh(r,t){let e=new Array(t.length),n=t.reduce((o,i,a)=>r.is0(i)?o:(e[a]=o,r.mul(o,i)),r.ONE),s=r.inv(n);return t.reduceRight((o,i,a)=>r.is0(i)?o:(e[a]=r.mul(o,e[a]),r.mul(o,i)),s),e}function Ko(r,t){let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function Re(r,t,e=!1,n={}){if(r<=ut)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:s,nByteLength:o}=Ko(r,t);if(o>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=Mh(r),a=Object.freeze({ORDER:r,BITS:s,BYTES:o,MASK:zr(s),ZERO:ut,ONE:rt,create:c=>Y(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ut<=c&&c<r},is0:c=>c===ut,isOdd:c=>(c&rt)===rt,neg:c=>Y(-c,r),eql:(c,h)=>c===h,sqr:c=>Y(c*c,r),add:(c,h)=>Y(c+h,r),sub:(c,h)=>Y(c-h,r),mul:(c,h)=>Y(c*h,r),pow:(c,h)=>Vh(a,c,h),div:(c,h)=>Y(c*Tn(h,r),r),sqrN:c=>c*c,addN:(c,h)=>c+h,subN:(c,h)=>c-h,mulN:(c,h)=>c*h,inv:c=>Tn(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>Hh(a,c),cmov:(c,h,f)=>f?h:c,toBytes:c=>e?$e(c,o):Ce(c,o),fromBytes:c=>{if(c.length!==o)throw new Error(`Fp.fromBytes: expected ${o}, got ${c.length}`);return e?Ne(c):de(c)}});return Object.freeze(a)}function gc(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function zo(r){let t=gc(r);return t+Math.ceil(t/2)}function yc(r,t,e=!1){let n=r.length,s=gc(t),o=zo(t);if(n<16||n<o||n>1024)throw new Error(`expected ${o}-1024 bytes of input, got ${n}`);let i=e?de(r):Ne(r),a=Y(i,t-rt)+rt;return e?$e(a,s):Ce(a,s)}var qh=BigInt(0),$o=BigInt(1),Go=new WeakMap,bc=new WeakMap;function kn(r,t){let e=(o,i)=>{let a=i.negate();return o?a:i},n=o=>{if(!Number.isSafeInteger(o)||o<=0||o>t)throw new Error(`Wrong window size=${o}, should be [1..${t}]`)},s=o=>{n(o);let i=Math.ceil(t/o)+1,a=2**(o-1);return{windows:i,windowSize:a}};return{constTimeNegate:e,unsafeLadder(o,i){let a=r.ZERO,c=o;for(;i>qh;)i&$o&&(a=a.add(c)),c=c.double(),i>>=$o;return a},precomputeWindow(o,i){let{windows:a,windowSize:c}=s(i),h=[],f=o,u=f;for(let p=0;p<a;p++){u=f,h.push(u);for(let l=1;l<c;l++)u=u.add(f),h.push(u);f=u.double()}return h},wNAF(o,i,a){let{windows:c,windowSize:h}=s(o),f=r.ZERO,u=r.BASE,p=BigInt(2**o-1),l=2**o,d=BigInt(o);for(let g=0;g<c;g++){let y=g*h,b=Number(a&p);a>>=d,b>h&&(b-=l,a+=$o);let w=y,m=y+Math.abs(b)-1,v=g%2!==0,A=b<0;b===0?u=u.add(e(v,i[w])):f=f.add(e(A,i[m]))}return{p:f,f:u}},wNAFCached(o,i,a){let c=bc.get(o)||1,h=Go.get(o);return h||(h=this.precomputeWindow(o,c),c!==1&&Go.set(o,a(h))),this.wNAF(c,h,i)},setWindowSize(o,i){n(i),bc.set(o,i),Go.delete(o)}}}function Nn(r,t,e,n){if(!Array.isArray(e)||!Array.isArray(n)||n.length!==e.length)throw new Error("arrays of points and scalars must have equal length");n.forEach((f,u)=>{if(!t.isValid(f))throw new Error(`wrong scalar at index ${u}`)}),e.forEach((f,u)=>{if(!(f instanceof r))throw new Error(`wrong point at index ${u}`)});let s=Vo(BigInt(e.length)),o=s>12?s-3:s>4?s-2:s?2:1,i=(1<<o)-1,a=new Array(i+1).fill(r.ZERO),c=Math.floor((t.BITS-1)/o)*o,h=r.ZERO;for(let f=c;f>=0;f-=o){a.fill(r.ZERO);for(let p=0;p<n.length;p++){let l=n[p],d=Number(l>>BigInt(f)&BigInt(i));a[d]=a[d].add(e[p])}let u=r.ZERO;for(let p=a.length-1,l=r.ZERO;p>0;p--)l=l.add(a[p]),u=u.add(l);if(h=h.add(u),f!==0)for(let p=0;p<o;p++)h=h.double()}return h}function $r(r){return qo(r.Fp),ee(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Ko(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Xt=BigInt(0),Nt=BigInt(1),Cn=BigInt(2),Kh=BigInt(8),zh={zip215:!0};function $h(r){let t=$r(r);return ee(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...t})}function wc(r){let t=$h(r),{Fp:e,n,prehash:s,hash:o,randomBytes:i,nByteLength:a,h:c}=t,h=Cn<<BigInt(a*8)-Nt,f=e.create,u=Re(t.n,t.nBitLength),p=t.uvRatio||((S,E)=>{try{return{isValid:!0,value:e.sqrt(S*e.inv(E))}}catch{return{isValid:!1,value:Xt}}}),l=t.adjustScalarBytes||(S=>S),d=t.domain||((S,E,I)=>{if(Zt("phflag",I),E.length||I)throw new Error("Contexts/pre-hash are not supported");return S});function g(S,E){kt("coordinate "+S,E,Xt,h)}function y(S){if(!(S instanceof m))throw new Error("ExtendedPoint expected")}let b=Ge((S,E)=>{let{ex:I,ey:L,ez:O}=S,M=S.is0();E==null&&(E=M?Kh:e.inv(O));let K=f(I*E),G=f(L*E),z=f(O*E);if(M)return{x:Xt,y:Nt};if(z!==Nt)throw new Error("invZ was invalid");return{x:K,y:G}}),w=Ge(S=>{let{a:E,d:I}=t;if(S.is0())throw new Error("bad point: ZERO");let{ex:L,ey:O,ez:M,et:K}=S,G=f(L*L),z=f(O*O),X=f(M*M),Q=f(X*X),ht=f(G*E),dt=f(X*f(ht+z)),yt=f(Q+f(I*f(G*z)));if(dt!==yt)throw new Error("bad point: equation left != right (1)");let Bt=f(L*O),lt=f(M*K);if(Bt!==lt)throw new Error("bad point: equation left != right (2)");return!0});class m{constructor(E,I,L,O){this.ex=E,this.ey=I,this.ez=L,this.et=O,g("x",E),g("y",I),g("z",L),g("t",O),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(E){if(E instanceof m)throw new Error("extended point not allowed");let{x:I,y:L}=E||{};return g("x",I),g("y",L),new m(I,L,Nt,f(I*L))}static normalizeZ(E){let I=e.invertBatch(E.map(L=>L.ez));return E.map((L,O)=>L.toAffine(I[O])).map(m.fromAffine)}static msm(E,I){return Nn(m,u,E,I)}_setWindowSize(E){_.setWindowSize(this,E)}assertValidity(){w(this)}equals(E){y(E);let{ex:I,ey:L,ez:O}=this,{ex:M,ey:K,ez:G}=E,z=f(I*G),X=f(M*O),Q=f(L*G),ht=f(K*O);return z===X&&Q===ht}is0(){return this.equals(m.ZERO)}negate(){return new m(f(-this.ex),this.ey,this.ez,f(-this.et))}double(){let{a:E}=t,{ex:I,ey:L,ez:O}=this,M=f(I*I),K=f(L*L),G=f(Cn*f(O*O)),z=f(E*M),X=I+L,Q=f(f(X*X)-M-K),ht=z+K,dt=ht-G,yt=z-K,Bt=f(Q*dt),lt=f(ht*yt),Tt=f(Q*yt),ie=f(dt*ht);return new m(Bt,lt,ie,Tt)}add(E){y(E);let{a:I,d:L}=t,{ex:O,ey:M,ez:K,et:G}=this,{ex:z,ey:X,ez:Q,et:ht}=E;if(I===BigInt(-1)){let Ia=f((M-O)*(X+z)),Ta=f((M+O)*(X-z)),bo=f(Ta-Ia);if(bo===Xt)return this.double();let ka=f(K*Cn*ht),Na=f(G*Cn*Q),Ca=Na+ka,Ra=Ta+Ia,La=Na-ka,tf=f(Ca*bo),ef=f(Ra*La),rf=f(Ca*La),nf=f(bo*Ra);return new m(tf,ef,nf,rf)}let dt=f(O*z),yt=f(M*X),Bt=f(G*L*ht),lt=f(K*Q),Tt=f((O+M)*(z+X)-dt-yt),ie=lt-Bt,Dr=lt+Bt,Or=f(yt-I*dt),Xu=f(Tt*ie),Yu=f(Dr*Or),Ju=f(Tt*Or),Qu=f(ie*Dr);return new m(Xu,Yu,Qu,Ju)}subtract(E){return this.add(E.negate())}wNAF(E){return _.wNAFCached(this,E,m.normalizeZ)}multiply(E){let I=E;kt("scalar",I,Nt,n);let{p:L,f:O}=this.wNAF(I);return m.normalizeZ([L,O])[0]}multiplyUnsafe(E){let I=E;return kt("scalar",I,Xt,n),I===Xt?A:this.equals(A)||I===Nt?this:this.equals(v)?this.wNAF(I).p:_.unsafeLadder(this,I)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(E){return b(this,E)}clearCofactor(){let{h:E}=t;return E===Nt?this:this.multiplyUnsafe(E)}static fromHex(E,I=!1){let{d:L,a:O}=t,M=e.BYTES;E=ot("pointHex",E,M),Zt("zip215",I);let K=E.slice(),G=E[M-1];K[M-1]=G&-129;let z=Ne(K),X=I?h:e.ORDER;kt("pointHex.y",z,Xt,X);let Q=f(z*z),ht=f(Q-Nt),dt=f(L*Q-O),{isValid:yt,value:Bt}=p(ht,dt);if(!yt)throw new Error("Point.fromHex: invalid y coordinate");let lt=(Bt&Nt)===Nt,Tt=(G&128)!==0;if(!I&&Bt===Xt&&Tt)throw new Error("Point.fromHex: x=0 and x_0=1");return Tt!==lt&&(Bt=f(-Bt)),m.fromAffine({x:Bt,y:z})}static fromPrivateKey(E){return C(E).point}toRawBytes(){let{x:E,y:I}=this.toAffine(),L=$e(I,e.BYTES);return L[L.length-1]|=E&Nt?128:0,L}toHex(){return he(this.toRawBytes())}}m.BASE=new m(t.Gx,t.Gy,Nt,f(t.Gx*t.Gy)),m.ZERO=new m(Xt,Nt,Nt,Xt);let{BASE:v,ZERO:A}=m,_=kn(m,a*8);function x(S){return Y(S,n)}function B(S){return x(Ne(S))}function C(S){let E=a;S=ot("private key",S,E);let I=ot("hashed private key",o(S),2*E),L=l(I.slice(0,E)),O=I.slice(E,2*E),M=B(L),K=v.multiply(M),G=K.toRawBytes();return{head:L,prefix:O,scalar:M,point:K,pointBytes:G}}function et(S){return C(S).pointBytes}function H(S=new Uint8Array,...E){let I=pe(...E);return B(o(d(I,ot("context",S),!!s)))}function V(S,E,I={}){S=ot("message",S),s&&(S=s(S));let{prefix:L,scalar:O,pointBytes:M}=C(E),K=H(I.context,L,S),G=v.multiply(K).toRawBytes(),z=H(I.context,G,M,S),X=x(K+z*O);kt("signature.s",X,Xt,n);let Q=pe(G,$e(X,e.BYTES));return ot("result",Q,a*2)}let U=zh;function k(S,E,I,L=U){let{context:O,zip215:M}=L,K=e.BYTES;S=ot("signature",S,2*K),E=ot("message",E),M!==void 0&&Zt("zip215",M),s&&(E=s(E));let G=Ne(S.slice(K,2*K)),z,X,Q;try{z=m.fromHex(I,M),X=m.fromHex(S.slice(0,K),M),Q=v.multiplyUnsafe(G)}catch{return!1}if(!M&&z.isSmallOrder())return!1;let ht=H(O,X.toRawBytes(),z.toRawBytes(),E);return X.add(z.multiplyUnsafe(ht)).subtract(Q).clearCofactor().equals(m.ZERO)}return v._setWindowSize(8),{CURVE:t,getPublicKey:et,sign:V,verify:k,ExtendedPoint:m,utils:{getExtendedPublicKey:C,randomPrivateKey:()=>i(e.BYTES),precompute(S=8,E=m.BASE){return E._setWindowSize(S),E.multiply(BigInt(3)),E}}}}var Wo=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),xc=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Om=BigInt(0),Gh=BigInt(1),vc=BigInt(2),Mm=BigInt(3),Wh=BigInt(5),jh=BigInt(8);function Zh(r){let t=BigInt(10),e=BigInt(20),n=BigInt(40),s=BigInt(80),o=Wo,a=r*r%o*r%o,c=nt(a,vc,o)*a%o,h=nt(c,Gh,o)*r%o,f=nt(h,Wh,o)*h%o,u=nt(f,t,o)*f%o,p=nt(u,e,o)*u%o,l=nt(p,n,o)*p%o,d=nt(l,s,o)*l%o,g=nt(d,s,o)*l%o,y=nt(g,t,o)*f%o;return{pow_p_5_8:nt(y,vc,o)*r%o,b2:a}}function Xh(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function Yh(r,t){let e=Wo,n=Y(t*t*t,e),s=Y(n*n*t,e),o=Zh(r*s).pow_p_5_8,i=Y(r*n*o,e),a=Y(t*i*i,e),c=i,h=Y(i*xc,e),f=a===r,u=a===Y(-r,e),p=a===Y(-r*xc,e);return f&&(i=c),(u||p)&&(i=h),mc(i,e)&&(i=Y(-i,e)),{isValid:f||u,value:i}}var Jh=Re(Wo,void 0,!0),Qh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Jh,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:jh,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:uc,randomBytes:dr,adjustScalarBytes:Xh,uvRatio:Yh},Ec=wc(Qh);var Rn=32;function Sc(r,t,e){return Ec.verify(t,e instanceof Uint8Array?e:e.subarray(),r)}var Ln=class{type="Ed25519";raw;constructor(t){this.raw=jo(t,Rn)}toMultihash(){return ue.digest(gr(this))}toCID(){return mt.createV1(114,this.toMultihash())}toString(){return tt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}verify(t,e){return Sc(this.raw,e,t)}};function Zo(r){return r=jo(r,Rn),new Ln(r)}function jo(r,t){if(r=Uint8Array.from(r??[]),r.length!==t)throw new pt(`Key must be a Uint8Array of length ${t}, got ${r.length}`);return r}function it(r=0){return new Uint8Array(r)}function Ct(r=0){return new Uint8Array(r)}var ed=Math.pow(2,7),rd=Math.pow(2,14),nd=Math.pow(2,21),Xo=Math.pow(2,28),Yo=Math.pow(2,35),Jo=Math.pow(2,42),Qo=Math.pow(2,49),W=128,vt=127;function Et(r){if(r<ed)return 1;if(r<rd)return 2;if(r<nd)return 3;if(r<Xo)return 4;if(r<Yo)return 5;if(r<Jo)return 6;if(r<Qo)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function ti(r,t,e=0){switch(Et(r)){case 8:t[e++]=r&255|W,r/=128;case 7:t[e++]=r&255|W,r/=128;case 6:t[e++]=r&255|W,r/=128;case 5:t[e++]=r&255|W,r/=128;case 4:t[e++]=r&255|W,r>>>=7;case 3:t[e++]=r&255|W,r>>>=7;case 2:t[e++]=r&255|W,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function sd(r,t,e=0){switch(Et(r)){case 8:t.set(e++,r&255|W),r/=128;case 7:t.set(e++,r&255|W),r/=128;case 6:t.set(e++,r&255|W),r/=128;case 5:t.set(e++,r&255|W),r/=128;case 4:t.set(e++,r&255|W),r>>>=7;case 3:t.set(e++,r&255|W),r>>>=7;case 2:t.set(e++,r&255|W),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function ei(r,t){let e=r[t],n=0;if(n+=e&vt,e<W||(e=r[t+1],n+=(e&vt)<<7,e<W)||(e=r[t+2],n+=(e&vt)<<14,e<W)||(e=r[t+3],n+=(e&vt)<<21,e<W)||(e=r[t+4],n+=(e&vt)*Xo,e<W)||(e=r[t+5],n+=(e&vt)*Yo,e<W)||(e=r[t+6],n+=(e&vt)*Jo,e<W)||(e=r[t+7],n+=(e&vt)*Qo,e<W))return n;throw new RangeError("Could not decode varint")}function od(r,t){let e=r.get(t),n=0;if(n+=e&vt,e<W||(e=r.get(t+1),n+=(e&vt)<<7,e<W)||(e=r.get(t+2),n+=(e&vt)<<14,e<W)||(e=r.get(t+3),n+=(e&vt)<<21,e<W)||(e=r.get(t+4),n+=(e&vt)*Xo,e<W)||(e=r.get(t+5),n+=(e&vt)*Yo,e<W)||(e=r.get(t+6),n+=(e&vt)*Jo,e<W)||(e=r.get(t+7),n+=(e&vt)*Qo,e<W))return n;throw new RangeError("Could not decode varint")}function zt(r,t,e=0){return t==null&&(t=Ct(Et(r))),t instanceof Uint8Array?ti(r,t,e):sd(r,t,e)}function me(r,t=0){return r instanceof Uint8Array?ei(r,t):od(r,t)}var ri=new Float32Array([-0]),Le=new Uint8Array(ri.buffer);function Bc(r,t,e){ri[0]=r,t[e]=Le[0],t[e+1]=Le[1],t[e+2]=Le[2],t[e+3]=Le[3]}function _c(r,t){return Le[0]=r[t],Le[1]=r[t+1],Le[2]=r[t+2],Le[3]=r[t+3],ri[0]}var ni=new Float64Array([-0]),St=new Uint8Array(ni.buffer);function Ic(r,t,e){ni[0]=r,t[e]=St[0],t[e+1]=St[1],t[e+2]=St[2],t[e+3]=St[3],t[e+4]=St[4],t[e+5]=St[5],t[e+6]=St[6],t[e+7]=St[7]}function Tc(r,t){return St[0]=r[t],St[1]=r[t+1],St[2]=r[t+2],St[3]=r[t+3],St[4]=r[t+4],St[5]=r[t+5],St[6]=r[t+6],St[7]=r[t+7],ni[0]}var id=BigInt(Number.MAX_SAFE_INTEGER),ad=BigInt(Number.MIN_SAFE_INTEGER),Lt=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return je;if(t<id&&t>ad)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,s=t-(n<<32n);return e&&(n=~n|0n,s=~s|0n,++s>kc&&(s=0n,++n>kc&&(n=0n))),new r(Number(s),Number(n))}static fromNumber(t){if(t===0)return je;let e=t<0;e&&(t=-t);let n=t>>>0,s=(t-n)/4294967296>>>0;return e&&(s=~s>>>0,n=~n>>>0,++n>4294967295&&(n=0,++s>4294967295&&(s=0))),new r(n,s)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):je}},je=new Lt(0,0);je.toBigInt=function(){return 0n};je.zzEncode=je.zzDecode=function(){return this};je.length=function(){return 1};var kc=4294967296n;function Nc(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function Cc(r,t,e){if(e-t<1)return"";let s,o=[],i=0,a;for(;t<e;)a=r[t++],a<128?o[i++]=a:a>191&&a<224?o[i++]=(a&31)<<6|r[t++]&63:a>239&&a<365?(a=((a&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,o[i++]=55296+(a>>10),o[i++]=56320+(a&1023)):o[i++]=(a&15)<<12|(r[t++]&63)<<6|r[t++]&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 si(r,t,e){let n=e,s,o;for(let i=0;i<r.length;++i)s=r.charCodeAt(i),s<128?t[e++]=s:s<2048?(t[e++]=s>>6|192,t[e++]=s&63|128):(s&64512)===55296&&((o=r.charCodeAt(i+1))&64512)===56320?(s=65536+((s&1023)<<10)+(o&1023),++i,t[e++]=s>>18|240,t[e++]=s>>12&63|128,t[e++]=s>>6&63|128,t[e++]=s&63|128):(t[e++]=s>>12|224,t[e++]=s>>6&63|128,t[e++]=s&63|128);return e-n}function Yt(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function Dn(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var oi=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,Yt(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Yt(this,4);return Dn(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Yt(this,4);return Dn(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Yt(this,4);let t=_c(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw Yt(this,4);let t=Tc(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw Yt(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return Cc(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw Yt(this,t);this.pos+=t}else do if(this.pos>=this.len)throw Yt(this);while(this.buf[this.pos++]&128);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new Lt(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw Yt(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw Yt(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Yt(this,8);let t=Dn(this.buf,this.pos+=4),e=Dn(this.buf,this.pos+=4);return new Lt(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let t=ei(this.buf,this.pos);return this.pos+=Et(t),t}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 ii(r){return new oi(r instanceof Uint8Array?r:r.subarray())}function Ut(r,t,e){let n=ii(r);return t.decode(n,void 0,e)}var ai={};_t(ai,{base10:()=>cd});var cd=_e({prefix:"9",name:"base10",alphabet:"0123456789"});var ci={};_t(ci,{base16:()=>ld,base16upper:()=>ud});var ld=st({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ud=st({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var li={};_t(li,{base2:()=>fd});var fd=st({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ui={};_t(ui,{base256emoji:()=>gd});var Lc=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}"),hd=Lc.reduce((r,t,e)=>(r[e]=t,r),[]),dd=Lc.reduce((r,t,e)=>{let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);return r[n]=e,r},[]);function pd(r){return r.reduce((t,e)=>(t+=hd[e],t),"")}function md(r){let t=[];for(let e of r){let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);let s=dd[n];if(s==null)throw new Error(`Non-base256emoji character: ${e}`);t.push(s)}return new Uint8Array(t)}var gd=ir({prefix:"\u{1F680}",name:"base256emoji",encode:pd,decode:md});var fi={};_t(fi,{base64:()=>yd,base64pad:()=>bd,base64url:()=>wd,base64urlpad:()=>xd});var yd=st({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),bd=st({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),wd=st({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),xd=st({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var hi={};_t(hi,{base8:()=>vd});var vd=st({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var di={};_t(di,{identity:()=>Ed});var Ed=ir({prefix:"\0",name:"identity",encode:r=>za(r),decode:r=>Ka(r)});var wg=new TextEncoder,xg=new TextDecoder;var gi={};_t(gi,{sha256:()=>yr,sha512:()=>Bd});function mi({name:r,code:t,encode:e}){return new pi(r,t,e)}var pi=class{name;code;encode;constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?Wt(this.code,e):e.then(n=>Wt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function Dc(r){return async t=>new Uint8Array(await crypto.subtle.digest(r,t))}var yr=mi({name:"sha2-256",code:18,encode:Dc("SHA-256")}),Bd=mi({name:"sha2-512",code:19,encode:Dc("SHA-512")});var Gr={...di,...li,...hi,...ai,...ci,...Io,...To,..._o,...fi,...ui},Rg={...gi,...Co};function Mc(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Oc=Mc("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),yi=Mc("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=Ct(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),_d={utf8:Oc,"utf-8":Oc,hex:Gr.base16,latin1:yi,ascii:yi,binary:yi,...Gr},On=_d;function F(r,t="utf8"){let e=On[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.decoder.decode(`${e.prefix}${r}`)}function bi(r){let t=r??8192,e=t>>>1,n,s=t;return function(i){if(i<1||i>e)return Ct(i);s+i>t&&(n=Ct(t),s=0);let a=n.subarray(s,s+=i);return s&7&&(s=(s|7)+1),a}}var Ze=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function wi(){}var vi=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},Id=bi();function Td(r){return globalThis.Buffer!=null?Ct(r):Id(r)}var jr=class{len;head;tail;states;constructor(){this.len=0,this.head=new Ze(wi,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new Ze(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new Ei((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(Mn,10,Lt.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=Lt.fromBigInt(t);return this._push(Mn,e.length(),e)}uint64Number(t){return this._push(ti,Et(t),t)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=Lt.fromBigInt(t).zzEncode();return this._push(Mn,e.length(),e)}sint64Number(t){let e=Lt.fromNumber(t).zzEncode();return this._push(Mn,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(xi,1,t?1:0)}fixed32(t){return this._push(Wr,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=Lt.fromBigInt(t);return this._push(Wr,4,e.lo)._push(Wr,4,e.hi)}fixed64Number(t){let e=Lt.fromNumber(t);return this._push(Wr,4,e.lo)._push(Wr,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(Bc,4,t)}double(t){return this._push(Ic,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(xi,1,0):this.uint32(e)._push(Nd,e,t)}string(t){let e=Nc(t);return e!==0?this.uint32(e)._push(si,e,t):this._push(xi,1,0)}fork(){return this.states=new vi(this),this.head=this.tail=new Ze(wi,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 Ze(wi,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=Td(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function xi(r,t,e){t[e]=r&255}function kd(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var Ei=class extends Ze{next;constructor(t,e){super(kd,t,e),this.next=void 0}};function Mn(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function Wr(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function Nd(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(jr.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(Cd,t,r),this},jr.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(Rd,t,r),this});function Cd(r,t,e){t.set(r,e)}function Rd(r,t,e){r.length<40?si(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(F(r),e)}function Si(){return new jr}function Dt(r,t){let e=Si();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var br;(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"})(br||(br={}));function Pn(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function Xe(r){function t(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let e=function(o,i){let a=t(o);i.int32(a)},n=function(o){let i=o.int32();return t(i)};return Pn("enum",br.VARINT,e,n)}function Ot(r,t){return Pn("message",br.LENGTH_DELIMITED,r,t)}var Zr=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var ft;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1"})(ft||(ft={}));var Ai;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1"})(Ai||(Ai={}));(function(r){r.codec=()=>Xe(Ai)})(ft||(ft={}));var re;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.Type=ft.codec().decode(e);break}case 2:{o.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(re||(re={}));var Bi;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.Type=ft.codec().decode(e);break}case 2:{o.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(Bi||(Bi={}));var on={};_t(on,{MAX_RSA_KEY_SIZE:()=>Ns,generateRSAKeyPair:()=>Ul,jwkToJWKKeyPair:()=>Dl,jwkToPkcs1:()=>jd,jwkToPkix:()=>Ui,jwkToRSAPrivateKey:()=>Ll,pkcs1ToJwk:()=>Nl,pkcs1ToRSAPrivateKey:()=>Rl,pkixToJwk:()=>Cl,pkixToRSAPublicKey:()=>Di});var Ld=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]),Ue=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),De=new Uint32Array(64),_i=class extends pr{constructor(){super(64,32,8,!1),this.A=Ue[0]|0,this.B=Ue[1]|0,this.C=Ue[2]|0,this.D=Ue[3]|0,this.E=Ue[4]|0,this.F=Ue[5]|0,this.G=Ue[6]|0,this.H=Ue[7]|0}get(){let{A:t,B:e,C:n,D:s,E:o,F:i,G:a,H:c}=this;return[t,e,n,s,o,i,a,c]}set(t,e,n,s,o,i,a,c){this.A=t|0,this.B=e|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(t,e){for(let u=0;u<16;u++,e+=4)De[u]=t.getUint32(e,!1);for(let u=16;u<64;u++){let p=De[u-15],l=De[u-2],d=jt(p,7)^jt(p,18)^p>>>3,g=jt(l,17)^jt(l,19)^l>>>10;De[u]=g+De[u-7]+d+De[u-16]|0}let{A:n,B:s,C:o,D:i,E:a,F:c,G:h,H:f}=this;for(let u=0;u<64;u++){let p=jt(a,6)^jt(a,11)^jt(a,25),l=f+p+ac(a,c,h)+Ld[u]+De[u]|0,g=(jt(n,2)^jt(n,13)^jt(n,22))+cc(n,s,o)|0;f=h,h=c,c=a,a=i+l|0,i=o,o=s,s=n,n=l+g|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,h=h+this.G|0,f=f+this.H|0,this.set(n,s,o,i,a,c,h,f)}roundClean(){De.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var wr=An(()=>new _i);var $=xo(Vc());function Ye(r,t){let e=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)e+=r[r.length-1-n]*Math.pow(2,t*n);return e}function Oe(r,t,e=-1){let n=e,s=r,o=0,i=Math.pow(2,t);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 h=new Uint8Array(c);for(let f=a-1;f>=0;f--){let u=Math.pow(2,f*t);h[o-f-1]=Math.floor(s/u),s-=h[o-f-1]*u}return c}i*=Math.pow(2,t)}return new ArrayBuffer(0)}function Fn(...r){let t=0,e=0;for(let o of r)t+=o.length;let n=new ArrayBuffer(t),s=new Uint8Array(n);for(let o of r)s.set(o,e),e+=o.length;return s}function Ti(){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 t=new ArrayBuffer(this.valueHex.byteLength),e=new Uint8Array(t);for(let a=0;a<this.valueHex.byteLength;a++)e[a]=0;e[0]=r[0]&128;let n=Ye(e,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,Ye(o,8)-n}function Hc(r){let t=r<0?r*-1:r,e=128;for(let n=1;n<8;n++){if(t<=e){if(r<0){let i=e-t,a=Oe(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let s=Oe(t,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}e*=Math.pow(2,8)}return new ArrayBuffer(0)}function Fc(r,t){if(r.byteLength!==t.byteLength)return!1;let e=new Uint8Array(r),n=new Uint8Array(t);for(let s=0;s<e.length;s++)if(e[s]!==n[s])return!1;return!0}function Rt(r,t){let e=r.toString(10);if(t<e.length)return"";let n=t-e.length,s=new Array(n);for(let i=0;i<n;i++)s[i]="0";return s.join("").concat(e)}var dy=Math.log(2);function qn(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function ki(r){let t=0,e=0;for(let s=0;s<r.length;s++){let o=r[s];t+=o.byteLength}let n=new Uint8Array(t);for(let s=0;s<r.length;s++){let o=r[s];n.set(new Uint8Array(o),e),e+=o.byteLength}return n.buffer}function xe(r,t,e,n){return t instanceof Uint8Array?t.byteLength?e<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):t.byteLength-e-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 Yr=class{constructor(){this.items=[]}write(t){this.items.push(t)}final(){return ki(this.items)}},Xr=[new Uint8Array([1])],qc="0123456789";var Ar="",Jt=new ArrayBuffer(0),Ni=new Uint8Array(0),Jr="EndOfContent",zc="OCTET STRING",$c="BIT STRING";function ve(r){var t;return t=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?$.BufferSourceConverter.toUint8Array(o.valueHex):Ni}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(!xe(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",Jt)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:$.Convert.ToHex(this.valueHexView)}}},t.NAME="hexBlock",t}var ye=class{constructor({blockLength:t=0,error:e=Ar,warnings:n=[],valueBeforeDecode:s=Ni}={}){this.blockLength=t,this.error=e,this.warnings=n,this.valueBeforeDecodeView=$.BufferSourceConverter.toUint8Array(s)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(t){this.valueBeforeDecodeView=new Uint8Array(t)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:$.Convert.ToHex(this.valueBeforeDecodeView)}}};ye.NAME="baseBlock";var At=class extends ye{fromBER(t,e,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(t,e){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};At.NAME="valueBlock";var Kn=class extends ve(ye){constructor({idBlock:t={}}={}){var e,n,s,o;super(),t?(this.isHexOnly=(e=t.isHexOnly)!==null&&e!==void 0?e:!1,this.valueHexView=t.valueHex?$.BufferSourceConverter.toUint8Array(t.valueHex):Ni,this.tagClass=(n=t.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(s=t.tagNumber)!==null&&s!==void 0?s:-1,this.isConstructed=(o=t.isConstructed)!==null&&o!==void 0?o:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(t=!1){let e=0;switch(this.tagClass){case 1:e|=0;break;case 2:e|=64;break;case 3:e|=128;break;case 4:e|=192;break;default:return this.error="Unknown tag class",Jt}if(this.isConstructed&&(e|=32),this.tagNumber<31&&!this.isHexOnly){let s=new Uint8Array(1);if(!t){let o=this.tagNumber;o&=31,e|=o,s[0]=e}return s.buffer}if(!this.isHexOnly){let s=Oe(this.tagNumber,7),o=new Uint8Array(s),i=s.byteLength,a=new Uint8Array(i+1);if(a[0]=e|31,!t){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]=e|31,!t){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(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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,h=this.valueHexView=new Uint8Array(255),f=255;for(;o[c]&128;){if(h[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 p=new Uint8Array(f);for(let l=0;l<h.length;l++)p[l]=h[l];h=this.valueHexView=new Uint8Array(f)}}this.blockLength=c+1,h[c-1]=o[c]&127;let u=new Uint8Array(c);for(let p=0;p<c;p++)u[p]=h[p];h=this.valueHexView=new Uint8Array(c),h.set(u),this.blockLength<=9?this.tagNumber=Ye(h,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 e+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};Kn.NAME="identificationBlock";var zn=class extends ye{constructor({lenBlock:t={}}={}){var e,n,s;super(),this.isIndefiniteForm=(e=t.isIndefiniteForm)!==null&&e!==void 0?e:!1,this.longFormUsed=(n=t.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(s=t.length)!==null&&s!==void 0?s:0}fromBER(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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,e+this.blockLength;if(this.longFormUsed=!!(o[0]&128),this.longFormUsed===!1)return this.length=o[0],this.blockLength=1,e+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=e+1,c=s.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=Ye(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,e+this.blockLength}toBER(t=!1){let e,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return e=new ArrayBuffer(1),t===!1&&(n=new Uint8Array(e),n[0]=128),e;if(this.longFormUsed){let s=Oe(this.length,8);if(s.byteLength>127)return this.error="Too big length",Jt;if(e=new ArrayBuffer(s.byteLength+1),t)return e;let o=new Uint8Array(s);n=new Uint8Array(e),n[0]=s.byteLength|128;for(let i=0;i<s.byteLength;i++)n[i+1]=o[i];return e}return e=new ArrayBuffer(1),t===!1&&(n=new Uint8Array(e),n[0]=this.length),e}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};zn.NAME="lengthBlock";var N={},bt=class extends ye{constructor({name:t=Ar,optional:e=!1,primitiveSchema:n,...s}={},o){super(s),this.name=t,this.optional=e,n&&(this.primitiveSchema=n),this.idBlock=new Kn(s),this.lenBlock=new zn(s),this.valueBlock=o?new o(s):new At(s)}fromBER(t,e,n){let s=this.valueBlock.fromBER(t,e,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(t,e){let n=e||new Yr;e||Gc(this);let s=this.idBlock.toBER(t);if(n.write(s),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(t,n),n.write(new ArrayBuffer(2));else{let o=this.valueBlock.toBER(t);this.lenBlock.length=o.byteLength;let i=this.lenBlock.toBER(t);n.write(i),n.write(o)}return e?Jt:n.final()}toJSON(){let t={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(t.primitiveSchema=this.primitiveSchema.toJSON()),t}toString(t="ascii"){return t==="ascii"?this.onAsciiEncoding():$.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${$.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(t){if(this===t)return!0;if(!(t instanceof this.constructor))return!1;let e=this.toBER(),n=t.toBER();return Fc(e,n)}};bt.NAME="BaseBlock";function Gc(r){if(r instanceof N.Constructed)for(let t of r.valueBlock.value)Gc(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var $n=class extends bt{constructor({value:t=Ar,...e}={},n){super(e,n),t&&this.fromString(t)}getValue(){return this.valueBlock.value}setValue(t){this.valueBlock.value=t}fromBER(t,e,n){let s=this.valueBlock.fromBER(t,e,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}'`}};$n.NAME="BaseStringBlock";var Gn=class extends ve(At){constructor({isHexOnly:t=!0,...e}={}){super(e),this.isHexOnly=t}};Gn.NAME="PrimitiveValueBlock";var Wc,Wn=class extends bt{constructor(t={}){super(t,Gn),this.idBlock.isConstructed=!1}};Wc=Wn;N.Primitive=Wc;Wn.NAME="PRIMITIVE";function qd(r,t){if(r instanceof t)return r;let e=new t;return e.idBlock=r.idBlock,e.lenBlock=r.lenBlock,e.warnings=r.warnings,e.valueBeforeDecodeView=r.valueBeforeDecodeView,e}function Is(r,t=0,e=r.length){let n=t,s=new bt({},At),o=new ye;if(!xe(o,r,t,e))return s.error=o.error,{offset:-1,result:s};if(!r.subarray(t,t+e).length)return s.error="Zero buffer length",{offset:-1,result:s};let a=s.idBlock.fromBER(r,t,e);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),a===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(t=a,e-=s.idBlock.blockLength,a=s.lenBlock.fromBER(r,t,e),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),a===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};if(t=a,e-=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=bt;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=N.EndOfContent;break;case 1:c=N.Boolean;break;case 2:c=N.Integer;break;case 3:c=N.BitString;break;case 4:c=N.OctetString;break;case 5:c=N.Null;break;case 6:c=N.ObjectIdentifier;break;case 10:c=N.Enumerated;break;case 12:c=N.Utf8String;break;case 13:c=N.RelativeObjectIdentifier;break;case 14:c=N.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:c=N.Sequence;break;case 17:c=N.Set;break;case 18:c=N.NumericString;break;case 19:c=N.PrintableString;break;case 20:c=N.TeletexString;break;case 21:c=N.VideotexString;break;case 22:c=N.IA5String;break;case 23:c=N.UTCTime;break;case 24:c=N.GeneralizedTime;break;case 25:c=N.GraphicString;break;case 26:c=N.VisibleString;break;case 27:c=N.GeneralString;break;case 28:c=N.UniversalString;break;case 29:c=N.CharacterString;break;case 30:c=N.BmpString;break;case 31:c=N.DATE;break;case 32:c=N.TimeOfDay;break;case 33:c=N.DateTime;break;case 34:c=N.Duration;break;default:{let h=s.idBlock.isConstructed?new N.Constructed:new N.Primitive;h.idBlock=s.idBlock,h.lenBlock=s.lenBlock,h.warnings=s.warnings,s=h}}break;case 2:case 3:case 4:default:c=s.idBlock.isConstructed?N.Constructed:N.Primitive}return s=qd(s,c),a=s.fromBER(r,t,s.lenBlock.isIndefiniteForm?e:s.lenBlock.length),s.valueBeforeDecodeView=r.subarray(n,n+s.blockLength),{offset:a,result:s}}function Ci(r){if(!r.byteLength){let t=new bt({},At);return t.error="Input buffer has zero length",{offset:-1,result:t}}return Is($.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function Kd(r,t){return r?1:t}var ne=class extends At{constructor({value:t=[],isIndefiniteForm:e=!1,...n}={}){super(n),this.value=t,this.isIndefiniteForm=e}fromBER(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;if(this.valueBeforeDecodeView=s.subarray(e,e+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),e;let o=e;for(;Kd(this.isIndefiniteForm,n)>0;){let i=Is(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===Jr)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Jr?this.value.pop():this.warnings.push("No EndOfContent block encoded")),o}toBER(t,e){let n=e||new Yr;for(let s=0;s<this.value.length;s++)this.value[s].toBER(t,n);return e?Jt:n.final()}toJSON(){let t={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let e of this.value)t.value.push(e.toJSON());return t}};ne.NAME="ConstructedValueBlock";var jc,Me=class extends bt{constructor(t={}){super(t,ne),this.idBlock.isConstructed=!0}fromBER(t,e,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(t,e,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 t=[];for(let n of this.valueBlock.value)t.push(n.toString("ascii").split(`
|
3
3
|
`).map(s=>` ${s}`).join(`
|
4
4
|
`));let e=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return t.length?`${e} :
|
5
5
|
${t.join(`
|
6
|
-
`)}`:`${e} :`}};Wc=Me;N.Constructed=Wc;Me.NAME="CONSTRUCTED";var Wn=class extends At{fromBER(t,e,n){return e}toBER(t){return Jt}};Wn.override="EndOfContentValueBlock";var jc,jn=class extends bt{constructor(t={}){super(t,Wn),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};jc=jn;N.EndOfContent=jc;jn.NAME=Yr;var Zc,vr=class extends bt{constructor(t={}){super(t,At),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(t,e,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,e+n>t.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):e+n}toBER(t,e){let n=new ArrayBuffer(2);if(!t){let s=new Uint8Array(n);s[0]=5,s[1]=0}return e&&e.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Zc=vr;N.Null=Zc;vr.NAME="NULL";var Zn=class extends ve(At){constructor({value:t,...e}={}){super(e),e.valueHex?this.valueHexView=$.BufferSourceConverter.toUint8Array(e.valueHex):this.valueHexView=new Uint8Array(1),t&&(this.value=t)}get value(){for(let t of this.valueHexView)if(t>0)return!0;return!1}set value(t){this.valueHexView[0]=t?255:0}fromBER(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);return xe(this,s,e,n)?(this.valueHexView=s.subarray(e,e+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Ii.call(this),this.blockLength=n,e+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};Zn.NAME="BooleanValueBlock";var Xc,Xn=class extends bt{constructor(t={}){super(t,Zn),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(t){this.valueBlock.value=t}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Xc=Xn;N.Boolean=Xc;Xn.NAME="BOOLEAN";var Yn=class extends ve(ne){constructor({isConstructed:t=!1,...e}={}){super(e),this.isConstructed=t}fromBER(t,e,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=ne.prototype.fromBER.call(this,t,e,n),s===-1)return s;for(let o=0;o<this.value.length;o++){let i=this.value[o].constructor.NAME;if(i===Yr){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Kc)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(t,e,n),this.blockLength=n;return s}toBER(t,e){return this.isConstructed?ne.prototype.toBER.call(this,t,e):t?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Yn.NAME="OctetStringValueBlock";var Yc,Jn=class r extends bt{constructor({idBlock:t={},lenBlock:e={},...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,...t},lenBlock:{...e,isIndefiniteForm:!!n.isIndefiniteForm},...n},Yn),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(t,e,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),e;if(!this.valueBlock.isConstructed){let o=(t instanceof ArrayBuffer?new Uint8Array(t):t).subarray(e,e+n);try{if(o.byteLength){let i=_s(o,0,o.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(t,e,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Me.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${$.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let t=[];for(let e of this.valueBlock.value)e instanceof r&&t.push(e.valueBlock.valueHexView);return $.BufferSourceConverter.concat(t)}};Yc=Jn;N.OctetString=Yc;Jn.NAME=Kc;var Qn=class extends ve(ne){constructor({unusedBits:t=0,isConstructed:e=!1,...n}={}){super(n),this.unusedBits=t,this.isConstructed=e,this.blockLength=this.valueHexView.byteLength}fromBER(t,e,n){if(!n)return e;let s=-1;if(this.isConstructed){if(s=ne.prototype.fromBER.call(this,t,e,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===Yr){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==zc)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let h=a.valueBlock;if(this.unusedBits>0&&h.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=h.unusedBits}return s}let o=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,o,e,n))return-1;let i=o.subarray(e,e+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=_s(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,e+n}toBER(t,e){if(this.isConstructed)return ne.prototype.toBER.call(this,t,e);if(t)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Jt;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}}};Qn.NAME="BitStringValueBlock";var Jc,Er=class extends bt{constructor({idBlock:t={},lenBlock:e={},...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,...t},lenBlock:{...e,isIndefiniteForm:!!n.isIndefiniteForm},...n},Qn),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(t,e,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(t,e,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Me.prototype.onAsciiEncoding.call(this);{let t=[],e=this.valueBlock.valueHexView;for(let s of e)t.push(s.toString(2).padStart(8,"0"));let n=t.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};Jc=Er;N.BitString=Jc;Er.NAME=zc;var Qc;function zd(r,t){let e=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(t),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,h=0,f=c<i?i:c,u=0;for(let p=f;p>=0;p--,u++){switch(!0){case u<a.length:h=o[i-u]+a[c-u]+e[0];break;default:h=o[i-u]+e[0]}switch(e[0]=h/10,!0){case u>=o.length:o=Hn(new Uint8Array([h%10]),o);break;default:o[i-u]=h%10}}return e[0]>0&&(o=Hn(e,o)),o}function qc(r){if(r>=Zr.length)for(let t=Zr.length;t<=r;t++){let e=new Uint8Array([0]),n=Zr[t-1].slice(0);for(let s=n.length-1;s>=0;s--){let o=new Uint8Array([(n[s]<<1)+e[0]]);e[0]=o[0]/10,n[s]=o[0]%10}e[0]>0&&(n=Hn(e,n)),Zr.push(n)}return Zr[r]}function $d(r,t){let e=0,n=new Uint8Array(r),s=new Uint8Array(t),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,h,f=0;for(let u=c;u>=0;u--,f++)switch(h=o[i-f]-a[c-f]-e,!0){case h<0:e=1,o[i-f]=h+10;break;default:e=0,o[i-f]=h}if(e>0)for(let u=i-c+1;u>=0;u--,f++)if(h=o[i-f]-e,h<0)e=1,o[i-f]=h+10;else{e=0,o[i-f]=h;break}return o.slice()}var Jr=class extends ve(At){constructor({value:t,...e}={}){super(e),this._valueDec=0,e.valueHex&&this.setValueHex(),t!==void 0&&(this.valueDec=t)}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=Ii.call(this)))}set valueDec(t){this._valueDec=t,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Vc(t))}get valueDec(){return this._valueDec}fromDER(t,e,n,s=0){let o=this.fromBER(t,e,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(t=!1){let e=this.valueHexView;switch(!0){case(e[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(e,1),this.valueHexView=n}break;case(e[0]===0&&(e[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(t)}fromBER(t,e,n){let s=super.fromBER(t,e,n);return s===-1||this.setValueHex(),s}toBER(t){return t?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let t=this.valueHexView.length*8-1,e=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 h=0;h<8;h++){if((s&1)===1)switch(n){case t:e=$d(qc(n),e),i="-";break;default:e=zd(e,qc(n))}n++,s>>=1}}for(let c=0;c<e.length;c++)e[c]&&(a=!0),a&&(i+=Fc.charAt(e[c]));return a===!1&&(i+=Fc.charAt(0)),i}};Qc=Jr;Jr.NAME="IntegerValueBlock";Object.defineProperty(Qc.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var tl,wt=class r extends bt{constructor(t={}){super(t,Jr),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Fn(),BigInt(this.valueBlock.toString())}static fromBigInt(t){Fn();let e=BigInt(t),n=new Xr,s=e.toString(16).replace(/^-/,""),o=new Uint8Array($.Convert.FromHex(s));if(e<0){let a=new Uint8Array(o.length+(o[0]&128?1:0));a[0]|=128;let h=BigInt(`0x${$.Convert.ToHex(a)}`)+e,f=$.BufferSourceConverter.toUint8Array($.Convert.FromHex(h.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 t=new r({valueHex:this.valueBlock.valueHexView});return t.valueBlock.toDER(),t}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()}`}};tl=wt;N.Integer=tl;wt.NAME="INTEGER";var el,ts=class extends wt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};el=ts;N.Enumerated=el;ts.NAME="ENUMERATED";var Qr=class extends ve(At){constructor({valueDec:t=-1,isFirstSid:e=!1,...n}={}){super(n),this.valueDec=t,this.isFirstSid=e}fromBER(t,e,n){if(!n)return e;let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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=Ye(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),e+this.blockLength)}set valueBigInt(t){Fn();let e=BigInt(t).toString(2);for(;e.length%7;)e="0"+e;let n=new Uint8Array(e.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(e.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(t){if(this.isHexOnly){if(t)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 e=Oe(this.valueDec,7);if(e.byteLength===0)return this.error="Error during encoding SID value",Jt;let n=new Uint8Array(e.byteLength);if(!t){let s=new Uint8Array(e),o=e.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n}toString(){let t="";if(this.isHexOnly)t=$.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let e=this.valueDec;this.valueDec<=39?t="0.":this.valueDec<=79?(t="1.",e-=40):(t="2.",e-=80),t+=e.toString()}else t=this.valueDec.toString();return t}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Qr.NAME="sidBlock";var es=class extends At{constructor({value:t=Ar,...e}={}){super(e),this.value=[],t&&this.fromString(t)}fromBER(t,e,n){let s=e;for(;n>0;){let o=new Qr;if(s=o.fromBER(t,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(t){let e=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(t);if(s.byteLength===0)return this.error=this.value[n].error,Jt;e.push(s)}return Ti(e)}fromString(t){this.value=[];let e=0,n=0,s="",o=!1;do if(n=t.indexOf(".",e),n===-1?s=t.substring(e):s=t.substring(e,n),e=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 Qr;if(s>Number.MAX_SAFE_INTEGER){Fn();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 t="",e=!1;for(let n=0;n<this.value.length;n++){e=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(t=`${t}.`),e?(s=`{${s}}`,this.value[n].isFirstSid?t=`2.{${s} - 80}`:t+=s):t+=s}return t}toJSON(){let t={...super.toJSON(),value:this.toString(),sidArray:[]};for(let e=0;e<this.value.length;e++)t.sidArray.push(this.value[e].toJSON());return t}};es.NAME="ObjectIdentifierValueBlock";var rl,Sr=class extends bt{constructor(t={}){super(t,es),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(t){this.valueBlock.fromString(t)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};rl=Sr;N.ObjectIdentifier=rl;Sr.NAME="OBJECT IDENTIFIER";var tn=class extends ve(ye){constructor({valueDec:t=0,...e}={}){super(e),this.valueDec=t}fromBER(t,e,n){if(n===0)return e;let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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=Ye(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),e+this.blockLength)}toBER(t){if(this.isHexOnly){if(t)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 e=Oe(this.valueDec,7);if(e.byteLength===0)return this.error="Error during encoding SID value",Jt;let n=new Uint8Array(e.byteLength);if(!t){let s=new Uint8Array(e),o=e.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n.buffer}toString(){let t="";return this.isHexOnly?t=$.Convert.ToHex(this.valueHexView):t=this.valueDec.toString(),t}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};tn.NAME="relativeSidBlock";var rs=class extends At{constructor({value:t=Ar,...e}={}){super(e),this.value=[],t&&this.fromString(t)}fromBER(t,e,n){let s=e;for(;n>0;){let o=new tn;if(s=o.fromBER(t,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(t,e){let n=[];for(let s=0;s<this.value.length;s++){let o=this.value[s].toBER(t);if(o.byteLength===0)return this.error=this.value[s].error,Jt;n.push(o)}return Ti(n)}fromString(t){this.value=[];let e=0,n=0,s="";do{n=t.indexOf(".",e),n===-1?s=t.substring(e):s=t.substring(e,n),e=n+1;let o=new tn;if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return!0;this.value.push(o)}while(n!==-1);return!0}toString(){let t="",e=!1;for(let n=0;n<this.value.length;n++){e=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(t=`${t}.`),e&&(s=`{${s}}`),t+=s}return t}toJSON(){let t={...super.toJSON(),value:this.toString(),sidArray:[]};for(let e=0;e<this.value.length;e++)t.sidArray.push(this.value[e].toJSON());return t}};rs.NAME="RelativeObjectIdentifierValueBlock";var nl,ns=class extends bt{constructor(t={}){super(t,rs),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(t){this.valueBlock.fromString(t)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};nl=ns;N.RelativeObjectIdentifier=nl;ns.NAME="RelativeObjectIdentifier";var sl,be=class extends Me{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};sl=be;N.Sequence=sl;be.NAME="SEQUENCE";var ol,ss=class extends Me{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};ol=ss;N.Set=ol;ss.NAME="SET";var os=class extends ve(At){constructor({...t}={}){super(t),this.isHexOnly=!0,this.value=Ar}toJSON(){return{...super.toJSON(),value:this.value}}};os.NAME="StringValueBlock";var is=class extends os{};is.NAME="SimpleStringValueBlock";var It=class extends zn{constructor({...t}={}){super(t,is)}fromBuffer(t){this.valueBlock.value=String.fromCharCode.apply(null,$.BufferSourceConverter.toUint8Array(t))}fromString(t){let e=t.length,n=this.valueBlock.valueHexView=new Uint8Array(e);for(let s=0;s<e;s++)n[s]=t.charCodeAt(s);this.valueBlock.value=t}};It.NAME="SIMPLE STRING";var as=class extends It{fromBuffer(t){this.valueBlock.valueHexView=$.BufferSourceConverter.toUint8Array(t);try{this.valueBlock.value=$.Convert.ToUtf8String(t)}catch(e){this.warnings.push(`Error during "decodeURIComponent": ${e}, using raw string`),this.valueBlock.value=$.Convert.ToBinary(t)}}fromString(t){this.valueBlock.valueHexView=new Uint8Array($.Convert.FromUtf8String(t)),this.valueBlock.value=t}};as.NAME="Utf8StringValueBlock";var il,we=class extends as{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};il=we;N.Utf8String=il;we.NAME="UTF8String";var cs=class extends It{fromBuffer(t){this.valueBlock.value=$.Convert.ToUtf16String(t),this.valueBlock.valueHexView=$.BufferSourceConverter.toUint8Array(t)}fromString(t){this.valueBlock.value=t,this.valueBlock.valueHexView=new Uint8Array($.Convert.FromUtf16String(t))}};cs.NAME="BmpStringValueBlock";var al,ls=class extends cs{constructor({...t}={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};al=ls;N.BmpString=al;ls.NAME="BMPString";var us=class extends It{fromBuffer(t){let e=ArrayBuffer.isView(t)?t.slice().buffer:t.slice(0),n=new Uint8Array(e);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(e))}fromString(t){let e=t.length,n=this.valueBlock.valueHexView=new Uint8Array(e*4);for(let s=0;s<e;s++){let o=Oe(t.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=t}};us.NAME="UniversalStringValueBlock";var cl,fs=class extends us{constructor({...t}={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};cl=fs;N.UniversalString=cl;fs.NAME="UniversalString";var ll,hs=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};ll=hs;N.NumericString=ll;hs.NAME="NumericString";var ul,ds=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};ul=ds;N.PrintableString=ul;ds.NAME="PrintableString";var fl,ps=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};fl=ps;N.TeletexString=fl;ps.NAME="TeletexString";var hl,ms=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};hl=ms;N.VideotexString=hl;ms.NAME="VideotexString";var dl,gs=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};dl=gs;N.IA5String=dl;gs.NAME="IA5String";var pl,ys=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};pl=ys;N.GraphicString=pl;ys.NAME="GraphicString";var ml,en=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};ml=en;N.VisibleString=ml;en.NAME="VisibleString";var gl,bs=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};gl=bs;N.GeneralString=gl;bs.NAME="GeneralString";var yl,ws=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};yl=ws;N.CharacterString=yl;ws.NAME="CharacterString";var bl,rn=class extends en{constructor({value:t,valueDate:e,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,t){this.fromString(t),this.valueBlock.valueHexView=new Uint8Array(t.length);for(let s=0;s<t.length;s++)this.valueBlock.valueHexView[s]=t.charCodeAt(s)}e&&(this.fromDate(e),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(t){this.fromString(String.fromCharCode.apply(null,$.BufferSourceConverter.toUint8Array(t)))}toBuffer(){let t=this.toString(),e=new ArrayBuffer(t.length),n=new Uint8Array(e);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return e}fromDate(t){this.year=t.getUTCFullYear(),this.month=t.getUTCMonth()+1,this.day=t.getUTCDate(),this.hour=t.getUTCHours(),this.minute=t.getUTCMinutes(),this.second=t.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(t){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(t);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(t="iso"){if(t==="iso"){let e=new Array(7);return e[0]=Rt(this.year<2e3?this.year-1900:this.year-2e3,2),e[1]=Rt(this.month,2),e[2]=Rt(this.day,2),e[3]=Rt(this.hour,2),e[4]=Rt(this.minute,2),e[5]=Rt(this.second,2),e[6]="Z",e.join("")}return super.toString(t)}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}}};bl=rn;N.UTCTime=bl;rn.NAME="UTCTime";var wl,xs=class extends rn{constructor(t={}){var e;super(t),(e=this.millisecond)!==null&&e!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(t){super.fromDate(t),this.millisecond=t.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(t){let e=!1,n="",s="",o=0,i,a=0,c=0;if(t[t.length-1]==="Z")n=t.substring(0,t.length-1),e=!0;else{let u=new Number(t[t.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=t}if(e){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 u=1,p=n.indexOf("+"),l="";if(p===-1&&(p=n.indexOf("-"),u=-1),p!==-1){if(l=n.substring(p+1),n=n.substring(0,p),l.length!==2&&l.length!==4)throw new Error("Wrong input string for conversion");let d=parseInt(l.substring(0,2),10);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*d,l.length===4){if(d=parseInt(l.substring(2,4),10),isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");c=u*d}}}let h=n.indexOf(".");if(h===-1&&(h=n.indexOf(",")),h!==-1){let u=new Number(`0${n.substring(h)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");o=u.valueOf(),s=n.substring(0,h)}else s=n;switch(!0){case s.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,h!==-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,h!==-1){let u=60*o;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=60*o;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=1e3*o;this.millisecond=Math.floor(u)}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 u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(e===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(t="iso"){if(t==="iso"){let e=[];return e.push(Rt(this.year,4)),e.push(Rt(this.month,2)),e.push(Rt(this.day,2)),e.push(Rt(this.hour,2)),e.push(Rt(this.minute,2)),e.push(Rt(this.second,2)),this.millisecond!==0&&(e.push("."),e.push(Rt(this.millisecond,3))),e.push("Z"),e.join("")}return super.toString(t)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};wl=xs;N.GeneralizedTime=wl;xs.NAME="GeneralizedTime";var xl,vs=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};xl=vs;N.DATE=xl;vs.NAME="DATE";var vl,Es=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};vl=Es;N.TimeOfDay=vl;Es.NAME="TimeOfDay";var El,Ss=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};El=Ss;N.DateTime=El;Ss.NAME="DateTime";var Sl,As=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};Sl=As;N.Duration=Sl;As.NAME="Duration";var Al,Bs=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};Al=Bs;N.TIME=Al;Bs.NAME="TIME";function j(r,t="utf8"){let e=Dn[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.encoder.encode(r).substring(1)}function Is(r){if(isNaN(r)||r<=0)throw new pt("random bytes length must be a Number bigger than 0");return dr(r)}var nn=class extends Error{constructor(t="An error occurred while verifying a message"){super(t),this.name="VerificationError"}},Ts=class extends Error{constructor(t="Missing Web Crypto API"){super(t),this.name="WebCryptoMissingError"}};var Bl={get(r=globalThis){let t=r.crypto;if(t?.subtle==null)throw new Ts("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 t}};var Pe=Bl;async function _l(r){let t=await Pe.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),e=await Wd(t);return{privateKey:e[0],publicKey:e[1]}}async function Il(r,t){let e=await Pe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Pe.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},e,t instanceof Uint8Array?t:t.subarray());return new Uint8Array(n,0,n.byteLength)}async function Tl(r,t,e){let n=await Pe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Pe.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,t,e instanceof Uint8Array?e:e.subarray())}async function Wd(r){if(r.privateKey==null||r.publicKey==null)throw new pt("Private and public key are required");return Promise.all([Pe.get().subtle.exportKey("jwk",r.privateKey),Pe.get().subtle.exportKey("jwk",r.publicKey)])}function Ci(r){if(r.kty!=="RSA")throw new pt("invalid key type");if(r.n==null)throw new pt("invalid key modulus");return F(r.n,"base64url").length*8}var Br=class{type="RSA";_key;_raw;_multihash;constructor(t,e){this._key=t,this._multihash=e}get raw(){return this._raw==null&&(this._raw=sn.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return mt.createV1(114,this._multihash)}toString(){return tt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}verify(t,e){return Tl(this._key,e,t)}},on=class{type="RSA";_key;_raw;publicKey;constructor(t,e){this._key=t,this.publicKey=e}get raw(){return this._raw==null&&(this._raw=sn.jwkToPkcs1(this._key)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}sign(t){return Il(this._key,t)}};var ks=8192,Ri=18;function kl(r){let{result:t}=Ni(r),e=t.valueBlock.value;return{n:j(se(e[1].toBigInt()),"base64url"),e:j(se(e[2].toBigInt()),"base64url"),d:j(se(e[3].toBigInt()),"base64url"),p:j(se(e[4].toBigInt()),"base64url"),q:j(se(e[5].toBigInt()),"base64url"),dp:j(se(e[6].toBigInt()),"base64url"),dq:j(se(e[7].toBigInt()),"base64url"),qi:j(se(e[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function jd(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 pt("JWK was missing components");let e=new be({value:[new wt({value:0}),wt.fromBigInt(oe(F(r.n,"base64url"))),wt.fromBigInt(oe(F(r.e,"base64url"))),wt.fromBigInt(oe(F(r.d,"base64url"))),wt.fromBigInt(oe(F(r.p,"base64url"))),wt.fromBigInt(oe(F(r.q,"base64url"))),wt.fromBigInt(oe(F(r.dp,"base64url"))),wt.fromBigInt(oe(F(r.dq,"base64url"))),wt.fromBigInt(oe(F(r.qi,"base64url")))]}).toBER();return new Uint8Array(e,0,e.byteLength)}function Nl(r){let{result:t}=Ni(r),e=t.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:j(se(e[0].toBigInt()),"base64url"),e:j(se(e[1].toBigInt()),"base64url")}}function Li(r){if(r.n==null||r.e==null)throw new pt("JWK was missing components");let e=new be({value:[new be({value:[new Sr({value:"1.2.840.113549.1.1.1"}),new vr]}),new Er({valueHex:new be({value:[wt.fromBigInt(oe(F(r.n,"base64url"))),wt.fromBigInt(oe(F(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(e,0,e.byteLength)}function se(r){let t=r.toString(16);t.length%2>0&&(t=`0${t}`);let e=t.length/2,n=new Uint8Array(e),s=0,o=0;for(;s<e;)n[s]=parseInt(t.slice(o,o+2),16),s+=1,o+=2;return n}function oe(r){let t=[];return r.forEach(function(e){let n=e.toString(16);n.length%2>0&&(n=`0${n}`),t.push(n)}),BigInt("0x"+t.join(""))}function Cl(r){let t=kl(r);return Rl(t)}function Ui(r){let t=Nl(r);if(Ci(t)>ks)throw new sr("Key size is too large");let e=wr(re.encode({Type:ft.RSA,Data:r})),n=Wt(Ri,e);return new Br(t,n)}function Rl(r){if(Ci(r)>ks)throw new pt("Key size is too large");let t=Ul(r),e=wr(re.encode({Type:ft.RSA,Data:Li(t.publicKey)})),n=Wt(Ri,e);return new on(t.privateKey,new Br(t.publicKey,n))}async function Ll(r){if(r>ks)throw new pt("Key size is too large");let t=await _l(r),e=wr(re.encode({Type:ft.RSA,Data:Li(t.publicKey)})),n=Wt(Ri,e);return new on(t.privateKey,new Br(t.publicKey,n))}function Ul(r){if(r==null)throw new pt("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var Ns=class extends hr{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,nc(t);let n=Fr(e);if(this.iHash=t.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?t.create().update(n).digest():n);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=t.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),o.fill(0)}update(t){return fr(this),this.iHash.update(t),this}digestInto(t){fr(this),ur(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:s,destroyed:o,blockLen:i,outputLen:a}=this;return t=t,t.finished=s,t.destroyed=o,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Di=(r,t,e)=>new Ns(r,t).update(e).digest();Di.create=(r,t)=>new Ns(r,t);function Dl(r){r.lowS!==void 0&&Zt("lowS",r.lowS),r.prehash!==void 0&&Zt("prehash",r.prehash)}function Zd(r){let t=zr(r);ee(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:e,Fp:n,a:s}=t;if(e){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}var{bytesToNumberBE:Xd,hexToBytes:Yd}=_n,Ee={Err:class extends Error{constructor(t=""){super(t)}},_tlv:{encode:(r,t)=>{let{Err:e}=Ee;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length&1)throw new e("tlv.encode: unpadded data");let n=t.length/2,s=Ke(n);if(s.length/2&128)throw new e("tlv.encode: long form length too big");let o=n>127?Ke(s.length/2|128):"";return`${Ke(r)}${o}${s}${t}`},decode(r,t){let{Err:e}=Ee,n=0;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length<2||t[n++]!==r)throw new e("tlv.decode: wrong tlv");let s=t[n++],o=!!(s&128),i=0;if(!o)i=s;else{let c=s&127;if(!c)throw new e("tlv.decode(long): indefinite length not supported");if(c>4)throw new e("tlv.decode(long): byte length is too big");let h=t.subarray(n,n+c);if(h.length!==c)throw new e("tlv.decode: length bytes not complete");if(h[0]===0)throw new e("tlv.decode(long): zero leftmost byte");for(let f of h)i=i<<8|f;if(n+=c,i<128)throw new e("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new e("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(r){let{Err:t}=Ee;if(r<Se)throw new t("integer: negative integers are not allowed");let e=Ke(r);if(Number.parseInt(e[0],16)&8&&(e="00"+e),e.length&1)throw new t("unexpected assertion");return e},decode(r){let{Err:t}=Ee;if(r[0]&128)throw new t("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("Invalid signature integer: unnecessary leading zero");return Xd(r)}},toSig(r){let{Err:t,_int:e,_tlv:n}=Ee,s=typeof r=="string"?Yd(r):r;mr(s);let{v:o,l:i}=n.decode(48,s);if(i.length)throw new t("Invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,o),{v:h,l:f}=n.decode(2,c);if(f.length)throw new t("Invalid signature: left bytes after parsing");return{r:e.decode(a),s:e.decode(h)}},hexFromSig(r){let{_tlv:t,_int:e}=Ee,n=`${t.encode(2,e.encode(r.r))}${t.encode(2,e.encode(r.s))}`;return t.encode(48,n)}},Se=BigInt(0),gt=BigInt(1),Wy=BigInt(2),Ol=BigInt(3),jy=BigInt(4);function Jd(r){let t=Zd(r),{Fp:e}=t,n=Re(t.n,t.nBitLength),s=t.toBytes||((g,y,b)=>{let w=y.toAffine();return pe(Uint8Array.from([4]),e.toBytes(w.x),e.toBytes(w.y))}),o=t.fromBytes||(g=>{let y=g.subarray(1),b=e.fromBytes(y.subarray(0,e.BYTES)),w=e.fromBytes(y.subarray(e.BYTES,2*e.BYTES));return{x:b,y:w}});function i(g){let{a:y,b}=t,w=e.sqr(g),m=e.mul(w,g);return e.add(e.add(m,e.mul(g,y)),b)}if(!e.eql(e.sqr(t.Gy),i(t.Gx)))throw new Error("bad generator point: equation left != right");function a(g){return qr(g,gt,t.n)}function c(g){let{allowedPrivateKeyLengths:y,nByteLength:b,wrapPrivateKey:w,n:m}=t;if(y&&typeof g!="bigint"){if(ke(g)&&(g=he(g)),typeof g!="string"||!y.includes(g.length))throw new Error("Invalid key");g=g.padStart(b*2,"0")}let v;try{v=typeof g=="bigint"?g:de(ot("private key",g,b))}catch{throw new Error(`private key must be ${b} bytes, hex or bigint, not ${typeof g}`)}return w&&(v=Y(v,m)),kt("private key",v,gt,m),v}function h(g){if(!(g instanceof p))throw new Error("ProjectivePoint expected")}let f=Ge((g,y)=>{let{px:b,py:w,pz:m}=g;if(e.eql(m,e.ONE))return{x:b,y:w};let v=g.is0();y==null&&(y=v?e.ONE:e.inv(m));let A=e.mul(b,y),_=e.mul(w,y),x=e.mul(m,y);if(v)return{x:e.ZERO,y:e.ZERO};if(!e.eql(x,e.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}),u=Ge(g=>{if(g.is0()){if(t.allowInfinityPoint&&!e.is0(g.py))return;throw new Error("bad point: ZERO")}let{x:y,y:b}=g.toAffine();if(!e.isValid(y)||!e.isValid(b))throw new Error("bad point: x or y not FE");let w=e.sqr(b),m=i(y);if(!e.eql(w,m))throw new Error("bad point: equation left != right");if(!g.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class p{constructor(y,b,w){if(this.px=y,this.py=b,this.pz=w,y==null||!e.isValid(y))throw new Error("x required");if(b==null||!e.isValid(b))throw new Error("y required");if(w==null||!e.isValid(w))throw new Error("z required");Object.freeze(this)}static fromAffine(y){let{x:b,y:w}=y||{};if(!y||!e.isValid(b)||!e.isValid(w))throw new Error("invalid affine point");if(y instanceof p)throw new Error("projective point not allowed");let m=v=>e.eql(v,e.ZERO);return m(b)&&m(w)?p.ZERO:new p(b,w,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(y){let b=e.invertBatch(y.map(w=>w.pz));return y.map((w,m)=>w.toAffine(b[m])).map(p.fromAffine)}static fromHex(y){let b=p.fromAffine(o(ot("pointHex",y)));return b.assertValidity(),b}static fromPrivateKey(y){return p.BASE.multiply(c(y))}static msm(y,b){return kn(p,n,y,b)}_setWindowSize(y){d.setWindowSize(this,y)}assertValidity(){u(this)}hasEvenY(){let{y}=this.toAffine();if(e.isOdd)return!e.isOdd(y);throw new Error("Field doesn't support isOdd")}equals(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=e.eql(e.mul(b,_),e.mul(v,m)),B=e.eql(e.mul(w,_),e.mul(A,m));return x&&B}negate(){return new p(this.px,e.neg(this.py),this.pz)}double(){let{a:y,b}=t,w=e.mul(b,Ol),{px:m,py:v,pz:A}=this,_=e.ZERO,x=e.ZERO,B=e.ZERO,C=e.mul(m,m),et=e.mul(v,v),H=e.mul(A,A),V=e.mul(m,v);return V=e.add(V,V),B=e.mul(m,A),B=e.add(B,B),_=e.mul(y,B),x=e.mul(w,H),x=e.add(_,x),_=e.sub(et,x),x=e.add(et,x),x=e.mul(_,x),_=e.mul(V,_),B=e.mul(w,B),H=e.mul(y,H),V=e.sub(C,H),V=e.mul(y,V),V=e.add(V,B),B=e.add(C,C),C=e.add(B,C),C=e.add(C,H),C=e.mul(C,V),x=e.add(x,C),H=e.mul(v,A),H=e.add(H,H),C=e.mul(H,V),_=e.sub(_,C),B=e.mul(H,et),B=e.add(B,B),B=e.add(B,B),new p(_,x,B)}add(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=e.ZERO,B=e.ZERO,C=e.ZERO,et=t.a,H=e.mul(t.b,Ol),V=e.mul(b,v),U=e.mul(w,A),k=e.mul(m,_),R=e.add(b,w),S=e.add(v,A);R=e.mul(R,S),S=e.add(V,U),R=e.sub(R,S),S=e.add(b,m);let E=e.add(v,_);return S=e.mul(S,E),E=e.add(V,k),S=e.sub(S,E),E=e.add(w,m),x=e.add(A,_),E=e.mul(E,x),x=e.add(U,k),E=e.sub(E,x),C=e.mul(et,S),x=e.mul(H,k),C=e.add(x,C),x=e.sub(U,C),C=e.add(U,C),B=e.mul(x,C),U=e.add(V,V),U=e.add(U,V),k=e.mul(et,k),S=e.mul(H,S),U=e.add(U,k),k=e.sub(V,k),k=e.mul(et,k),S=e.add(S,k),V=e.mul(U,S),B=e.add(B,V),V=e.mul(E,S),x=e.mul(R,x),x=e.sub(x,V),V=e.mul(R,U),C=e.mul(E,C),C=e.add(C,V),new p(x,B,C)}subtract(y){return this.add(y.negate())}is0(){return this.equals(p.ZERO)}wNAF(y){return d.wNAFCached(this,y,p.normalizeZ)}multiplyUnsafe(y){kt("scalar",y,Se,t.n);let b=p.ZERO;if(y===Se)return b;if(y===gt)return this;let{endo:w}=t;if(!w)return d.unsafeLadder(this,y);let{k1neg:m,k1:v,k2neg:A,k2:_}=w.splitScalar(y),x=b,B=b,C=this;for(;v>Se||_>Se;)v>&&(x=x.add(C)),_>&&(B=B.add(C)),C=C.double(),v>>=gt,_>>=gt;return m&&(x=x.negate()),A&&(B=B.negate()),B=new p(e.mul(B.px,w.beta),B.py,B.pz),x.add(B)}multiply(y){let{endo:b,n:w}=t;kt("scalar",y,gt,w);let m,v;if(b){let{k1neg:A,k1:_,k2neg:x,k2:B}=b.splitScalar(y),{p:C,f:et}=this.wNAF(_),{p:H,f:V}=this.wNAF(B);C=d.constTimeNegate(A,C),H=d.constTimeNegate(x,H),H=new p(e.mul(H.px,b.beta),H.py,H.pz),m=C.add(H),v=et.add(V)}else{let{p:A,f:_}=this.wNAF(y);m=A,v=_}return p.normalizeZ([m,v])[0]}multiplyAndAddUnsafe(y,b,w){let m=p.BASE,v=(_,x)=>x===Se||x===gt||!_.equals(m)?_.multiplyUnsafe(x):_.multiply(x),A=v(this,b).add(v(y,w));return A.is0()?void 0:A}toAffine(y){return f(this,y)}isTorsionFree(){let{h:y,isTorsionFree:b}=t;if(y===gt)return!0;if(b)return b(p,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:y,clearCofactor:b}=t;return y===gt?this:b?b(p,this):this.multiplyUnsafe(t.h)}toRawBytes(y=!0){return Zt("isCompressed",y),this.assertValidity(),s(p,this,y)}toHex(y=!0){return Zt("isCompressed",y),he(this.toRawBytes(y))}}p.BASE=new p(t.Gx,t.Gy,e.ONE),p.ZERO=new p(e.ZERO,e.ONE,e.ZERO);let l=t.nBitLength,d=Tn(p,t.endo?Math.ceil(l/2):l);return{CURVE:t,ProjectivePoint:p,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:a}}function Qd(r){let t=zr(r);return ee(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function Ml(r){let t=Qd(r),{Fp:e,n}=t,s=e.BYTES+1,o=2*e.BYTES+1;function i(k){return Y(k,n)}function a(k){return In(k,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:h,weierstrassEquation:f,isWithinCurveOrder:u}=Jd({...t,toBytes(k,R,S){let E=R.toAffine(),I=e.toBytes(E.x),L=pe;return Zt("isCompressed",S),S?L(Uint8Array.from([R.hasEvenY()?2:3]),I):L(Uint8Array.from([4]),I,e.toBytes(E.y))},fromBytes(k){let R=k.length,S=k[0],E=k.subarray(1);if(R===s&&(S===2||S===3)){let I=de(E);if(!qr(I,gt,e.ORDER))throw new Error("Point is not on curve");let L=f(I),O;try{O=e.sqrt(L)}catch(G){let z=G instanceof Error?": "+G.message:"";throw new Error("Point is not on curve"+z)}let M=(O>)===gt;return(S&1)===1!==M&&(O=e.neg(O)),{x:I,y:O}}else if(R===o&&S===4){let I=e.fromBytes(E.subarray(0,e.BYTES)),L=e.fromBytes(E.subarray(e.BYTES,2*e.BYTES));return{x:I,y:L}}else throw new Error(`Point of length ${R} was invalid. Expected ${s} compressed bytes or ${o} uncompressed bytes`)}}),p=k=>he(Ce(k,t.nByteLength));function l(k){let R=n>>gt;return k>R}function d(k){return l(k)?i(-k):k}let g=(k,R,S)=>de(k.slice(R,S));class y{constructor(R,S,E){this.r=R,this.s=S,this.recovery=E,this.assertValidity()}static fromCompact(R){let S=t.nByteLength;return R=ot("compactSignature",R,S*2),new y(g(R,0,S),g(R,S,2*S))}static fromDER(R){let{r:S,s:E}=Ee.toSig(ot("DER",R));return new y(S,E)}assertValidity(){kt("r",this.r,gt,n),kt("s",this.s,gt,n)}addRecoveryBit(R){return new y(this.r,this.s,R)}recoverPublicKey(R){let{r:S,s:E,recovery:I}=this,L=_(ot("msgHash",R));if(I==null||![0,1,2,3].includes(I))throw new Error("recovery id invalid");let O=I===2||I===3?S+t.n:S;if(O>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let M=I&1?"03":"02",K=c.fromHex(M+p(O)),G=a(O),z=i(-L*G),X=i(E*G),Q=c.BASE.multiplyAndAddUnsafe(K,z,X);if(!Q)throw new Error("point at infinify");return Q.assertValidity(),Q}hasHighS(){return l(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return ze(this.toDERHex())}toDERHex(){return Ee.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ze(this.toCompactHex())}toCompactHex(){return p(this.r)+p(this.s)}}let b={isValidPrivateKey(k){try{return h(k),!0}catch{return!1}},normPrivateKeyToScalar:h,randomPrivateKey:()=>{let k=qo(t.n);return gc(t.randomBytes(k),t.n)},precompute(k=8,R=c.BASE){return R._setWindowSize(k),R.multiply(BigInt(3)),R}};function w(k,R=!0){return c.fromPrivateKey(k).toRawBytes(R)}function m(k){let R=ke(k),S=typeof k=="string",E=(R||S)&&k.length;return R?E===s||E===o:S?E===2*s||E===2*o:k instanceof c}function v(k,R,S=!0){if(m(k))throw new Error("first arg must be private key");if(!m(R))throw new Error("second arg must be public key");return c.fromHex(R).multiply(h(k)).toRawBytes(S)}let A=t.bits2int||function(k){let R=de(k),S=k.length*8-t.nBitLength;return S>0?R>>BigInt(S):R},_=t.bits2int_modN||function(k){return i(A(k))},x=Kr(t.nBitLength);function B(k){return kt(`num < 2^${t.nBitLength}`,k,Se,x),Ce(k,t.nByteLength)}function C(k,R,S=et){if(["recovered","canonical"].some(dt=>dt in S))throw new Error("sign() legacy options not supported");let{hash:E,randomBytes:I}=t,{lowS:L,prehash:O,extraEntropy:M}=S;L==null&&(L=!0),k=ot("msgHash",k),Dl(S),O&&(k=ot("prehashed msgHash",E(k)));let K=_(k),G=h(R),z=[B(G),B(K)];if(M!=null&&M!==!1){let dt=M===!0?I(e.BYTES):M;z.push(ot("extraEntropy",dt))}let X=pe(...z),Q=K;function ht(dt){let yt=A(dt);if(!u(yt))return;let Bt=a(yt),lt=c.BASE.multiply(yt).toAffine(),Tt=i(lt.x);if(Tt===Se)return;let ie=i(Bt*i(Q+Tt*G));if(ie===Se)return;let Dr=(lt.x===Tt?0:2)|Number(lt.y>),Or=ie;return L&&l(ie)&&(Or=d(ie),Dr^=1),new y(Tt,Or,Dr)}return{seed:X,k2sig:ht}}let et={lowS:t.lowS,prehash:!1},H={lowS:t.lowS,prehash:!1};function V(k,R,S=et){let{seed:E,k2sig:I}=C(k,R,S),L=t;return Po(L.hash.outputLen,L.nByteLength,L.hmac)(E,I)}c.BASE._setWindowSize(8);function U(k,R,S,E=H){let I=k;if(R=ot("msgHash",R),S=ot("publicKey",S),"strict"in E)throw new Error("options.strict was renamed to lowS");Dl(E);let{lowS:L,prehash:O}=E,M,K;try{if(typeof I=="string"||ke(I))try{M=y.fromDER(I)}catch(lt){if(!(lt instanceof Ee.Err))throw lt;M=y.fromCompact(I)}else if(typeof I=="object"&&typeof I.r=="bigint"&&typeof I.s=="bigint"){let{r:lt,s:Tt}=I;M=new y(lt,Tt)}else throw new Error("PARSE");K=c.fromHex(S)}catch(lt){if(lt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(L&&M.hasHighS())return!1;O&&(R=t.hash(R));let{r:G,s:z}=M,X=_(R),Q=a(z),ht=i(X*Q),dt=i(G*Q),yt=c.BASE.multiplyAndAddUnsafe(K,ht,dt)?.toAffine();return yt?i(yt.x)===G:!1}return{CURVE:t,getPublicKey:w,getSharedSecret:v,sign:V,verify:U,ProjectivePoint:c,Signature:y,utils:b}}function tp(r){return{hash:r,hmac:(t,...e)=>Di(r,t,No(...e)),randomBytes:dr}}function Pl(r,t){let e=n=>Ml({...r,...tp(n)});return Object.freeze({...e(t),create:e})}var Fl=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Vl=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),ep=BigInt(1),Oi=BigInt(2),Hl=(r,t)=>(r+t/Oi)/t;function rp(r){let t=Fl,e=BigInt(3),n=BigInt(6),s=BigInt(11),o=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),h=r*r*r%t,f=h*h*r%t,u=nt(f,e,t)*f%t,p=nt(u,e,t)*f%t,l=nt(p,Oi,t)*h%t,d=nt(l,s,t)*l%t,g=nt(d,o,t)*d%t,y=nt(g,a,t)*g%t,b=nt(y,c,t)*y%t,w=nt(b,a,t)*g%t,m=nt(w,e,t)*f%t,v=nt(m,i,t)*d%t,A=nt(v,n,t)*h%t,_=nt(A,Oi,t);if(!Mi.eql(Mi.sqr(_),r))throw new Error("Cannot find square root");return _}var Mi=Re(Fl,void 0,void 0,{sqrt:rp}),Je=Pl({a:BigInt(0),b:BigInt(7),Fp:Mi,n:Vl,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=Vl,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-ep*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=e,i=BigInt("0x100000000000000000000000000000000"),a=Hl(o*r,t),c=Hl(-n*r,t),h=Y(r-a*e-c*s,t),f=Y(-a*n-c*o,t),u=h>i,p=f>i;if(u&&(h=t-h),p&&(f=t-f),h>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:h,k2neg:p,k2:f}}}},wr),nb=BigInt(0);var sb=Je.ProjectivePoint;function Mt(r,t){t==null&&(t=r.reduce((s,o)=>s+o.length,0));let e=Ct(t),n=0;for(let s of r)e.set(s,n),n+=s.length;return e}function ql(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function Kl(r,t,e){let n=yr.digest(e instanceof Uint8Array?e:e.subarray());if(ql(n))return n.then(({digest:s})=>Je.verify(t,s,r)).catch(s=>{throw new nn(String(s))});try{return Je.verify(t,n.digest,r)}catch(s){throw new nn(String(s))}}var Cs=class{type="secp256k1";raw;_key;constructor(t){this._key=$l(t),this.raw=zl(this._key)}toMultihash(){return ue.digest(gr(this))}toCID(){return mt.createV1(114,this.toMultihash())}toString(){return tt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}verify(t,e){return Kl(this._key,e,t)}};function Pi(r){return new Cs(r)}function zl(r){return Je.ProjectivePoint.fromHex(r).toRawBytes(!0)}function $l(r){try{return Je.ProjectivePoint.fromHex(r),r}catch(t){throw new sr(String(t))}}function Gl(r){let{Type:t,Data:e}=re.decode(r),n=e??new Uint8Array;switch(t){case ft.RSA:return Ui(n);case ft.Ed25519:return Wo(n);case ft.secp256k1:return Pi(n);default:throw new or}}function Wl(r){let{Type:t,Data:e}=re.decode(r.digest),n=e??new Uint8Array;switch(t){case ft.Ed25519:return Wo(n);case ft.secp256k1:return Pi(n);default:throw new or}}function gr(r){return re.encode({Type:ft[r.type],Data:r.raw})}var jl=Symbol.for("nodejs.util.inspect.custom"),np=114,an=class{type;multihash;publicKey;string;constructor(t){this.type=t.type,this.multihash=t.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[xo]=!0;toString(){return this.string==null&&(this.string=tt.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return mt.createV1(np,this.multihash)}toJSON(){return this.toString()}equals(t){if(t==null)return!1;if(t instanceof Uint8Array)return ct(this.multihash.bytes,t);if(typeof t=="string")return this.toString()===t;if(t?.toMultihash()?.bytes!=null)return ct(this.multihash.bytes,t.toMultihash().bytes);throw new Error("not valid Id")}[jl](){return`PeerId(${this.toString()})`}},Rs=class extends an{type="RSA";publicKey;constructor(t){super({...t,type:"RSA"}),this.publicKey=t.publicKey}},Ls=class extends an{type="Ed25519";publicKey;constructor(t){super({...t,type:"Ed25519"}),this.publicKey=t.publicKey}},Us=class extends an{type="secp256k1";publicKey;constructor(t){super({...t,type:"secp256k1"}),this.publicKey=t.publicKey}},sp=2336,Ds=class{type="url";multihash;publicKey;url;constructor(t){this.url=t.toString(),this.multihash=ue.digest(F(this.url))}[jl](){return`PeerId(${this.url})`}[xo]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return mt.createV1(sp,this.toMultihash())}toJSON(){return this.toString()}equals(t){return t==null?!1:(t instanceof Uint8Array&&(t=j(t)),t.toString()===this.toString())}};function Vi(r,t){let e;if(r.charAt(0)==="1"||r.charAt(0)==="Q")e=Kt(tt.decode(`z${r}`));else{if(t==null)throw new pt('Please pass a multibase decoder for strings that do not start with "1" or "Q"');e=Kt(t.decode(r))}return cn(e)}function cn(r){if(ip(r))return new Rs({multihash:r});if(op(r))try{let t=Wl(r);if(t.type==="Ed25519")return new Ls({multihash:r,publicKey:t});if(t.type==="secp256k1")return new Us({multihash:r,publicKey:t})}catch{let e=j(r.digest);return new Ds(new URL(e))}throw new bn("Supplied PeerID Multihash is invalid")}function op(r){return r.code===ue.code}function ip(r){return r.code===yr.code}var Xl=Symbol.for("@achingbrain/uint8arraylist");function Zl(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let s=e+n.byteLength;if(t<s)return{buf:n,index:t-e};e=s}throw new RangeError("index is out of bounds")}function Os(r){return!!r?.[Xl]}var Pt=class r{bufs;length;[Xl]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(Os(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(Os(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Zl(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Zl(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(Os(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:s}=this._subList(t,e);return Mt(n,s)}subarray(t,e){let{bufs:n,length:s}=this._subList(t,e);return n.length===1?n[0]:Mt(n,s)}sublist(t,e){let{bufs:n,length:s}=this._subList(t,e),o=new r;return o.length=s,o.bufs=[...n],o}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===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,t>=c)continue;let h=t>=a&&t<c,f=e>a&&e<=c;if(h&&f){if(t===a&&e===c){n.push(i);break}let u=t-a;n.push(i.subarray(u,u+(e-t)));break}if(h){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(f){if(e===c){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!Os(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;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 u=0;u<o;u++)i[u]=-1;for(let u=0;u<s;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,h=n.byteLength-1,f;for(let u=e;u<=c;u+=f){f=0;for(let p=h;p>=0;p--){let l=this.get(u+p);if(n[p]!==l){f=Math.max(1,p-a[l]);break}}if(f===0)return u}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=Ct(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let s=it(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,e,n),this.write(s,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let s=it(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,e,n),this.write(s,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let s=it(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,e,n),this.write(s,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=Ct(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let s=it(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,e,n),this.write(s,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let s=it(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,e,n),this.write(s,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let s=it(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,e,n),this.write(s,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let s=it(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,e,n),this.write(s,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let s=it(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,e,n),this.write(s,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!ct(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((s,o)=>s+o.byteLength,0)),n.length=e,n}};var ln;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.publicKey!=null&&e.publicKey.byteLength>0&&(n.uint32(10),n.bytes(e.publicKey)),e.payloadType!=null&&e.payloadType.byteLength>0&&(n.uint32(18),n.bytes(e.payloadType)),e.payload!=null&&e.payload.byteLength>0&&(n.uint32(26),n.bytes(e.payload)),e.signature!=null&&e.signature.byteLength>0&&(n.uint32(42),n.bytes(e.signature)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={publicKey:it(0),payloadType:it(0),payload:it(0),signature:it(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.publicKey=e.bytes();break}case 2:{o.payloadType=e.bytes();break}case 3:{o.payload=e.bytes();break}case 5:{o.signature=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(ln||(ln={}));var Ms=class extends Error{constructor(t="Invalid signature"){super(t),this.name="InvalidSignatureError"}};var un=class r{static createFromProtobuf=async t=>{let e=ln.decode(t),n=Gl(e.publicKey);return new r({publicKey:n,payloadType:e.payloadType,payload:e.payload,signature:e.signature})};static seal=async(t,e)=>{if(e==null)throw new Error("Missing private key");let n=t.domain,s=t.codec,o=t.marshal(),i=Yl(n,s,o),a=await e.sign(i.subarray());return new r({publicKey:e.publicKey,payloadType:s,payload:o,signature:a})};static openAndCertify=async(t,e)=>{let n=await r.createFromProtobuf(t);if(!await n.validate(e))throw new Ms("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(t){let{publicKey:e,payloadType:n,payload:s,signature:o}=t;this.publicKey=e,this.payloadType=n,this.payload=s,this.signature=o}marshal(){return this.marshaled==null&&(this.marshaled=ln.encode({publicKey:gr(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(t){return ct(this.marshal(),t.marshal())}async validate(t){let e=Yl(t,this.payloadType,this.payload);return this.publicKey.verify(e.subarray(),this.signature)}},Yl=(r,t,e)=>{let n=F(r),s=zt(n.byteLength),o=zt(t.length),i=zt(e.length);return new Pt(s,n,o,t,i,e)};var Ps=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}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(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,s){return this.readAtomically(()=>{let o=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",h=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let p=Number.parseInt(u,t);if(!Number.isNaN(p))return p});if(f===void 0)break;if(o*=t,o+=f,o>h||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:o})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let s=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[s]=i[0],e[s+1]=i[1],e[s+2]=i[2],e[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];e[s]=o>>8,e[s+1]=o&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,s]=t(e);if(n===16)return e;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let o=new Uint8Array(14),i=16-(n+2),[a]=t(o.subarray(0,i));return e.set(o.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Jl=45,ap=15,_r=new Ps;function Hi(r){if(!(r.length>ap))return _r.new(r).parseWith(()=>_r.readIPv4Addr())}function Fi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Jl))return _r.new(r).parseWith(()=>_r.readIPv6Addr())}function Vs(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Jl))return _r.new(r).parseWith(()=>_r.readIPAddr())}var Dw=parseInt("0xFFFF",16),Ow=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function eu(r){return!!Hi(r)}function ru(r){return!!Fi(r)}function Hs(r){return!!Vs(r)}var nu=eu,hp=ru,qi=function(r){let t=0;if(r=r.toString().trim(),nu(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(hp(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let o=nu(e[n]),i;o&&(i=qi(e[n]),e[n]=j(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,j(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let o=[n,1];for(n=9-e.length;n>0;n--)o.push("0");e.splice.apply(e,o)}let s=new Uint8Array(t+16);for(n=0;n<e.length;n++){let o=parseInt(e[n],16);s[t++]=o>>8&255,s[t++]=o&255}return s}throw new Error("invalid ip address")},su=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let s=[];for(let o=0;o<e;o++)s.push(r[t+o]);return s.join(".")}if(e===16){let s=[];for(let o=0;o<e;o+=2)s.push(n.getUint16(t+o).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Ir={},Ki={},pp=[[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"]];pp.forEach(r=>{let t=mp(...r);Ki[t.code]=t,Ir[t.name]=t});function mp(r,t,e,n,s){return{code:r,size:t,name:e,resolvable:!!n,path:!!s}}function J(r){if(typeof r=="number"){if(Ki[r]!=null)return Ki[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Ir[r]!=null)return Ir[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var wx=J("ip4"),xx=J("ip6"),vx=J("ipcidr");function Wi(r,t){switch(J(r).code){case 4:case 41:return yp(t);case 42:return Gi(t);case 6:case 273:case 33:case 132:return au(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Gi(t);case 421:return vp(t);case 444:return iu(t);case 445:return iu(t);case 466:return xp(t);case 481:return globalThis.encodeURIComponent(Gi(t));default:return j(t,"base16")}}function ji(r,t){switch(J(r).code){case 4:return ou(t);case 41:return ou(t);case 42:return $i(t);case 6:case 273:case 33:case 132:return Zi(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return $i(t);case 421:return bp(t);case 444:return Ep(t);case 445:return Sp(t);case 466:return wp(t);case 481:return $i(globalThis.decodeURIComponent(t));default:return F(t,"base16")}}var zi=Object.values($r).map(r=>r.decoder),gp=function(){let r=zi[0].or(zi[1]);return zi.slice(2).forEach(t=>r=r.or(t)),r}();function ou(r){if(!Hs(r))throw new Error("invalid ip address");return qi(r)}function yp(r){let t=su(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Hs(t))throw new Error("invalid ip address");return t}function Zi(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function au(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function $i(r){let t=F(r),e=Uint8Array.from(zt(t.length));return Mt([e,t],e.length+t.length)}function Gi(r){let t=me(r);if(r=r.slice(Et(t)),r.length!==t)throw new Error("inconsistent lengths");return j(r)}function bp(r){let t;r[0]==="Q"||r[0]==="1"?t=Kt(tt.decode(`z${r}`)).bytes:t=mt.parse(r).multihash.bytes;let e=Uint8Array.from(zt(t.length));return Mt([e,t],e.length+t.length)}function wp(r){let t=gp.decode(r),e=Uint8Array.from(zt(t.length));return Mt([e,t],e.length+t.length)}function xp(r){let t=me(r),e=r.slice(Et(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+j(e,"base64url")}function vp(r){let t=me(r),e=r.slice(Et(t));if(e.length!==t)throw new Error("inconsistent lengths");return j(e,"base58btc")}function Ep(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=le.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Zi(n);return Mt([e,s],e.length+s.length)}function Sp(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=le.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Zi(n);return Mt([e,s],e.length+s.length)}function iu(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=j(t,"base32"),s=au(e);return`${n}:${s}`}function cu(r){r=Xi(r);let t=[],e=[],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){t.push([a.code]),e.push([a.code]);continue}if(o++,o>=s.length)throw uu("invalid address: "+r);if(a.path===!0){n=Xi(s.slice(o).join("/")),t.push([a.code,ji(a.code,n)]),e.push([a.code,n]);break}let c=ji(a.code,s[o]);t.push([a.code,c]),e.push([a.code,Wi(a.code,c)])}return{string:lu(e),bytes:Ji(t),tuples:t,stringTuples:e,path:n}}function Yi(r){let t=[],e=[],n=null,s=0;for(;s<r.length;){let o=me(r,s),i=Et(o),a=J(o),c=Ap(a,r.slice(s+i));if(c===0){t.push([o]),e.push([o]),s+=i;continue}let h=r.slice(s+i,s+i+c);if(s+=c+i,s>r.length)throw uu("Invalid address Uint8Array: "+j(r,"base16"));t.push([o,h]);let f=Wi(o,h);if(e.push([o,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:lu(e),tuples:t,stringTuples:e,path:n}}function lu(r){let t=[];return r.map(e=>{let n=J(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),Xi(t.join("/"))}function Ji(r){return Mt(r.map(t=>{let e=J(t[0]),n=Uint8Array.from(zt(e.code));return t.length>1&&t[1]!=null&&(n=Mt([n,t[1]])),n}))}function Ap(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=me(t instanceof Uint8Array?t:Uint8Array.from(t));return e+Et(e)}}function Xi(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function uu(r){return new Error("Error parsing address: "+r)}var Bp=Symbol.for("nodejs.util.inspect.custom"),ta=Symbol.for("@multiformats/js-multiaddr/multiaddr"),_p=[J("dns").code,J("dns4").code,J("dns6").code,J("dnsaddr").code],Qi=class extends Error{constructor(t="No available resolver"){super(t),this.name="NoAvailableResolverError"}},Fs=class r{bytes;#t;#e;#r;#n;[ta]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=Yi(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=cu(t)}else if(hu(t))e=Yi(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#n=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,s,o="",i=J("tcp"),a=J("udp"),c=J("ip4"),h=J("ip6"),f=J("dns6"),u=J("ip6zone");for(let[l,d]of this.stringTuples())l===u.code&&(o=`%${d??""}`),_p.includes(l)&&(e=i.name,s=443,n=`${d??""}${o}`,t=l===f.code?6:4),(l===i.code||l===a.code)&&(e=J(l).name,s=parseInt(d??"")),(l===c.code||l===h.code)&&(e=J(l).name,n=`${d??""}${o}`,t=l===h.code?6:4);if(t==null||e==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:t,host:n,transport:e,port:s}}protos(){return this.#e.map(([t])=>Object.assign({},J(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>J(t).name)}tuples(){return this.#e}stringTuples(){return this.#r}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),s=n.lastIndexOf(e);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,s))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(Ji(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,s])=>{n===Ir.p2p.code&&t.push([n,s]),n===Ir["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?j(tt.decode(`z${n}`),"base58btc"):j(mt.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(t){return ct(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(o=>o.resolvable);if(e==null)return[this];let n=fu.get(e.name);if(n==null)throw new Qi(`no available resolver for ${e.name}`);return(await n(this,t)).map(o=>xt(o))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[Bp](){return`Multiaddr(${this.#t})`}};var fu=new Map;function hu(r){return!!r?.[ta]}function xt(r){return new Fs(r)}function Vt(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var qs=class extends Error{type;code;constructor(t,e,n){super(t??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=e??"ABORT_ERR"}};async function Tr(r,t,e){if(t==null)return r;if(t.aborted)return Promise.reject(new qs(e?.errorMessage,e?.errorCode,e?.errorName));let n,s=new qs(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([r,new Promise((o,i)=>{n=()=>{i(s)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var ea=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=Vt(),this.haveNext=Vt()}[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 t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=Vt(),t}async throw(t){return this.ended=!0,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return await this._push(void 0),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=Vt(),await Tr(this.readNext.promise,e?.signal,e)}};function du(){return new ea}var Ks=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var ra=class extends Error{code;constructor(t,e){super(t),this.code=e}},na=class extends ra{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function pu(r,t){let e=du();r.sink(e).catch(async i=>{await e.end(i)}),r.sink=async i=>{for await(let a of i)await e.push(a);await e.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 Pt;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,h=new Promise((f,u)=>{c=()=>{u(new na("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:p}=await Promise.race([n.next(),h]);return u===!0?new Pt:p}for(;s.byteLength<i;){let{value:u,done:p}=await Promise.race([n.next(),h]);if(p===!0)throw new Ks("unexpected end of input");s.append(u)}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 e.push(i,a):await e.push(i.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let i=r.source;r.source=async function*(){t?.yieldBytes===!1?yield s:yield*s,yield*i}()}return r}}}var zs=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},$s=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Gs=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function mu(r,t={}){let e=pu(r,t);t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=Et(t.maxDataLength));let n=t?.lengthDecoder??me,s=t?.lengthEncoder??zt;return{read:async i=>{let a=-1,c=new Pt;for(;;){c.append(await e.read(1,i));try{a=n(c)}catch(h){if(h instanceof RangeError)continue;throw h}if(a<0)throw new zs("Invalid message length");if(t?.maxLengthLength!=null&&c.byteLength>t.maxLengthLength)throw new Gs("message length length too long");if(a>-1)break}if(t?.maxDataLength!=null&&a>t.maxDataLength)throw new $s("message length too long");return e.read(a,i)},write:async(i,a)=>{await e.write(new Pt(s(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new Pt(...i.flatMap(h=>[s(h.byteLength),h]));await e.write(c,a)},unwrap:()=>e.unwrap()}}function Ve(r,t){let e=mu(r,t),n={read:async(s,o)=>{let i=await e.read(o);return s.decode(i)},write:async(s,o,i)=>{await e.write(o.encode(s),i)},writeV:async(s,o,i)=>{await e.writeV(s.map(a=>o.encode(a)),i)},pb:s=>({read:async o=>n.read(s,o),write:async(o,i)=>n.write(o,s,i),writeV:async(o,i)=>n.writeV(o,s,i),unwrap:()=>n}),unwrap:()=>e.unwrap()};return n}var gu="circuit-relay-source",yu="circuit-relay-relay";var bu=BigInt(131072),Gt="/libp2p/circuit/relay/0.2.0/hop",Qe="/libp2p/circuit/relay/0.2.0/stop",wu=30*1e3,u1=30*1e3,fn=300,xu=4096,vu=.001;var Z;(function(r){let t;(function(s){s.RESERVE="RESERVE",s.CONNECT="CONNECT",s.STATUS="STATUS"})(t=r.Type||(r.Type={}));let e;(function(s){s[s.RESERVE=0]="RESERVE",s[s.CONNECT=1]="CONNECT",s[s.STATUS=2]="STATUS"})(e||(e={})),function(s){s.codec=()=>Xe(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ot((s,o,i={})=>{i.lengthDelimited!==!1&&o.fork(),s.type!=null&&(o.uint32(8),r.Type.codec().encode(s.type,o)),s.peer!=null&&(o.uint32(18),kr.codec().encode(s.peer,o)),s.reservation!=null&&(o.uint32(26),Ws.codec().encode(s.reservation,o)),s.limit!=null&&(o.uint32(34),Nr.codec().encode(s.limit,o)),s.status!=null&&(o.uint32(40),q.codec().encode(s.status,o)),i.lengthDelimited!==!1&&o.ldelim()},(s,o,i={})=>{let a={},c=o==null?s.len:s.pos+o;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:i.limits?.peer});break}case 3:{a.reservation=Ws.codec().decode(s,s.uint32(),{limits:i.limits?.reservation});break}case 4:{a.limit=Nr.codec().decode(s,s.uint32(),{limits:i.limits?.limit});break}case 5:{a.status=q.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Dt(s,r.codec()),r.decode=(s,o)=>Ut(s,r.codec(),o)})(Z||(Z={}));var Ht;(function(r){let t;(function(s){s.CONNECT="CONNECT",s.STATUS="STATUS"})(t=r.Type||(r.Type={}));let e;(function(s){s[s.CONNECT=0]="CONNECT",s[s.STATUS=1]="STATUS"})(e||(e={})),function(s){s.codec=()=>Xe(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ot((s,o,i={})=>{i.lengthDelimited!==!1&&o.fork(),s.type!=null&&(o.uint32(8),r.Type.codec().encode(s.type,o)),s.peer!=null&&(o.uint32(18),kr.codec().encode(s.peer,o)),s.limit!=null&&(o.uint32(26),Nr.codec().encode(s.limit,o)),s.status!=null&&(o.uint32(32),q.codec().encode(s.status,o)),i.lengthDelimited!==!1&&o.ldelim()},(s,o,i={})=>{let a={},c=o==null?s.len:s.pos+o;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:i.limits?.peer});break}case 3:{a.limit=Nr.codec().decode(s,s.uint32(),{limits:i.limits?.limit});break}case 4:{a.status=q.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Dt(s,r.codec()),r.decode=(s,o)=>Ut(s,r.codec(),o)})(Ht||(Ht={}));var kr;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),e.id!=null&&e.id.byteLength>0&&(n.uint32(10),n.bytes(e.id)),e.addrs!=null)for(let o of e.addrs)n.uint32(18),n.bytes(o);s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={id:it(0),addrs:[]},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.id=e.bytes();break}case 2:{if(s.limits?.addrs!=null&&o.addrs.length===s.limits.addrs)throw new jr('Decode error - map field "addrs" had too many elements');o.addrs.push(e.bytes());break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(kr||(kr={}));var Ws;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),e.expire!=null&&e.expire!==0n&&(n.uint32(8),n.uint64(e.expire)),e.addrs!=null)for(let o of e.addrs)n.uint32(18),n.bytes(o);e.voucher!=null&&(n.uint32(26),n.bytes(e.voucher)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={expire:0n,addrs:[]},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.expire=e.uint64();break}case 2:{if(s.limits?.addrs!=null&&o.addrs.length===s.limits.addrs)throw new jr('Decode error - map field "addrs" had too many elements');o.addrs.push(e.bytes());break}case 3:{o.voucher=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(Ws||(Ws={}));var Nr;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.duration!=null&&(n.uint32(8),n.uint32(e.duration)),e.data!=null&&(n.uint32(16),n.uint64(e.data)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.duration=e.uint32();break}case 2:{o.data=e.uint64();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(Nr||(Nr={}));var q;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(q||(q={}));var sa;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(sa||(sa={}));(function(r){r.codec=()=>Xe(sa)})(q||(q={}));var js;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.relay!=null&&e.relay.byteLength>0&&(n.uint32(10),n.bytes(e.relay)),e.peer!=null&&e.peer.byteLength>0&&(n.uint32(18),n.bytes(e.peer)),e.expiration!=null&&e.expiration!==0n&&(n.uint32(24),n.uint64(e.expiration)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={relay:it(0),peer:it(0),expiration:0n},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.relay=e.bytes();break}case 2:{o.peer=e.bytes();break}case 3:{o.expiration=e.uint64();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(js||(js={}));function Zs(r){let t=new globalThis.AbortController;function e(){t.abort();for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",e)}for(let o of r){if(o?.aborted===!0){e();break}o?.addEventListener!=null&&o.addEventListener("abort",e)}function n(){for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",e)}let s=t.signal;return s.clear=n,s}var Xs=class extends Error{constructor(t="Transfer limit error"){super(t),this.name="TransferLimitError"}},hn=class extends Error{constructor(t="Duration limit error"){super(t),this.name="DurationLimitError"}};async function*Eu(r,t,e){let n=t.remaining;for await(let s of r){let o=BigInt(s.byteLength);if(t.remaining-o<0){let i=Number(t.remaining);t.remaining=0n;try{i!==0&&(yield s.subarray(0,i))}catch(a){e.log.error(a)}throw new Xs(`data limit of ${n} bytes exceeded`)}t.remaining-=o,yield s}}function Su(r,t,e,n,s){function o(u){r.abort(u),t.abort(u)}let i=[e];n?.duration!=null&&i.push(AbortSignal.timeout(n.duration));let a=Zs(i),c=!1,h=!1,f;n?.data!=null&&(f={remaining:n.data}),queueMicrotask(()=>{let u=()=>{t.abort(new hn(`duration limit of ${n?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),t.sink(f==null?r.source:Eu(r.source,f,s)).catch(p=>{s.log.error("error while relaying streams src -> dst",p),o(p)}).finally(()=>{c=!0,h&&(a.removeEventListener("abort",u),a.clear())})}),queueMicrotask(()=>{let u=()=>{r.abort(new hn(`duration limit of ${n?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),r.sink(f==null?t.source:Eu(t.source,f,s)).catch(p=>{s.log.error("error while relaying streams dst -> src",p),o(p)}).finally(()=>{h=!0,c&&(a.removeEventListener("abort",u),a.clear())})})}function oa(r){let t=r*BigInt(1e3),e=new Date().getTime();return Number(t-BigInt(e))}var dn=class{expires;bytes;constructor(t){t?.duration!=null&&t?.duration!==0&&(this.expires=Date.now()+t.duration*1e3),this.bytes=t?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(t){this.bytes!=null&&(this.bytes-=BigInt(t.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let t={};if(this.bytes!=null){let e=this;Object.defineProperty(t,"bytes",{get(){return e.bytes}})}if(this.expires!=null){let e=this;Object.defineProperty(t,"seconds",{get(){return Math.round(((e.expires??0)-Date.now())/1e3)}})}return t}};function Ys(r,t){let e={[Symbol.iterator]:()=>e,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:t(s)}}};return e}var Ae=class{map;constructor(t){if(this.map=new Map,t!=null)for(let[e,n]of t.entries())this.map.set(e.toString(),{key:e,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(t){return this.map.delete(t.toString())}entries(){return Ys(this.map.entries(),t=>[t[1].key,t[1].value])}forEach(t){this.map.forEach((e,n)=>{t(e.value,e.key,this)})}get(t){return this.map.get(t.toString())?.value}has(t){return this.map.has(t.toString())}set(t,e){this.map.set(t.toString(),{key:t,value:e})}keys(){return Ys(this.map.values(),t=>t.key)}values(){return Ys(this.map.values(),t=>t.value)}get size(){return this.map.size}};var aa=wo(ia(),1);var Ip=Math.LN2*Math.LN2,Qs=class{seeds;bits;buffer;constructor(t={}){t.seeds!=null?this.seeds=t.seeds:this.seeds=kp(t.hashes??8),this.bits=t.bits??1024,this.buffer=it(Math.ceil(this.bits/8))}add(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.seeds.length;e++){let s=aa.default.x86.hash32(t,this.seeds[e])%this.bits;this.setbit(s)}}has(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.seeds.length;e++){let s=aa.default.x86.hash32(t,this.seeds[e])%this.bits;if(!this.getbit(s))return!1}return!0}clear(){this.buffer.fill(0)}setbit(t){let e=Math.floor(t/8),n=t%8,s=this.buffer[e];s|=1<<n,this.buffer[e]=s}getbit(t){let e=Math.floor(t/8),n=t%8;return(this.buffer[e]&1<<n)!==0}};function ca(r,t=.005){let e=Tp(r,t);return new Qs(e)}function Tp(r,t=.005){let e=Math.round(-1*r*Math.log(t)/Ip),n=Math.round(e/r*Math.LN2);return{bits:e,hashes:n}}function kp(r){let t,e,n=[];for(let s=0;s<r;s++)for(t=new Pt(Is(4)),n[s]=t.getUint32(0,!0),e=0;e<s;e++)if(n[s]===n[e]){s--;break}return n}var la=64,Qt=class{fp;h;seed;constructor(t,e,n,s=2){if(s>la)throw new TypeError("Invalid Fingerprint Size");let o=e.hashV(t,n),i=it(s);for(let a=0;a<i.length;a++)i[a]=o[a];i.length===0&&(i[0]=7),this.fp=i,this.h=e,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(t){return t?.fp instanceof Uint8Array?ct(this.fp,t.fp):!1}};function tr(r,t){return Math.floor(Math.random()*(t-r))+r}var er=class{contents;constructor(t){this.contents=new Array(t).fill(null)}has(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");return this.contents.some(e=>t.equals(e))}add(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");for(let e=0;e<this.contents.length;e++)if(this.contents[e]==null)return this.contents[e]=t,!0;return!0}swap(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");let e=tr(0,this.contents.length-1),n=this.contents[e];return this.contents[e]=t,n}remove(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");let e=this.contents.findIndex(n=>t.equals(n));return e>-1?(this.contents[e]=null,!0):!1}};var ua={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},_u={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},Iu=new globalThis.TextEncoder;function Np(r,t){let e=ua[t],n=_u[t];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(t,n*e);return n}function Cp(r,t,e){if(e.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=ua[t],s=_u[t],o=r;for(;o.length>0;){let i=Iu.encodeInto(o,e);o=o.slice(i.read);for(let a=0;a<i.written;a++)s^=BigInt(e[a]),s=BigInt.asUintN(t,s*n)}return s}function fa(r,{size:t=32,utf8Buffer:e}={}){if(!ua[t])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(e)return Cp(r,t,e);r=Iu.encode(r)}return Np(r,t)}var Rp=wo(ia(),1);var mn={hash:r=>Number(fa(r,{size:32})),hashV:(r,t)=>Lp(mn.hash(r,t))};function Lp(r){let t=r.toString(16);return t.length%2===1&&(t=`0${t}`),F(t,"base16")}var Up=500,gn=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(t){this.filterSize=t.filterSize,this.bucketSize=t.bucketSize??4,this.fingerprintSize=t.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=t.hash??mn,this.seed=t.seed??tr(0,Math.pow(2,10))}add(t){typeof t=="string"&&(t=F(t));let e=new Qt(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,s=(n^e.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new er(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new er(this.bucketSize)),this.buckets[n].add(e)||this.buckets[s].add(e))return this.count++,!0;let o=[n,s],i=o[tr(0,o.length-1)];this.buckets[i]==null&&(this.buckets[i]=new er(this.bucketSize));for(let a=0;a<Up;a++){let c=this.buckets[i].swap(e);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new er(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(t){typeof t=="string"&&(t=F(t));let e=new Qt(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,s=this.buckets[n]?.has(e)??!1;if(s)return s;let o=(n^e.hash())%this.filterSize;return this.buckets[o]?.has(e)??!1}remove(t){typeof t=="string"&&(t=F(t));let e=new Qt(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,s=this.buckets[n]?.remove(e)??!1;if(s)return this.count--,s;let o=(n^e.hash())%this.filterSize,i=this.buckets[o]?.remove(e)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Dp={1:.5,2:.84,4:.95,8:.98};function Op(r=.001){return r>.002?2:r>1e-5?4:8}function Tu(r,t=.001){let e=Op(t),n=Dp[e],s=Math.round(r/n),o=Math.min(Math.ceil(Math.log2(1/t)+Math.log2(2*e)),la);return{filterSize:s,bucketSize:e,fingerprintSize:o}}var to=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(t){this.bucketSize=t.bucketSize??4,this.filterSize=t.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=t.fingerprintSize??2,this.scale=t.scale??2,this.hash=t.hash??mn,this.seed=t.seed??tr(0,Math.pow(2,10)),this.filterSeries=[new gn({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(t){if(typeof t=="string"&&(t=F(t)),this.has(t))return!0;let e=this.filterSeries.find(n=>n.reliable);if(e==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);e=new gn({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(e)}return e.add(t)}has(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].has(t))return!0;return!1}remove(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].remove(t))return!0;return!1}get count(){return this.filterSeries.reduce((t,e)=>t+e.count,0)}};function ha(r,t=.001,e){return new to({...Tu(r,t),...e??{}})}var eo=class{filter;constructor(t,e){this.filter=ha(t,e)}has(t){return this.filter.has(t.toMultihash().bytes)}add(t){this.filter.add(t.toMultihash().bytes)}remove(t){this.filter.remove?.(t.toMultihash().bytes)}};function da(r,t=.001){return new eo(r,t)}var ro=class{reservations=new Ae;_started=!1;interval;maxReservations;reservationClearInterval;applyDefaultLimit;reservationTtl;defaultDurationLimit;defaultDataLimit;constructor(t={}){this.maxReservations=t.maxReservations??15,this.reservationClearInterval=t.reservationClearInterval??3e5,this.applyDefaultLimit=t.applyDefaultLimit!==!1,this.reservationTtl=t.reservationTtl??72e5,this.defaultDurationLimit=t.defaultDurationLimit??12e4,this.defaultDataLimit=t.defaultDataLimit??bu}isStarted(){return this._started}start(){this._started||(this._started=!0,this.interval=setInterval(()=>{let t=new Date().getTime();this.reservations.forEach((e,n)=>{e.expire.getTime()<t&&this.reservations.delete(n)})},this.reservationClearInterval))}stop(){clearInterval(this.interval)}reserve(t,e,n){if(this.reservations.size>=this.maxReservations&&!this.reservations.has(t))return{status:q.RESERVATION_REFUSED};let s=new Date(Date.now()+this.reservationTtl),o;return this.applyDefaultLimit&&(o=n??{data:this.defaultDataLimit,duration:this.defaultDurationLimit}),this.reservations.set(t,{addr:e,expire:s,limit:o}),{status:q.OK,expire:Math.round(s.getTime()/1e3)}}removeReservation(t){this.reservations.delete(t)}hasReservation(t){return this.reservations.has(t)}get(t){return this.reservations.get(t)}};var no=class r{domain="libp2p-relay-rsvp";codec=new Uint8Array([3,2]);relay;peer;expiration;constructor({relay:t,peer:e,expiration:n}){this.relay=t,this.peer=e,this.expiration=n}marshal(){return js.encode({relay:this.relay.toMultihash().bytes,peer:this.peer.toMultihash().bytes,expiration:BigInt(this.expiration)})}equals(t){return!(!(t instanceof r)||!this.peer.equals(t.peer)||!this.relay.equals(t.relay)||this.expiration!==t.expiration)}};var ku=r=>r.protoCodes().includes(290),Fp={maxOutboundStopStreams:fn},pa=class extends qt{registrar;peerStore;addressManager;peerId;privateKey;connectionManager;connectionGater;reservationStore;started;hopTimeout;shutdownController;maxInboundHopStreams;maxOutboundHopStreams;maxOutboundStopStreams;log;constructor(t,e={}){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:server"),this.registrar=t.registrar,this.peerStore=t.peerStore,this.addressManager=t.addressManager,this.peerId=t.peerId,this.privateKey=t.privateKey,this.connectionManager=t.connectionManager,this.connectionGater=t.connectionGater,this.started=!1,this.hopTimeout=e?.hopTimeout??wu,this.maxInboundHopStreams=e.maxInboundHopStreams,this.maxOutboundHopStreams=e.maxOutboundHopStreams,this.maxOutboundStopStreams=e.maxOutboundStopStreams??Fp.maxOutboundStopStreams,this.reservationStore=new ro(e.reservations),this.shutdownController=new AbortController,Ft(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-server";isStarted(){return this.started}async start(){this.started||(await this.registrar.handle(Gt,t=>{this.onHop(t).catch(e=>{this.log.error(e)})},{maxInboundStreams:this.maxInboundHopStreams,maxOutboundStreams:this.maxOutboundHopStreams,runOnLimitedConnection:!0}),this.reservationStore.start(),this.started=!0)}async stop(){this.reservationStore.stop(),this.shutdownController.abort(),await this.registrar.unhandle(Gt),this.started=!1}async onHop({connection:t,stream:e}){this.log("received circuit v2 hop protocol stream from %p",t.remotePeer);let n=Vt(),s=setTimeout(()=>{n.reject("timed out")},this.hopTimeout),o=Ve(e);try{let i=await Promise.race([o.pb(Z).read(),n.promise]);if(i?.type==null)throw new Error("request was invalid, could not read from stream");this.log("received",i.type),await Promise.race([this.handleHopProtocol({connection:t,stream:o,request:i}),n.promise])}catch(i){this.log.error("error while handling hop",i),await o.pb(Z).write({type:Z.Type.STATUS,status:q.MALFORMED_MESSAGE}),e.abort(i)}finally{clearTimeout(s)}}async handleHopProtocol({stream:t,request:e,connection:n}){switch(this.log("received hop message"),e.type){case Z.Type.RESERVE:await this.handleReserve({stream:t,request:e,connection:n});break;case Z.Type.CONNECT:await this.handleConnect({stream:t,request:e,connection:n});break;default:this.log.error("invalid hop request type %s via peer %p",e.type,n.remotePeer),await t.pb(Z).write({type:Z.Type.STATUS,status:q.UNEXPECTED_MESSAGE})}}async handleReserve({stream:t,request:e,connection:n}){let s=t.pb(Z);if(this.log("hop reserve request from %p",n.remotePeer),ku(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}if(await this.connectionGater.denyInboundRelayReservation?.(n.remotePeer)===!0){this.log.error("reservation for %p denied by connection gater",n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}let o=this.reservationStore.reserve(n.remotePeer,n.remoteAddr);if(o.status!==q.OK){await s.write({type:Z.Type.STATUS,status:o.status});return}try{if(o.expire!=null){let i=o.expire*1e3-Date.now();await this.peerStore.merge(n.remotePeer,{tags:{[gu]:{value:1,ttl:i}}})}await s.write({type:Z.Type.STATUS,status:q.OK,reservation:await this.makeReservation(n.remotePeer,BigInt(o.expire??0)),limit:this.reservationStore.get(n.remotePeer)?.limit}),this.log("sent confirmation response to %s",n.remotePeer)}catch(i){this.log.error("failed to send confirmation response to %p",n.remotePeer,i),this.reservationStore.removeReservation(n.remotePeer)}}async makeReservation(t,e){let n=[];for(let o of this.addressManager.getAddresses())o.toString().includes("/p2p-circuit")||n.push(o.bytes);let s=await un.seal(new no({peer:t,relay:this.peerId,expiration:Number(e)}),this.privateKey);return{addrs:n,expire:e,voucher:s.marshal()}}async handleConnect({stream:t,request:e,connection:n}){let s=t.pb(Z);if(ku(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}this.log("hop connect request from %p",n.remotePeer);let o;try{if(e.peer==null)throw this.log.error("no peer info in hop connect request"),new Error("no peer info in request");e.peer.addrs.forEach(xt),o=cn(Kt(e.peer.id))}catch(u){this.log.error("invalid hop connect request via peer %p %s",n.remotePeer,u),await s.write({type:Z.Type.STATUS,status:q.MALFORMED_MESSAGE});return}if(!this.reservationStore.hasReservation(o)){this.log.error("hop connect denied for destination peer %p not having a reservation for %p with status %s",o,n.remotePeer,q.NO_RESERVATION),await s.write({type:Z.Type.STATUS,status:q.NO_RESERVATION});return}if(await this.connectionGater.denyOutboundRelayedConnection?.(n.remotePeer,o)===!0){this.log.error("hop connect for %p to %p denied by connection gater",n.remotePeer,o),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}let i=this.connectionManager.getConnections(o);if(i.length===0){this.log("hop connect denied for destination peer %p not having a connection for %p as there is no destination connection",o,n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.NO_RESERVATION});return}let a=this.reservationStore.get(o)?.limit,c=i[0],h=await this.stopHop({connection:c,request:{type:Ht.Type.CONNECT,peer:{id:n.remotePeer.toMultihash().bytes,addrs:[]},limit:a}});if(h==null){this.log.error("failed to open stream to destination peer %p",c?.remotePeer),await s.write({type:Z.Type.STATUS,status:q.CONNECTION_FAILED});return}await s.write({type:Z.Type.STATUS,status:q.OK,limit:a});let f=t.unwrap();this.log("connection from %p to %p established - merging streams",n.remotePeer,o),Su(f,h,this.shutdownController.signal,a,{log:this.log})}async stopHop({connection:t,request:e}){this.log("starting circuit relay v2 stop request to %s",t.remotePeer);let n=await t.newStream([Qe],{maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),s=Ve(n),o=s.pb(Ht);await o.write(e);let i;try{i=await o.read()}catch{this.log.error("error parsing stop message response from %p",t.remotePeer)}if(i==null){this.log.error("could not read response from %p",t.remotePeer),await n.close();return}if(i.status===q.OK)return this.log("stop request to %p was successful",t.remotePeer),s.unwrap();this.log("stop request failed with code %d",i.status),await n.close()}get reservations(){return this.reservationStore.reservations}};function Nu(r={}){return t=>new pa(t,r)}function qp(r){let[t,e]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>t.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:t.next(),[e](){return this}}}var Cu=qp;function Kp(r){return r[Symbol.asyncIterator]!=null}function Ru(r){return r?.then!=null}function zp(r,t){let e=0;if(Kp(r))return async function*(){for await(let c of r){let h=t(c,e++);Ru(h)&&await h,yield c}}();let n=Cu(r),{value:s,done:o}=n.next();if(o===!0)return function*(){}();if(typeof t(s,e++)?.then=="function")return async function*(){yield s;for await(let c of n){let h=t(c,e++);Ru(h)&&await h,yield c}}();let a=t;return function*(){yield s;for(let c of n)a(c,e++),yield c}()}var Lu=zp;var so=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||t-1&t)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},Cr=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new so(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new so(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var ga=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function Rr(r={}){return $p(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function $p(r,t){t=t??{};let e=t.onEnd,n=new Cr,s,o,i,a=Vt(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,b)=>{o=w=>{o=null,n.push(w);try{y(r(n))}catch(m){b(m)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Vt()})}},h=y=>o!=null?o(y):(n.push(y),s),f=y=>(n=new Cr,o!=null?o({error:y}):(n.push({error:y}),s)),u=y=>{if(i)return s;if(t?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return h({done:!1,value:y})},p=y=>i?s:(i=!0,y!=null?f(y):h({done:!0})),l=()=>(n=new Cr,p(),{done:!0}),d=y=>(p(y),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:l,throw:d,push:u,end:p,get readableLength(){return n.size},onEmpty:async y=>{let b=y?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let w,m;b!=null&&(w=new Promise((v,A)=>{m=()=>{A(new ga)},b.addEventListener("abort",m)}));try{await Promise.race([a.promise,w])}finally{m!=null&&b!=null&&b?.removeEventListener("abort",m)}}},e==null)return s;let g=s;return s={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(y){return g.throw(y),e!=null&&(e(y),e=void 0),{done:!0}},return(){return g.return(),e!=null&&(e(),e=void 0),{done:!0}},push:u,end(y){return g.end(y),e!=null&&(e(y),e=void 0),s},get readableLength(){return g.readableLength},onEmpty:y=>g.onEmpty(y)},s}function Gp(r){return r[Symbol.asyncIterator]!=null}function Wp(...r){let t=[];for(let e of r)Gp(e)||t.push(e);return t.length===r.length?function*(){for(let e of t)yield*e}():async function*(){let e=Rr({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)e.push(s)})),e.end()}catch(n){e.end(n)}}),yield*e}()}var Uu=Wp;function Du(r,...t){if(r==null)throw new Error("Empty pipeline");if(ya(r)){let n=r;r=()=>n.source}else if(Mu(r)||Ou(r)){let n=r;r=()=>n}let e=[r,...t];if(e.length>1&&ya(e[e.length-1])&&(e[e.length-1]=e[e.length-1].sink),e.length>2)for(let n=1;n<e.length-1;n++)ya(e[n])&&(e[n]=Zp(e[n]));return jp(...e)}var jp=(...r)=>{let t;for(;r.length>0;)t=r.shift()(t);return t},Ou=r=>r?.[Symbol.asyncIterator]!=null,Mu=r=>r?.[Symbol.iterator]!=null,ya=r=>r==null?!1:r.sink!=null&&r.source!=null,Zp=r=>t=>{let e=r.sink(t);if(e?.then!=null){let n=Rr({objectMode:!0});e.then(()=>{n.end()},i=>{n.end(i)});let s,o=r.source;if(Ou(o))s=async function*(){yield*o,n.end()};else if(Mu(o))s=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Uu(n,s())}return r.source};function ba(r){let{stream:t,remoteAddr:e,logger:n,onDataRead:s,onDataWrite:o}=r,i=n.forComponent("libp2p:stream:converter"),a=!1,c=!1,h=t.close.bind(t);t.close=async d=>{await h(d),l(!0)};let f=t.abort.bind(t);t.abort=d=>{f(d),l(!0)};let u=t.sink.bind(t);t.sink=async d=>{try{await u(Du(d,g=>Lu(g,y=>o?.(y))))}catch(g){g.type!=="aborted"&&i.error("%s error in sink",e,g)}finally{c=!0,l()}};let p={log:i,sink:t.sink,source:async function*(){try{for await(let d of t.source)s?.(d),yield d}finally{a=!0,l()}}(),remoteAddr:e,timeline:{open:Date.now(),close:void 0},close:t.close,abort:t.abort};function l(d){d===!0&&(a=!0,c=!0),a&&c&&p.timeline.close==null&&(p.timeline.close=Date.now())}return p}var Xp=T("dns4"),Yp=T("dns6"),Jp=T("dnsaddr"),rr=at(T("dns"),Jp,Xp,Yp),ao=at(T("ip4"),T("ip6")),Lr=at(D(ao,T("tcp")),D(rr,T("tcp"))),co=D(ao,T("udp")),Qp=D(co,T("utp")),t0=D(co,T("quic")),e0=D(co,T("quic-v1")),wa=at(D(Lr,T("ws")),D(rr,T("ws"))),oo=at(D(wa,T("p2p")),wa),xa=at(D(Lr,T("wss")),D(rr,T("wss")),D(Lr,T("tls"),T("ws")),D(rr,T("tls"),T("ws"))),io=at(D(xa,T("p2p")),xa),va=at(D(Lr,T("http")),D(ao,T("http")),D(rr,T("http"))),Ea=at(D(Lr,T("https")),D(ao,T("https")),D(rr,T("https"))),Pu=D(co,T("webrtc-direct"),T("certhash")),Fu=at(D(Pu,T("p2p")),Pu),Vu=D(e0,T("webtransport"),T("certhash"),T("certhash")),qu=at(D(Vu,T("p2p")),Vu),Ku=at(D(oo,T("p2p-webrtc-star"),T("p2p")),D(io,T("p2p-webrtc-star"),T("p2p")),D(oo,T("p2p-webrtc-star")),D(io,T("p2p-webrtc-star"))),$2=at(D(oo,T("p2p-websocket-star"),T("p2p")),D(io,T("p2p-websocket-star"),T("p2p")),D(oo,T("p2p-websocket-star")),D(io,T("p2p-websocket-star"))),zu=at(D(va,T("p2p-webrtc-direct"),T("p2p")),D(Ea,T("p2p-webrtc-direct"),T("p2p")),D(va,T("p2p-webrtc-direct")),D(Ea,T("p2p-webrtc-direct"))),nr=at(wa,xa,va,Ea,Ku,zu,Lr,Qp,t0,rr,Fu,qu),G2=at(D(nr,T("p2p-stardust"),T("p2p")),D(nr,T("p2p-stardust"))),He=at(D(nr,T("p2p")),Ku,zu,Fu,qu,T("p2p")),Hu=at(D(He,T("p2p-circuit"),He),D(He,T("p2p-circuit")),D(T("p2p-circuit"),He),D(nr,T("p2p-circuit")),D(T("p2p-circuit"),nr),T("p2p-circuit")),$u=()=>at(D(Hu,$u),Hu),Be=$u(),W2=at(D(Be,He,Be),D(He,Be),D(Be,He),Be,He);var j2=at(D(Be,T("webrtc"),T("p2p")),D(Be,T("webrtc")),D(nr,T("webrtc"),T("p2p")),D(nr,T("webrtc")),T("webrtc"));function Gu(r){function t(e){let n;try{n=xt(e)}catch{return!1}let s=r(n.protoNames());return s===null?!1:s===!0||s===!1?s:s.length===0}return t}function D(...r){function t(e){if(e.length<r.length)return null;let n=e;return r.some(s=>(n=typeof s=="function"?s().partialMatch(e):s.partialMatch(e),Array.isArray(n)&&(e=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Gu(t),partialMatch:t}}function at(...r){function t(n){let s=null;return r.some(o=>{let i=typeof o=="function"?o().partialMatch(n):o.partialMatch(n);return i!=null?(s=i,!0):!1}),s}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Gu(t),partialMatch:t}}function T(r){let t=r;function e(s){let o;try{o=xt(s)}catch{return!1}let i=o.protoNames();return i.length===1&&i[0]===t}function n(s){return s.length===0?null:s[0]===t?s.slice(1):null}return{toString:function(){return t},matches:e,partialMatch:n}}var Fe=class extends Event{type;detail;constructor(t,e){super(t),this.type=t,this.detail=e}};var Sa=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function lo(r,t,e,n){let s=new Sa(n?.errorMessage,n?.errorCode);return e?.aborted===!0?Promise.reject(s):new Promise((o,i)=>{function a(){e?.removeEventListener("abort",f),r.removeEventListener(t,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,h)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(p){a(),i(p);return}a(),o(u)},h=u=>{a(),i(u.detail)},f=()=>{a(),i(s)};e?.addEventListener("abort",f),r.addEventListener(t,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,h)})}var uo=class{deferred;signal;constructor(t){this.signal=t,this.deferred=Vt(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ae)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function n0(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var fo=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=n0(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Ft(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ae),this.cleanup())}async join(t={}){let e=new uo(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await Tr(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};var ho=class extends qt{concurrency;queue;pending;sort;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.pending=0,t.metricName!=null&&t.metrics?.registerMetricGroup(t.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=t.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 t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}async add(t,e){e?.signal?.throwIfAborted();let n=new fo(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(e).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(t=>{t.abort(new ae)}),this.clear()}async onEmpty(t){this.size!==0&&await lo(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await lo(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await lo(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=Rr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},s=c=>{c.detail!=null&&e.push(c.detail)},o=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new ae("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("error",o),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("completed",s),this.removeEventListener("error",o),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var Ur=class extends ho{has(t){return this.find(t)!=null}find(t){return this.queue.find(e=>t.equals(e.options.peerId))}};var po=class extends qt{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;constructor(t,e={}){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=t.peerStore,this.registrar=t.registrar,this.connectionManager=t.connectionManager,this.randomWalk=t.randomWalk,this.filter=e.filter,this.discoveryController=new AbortController,Ft(1/0,this.discoveryController.signal)}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Gt,{filter:this.filter,onConnect:t=>{this.log("discovered relay %p",t),this.safeDispatchEvent("relay:discover",{detail:t})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,Ft(1/0,this.discoveryController.signal),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let t=await this.peerStore.all({filters:[n=>n.protocols.includes(Gt)],orders:[()=>Math.random()<.5?1:-1]});for(let n of t)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",t.length);let e=new Ur({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),e.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(s=>s.toString()));continue}this.log.trace("wait for space in queue for %p",n.id),await Tr(e.onSizeLessThan(10),this.discoveryController.signal),this.log("adding random peer %p to dial queue (length: %d)",n.id,e.size),e.add(async()=>{let s=Zs([this.discoveryController.signal,AbortSignal.timeout(5e3)]);Ft(1/0,s);try{await this.connectionManager.openConnection(n.id,{signal:s})}finally{s.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(s=>{this.log.error("error opening connection to random peer %p",n.id,s)})}await e.onIdle()}).catch(t=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",t)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};var Aa=class extends qt{connectionManager;relayStore;listeningAddrs;log;constructor(t){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=t.connectionManager,this.relayStore=t.relayStore,this.listeningAddrs=new Ae,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=t=>{this.#t(t.detail)};async listen(t){this.log("listen on %a",t);let e=t.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(e);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let s=this.relayStore.getReservation(n.remotePeer);if(s==null)throw new xn("Did not have reservation after making reservation");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,s.addrs.map(o=>xt(o).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#t(t){let e=this.listeningAddrs.has(t);this.log("relay peer removed %p - had reservation",t,e),this.listeningAddrs.delete(t),e&&(this.log.trace("removing relay event listener for peer %p",t),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function Wu(r){return new Aa(r)}var a0=60*1e3*10,c0=60*1e3*5,l0=30*1e3,mo=class extends qt{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(t,e){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=t.peerId,this.connectionManager=t.connectionManager,this.transportManager=t.transportManager,this.peerStore=t.peerStore,this.events=t.events,this.reservations=new Ae,this.maxDiscoveredRelays=e?.discoverRelays??0,this.maxReservationQueueLength=e?.maxReservationQueueLength??100,this.reservationCompletionTimeout=e?.reservationCompletionTimeout??1e3,this.started=!1,this.relayFilter=ca(100),this.reserveQueue=new Ur({concurrency:e?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:t.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#e(n.detail)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{}))}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:t})=>{clearTimeout(t)}),this.reservations.clear(),this.started=!1}async addRelay(t,e){if(this.peerId.equals(t)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding potential relay peer %p as the queue is full",t);return}if(this.reserveQueue.has(t)){this.log("potential relay peer %p is already in the reservation queue",t);return}if(this.relayFilter.has(t.toMultihash().bytes)){this.log("potential relay peer %p has failed previously, not trying again",t);return}this.log("try to reserve relay slot with %p",t),await this.reserveQueue.add(async()=>{let n=Date.now();try{let s=this.reservations.get(t);if(s!=null){if(oa(s.reservation.expire)>a0){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",t);return}clearTimeout(s.timeout),this.reservations.delete(t)}if(e==="discovered"&&[...this.reservations.values()].reduce((u,p)=>(p.type==="discovered"&&u++,u),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout);Ft(1/0,o);let i=await this.connectionManager.openConnection(t,{signal:o});if(i.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let a=await this.#t(i,{signal:o});this.log("created reservation on relay peer %p",t);let c=oa(a.expire),h=Math.min(Math.max(c-c0,l0),Math.pow(2,31)-1),f=setTimeout(()=>{this.addRelay(t,e).catch(u=>{this.log.error("could not refresh reservation to relay %p",t,u)})},h);this.reservations.set(t,{timeout:f,reservation:a,type:e}),await this.peerStore.merge(t,{tags:{[yu]:{value:1,ttl:c}}}),await this.transportManager.listen([xt(`/p2p/${t.toString()}/p2p-circuit`)]),this.safeDispatchEvent("relay:created-reservation",{detail:t})}catch(s){this.log.error("could not reserve slot on %p after %dms",t,Date.now()-n,s);let o=this.reservations.get(t);o!=null&&clearTimeout(o.timeout),this.reservations.delete(t),this.relayFilter.add(t.toMultihash().bytes)}},{peerId:t})}hasReservation(t){return this.reservations.has(t)}getReservation(t){return this.reservations.get(t)?.reservation}reservationCount(){return this.reservations.size}async#t(t,e){e.signal?.throwIfAborted(),this.log("requesting reservation from %p",t.remotePeer);let n=await t.newStream(Gt,e),o=Ve(n).pb(Z);await o.write({type:Z.Type.RESERVE},e);let i;try{i=await o.read(e)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(e)}if(i.status===q.OK&&i.reservation!=null){let c=!1,h=t.remoteAddr.bytes;for(let f of i.reservation.addrs)if(ct(h,f)){c=!0;break}return c||i.reservation.addrs.push(h),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#e(t){let e=this.reservations.get(t);e!=null&&(this.log("connection to relay %p closed, removing reservation from local store",t),clearTimeout(e.timeout),this.reservations.delete(t),this.safeDispatchEvent("relay:removed",{detail:t}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};var u0=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(xt)}catch{return!1}return!0},Ba={maxInboundStopStreams:fn,maxOutboundStopStreams:fn,stopTimeout:3e4},go=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(t,e){this.log=t.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=t.registrar,this.peerStore=t.peerStore,this.connectionManager=t.connectionManager,this.transportManager=t.transportManager,this.logger=t.logger,this.peerId=t.peerId,this.upgrader=t.upgrader,this.addressManager=t.addressManager,this.connectionGater=t.connectionGater,this.maxInboundStopStreams=e.maxInboundStopStreams??Ba.maxInboundStopStreams,this.maxOutboundStopStreams=e.maxOutboundStopStreams??Ba.maxOutboundStopStreams,this.stopTimeout=e.stopTimeout??Ba.stopTimeout;let n=e.discoverRelays??0;n>0&&(this.discovery=new po(t,{filter:e.discoveryFilter??da(xu,vu)}),this.discovery.addEventListener("relay:discover",s=>{this.reservationStore.addRelay(s.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",s.detail,o)})})),this.reservationStore=new mo(t,e),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:created-reservation",()=>{this.reservationStore.reservationCount()>=n&&this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[Va]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[Ha](){return this.discovery!=null?["@libp2p/identify"]:[]}[Da]=!0;isStarted(){return this.started}async start(){await this.registrar.handle(Qe,t=>{this.onStop(t).catch(e=>{this.log.error("error while handling STOP protocol",e),t.stream.abort(e)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await Ma(this.discovery,this.reservationStore),this.started=!0}async stop(){await Pa(this.discovery,this.reservationStore),await this.registrar.unhandle(Qe),this.started=!1}async dial(t,e){if(t.protoCodes().filter(d=>d===290).length!==1){let d="Invalid circuit relay address";throw this.log.error(d,t),new Mr(d)}let n=t.toString().split("/p2p-circuit"),s=xt(n[0]),o=xt(n[n.length-1]),i=s.getPeerId(),a=o.getPeerId();if(i==null||a==null){let d=`Circuit relay dial to ${t.toString()} failed as address did not have peer ids`;throw this.log.error(d),new Mr(d)}let c=Vi(i),h=Vi(a),f=!1,p=this.connectionManager.getConnections(c)[0];p==null?(await this.peerStore.merge(c,{multiaddrs:[s]}),e.onProgress?.(new Fe("circuit-relay:open-connection")),p=await this.connectionManager.openConnection(c,e),f=!0):e.onProgress?.(new Fe("circuit-relay:reuse-connection"));let l;try{return e.onProgress?.(new Fe("circuit-relay:open-hop-stream")),l=await p.newStream(Gt),await this.connectV2({stream:l,connection:p,destinationPeer:h,destinationAddr:o,relayAddr:s,ma:t,disconnectOnFailure:f,onProgress:e.onProgress})}catch(d){throw this.log.error("circuit relay dial to destination %p via relay %p failed",h,c,d),l?.abort(d),f&&await p.close(),d}}async connectV2({stream:t,connection:e,destinationPeer:n,destinationAddr:s,relayAddr:o,ma:i,disconnectOnFailure:a,onProgress:c}){try{let h=Ve(t),f=h.pb(Z);c?.(new Fe("circuit-relay:write-connect-message")),await f.write({type:Z.Type.CONNECT,peer:{id:n.toMultihash().bytes,addrs:[xt(s).bytes]}}),c?.(new Fe("circuit-relay:read-connect-response"));let u=await f.read();if(u.status!==q.OK)throw new wn(`failed to connect via relay with status ${u?.status?.toString()??"undefined"}`);let p=new dn(u.limit),l=ba({stream:h.unwrap(),remoteAddr:i,localAddr:o.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger,onDataRead:p.onData,onDataWrite:p.onData});return this.log("new outbound relayed connection %a",l.remoteAddr),await this.upgrader.upgradeOutbound(l,{limits:p.getLimits(),onProgress:c})}catch(h){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${e.remotePeer.toString()} failed`,h),a&&await e.close(),h}}createListener(t){return Wu({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}listenFilter(t){return t=Array.isArray(t)?t:[t],t.filter(e=>Be.matches(e))}dialFilter(t){return this.listenFilter(t)}async onStop({connection:t,stream:e}){if(!this.reservationStore.hasReservation(t.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([t.remoteAddr.encapsulate("/p2p-circuit")])}catch(u){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",u)}let n=AbortSignal.timeout(this.stopTimeout),s=Ve(e).pb(Ht),o=await s.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",t.remotePeer,o.type),o?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.MALFORMED_MESSAGE},{signal:n}),await e.close();return}if(o.type!==Ht.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.UNEXPECTED_MESSAGE},{signal:n}),await e.close();return}if(!u0(o)){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.MALFORMED_MESSAGE},{signal:n}),await e.close();return}let i=cn(Kt(o.peer.id));if(await this.connectionGater.denyInboundRelayedConnection?.(t.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.PERMISSION_DENIED},{signal:n}),await e.close();return}this.log.trace("sending success response to %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.OK},{signal:n});let a=new dn(o.limit),c=t.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),h=this.addressManager.getAddresses()[0],f=ba({stream:s.unwrap().unwrap(),remoteAddr:c,localAddr:h,logger:this.logger,onDataRead:a.onData,onDataWrite:a.onData});this.log("new inbound relayed connection %a",f.remoteAddr),await this.upgrader.upgradeInbound(f,{limits:a.getLimits()}),this.log("%s connection %a upgraded","inbound",f.remoteAddr)}};function ju(r={}){return t=>new go(t,r)}return lf(f0);})();
|
6
|
+
`)}`:`${e} :`}};jc=Me;N.Constructed=jc;Me.NAME="CONSTRUCTED";var jn=class extends At{fromBER(t,e,n){return e}toBER(t){return Jt}};jn.override="EndOfContentValueBlock";var Zc,Zn=class extends bt{constructor(t={}){super(t,jn),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};Zc=Zn;N.EndOfContent=Zc;Zn.NAME=Jr;var Xc,vr=class extends bt{constructor(t={}){super(t,At),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(t,e,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,e+n>t.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):e+n}toBER(t,e){let n=new ArrayBuffer(2);if(!t){let s=new Uint8Array(n);s[0]=5,s[1]=0}return e&&e.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Xc=vr;N.Null=Xc;vr.NAME="NULL";var Xn=class extends ve(At){constructor({value:t,...e}={}){super(e),e.valueHex?this.valueHexView=$.BufferSourceConverter.toUint8Array(e.valueHex):this.valueHexView=new Uint8Array(1),t&&(this.value=t)}get value(){for(let t of this.valueHexView)if(t>0)return!0;return!1}set value(t){this.valueHexView[0]=t?255:0}fromBER(t,e,n){let s=$.BufferSourceConverter.toUint8Array(t);return xe(this,s,e,n)?(this.valueHexView=s.subarray(e,e+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Ti.call(this),this.blockLength=n,e+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};Xn.NAME="BooleanValueBlock";var Yc,Yn=class extends bt{constructor(t={}){super(t,Xn),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(t){this.valueBlock.value=t}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};Yc=Yn;N.Boolean=Yc;Yn.NAME="BOOLEAN";var Jn=class extends ve(ne){constructor({isConstructed:t=!1,...e}={}){super(e),this.isConstructed=t}fromBER(t,e,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=ne.prototype.fromBER.call(this,t,e,n),s===-1)return s;for(let o=0;o<this.value.length;o++){let i=this.value[o].constructor.NAME;if(i===Jr){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==zc)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(t,e,n),this.blockLength=n;return s}toBER(t,e){return this.isConstructed?ne.prototype.toBER.call(this,t,e):t?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Jn.NAME="OctetStringValueBlock";var Jc,Qn=class r extends bt{constructor({idBlock:t={},lenBlock:e={},...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,...t},lenBlock:{...e,isIndefiniteForm:!!n.isIndefiniteForm},...n},Jn),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(t,e,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),e;if(!this.valueBlock.isConstructed){let o=(t instanceof ArrayBuffer?new Uint8Array(t):t).subarray(e,e+n);try{if(o.byteLength){let i=Is(o,0,o.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(t,e,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Me.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${$.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let t=[];for(let e of this.valueBlock.value)e instanceof r&&t.push(e.valueBlock.valueHexView);return $.BufferSourceConverter.concat(t)}};Jc=Qn;N.OctetString=Jc;Qn.NAME=zc;var ts=class extends ve(ne){constructor({unusedBits:t=0,isConstructed:e=!1,...n}={}){super(n),this.unusedBits=t,this.isConstructed=e,this.blockLength=this.valueHexView.byteLength}fromBER(t,e,n){if(!n)return e;let s=-1;if(this.isConstructed){if(s=ne.prototype.fromBER.call(this,t,e,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===Jr){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==$c)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let h=a.valueBlock;if(this.unusedBits>0&&h.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=h.unusedBits}return s}let o=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,o,e,n))return-1;let i=o.subarray(e,e+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=Is(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,e+n}toBER(t,e){if(this.isConstructed)return ne.prototype.toBER.call(this,t,e);if(t)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Jt;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}}};ts.NAME="BitStringValueBlock";var Qc,Er=class extends bt{constructor({idBlock:t={},lenBlock:e={},...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,...t},lenBlock:{...e,isIndefiniteForm:!!n.isIndefiniteForm},...n},ts),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(t,e,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(t,e,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Me.prototype.onAsciiEncoding.call(this);{let t=[],e=this.valueBlock.valueHexView;for(let s of e)t.push(s.toString(2).padStart(8,"0"));let n=t.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};Qc=Er;N.BitString=Qc;Er.NAME=$c;var tl;function zd(r,t){let e=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(t),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,h=0,f=c<i?i:c,u=0;for(let p=f;p>=0;p--,u++){switch(!0){case u<a.length:h=o[i-u]+a[c-u]+e[0];break;default:h=o[i-u]+e[0]}switch(e[0]=h/10,!0){case u>=o.length:o=Fn(new Uint8Array([h%10]),o);break;default:o[i-u]=h%10}}return e[0]>0&&(o=Fn(e,o)),o}function Kc(r){if(r>=Xr.length)for(let t=Xr.length;t<=r;t++){let e=new Uint8Array([0]),n=Xr[t-1].slice(0);for(let s=n.length-1;s>=0;s--){let o=new Uint8Array([(n[s]<<1)+e[0]]);e[0]=o[0]/10,n[s]=o[0]%10}e[0]>0&&(n=Fn(e,n)),Xr.push(n)}return Xr[r]}function $d(r,t){let e=0,n=new Uint8Array(r),s=new Uint8Array(t),o=n.slice(0),i=o.length-1,a=s.slice(0),c=a.length-1,h,f=0;for(let u=c;u>=0;u--,f++)switch(h=o[i-f]-a[c-f]-e,!0){case h<0:e=1,o[i-f]=h+10;break;default:e=0,o[i-f]=h}if(e>0)for(let u=i-c+1;u>=0;u--,f++)if(h=o[i-f]-e,h<0)e=1,o[i-f]=h+10;else{e=0,o[i-f]=h;break}return o.slice()}var Qr=class extends ve(At){constructor({value:t,...e}={}){super(e),this._valueDec=0,e.valueHex&&this.setValueHex(),t!==void 0&&(this.valueDec=t)}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=Ti.call(this)))}set valueDec(t){this._valueDec=t,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Hc(t))}get valueDec(){return this._valueDec}fromDER(t,e,n,s=0){let o=this.fromBER(t,e,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(t=!1){let e=this.valueHexView;switch(!0){case(e[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(e,1),this.valueHexView=n}break;case(e[0]===0&&(e[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(t)}fromBER(t,e,n){let s=super.fromBER(t,e,n);return s===-1||this.setValueHex(),s}toBER(t){return t?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let t=this.valueHexView.length*8-1,e=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 h=0;h<8;h++){if((s&1)===1)switch(n){case t:e=$d(Kc(n),e),i="-";break;default:e=zd(e,Kc(n))}n++,s>>=1}}for(let c=0;c<e.length;c++)e[c]&&(a=!0),a&&(i+=qc.charAt(e[c]));return a===!1&&(i+=qc.charAt(0)),i}};tl=Qr;Qr.NAME="IntegerValueBlock";Object.defineProperty(tl.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var el,wt=class r extends bt{constructor(t={}){super(t,Qr),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return qn(),BigInt(this.valueBlock.toString())}static fromBigInt(t){qn();let e=BigInt(t),n=new Yr,s=e.toString(16).replace(/^-/,""),o=new Uint8Array($.Convert.FromHex(s));if(e<0){let a=new Uint8Array(o.length+(o[0]&128?1:0));a[0]|=128;let h=BigInt(`0x${$.Convert.ToHex(a)}`)+e,f=$.BufferSourceConverter.toUint8Array($.Convert.FromHex(h.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 t=new r({valueHex:this.valueBlock.valueHexView});return t.valueBlock.toDER(),t}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()}`}};el=wt;N.Integer=el;wt.NAME="INTEGER";var rl,es=class extends wt{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};rl=es;N.Enumerated=rl;es.NAME="ENUMERATED";var tn=class extends ve(At){constructor({valueDec:t=-1,isFirstSid:e=!1,...n}={}){super(n),this.valueDec=t,this.isFirstSid=e}fromBER(t,e,n){if(!n)return e;let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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=Ye(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),e+this.blockLength)}set valueBigInt(t){qn();let e=BigInt(t).toString(2);for(;e.length%7;)e="0"+e;let n=new Uint8Array(e.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(e.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(t){if(this.isHexOnly){if(t)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 e=Oe(this.valueDec,7);if(e.byteLength===0)return this.error="Error during encoding SID value",Jt;let n=new Uint8Array(e.byteLength);if(!t){let s=new Uint8Array(e),o=e.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n}toString(){let t="";if(this.isHexOnly)t=$.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let e=this.valueDec;this.valueDec<=39?t="0.":this.valueDec<=79?(t="1.",e-=40):(t="2.",e-=80),t+=e.toString()}else t=this.valueDec.toString();return t}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};tn.NAME="sidBlock";var rs=class extends At{constructor({value:t=Ar,...e}={}){super(e),this.value=[],t&&this.fromString(t)}fromBER(t,e,n){let s=e;for(;n>0;){let o=new tn;if(s=o.fromBER(t,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(t){let e=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(t);if(s.byteLength===0)return this.error=this.value[n].error,Jt;e.push(s)}return ki(e)}fromString(t){this.value=[];let e=0,n=0,s="",o=!1;do if(n=t.indexOf(".",e),n===-1?s=t.substring(e):s=t.substring(e,n),e=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 tn;if(s>Number.MAX_SAFE_INTEGER){qn();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 t="",e=!1;for(let n=0;n<this.value.length;n++){e=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(t=`${t}.`),e?(s=`{${s}}`,this.value[n].isFirstSid?t=`2.{${s} - 80}`:t+=s):t+=s}return t}toJSON(){let t={...super.toJSON(),value:this.toString(),sidArray:[]};for(let e=0;e<this.value.length;e++)t.sidArray.push(this.value[e].toJSON());return t}};rs.NAME="ObjectIdentifierValueBlock";var nl,Sr=class extends bt{constructor(t={}){super(t,rs),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(t){this.valueBlock.fromString(t)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};nl=Sr;N.ObjectIdentifier=nl;Sr.NAME="OBJECT IDENTIFIER";var en=class extends ve(ye){constructor({valueDec:t=0,...e}={}){super(e),this.valueDec=t}fromBER(t,e,n){if(n===0)return e;let s=$.BufferSourceConverter.toUint8Array(t);if(!xe(this,s,e,n))return-1;let o=s.subarray(e,e+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=Ye(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),e+this.blockLength)}toBER(t){if(this.isHexOnly){if(t)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 e=Oe(this.valueDec,7);if(e.byteLength===0)return this.error="Error during encoding SID value",Jt;let n=new Uint8Array(e.byteLength);if(!t){let s=new Uint8Array(e),o=e.byteLength-1;for(let i=0;i<o;i++)n[i]=s[i]|128;n[o]=s[o]}return n.buffer}toString(){let t="";return this.isHexOnly?t=$.Convert.ToHex(this.valueHexView):t=this.valueDec.toString(),t}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};en.NAME="relativeSidBlock";var ns=class extends At{constructor({value:t=Ar,...e}={}){super(e),this.value=[],t&&this.fromString(t)}fromBER(t,e,n){let s=e;for(;n>0;){let o=new en;if(s=o.fromBER(t,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(t,e){let n=[];for(let s=0;s<this.value.length;s++){let o=this.value[s].toBER(t);if(o.byteLength===0)return this.error=this.value[s].error,Jt;n.push(o)}return ki(n)}fromString(t){this.value=[];let e=0,n=0,s="";do{n=t.indexOf(".",e),n===-1?s=t.substring(e):s=t.substring(e,n),e=n+1;let o=new en;if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return!0;this.value.push(o)}while(n!==-1);return!0}toString(){let t="",e=!1;for(let n=0;n<this.value.length;n++){e=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(t=`${t}.`),e&&(s=`{${s}}`),t+=s}return t}toJSON(){let t={...super.toJSON(),value:this.toString(),sidArray:[]};for(let e=0;e<this.value.length;e++)t.sidArray.push(this.value[e].toJSON());return t}};ns.NAME="RelativeObjectIdentifierValueBlock";var sl,ss=class extends bt{constructor(t={}){super(t,ns),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(t){this.valueBlock.fromString(t)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};sl=ss;N.RelativeObjectIdentifier=sl;ss.NAME="RelativeObjectIdentifier";var ol,be=class extends Me{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};ol=be;N.Sequence=ol;be.NAME="SEQUENCE";var il,os=class extends Me{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};il=os;N.Set=il;os.NAME="SET";var is=class extends ve(At){constructor({...t}={}){super(t),this.isHexOnly=!0,this.value=Ar}toJSON(){return{...super.toJSON(),value:this.value}}};is.NAME="StringValueBlock";var as=class extends is{};as.NAME="SimpleStringValueBlock";var It=class extends $n{constructor({...t}={}){super(t,as)}fromBuffer(t){this.valueBlock.value=String.fromCharCode.apply(null,$.BufferSourceConverter.toUint8Array(t))}fromString(t){let e=t.length,n=this.valueBlock.valueHexView=new Uint8Array(e);for(let s=0;s<e;s++)n[s]=t.charCodeAt(s);this.valueBlock.value=t}};It.NAME="SIMPLE STRING";var cs=class extends It{fromBuffer(t){this.valueBlock.valueHexView=$.BufferSourceConverter.toUint8Array(t);try{this.valueBlock.value=$.Convert.ToUtf8String(t)}catch(e){this.warnings.push(`Error during "decodeURIComponent": ${e}, using raw string`),this.valueBlock.value=$.Convert.ToBinary(t)}}fromString(t){this.valueBlock.valueHexView=new Uint8Array($.Convert.FromUtf8String(t)),this.valueBlock.value=t}};cs.NAME="Utf8StringValueBlock";var al,we=class extends cs{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};al=we;N.Utf8String=al;we.NAME="UTF8String";var ls=class extends It{fromBuffer(t){this.valueBlock.value=$.Convert.ToUtf16String(t),this.valueBlock.valueHexView=$.BufferSourceConverter.toUint8Array(t)}fromString(t){this.valueBlock.value=t,this.valueBlock.valueHexView=new Uint8Array($.Convert.FromUtf16String(t))}};ls.NAME="BmpStringValueBlock";var cl,us=class extends ls{constructor({...t}={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};cl=us;N.BmpString=cl;us.NAME="BMPString";var fs=class extends It{fromBuffer(t){let e=ArrayBuffer.isView(t)?t.slice().buffer:t.slice(0),n=new Uint8Array(e);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(e))}fromString(t){let e=t.length,n=this.valueBlock.valueHexView=new Uint8Array(e*4);for(let s=0;s<e;s++){let o=Oe(t.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=t}};fs.NAME="UniversalStringValueBlock";var ll,hs=class extends fs{constructor({...t}={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};ll=hs;N.UniversalString=ll;hs.NAME="UniversalString";var ul,ds=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};ul=ds;N.NumericString=ul;ds.NAME="NumericString";var fl,ps=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};fl=ps;N.PrintableString=fl;ps.NAME="PrintableString";var hl,ms=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};hl=ms;N.TeletexString=hl;ms.NAME="TeletexString";var dl,gs=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};dl=gs;N.VideotexString=dl;gs.NAME="VideotexString";var pl,ys=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};pl=ys;N.IA5String=pl;ys.NAME="IA5String";var ml,bs=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};ml=bs;N.GraphicString=ml;bs.NAME="GraphicString";var gl,rn=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};gl=rn;N.VisibleString=gl;rn.NAME="VisibleString";var yl,ws=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};yl=ws;N.GeneralString=yl;ws.NAME="GeneralString";var bl,xs=class extends It{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};bl=xs;N.CharacterString=bl;xs.NAME="CharacterString";var wl,nn=class extends rn{constructor({value:t,valueDate:e,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,t){this.fromString(t),this.valueBlock.valueHexView=new Uint8Array(t.length);for(let s=0;s<t.length;s++)this.valueBlock.valueHexView[s]=t.charCodeAt(s)}e&&(this.fromDate(e),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(t){this.fromString(String.fromCharCode.apply(null,$.BufferSourceConverter.toUint8Array(t)))}toBuffer(){let t=this.toString(),e=new ArrayBuffer(t.length),n=new Uint8Array(e);for(let s=0;s<t.length;s++)n[s]=t.charCodeAt(s);return e}fromDate(t){this.year=t.getUTCFullYear(),this.month=t.getUTCMonth()+1,this.day=t.getUTCDate(),this.hour=t.getUTCHours(),this.minute=t.getUTCMinutes(),this.second=t.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(t){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(t);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(t="iso"){if(t==="iso"){let e=new Array(7);return e[0]=Rt(this.year<2e3?this.year-1900:this.year-2e3,2),e[1]=Rt(this.month,2),e[2]=Rt(this.day,2),e[3]=Rt(this.hour,2),e[4]=Rt(this.minute,2),e[5]=Rt(this.second,2),e[6]="Z",e.join("")}return super.toString(t)}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}}};wl=nn;N.UTCTime=wl;nn.NAME="UTCTime";var xl,vs=class extends nn{constructor(t={}){var e;super(t),(e=this.millisecond)!==null&&e!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(t){super.fromDate(t),this.millisecond=t.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(t){let e=!1,n="",s="",o=0,i,a=0,c=0;if(t[t.length-1]==="Z")n=t.substring(0,t.length-1),e=!0;else{let u=new Number(t[t.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=t}if(e){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 u=1,p=n.indexOf("+"),l="";if(p===-1&&(p=n.indexOf("-"),u=-1),p!==-1){if(l=n.substring(p+1),n=n.substring(0,p),l.length!==2&&l.length!==4)throw new Error("Wrong input string for conversion");let d=parseInt(l.substring(0,2),10);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*d,l.length===4){if(d=parseInt(l.substring(2,4),10),isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");c=u*d}}}let h=n.indexOf(".");if(h===-1&&(h=n.indexOf(",")),h!==-1){let u=new Number(`0${n.substring(h)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");o=u.valueOf(),s=n.substring(0,h)}else s=n;switch(!0){case s.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,h!==-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,h!==-1){let u=60*o;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=60*o;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case s.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let u=1e3*o;this.millisecond=Math.floor(u)}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 u=1;u<f.length;u++)switch(u){case 1:this.year=parseInt(f[u],10);break;case 2:this.month=parseInt(f[u],10);break;case 3:this.day=parseInt(f[u],10);break;case 4:this.hour=parseInt(f[u],10)+a;break;case 5:this.minute=parseInt(f[u],10)+c;break;case 6:this.second=parseInt(f[u],10);break;default:throw new Error("Wrong input string for conversion")}if(e===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(t="iso"){if(t==="iso"){let e=[];return e.push(Rt(this.year,4)),e.push(Rt(this.month,2)),e.push(Rt(this.day,2)),e.push(Rt(this.hour,2)),e.push(Rt(this.minute,2)),e.push(Rt(this.second,2)),this.millisecond!==0&&(e.push("."),e.push(Rt(this.millisecond,3))),e.push("Z"),e.join("")}return super.toString(t)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};xl=vs;N.GeneralizedTime=xl;vs.NAME="GeneralizedTime";var vl,Es=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};vl=Es;N.DATE=vl;Es.NAME="DATE";var El,Ss=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};El=Ss;N.TimeOfDay=El;Ss.NAME="TimeOfDay";var Sl,As=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};Sl=As;N.DateTime=Sl;As.NAME="DateTime";var Al,Bs=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};Al=Bs;N.Duration=Al;Bs.NAME="Duration";var Bl,_s=class extends we{constructor(t={}){super(t),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};Bl=_s;N.TIME=Bl;_s.NAME="TIME";function j(r,t="utf8"){let e=On[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.encoder.encode(r).substring(1)}function Ts(r){if(isNaN(r)||r<=0)throw new pt("random bytes length must be a Number bigger than 0");return dr(r)}var sn=class extends Error{constructor(t="An error occurred while verifying a message"){super(t),this.name="VerificationError"}},ks=class extends Error{constructor(t="Missing Web Crypto API"){super(t),this.name="WebCryptoMissingError"}};var _l={get(r=globalThis){let t=r.crypto;if(t?.subtle==null)throw new ks("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 t}};var Pe=_l;async function Il(r){let t=await Pe.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),e=await Wd(t);return{privateKey:e[0],publicKey:e[1]}}async function Tl(r,t){let e=await Pe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Pe.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},e,t instanceof Uint8Array?t:t.subarray());return new Uint8Array(n,0,n.byteLength)}async function kl(r,t,e){let n=await Pe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Pe.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,t,e instanceof Uint8Array?e:e.subarray())}async function Wd(r){if(r.privateKey==null||r.publicKey==null)throw new pt("Private and public key are required");return Promise.all([Pe.get().subtle.exportKey("jwk",r.privateKey),Pe.get().subtle.exportKey("jwk",r.publicKey)])}function Ri(r){if(r.kty!=="RSA")throw new pt("invalid key type");if(r.n==null)throw new pt("invalid key modulus");return F(r.n,"base64url").length*8}var Br=class{type="RSA";_key;_raw;_multihash;constructor(t,e){this._key=t,this._multihash=e}get raw(){return this._raw==null&&(this._raw=on.jwkToPkix(this._key)),this._raw}toMultihash(){return this._multihash}toCID(){return mt.createV1(114,this._multihash)}toString(){return tt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}verify(t,e){return kl(this._key,e,t)}},an=class{type="RSA";_key;_raw;publicKey;constructor(t,e){this._key=t,this.publicKey=e}get raw(){return this._raw==null&&(this._raw=on.jwkToPkcs1(this._key)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}sign(t){return Tl(this._key,t)}};var Ns=8192,Li=18;function Nl(r){let{result:t}=Ci(r),e=t.valueBlock.value;return{n:j(se(e[1].toBigInt()),"base64url"),e:j(se(e[2].toBigInt()),"base64url"),d:j(se(e[3].toBigInt()),"base64url"),p:j(se(e[4].toBigInt()),"base64url"),q:j(se(e[5].toBigInt()),"base64url"),dp:j(se(e[6].toBigInt()),"base64url"),dq:j(se(e[7].toBigInt()),"base64url"),qi:j(se(e[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function jd(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 pt("JWK was missing components");let e=new be({value:[new wt({value:0}),wt.fromBigInt(oe(F(r.n,"base64url"))),wt.fromBigInt(oe(F(r.e,"base64url"))),wt.fromBigInt(oe(F(r.d,"base64url"))),wt.fromBigInt(oe(F(r.p,"base64url"))),wt.fromBigInt(oe(F(r.q,"base64url"))),wt.fromBigInt(oe(F(r.dp,"base64url"))),wt.fromBigInt(oe(F(r.dq,"base64url"))),wt.fromBigInt(oe(F(r.qi,"base64url")))]}).toBER();return new Uint8Array(e,0,e.byteLength)}function Cl(r){let{result:t}=Ci(r),e=t.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:j(se(e[0].toBigInt()),"base64url"),e:j(se(e[1].toBigInt()),"base64url")}}function Ui(r){if(r.n==null||r.e==null)throw new pt("JWK was missing components");let e=new be({value:[new be({value:[new Sr({value:"1.2.840.113549.1.1.1"}),new vr]}),new Er({valueHex:new be({value:[wt.fromBigInt(oe(F(r.n,"base64url"))),wt.fromBigInt(oe(F(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(e,0,e.byteLength)}function se(r){let t=r.toString(16);t.length%2>0&&(t=`0${t}`);let e=t.length/2,n=new Uint8Array(e),s=0,o=0;for(;s<e;)n[s]=parseInt(t.slice(o,o+2),16),s+=1,o+=2;return n}function oe(r){let t=[];return r.forEach(function(e){let n=e.toString(16);n.length%2>0&&(n=`0${n}`),t.push(n)}),BigInt("0x"+t.join(""))}function Rl(r){let t=Nl(r);return Ll(t)}function Di(r){let t=Cl(r);if(Ri(t)>Ns)throw new sr("Key size is too large");let e=wr(re.encode({Type:ft.RSA,Data:r})),n=Wt(Li,e);return new Br(t,n)}function Ll(r){if(Ri(r)>Ns)throw new pt("Key size is too large");let t=Dl(r),e=wr(re.encode({Type:ft.RSA,Data:Ui(t.publicKey)})),n=Wt(Li,e);return new an(t.privateKey,new Br(t.publicKey,n))}async function Ul(r){if(r>Ns)throw new pt("Key size is too large");let t=await Il(r),e=wr(re.encode({Type:ft.RSA,Data:Ui(t.publicKey)})),n=Wt(Li,e);return new an(t.privateKey,new Br(t.publicKey,n))}function Dl(r){if(r==null)throw new pt("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}var Cs=class extends hr{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,sc(t);let n=qr(e);if(this.iHash=t.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?t.create().update(n).digest():n);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=t.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),o.fill(0)}update(t){return fr(this),this.iHash.update(t),this}digestInto(t){fr(this),ur(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:s,destroyed:o,blockLen:i,outputLen:a}=this;return t=t,t.finished=s,t.destroyed=o,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Oi=(r,t,e)=>new Cs(r,t).update(e).digest();Oi.create=(r,t)=>new Cs(r,t);function Ol(r){r.lowS!==void 0&&Zt("lowS",r.lowS),r.prehash!==void 0&&Zt("prehash",r.prehash)}function Zd(r){let t=$r(r);ee(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:e,Fp:n,a:s}=t;if(e){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}var{bytesToNumberBE:Xd,hexToBytes:Yd}=In,Ee={Err:class extends Error{constructor(t=""){super(t)}},_tlv:{encode:(r,t)=>{let{Err:e}=Ee;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length&1)throw new e("tlv.encode: unpadded data");let n=t.length/2,s=Ke(n);if(s.length/2&128)throw new e("tlv.encode: long form length too big");let o=n>127?Ke(s.length/2|128):"";return`${Ke(r)}${o}${s}${t}`},decode(r,t){let{Err:e}=Ee,n=0;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length<2||t[n++]!==r)throw new e("tlv.decode: wrong tlv");let s=t[n++],o=!!(s&128),i=0;if(!o)i=s;else{let c=s&127;if(!c)throw new e("tlv.decode(long): indefinite length not supported");if(c>4)throw new e("tlv.decode(long): byte length is too big");let h=t.subarray(n,n+c);if(h.length!==c)throw new e("tlv.decode: length bytes not complete");if(h[0]===0)throw new e("tlv.decode(long): zero leftmost byte");for(let f of h)i=i<<8|f;if(n+=c,i<128)throw new e("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new e("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(r){let{Err:t}=Ee;if(r<Se)throw new t("integer: negative integers are not allowed");let e=Ke(r);if(Number.parseInt(e[0],16)&8&&(e="00"+e),e.length&1)throw new t("unexpected assertion");return e},decode(r){let{Err:t}=Ee;if(r[0]&128)throw new t("Invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("Invalid signature integer: unnecessary leading zero");return Xd(r)}},toSig(r){let{Err:t,_int:e,_tlv:n}=Ee,s=typeof r=="string"?Yd(r):r;mr(s);let{v:o,l:i}=n.decode(48,s);if(i.length)throw new t("Invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,o),{v:h,l:f}=n.decode(2,c);if(f.length)throw new t("Invalid signature: left bytes after parsing");return{r:e.decode(a),s:e.decode(h)}},hexFromSig(r){let{_tlv:t,_int:e}=Ee,n=`${t.encode(2,e.encode(r.r))}${t.encode(2,e.encode(r.s))}`;return t.encode(48,n)}},Se=BigInt(0),gt=BigInt(1),jy=BigInt(2),Ml=BigInt(3),Zy=BigInt(4);function Jd(r){let t=Zd(r),{Fp:e}=t,n=Re(t.n,t.nBitLength),s=t.toBytes||((g,y,b)=>{let w=y.toAffine();return pe(Uint8Array.from([4]),e.toBytes(w.x),e.toBytes(w.y))}),o=t.fromBytes||(g=>{let y=g.subarray(1),b=e.fromBytes(y.subarray(0,e.BYTES)),w=e.fromBytes(y.subarray(e.BYTES,2*e.BYTES));return{x:b,y:w}});function i(g){let{a:y,b}=t,w=e.sqr(g),m=e.mul(w,g);return e.add(e.add(m,e.mul(g,y)),b)}if(!e.eql(e.sqr(t.Gy),i(t.Gx)))throw new Error("bad generator point: equation left != right");function a(g){return Kr(g,gt,t.n)}function c(g){let{allowedPrivateKeyLengths:y,nByteLength:b,wrapPrivateKey:w,n:m}=t;if(y&&typeof g!="bigint"){if(ke(g)&&(g=he(g)),typeof g!="string"||!y.includes(g.length))throw new Error("Invalid key");g=g.padStart(b*2,"0")}let v;try{v=typeof g=="bigint"?g:de(ot("private key",g,b))}catch{throw new Error(`private key must be ${b} bytes, hex or bigint, not ${typeof g}`)}return w&&(v=Y(v,m)),kt("private key",v,gt,m),v}function h(g){if(!(g instanceof p))throw new Error("ProjectivePoint expected")}let f=Ge((g,y)=>{let{px:b,py:w,pz:m}=g;if(e.eql(m,e.ONE))return{x:b,y:w};let v=g.is0();y==null&&(y=v?e.ONE:e.inv(m));let A=e.mul(b,y),_=e.mul(w,y),x=e.mul(m,y);if(v)return{x:e.ZERO,y:e.ZERO};if(!e.eql(x,e.ONE))throw new Error("invZ was invalid");return{x:A,y:_}}),u=Ge(g=>{if(g.is0()){if(t.allowInfinityPoint&&!e.is0(g.py))return;throw new Error("bad point: ZERO")}let{x:y,y:b}=g.toAffine();if(!e.isValid(y)||!e.isValid(b))throw new Error("bad point: x or y not FE");let w=e.sqr(b),m=i(y);if(!e.eql(w,m))throw new Error("bad point: equation left != right");if(!g.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class p{constructor(y,b,w){if(this.px=y,this.py=b,this.pz=w,y==null||!e.isValid(y))throw new Error("x required");if(b==null||!e.isValid(b))throw new Error("y required");if(w==null||!e.isValid(w))throw new Error("z required");Object.freeze(this)}static fromAffine(y){let{x:b,y:w}=y||{};if(!y||!e.isValid(b)||!e.isValid(w))throw new Error("invalid affine point");if(y instanceof p)throw new Error("projective point not allowed");let m=v=>e.eql(v,e.ZERO);return m(b)&&m(w)?p.ZERO:new p(b,w,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(y){let b=e.invertBatch(y.map(w=>w.pz));return y.map((w,m)=>w.toAffine(b[m])).map(p.fromAffine)}static fromHex(y){let b=p.fromAffine(o(ot("pointHex",y)));return b.assertValidity(),b}static fromPrivateKey(y){return p.BASE.multiply(c(y))}static msm(y,b){return Nn(p,n,y,b)}_setWindowSize(y){d.setWindowSize(this,y)}assertValidity(){u(this)}hasEvenY(){let{y}=this.toAffine();if(e.isOdd)return!e.isOdd(y);throw new Error("Field doesn't support isOdd")}equals(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=e.eql(e.mul(b,_),e.mul(v,m)),B=e.eql(e.mul(w,_),e.mul(A,m));return x&&B}negate(){return new p(this.px,e.neg(this.py),this.pz)}double(){let{a:y,b}=t,w=e.mul(b,Ml),{px:m,py:v,pz:A}=this,_=e.ZERO,x=e.ZERO,B=e.ZERO,C=e.mul(m,m),et=e.mul(v,v),H=e.mul(A,A),V=e.mul(m,v);return V=e.add(V,V),B=e.mul(m,A),B=e.add(B,B),_=e.mul(y,B),x=e.mul(w,H),x=e.add(_,x),_=e.sub(et,x),x=e.add(et,x),x=e.mul(_,x),_=e.mul(V,_),B=e.mul(w,B),H=e.mul(y,H),V=e.sub(C,H),V=e.mul(y,V),V=e.add(V,B),B=e.add(C,C),C=e.add(B,C),C=e.add(C,H),C=e.mul(C,V),x=e.add(x,C),H=e.mul(v,A),H=e.add(H,H),C=e.mul(H,V),_=e.sub(_,C),B=e.mul(H,et),B=e.add(B,B),B=e.add(B,B),new p(_,x,B)}add(y){h(y);let{px:b,py:w,pz:m}=this,{px:v,py:A,pz:_}=y,x=e.ZERO,B=e.ZERO,C=e.ZERO,et=t.a,H=e.mul(t.b,Ml),V=e.mul(b,v),U=e.mul(w,A),k=e.mul(m,_),R=e.add(b,w),S=e.add(v,A);R=e.mul(R,S),S=e.add(V,U),R=e.sub(R,S),S=e.add(b,m);let E=e.add(v,_);return S=e.mul(S,E),E=e.add(V,k),S=e.sub(S,E),E=e.add(w,m),x=e.add(A,_),E=e.mul(E,x),x=e.add(U,k),E=e.sub(E,x),C=e.mul(et,S),x=e.mul(H,k),C=e.add(x,C),x=e.sub(U,C),C=e.add(U,C),B=e.mul(x,C),U=e.add(V,V),U=e.add(U,V),k=e.mul(et,k),S=e.mul(H,S),U=e.add(U,k),k=e.sub(V,k),k=e.mul(et,k),S=e.add(S,k),V=e.mul(U,S),B=e.add(B,V),V=e.mul(E,S),x=e.mul(R,x),x=e.sub(x,V),V=e.mul(R,U),C=e.mul(E,C),C=e.add(C,V),new p(x,B,C)}subtract(y){return this.add(y.negate())}is0(){return this.equals(p.ZERO)}wNAF(y){return d.wNAFCached(this,y,p.normalizeZ)}multiplyUnsafe(y){kt("scalar",y,Se,t.n);let b=p.ZERO;if(y===Se)return b;if(y===gt)return this;let{endo:w}=t;if(!w)return d.unsafeLadder(this,y);let{k1neg:m,k1:v,k2neg:A,k2:_}=w.splitScalar(y),x=b,B=b,C=this;for(;v>Se||_>Se;)v>&&(x=x.add(C)),_>&&(B=B.add(C)),C=C.double(),v>>=gt,_>>=gt;return m&&(x=x.negate()),A&&(B=B.negate()),B=new p(e.mul(B.px,w.beta),B.py,B.pz),x.add(B)}multiply(y){let{endo:b,n:w}=t;kt("scalar",y,gt,w);let m,v;if(b){let{k1neg:A,k1:_,k2neg:x,k2:B}=b.splitScalar(y),{p:C,f:et}=this.wNAF(_),{p:H,f:V}=this.wNAF(B);C=d.constTimeNegate(A,C),H=d.constTimeNegate(x,H),H=new p(e.mul(H.px,b.beta),H.py,H.pz),m=C.add(H),v=et.add(V)}else{let{p:A,f:_}=this.wNAF(y);m=A,v=_}return p.normalizeZ([m,v])[0]}multiplyAndAddUnsafe(y,b,w){let m=p.BASE,v=(_,x)=>x===Se||x===gt||!_.equals(m)?_.multiplyUnsafe(x):_.multiply(x),A=v(this,b).add(v(y,w));return A.is0()?void 0:A}toAffine(y){return f(this,y)}isTorsionFree(){let{h:y,isTorsionFree:b}=t;if(y===gt)return!0;if(b)return b(p,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:y,clearCofactor:b}=t;return y===gt?this:b?b(p,this):this.multiplyUnsafe(t.h)}toRawBytes(y=!0){return Zt("isCompressed",y),this.assertValidity(),s(p,this,y)}toHex(y=!0){return Zt("isCompressed",y),he(this.toRawBytes(y))}}p.BASE=new p(t.Gx,t.Gy,e.ONE),p.ZERO=new p(e.ZERO,e.ONE,e.ZERO);let l=t.nBitLength,d=kn(p,t.endo?Math.ceil(l/2):l);return{CURVE:t,ProjectivePoint:p,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:a}}function Qd(r){let t=$r(r);return ee(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function Pl(r){let t=Qd(r),{Fp:e,n}=t,s=e.BYTES+1,o=2*e.BYTES+1;function i(k){return Y(k,n)}function a(k){return Tn(k,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:h,weierstrassEquation:f,isWithinCurveOrder:u}=Jd({...t,toBytes(k,R,S){let E=R.toAffine(),I=e.toBytes(E.x),L=pe;return Zt("isCompressed",S),S?L(Uint8Array.from([R.hasEvenY()?2:3]),I):L(Uint8Array.from([4]),I,e.toBytes(E.y))},fromBytes(k){let R=k.length,S=k[0],E=k.subarray(1);if(R===s&&(S===2||S===3)){let I=de(E);if(!Kr(I,gt,e.ORDER))throw new Error("Point is not on curve");let L=f(I),O;try{O=e.sqrt(L)}catch(G){let z=G instanceof Error?": "+G.message:"";throw new Error("Point is not on curve"+z)}let M=(O>)===gt;return(S&1)===1!==M&&(O=e.neg(O)),{x:I,y:O}}else if(R===o&&S===4){let I=e.fromBytes(E.subarray(0,e.BYTES)),L=e.fromBytes(E.subarray(e.BYTES,2*e.BYTES));return{x:I,y:L}}else throw new Error(`Point of length ${R} was invalid. Expected ${s} compressed bytes or ${o} uncompressed bytes`)}}),p=k=>he(Ce(k,t.nByteLength));function l(k){let R=n>>gt;return k>R}function d(k){return l(k)?i(-k):k}let g=(k,R,S)=>de(k.slice(R,S));class y{constructor(R,S,E){this.r=R,this.s=S,this.recovery=E,this.assertValidity()}static fromCompact(R){let S=t.nByteLength;return R=ot("compactSignature",R,S*2),new y(g(R,0,S),g(R,S,2*S))}static fromDER(R){let{r:S,s:E}=Ee.toSig(ot("DER",R));return new y(S,E)}assertValidity(){kt("r",this.r,gt,n),kt("s",this.s,gt,n)}addRecoveryBit(R){return new y(this.r,this.s,R)}recoverPublicKey(R){let{r:S,s:E,recovery:I}=this,L=_(ot("msgHash",R));if(I==null||![0,1,2,3].includes(I))throw new Error("recovery id invalid");let O=I===2||I===3?S+t.n:S;if(O>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let M=I&1?"03":"02",K=c.fromHex(M+p(O)),G=a(O),z=i(-L*G),X=i(E*G),Q=c.BASE.multiplyAndAddUnsafe(K,z,X);if(!Q)throw new Error("point at infinify");return Q.assertValidity(),Q}hasHighS(){return l(this.s)}normalizeS(){return this.hasHighS()?new y(this.r,i(-this.s),this.recovery):this}toDERRawBytes(){return ze(this.toDERHex())}toDERHex(){return Ee.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ze(this.toCompactHex())}toCompactHex(){return p(this.r)+p(this.s)}}let b={isValidPrivateKey(k){try{return h(k),!0}catch{return!1}},normPrivateKeyToScalar:h,randomPrivateKey:()=>{let k=zo(t.n);return yc(t.randomBytes(k),t.n)},precompute(k=8,R=c.BASE){return R._setWindowSize(k),R.multiply(BigInt(3)),R}};function w(k,R=!0){return c.fromPrivateKey(k).toRawBytes(R)}function m(k){let R=ke(k),S=typeof k=="string",E=(R||S)&&k.length;return R?E===s||E===o:S?E===2*s||E===2*o:k instanceof c}function v(k,R,S=!0){if(m(k))throw new Error("first arg must be private key");if(!m(R))throw new Error("second arg must be public key");return c.fromHex(R).multiply(h(k)).toRawBytes(S)}let A=t.bits2int||function(k){let R=de(k),S=k.length*8-t.nBitLength;return S>0?R>>BigInt(S):R},_=t.bits2int_modN||function(k){return i(A(k))},x=zr(t.nBitLength);function B(k){return kt(`num < 2^${t.nBitLength}`,k,Se,x),Ce(k,t.nByteLength)}function C(k,R,S=et){if(["recovered","canonical"].some(dt=>dt in S))throw new Error("sign() legacy options not supported");let{hash:E,randomBytes:I}=t,{lowS:L,prehash:O,extraEntropy:M}=S;L==null&&(L=!0),k=ot("msgHash",k),Ol(S),O&&(k=ot("prehashed msgHash",E(k)));let K=_(k),G=h(R),z=[B(G),B(K)];if(M!=null&&M!==!1){let dt=M===!0?I(e.BYTES):M;z.push(ot("extraEntropy",dt))}let X=pe(...z),Q=K;function ht(dt){let yt=A(dt);if(!u(yt))return;let Bt=a(yt),lt=c.BASE.multiply(yt).toAffine(),Tt=i(lt.x);if(Tt===Se)return;let ie=i(Bt*i(Q+Tt*G));if(ie===Se)return;let Dr=(lt.x===Tt?0:2)|Number(lt.y>),Or=ie;return L&&l(ie)&&(Or=d(ie),Dr^=1),new y(Tt,Or,Dr)}return{seed:X,k2sig:ht}}let et={lowS:t.lowS,prehash:!1},H={lowS:t.lowS,prehash:!1};function V(k,R,S=et){let{seed:E,k2sig:I}=C(k,R,S),L=t;return Ho(L.hash.outputLen,L.nByteLength,L.hmac)(E,I)}c.BASE._setWindowSize(8);function U(k,R,S,E=H){let I=k;if(R=ot("msgHash",R),S=ot("publicKey",S),"strict"in E)throw new Error("options.strict was renamed to lowS");Ol(E);let{lowS:L,prehash:O}=E,M,K;try{if(typeof I=="string"||ke(I))try{M=y.fromDER(I)}catch(lt){if(!(lt instanceof Ee.Err))throw lt;M=y.fromCompact(I)}else if(typeof I=="object"&&typeof I.r=="bigint"&&typeof I.s=="bigint"){let{r:lt,s:Tt}=I;M=new y(lt,Tt)}else throw new Error("PARSE");K=c.fromHex(S)}catch(lt){if(lt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(L&&M.hasHighS())return!1;O&&(R=t.hash(R));let{r:G,s:z}=M,X=_(R),Q=a(z),ht=i(X*Q),dt=i(G*Q),yt=c.BASE.multiplyAndAddUnsafe(K,ht,dt)?.toAffine();return yt?i(yt.x)===G:!1}return{CURVE:t,getPublicKey:w,getSharedSecret:v,sign:V,verify:U,ProjectivePoint:c,Signature:y,utils:b}}function tp(r){return{hash:r,hmac:(t,...e)=>Oi(r,t,Ro(...e)),randomBytes:dr}}function Vl(r,t){let e=n=>Pl({...r,...tp(n)});return Object.freeze({...e(t),create:e})}var ql=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Hl=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),ep=BigInt(1),Mi=BigInt(2),Fl=(r,t)=>(r+t/Mi)/t;function rp(r){let t=ql,e=BigInt(3),n=BigInt(6),s=BigInt(11),o=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),h=r*r*r%t,f=h*h*r%t,u=nt(f,e,t)*f%t,p=nt(u,e,t)*f%t,l=nt(p,Mi,t)*h%t,d=nt(l,s,t)*l%t,g=nt(d,o,t)*d%t,y=nt(g,a,t)*g%t,b=nt(y,c,t)*y%t,w=nt(b,a,t)*g%t,m=nt(w,e,t)*f%t,v=nt(m,i,t)*d%t,A=nt(v,n,t)*h%t,_=nt(A,Mi,t);if(!Pi.eql(Pi.sqr(_),r))throw new Error("Cannot find square root");return _}var Pi=Re(ql,void 0,void 0,{sqrt:rp}),Je=Vl({a:BigInt(0),b:BigInt(7),Fp:Pi,n:Hl,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=Hl,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-ep*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=e,i=BigInt("0x100000000000000000000000000000000"),a=Fl(o*r,t),c=Fl(-n*r,t),h=Y(r-a*e-c*s,t),f=Y(-a*n-c*o,t),u=h>i,p=f>i;if(u&&(h=t-h),p&&(f=t-f),h>i||f>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:h,k2neg:p,k2:f}}}},wr),sb=BigInt(0);var ob=Je.ProjectivePoint;function Mt(r,t){t==null&&(t=r.reduce((s,o)=>s+o.length,0));let e=Ct(t),n=0;for(let s of r)e.set(s,n),n+=s.length;return e}function Kl(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function zl(r,t,e){let n=yr.digest(e instanceof Uint8Array?e:e.subarray());if(Kl(n))return n.then(({digest:s})=>Je.verify(t,s,r)).catch(s=>{throw new sn(String(s))});try{return Je.verify(t,n.digest,r)}catch(s){throw new sn(String(s))}}var Rs=class{type="secp256k1";raw;_key;constructor(t){this._key=Gl(t),this.raw=$l(this._key)}toMultihash(){return ue.digest(gr(this))}toCID(){return mt.createV1(114,this.toMultihash())}toString(){return tt.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:ct(this.raw,t.raw)}verify(t,e){return zl(this._key,e,t)}};function Vi(r){return new Rs(r)}function $l(r){return Je.ProjectivePoint.fromHex(r).toRawBytes(!0)}function Gl(r){try{return Je.ProjectivePoint.fromHex(r),r}catch(t){throw new sr(String(t))}}function Wl(r){let{Type:t,Data:e}=re.decode(r),n=e??new Uint8Array;switch(t){case ft.RSA:return Di(n);case ft.Ed25519:return Zo(n);case ft.secp256k1:return Vi(n);default:throw new or}}function jl(r){let{Type:t,Data:e}=re.decode(r.digest),n=e??new Uint8Array;switch(t){case ft.Ed25519:return Zo(n);case ft.secp256k1:return Vi(n);default:throw new or}}function gr(r){return re.encode({Type:ft[r.type],Data:r.raw})}var Zl=Symbol.for("nodejs.util.inspect.custom"),np=114,cn=class{type;multihash;publicKey;string;constructor(t){this.type=t.type,this.multihash=t.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[vo]=!0;toString(){return this.string==null&&(this.string=tt.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return mt.createV1(np,this.multihash)}toJSON(){return this.toString()}equals(t){if(t==null)return!1;if(t instanceof Uint8Array)return ct(this.multihash.bytes,t);if(typeof t=="string")return this.toString()===t;if(t?.toMultihash()?.bytes!=null)return ct(this.multihash.bytes,t.toMultihash().bytes);throw new Error("not valid Id")}[Zl](){return`PeerId(${this.toString()})`}},Ls=class extends cn{type="RSA";publicKey;constructor(t){super({...t,type:"RSA"}),this.publicKey=t.publicKey}},Us=class extends cn{type="Ed25519";publicKey;constructor(t){super({...t,type:"Ed25519"}),this.publicKey=t.publicKey}},Ds=class extends cn{type="secp256k1";publicKey;constructor(t){super({...t,type:"secp256k1"}),this.publicKey=t.publicKey}},sp=2336,Os=class{type="url";multihash;publicKey;url;constructor(t){this.url=t.toString(),this.multihash=ue.digest(F(this.url))}[Zl](){return`PeerId(${this.url})`}[vo]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return mt.createV1(sp,this.toMultihash())}toJSON(){return this.toString()}equals(t){return t==null?!1:(t instanceof Uint8Array&&(t=j(t)),t.toString()===this.toString())}};function Hi(r,t){let e;if(r.charAt(0)==="1"||r.charAt(0)==="Q")e=Kt(tt.decode(`z${r}`));else{if(t==null)throw new pt('Please pass a multibase decoder for strings that do not start with "1" or "Q"');e=Kt(t.decode(r))}return ln(e)}function ln(r){if(ip(r))return new Ls({multihash:r});if(op(r))try{let t=jl(r);if(t.type==="Ed25519")return new Us({multihash:r,publicKey:t});if(t.type==="secp256k1")return new Ds({multihash:r,publicKey:t})}catch{let e=j(r.digest);return new Os(new URL(e))}throw new wn("Supplied PeerID Multihash is invalid")}function op(r){return r.code===ue.code}function ip(r){return r.code===yr.code}var Yl=Symbol.for("@achingbrain/uint8arraylist");function Xl(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let s=e+n.byteLength;if(t<s)return{buf:n,index:t-e};e=s}throw new RangeError("index is out of bounds")}function Ms(r){return!!r?.[Yl]}var Pt=class r{bufs;length;[Yl]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(Ms(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(Ms(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Xl(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Xl(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(Ms(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:s}=this._subList(t,e);return Mt(n,s)}subarray(t,e){let{bufs:n,length:s}=this._subList(t,e);return n.length===1?n[0]:Mt(n,s)}sublist(t,e){let{bufs:n,length:s}=this._subList(t,e),o=new r;return o.length=s,o.bufs=[...n],o}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===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,t>=c)continue;let h=t>=a&&t<c,f=e>a&&e<=c;if(h&&f){if(t===a&&e===c){n.push(i);break}let u=t-a;n.push(i.subarray(u,u+(e-t)));break}if(h){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(f){if(e===c){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!Ms(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;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 u=0;u<o;u++)i[u]=-1;for(let u=0;u<s;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,h=n.byteLength-1,f;for(let u=e;u<=c;u+=f){f=0;for(let p=h;p>=0;p--){let l=this.get(u+p);if(n[p]!==l){f=Math.max(1,p-a[l]);break}}if(f===0)return u}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=Ct(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let s=it(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,e,n),this.write(s,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let s=it(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,e,n),this.write(s,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let s=it(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,e,n),this.write(s,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=Ct(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let s=it(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,e,n),this.write(s,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let s=it(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,e,n),this.write(s,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let s=it(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,e,n),this.write(s,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let s=it(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,e,n),this.write(s,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let s=it(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,e,n),this.write(s,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!ct(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((s,o)=>s+o.byteLength,0)),n.length=e,n}};var un;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.publicKey!=null&&e.publicKey.byteLength>0&&(n.uint32(10),n.bytes(e.publicKey)),e.payloadType!=null&&e.payloadType.byteLength>0&&(n.uint32(18),n.bytes(e.payloadType)),e.payload!=null&&e.payload.byteLength>0&&(n.uint32(26),n.bytes(e.payload)),e.signature!=null&&e.signature.byteLength>0&&(n.uint32(42),n.bytes(e.signature)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={publicKey:it(0),payloadType:it(0),payload:it(0),signature:it(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.publicKey=e.bytes();break}case 2:{o.payloadType=e.bytes();break}case 3:{o.payload=e.bytes();break}case 5:{o.signature=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(un||(un={}));var Ps=class extends Error{constructor(t="Invalid signature"){super(t),this.name="InvalidSignatureError"}};var fn=class r{static createFromProtobuf=async t=>{let e=un.decode(t),n=Wl(e.publicKey);return new r({publicKey:n,payloadType:e.payloadType,payload:e.payload,signature:e.signature})};static seal=async(t,e)=>{if(e==null)throw new Error("Missing private key");let n=t.domain,s=t.codec,o=t.marshal(),i=Jl(n,s,o),a=await e.sign(i.subarray());return new r({publicKey:e.publicKey,payloadType:s,payload:o,signature:a})};static openAndCertify=async(t,e)=>{let n=await r.createFromProtobuf(t);if(!await n.validate(e))throw new Ps("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(t){let{publicKey:e,payloadType:n,payload:s,signature:o}=t;this.publicKey=e,this.payloadType=n,this.payload=s,this.signature=o}marshal(){return this.marshaled==null&&(this.marshaled=un.encode({publicKey:gr(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(t){return ct(this.marshal(),t.marshal())}async validate(t){let e=Jl(t,this.payloadType,this.payload);return this.publicKey.verify(e.subarray(),this.signature)}},Jl=(r,t,e)=>{let n=F(r),s=zt(n.byteLength),o=zt(t.length),i=zt(e.length);return new Pt(s,n,o,t,i,e)};var Vs=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}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(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,s){return this.readAtomically(()=>{let o=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",h=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let p=Number.parseInt(u,t);if(!Number.isNaN(p))return p});if(f===void 0)break;if(o*=t,o+=f,o>h||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:o})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let s=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[s]=i[0],e[s+1]=i[1],e[s+2]=i[2],e[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];e[s]=o>>8,e[s+1]=o&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,s]=t(e);if(n===16)return e;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let o=new Uint8Array(14),i=16-(n+2),[a]=t(o.subarray(0,i));return e.set(o.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Ql=45,ap=15,_r=new Vs;function Fi(r){if(!(r.length>ap))return _r.new(r).parseWith(()=>_r.readIPv4Addr())}function qi(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Ql))return _r.new(r).parseWith(()=>_r.readIPv6Addr())}function Hs(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Ql))return _r.new(r).parseWith(()=>_r.readIPAddr())}var Ow=parseInt("0xFFFF",16),Mw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function ru(r){return!!Fi(r)}function nu(r){return!!qi(r)}function Fs(r){return!!Hs(r)}var su=ru,hp=nu,Ki=function(r){let t=0;if(r=r.toString().trim(),su(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(hp(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let o=su(e[n]),i;o&&(i=Ki(e[n]),e[n]=j(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,j(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let o=[n,1];for(n=9-e.length;n>0;n--)o.push("0");e.splice.apply(e,o)}let s=new Uint8Array(t+16);for(n=0;n<e.length;n++){let o=parseInt(e[n],16);s[t++]=o>>8&255,s[t++]=o&255}return s}throw new Error("invalid ip address")},ou=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let s=[];for(let o=0;o<e;o++)s.push(r[t+o]);return s.join(".")}if(e===16){let s=[];for(let o=0;o<e;o+=2)s.push(n.getUint16(t+o).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Ir={},zi={},pp=[[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"]];pp.forEach(r=>{let t=mp(...r);zi[t.code]=t,Ir[t.name]=t});function mp(r,t,e,n,s){return{code:r,size:t,name:e,resolvable:!!n,path:!!s}}function J(r){if(typeof r=="number"){if(zi[r]!=null)return zi[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Ir[r]!=null)return Ir[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var xx=J("ip4"),vx=J("ip6"),Ex=J("ipcidr");function ji(r,t){switch(J(r).code){case 4:case 41:return yp(t);case 42:return Wi(t);case 6:case 273:case 33:case 132:return cu(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Wi(t);case 421:return vp(t);case 444:return au(t);case 445:return au(t);case 466:return xp(t);case 481:return globalThis.encodeURIComponent(Wi(t));default:return j(t,"base16")}}function Zi(r,t){switch(J(r).code){case 4:return iu(t);case 41:return iu(t);case 42:return Gi(t);case 6:case 273:case 33:case 132:return Xi(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Gi(t);case 421:return bp(t);case 444:return Ep(t);case 445:return Sp(t);case 466:return wp(t);case 481:return Gi(globalThis.decodeURIComponent(t));default:return F(t,"base16")}}var $i=Object.values(Gr).map(r=>r.decoder),gp=function(){let r=$i[0].or($i[1]);return $i.slice(2).forEach(t=>r=r.or(t)),r}();function iu(r){if(!Fs(r))throw new Error("invalid ip address");return Ki(r)}function yp(r){let t=ou(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Fs(t))throw new Error("invalid ip address");return t}function Xi(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function cu(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Gi(r){let t=F(r),e=Uint8Array.from(zt(t.length));return Mt([e,t],e.length+t.length)}function Wi(r){let t=me(r);if(r=r.slice(Et(t)),r.length!==t)throw new Error("inconsistent lengths");return j(r)}function bp(r){let t;r[0]==="Q"||r[0]==="1"?t=Kt(tt.decode(`z${r}`)).bytes:t=mt.parse(r).multihash.bytes;let e=Uint8Array.from(zt(t.length));return Mt([e,t],e.length+t.length)}function wp(r){let t=gp.decode(r),e=Uint8Array.from(zt(t.length));return Mt([e,t],e.length+t.length)}function xp(r){let t=me(r),e=r.slice(Et(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+j(e,"base64url")}function vp(r){let t=me(r),e=r.slice(Et(t));if(e.length!==t)throw new Error("inconsistent lengths");return j(e,"base58btc")}function Ep(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=le.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Xi(n);return Mt([e,s],e.length+s.length)}function Sp(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=le.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Xi(n);return Mt([e,s],e.length+s.length)}function au(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=j(t,"base32"),s=cu(e);return`${n}:${s}`}function lu(r){r=Yi(r);let t=[],e=[],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){t.push([a.code]),e.push([a.code]);continue}if(o++,o>=s.length)throw fu("invalid address: "+r);if(a.path===!0){n=Yi(s.slice(o).join("/")),t.push([a.code,Zi(a.code,n)]),e.push([a.code,n]);break}let c=Zi(a.code,s[o]);t.push([a.code,c]),e.push([a.code,ji(a.code,c)])}return{string:uu(e),bytes:Qi(t),tuples:t,stringTuples:e,path:n}}function Ji(r){let t=[],e=[],n=null,s=0;for(;s<r.length;){let o=me(r,s),i=Et(o),a=J(o),c=Ap(a,r.slice(s+i));if(c===0){t.push([o]),e.push([o]),s+=i;continue}let h=r.slice(s+i,s+i+c);if(s+=c+i,s>r.length)throw fu("Invalid address Uint8Array: "+j(r,"base16"));t.push([o,h]);let f=ji(o,h);if(e.push([o,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:uu(e),tuples:t,stringTuples:e,path:n}}function uu(r){let t=[];return r.map(e=>{let n=J(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),Yi(t.join("/"))}function Qi(r){return Mt(r.map(t=>{let e=J(t[0]),n=Uint8Array.from(zt(e.code));return t.length>1&&t[1]!=null&&(n=Mt([n,t[1]])),n}))}function Ap(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=me(t instanceof Uint8Array?t:Uint8Array.from(t));return e+Et(e)}}function Yi(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function fu(r){return new Error("Error parsing address: "+r)}var Bp=Symbol.for("nodejs.util.inspect.custom"),ea=Symbol.for("@multiformats/js-multiaddr/multiaddr"),_p=[J("dns").code,J("dns4").code,J("dns6").code,J("dnsaddr").code],ta=class extends Error{constructor(t="No available resolver"){super(t),this.name="NoAvailableResolverError"}},qs=class r{bytes;#t;#e;#r;#n;[ea]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=Ji(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=lu(t)}else if(du(t))e=Ji(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#n=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,s,o="",i=J("tcp"),a=J("udp"),c=J("ip4"),h=J("ip6"),f=J("dns6"),u=J("ip6zone");for(let[l,d]of this.stringTuples())l===u.code&&(o=`%${d??""}`),_p.includes(l)&&(e=i.name,s=443,n=`${d??""}${o}`,t=l===f.code?6:4),(l===i.code||l===a.code)&&(e=J(l).name,s=parseInt(d??"")),(l===c.code||l===h.code)&&(e=J(l).name,n=`${d??""}${o}`,t=l===h.code?6:4);if(t==null||e==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:t,host:n,transport:e,port:s}}protos(){return this.#e.map(([t])=>Object.assign({},J(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>J(t).name)}tuples(){return this.#e}stringTuples(){return this.#r}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),s=n.lastIndexOf(e);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,s))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(Qi(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,s])=>{n===Ir.p2p.code&&t.push([n,s]),n===Ir["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?j(tt.decode(`z${n}`),"base58btc"):j(mt.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(t){return ct(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(o=>o.resolvable);if(e==null)return[this];let n=hu.get(e.name);if(n==null)throw new ta(`no available resolver for ${e.name}`);return(await n(this,t)).map(o=>xt(o))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[Bp](){return`Multiaddr(${this.#t})`}};var hu=new Map;function du(r){return!!r?.[ea]}function xt(r){return new qs(r)}function Vt(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Ks=class extends Error{type;code;constructor(t,e,n){super(t??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=e??"ABORT_ERR"}};async function Tr(r,t,e){if(t==null)return r;if(t.aborted)return Promise.reject(new Ks(e?.errorMessage,e?.errorCode,e?.errorName));let n,s=new Ks(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([r,new Promise((o,i)=>{n=()=>{i(s)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var ra=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=Vt(),this.haveNext=Vt()}[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 t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=Vt(),t}async throw(t){return this.ended=!0,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return await this._push(void 0),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=Vt(),await Tr(this.readNext.promise,e?.signal,e)}};function pu(){return new ra}var zs=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var na=class extends Error{code;constructor(t,e){super(t),this.code=e}},sa=class extends na{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function mu(r,t){let e=pu();r.sink(e).catch(async i=>{await e.end(i)}),r.sink=async i=>{for await(let a of i)await e.push(a);await e.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 Pt;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,h=new Promise((f,u)=>{c=()=>{u(new sa("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:p}=await Promise.race([n.next(),h]);return u===!0?new Pt:p}for(;s.byteLength<i;){let{value:u,done:p}=await Promise.race([n.next(),h]);if(p===!0)throw new zs("unexpected end of input");s.append(u)}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 e.push(i,a):await e.push(i.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let i=r.source;r.source=async function*(){t?.yieldBytes===!1?yield s:yield*s,yield*i}()}return r}}}var $s=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Gs=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ws=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function gu(r,t={}){let e=mu(r,t);t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=Et(t.maxDataLength));let n=t?.lengthDecoder??me,s=t?.lengthEncoder??zt;return{read:async i=>{let a=-1,c=new Pt;for(;;){c.append(await e.read(1,i));try{a=n(c)}catch(h){if(h instanceof RangeError)continue;throw h}if(a<0)throw new $s("Invalid message length");if(t?.maxLengthLength!=null&&c.byteLength>t.maxLengthLength)throw new Ws("message length length too long");if(a>-1)break}if(t?.maxDataLength!=null&&a>t.maxDataLength)throw new Gs("message length too long");return e.read(a,i)},write:async(i,a)=>{await e.write(new Pt(s(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new Pt(...i.flatMap(h=>[s(h.byteLength),h]));await e.write(c,a)},unwrap:()=>e.unwrap()}}function Ve(r,t){let e=gu(r,t),n={read:async(s,o)=>{let i=await e.read(o);return s.decode(i)},write:async(s,o,i)=>{await e.write(o.encode(s),i)},writeV:async(s,o,i)=>{await e.writeV(s.map(a=>o.encode(a)),i)},pb:s=>({read:async o=>n.read(s,o),write:async(o,i)=>n.write(o,s,i),writeV:async(o,i)=>n.writeV(o,s,i),unwrap:()=>n}),unwrap:()=>e.unwrap()};return n}var yu="circuit-relay-source",bu="circuit-relay-relay";var wu=BigInt(131072),Gt="/libp2p/circuit/relay/0.2.0/hop",Qe="/libp2p/circuit/relay/0.2.0/stop",xu=30*1e3,f1=30*1e3,hn=300,vu=4096,Eu=.001;var Z;(function(r){let t;(function(s){s.RESERVE="RESERVE",s.CONNECT="CONNECT",s.STATUS="STATUS"})(t=r.Type||(r.Type={}));let e;(function(s){s[s.RESERVE=0]="RESERVE",s[s.CONNECT=1]="CONNECT",s[s.STATUS=2]="STATUS"})(e||(e={})),function(s){s.codec=()=>Xe(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ot((s,o,i={})=>{i.lengthDelimited!==!1&&o.fork(),s.type!=null&&(o.uint32(8),r.Type.codec().encode(s.type,o)),s.peer!=null&&(o.uint32(18),kr.codec().encode(s.peer,o)),s.reservation!=null&&(o.uint32(26),js.codec().encode(s.reservation,o)),s.limit!=null&&(o.uint32(34),Nr.codec().encode(s.limit,o)),s.status!=null&&(o.uint32(40),q.codec().encode(s.status,o)),i.lengthDelimited!==!1&&o.ldelim()},(s,o,i={})=>{let a={},c=o==null?s.len:s.pos+o;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:i.limits?.peer});break}case 3:{a.reservation=js.codec().decode(s,s.uint32(),{limits:i.limits?.reservation});break}case 4:{a.limit=Nr.codec().decode(s,s.uint32(),{limits:i.limits?.limit});break}case 5:{a.status=q.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Dt(s,r.codec()),r.decode=(s,o)=>Ut(s,r.codec(),o)})(Z||(Z={}));var Ht;(function(r){let t;(function(s){s.CONNECT="CONNECT",s.STATUS="STATUS"})(t=r.Type||(r.Type={}));let e;(function(s){s[s.CONNECT=0]="CONNECT",s[s.STATUS=1]="STATUS"})(e||(e={})),function(s){s.codec=()=>Xe(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ot((s,o,i={})=>{i.lengthDelimited!==!1&&o.fork(),s.type!=null&&(o.uint32(8),r.Type.codec().encode(s.type,o)),s.peer!=null&&(o.uint32(18),kr.codec().encode(s.peer,o)),s.limit!=null&&(o.uint32(26),Nr.codec().encode(s.limit,o)),s.status!=null&&(o.uint32(32),q.codec().encode(s.status,o)),i.lengthDelimited!==!1&&o.ldelim()},(s,o,i={})=>{let a={},c=o==null?s.len:s.pos+o;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=kr.codec().decode(s,s.uint32(),{limits:i.limits?.peer});break}case 3:{a.limit=Nr.codec().decode(s,s.uint32(),{limits:i.limits?.limit});break}case 4:{a.status=q.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Dt(s,r.codec()),r.decode=(s,o)=>Ut(s,r.codec(),o)})(Ht||(Ht={}));var kr;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),e.id!=null&&e.id.byteLength>0&&(n.uint32(10),n.bytes(e.id)),e.addrs!=null)for(let o of e.addrs)n.uint32(18),n.bytes(o);s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={id:it(0),addrs:[]},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.id=e.bytes();break}case 2:{if(s.limits?.addrs!=null&&o.addrs.length===s.limits.addrs)throw new Zr('Decode error - map field "addrs" had too many elements');o.addrs.push(e.bytes());break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(kr||(kr={}));var js;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),e.expire!=null&&e.expire!==0n&&(n.uint32(8),n.uint64(e.expire)),e.addrs!=null)for(let o of e.addrs)n.uint32(18),n.bytes(o);e.voucher!=null&&(n.uint32(26),n.bytes(e.voucher)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={expire:0n,addrs:[]},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.expire=e.uint64();break}case 2:{if(s.limits?.addrs!=null&&o.addrs.length===s.limits.addrs)throw new Zr('Decode error - map field "addrs" had too many elements');o.addrs.push(e.bytes());break}case 3:{o.voucher=e.bytes();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(js||(js={}));var Nr;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.duration!=null&&(n.uint32(8),n.uint32(e.duration)),e.data!=null&&(n.uint32(16),n.uint64(e.data)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.duration=e.uint32();break}case 2:{o.data=e.uint64();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(Nr||(Nr={}));var q;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(q||(q={}));var oa;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(oa||(oa={}));(function(r){r.codec=()=>Xe(oa)})(q||(q={}));var Zs;(function(r){let t;r.codec=()=>(t==null&&(t=Ot((e,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),e.relay!=null&&e.relay.byteLength>0&&(n.uint32(10),n.bytes(e.relay)),e.peer!=null&&e.peer.byteLength>0&&(n.uint32(18),n.bytes(e.peer)),e.expiration!=null&&e.expiration!==0n&&(n.uint32(24),n.uint64(e.expiration)),s.lengthDelimited!==!1&&n.ldelim()},(e,n,s={})=>{let o={relay:it(0),peer:it(0),expiration:0n},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{o.relay=e.bytes();break}case 2:{o.peer=e.bytes();break}case 3:{o.expiration=e.uint64();break}default:{e.skipType(a&7);break}}}return o})),t),r.encode=e=>Dt(e,r.codec()),r.decode=(e,n)=>Ut(e,r.codec(),n)})(Zs||(Zs={}));function Xs(r){let t=new globalThis.AbortController;function e(){t.abort();for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",e)}for(let o of r){if(o?.aborted===!0){e();break}o?.addEventListener!=null&&o.addEventListener("abort",e)}function n(){for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",e)}let s=t.signal;return s.clear=n,s}var Ys=class extends Error{constructor(t="Transfer limit error"){super(t),this.name="TransferLimitError"}},dn=class extends Error{constructor(t="Duration limit error"){super(t),this.name="DurationLimitError"}};async function*Su(r,t,e){let n=t.remaining;for await(let s of r){let o=BigInt(s.byteLength);if(t.remaining-o<0){let i=Number(t.remaining);t.remaining=0n;try{i!==0&&(yield s.subarray(0,i))}catch(a){e.log.error(a)}throw new Ys(`data limit of ${n} bytes exceeded`)}t.remaining-=o,yield s}}function Au(r,t,e,n,s){function o(u){r.abort(u),t.abort(u)}let i=[e];n?.duration!=null&&i.push(AbortSignal.timeout(n.duration));let a=Xs(i),c=!1,h=!1,f;n?.data!=null&&(f={remaining:n.data}),queueMicrotask(()=>{let u=()=>{t.abort(new dn(`duration limit of ${n?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),t.sink(f==null?r.source:Su(r.source,f,s)).catch(p=>{s.log.error("error while relaying streams src -> dst",p),o(p)}).finally(()=>{c=!0,h&&(a.removeEventListener("abort",u),a.clear())})}),queueMicrotask(()=>{let u=()=>{r.abort(new dn(`duration limit of ${n?.duration} ms exceeded`))};a.addEventListener("abort",u,{once:!0}),r.sink(f==null?t.source:Su(t.source,f,s)).catch(p=>{s.log.error("error while relaying streams dst -> src",p),o(p)}).finally(()=>{h=!0,c&&(a.removeEventListener("abort",u),a.clear())})})}function ia(r){let t=r*BigInt(1e3),e=new Date().getTime();return Number(t-BigInt(e))}var pn=class{expires;bytes;constructor(t){t?.duration!=null&&t?.duration!==0&&(this.expires=Date.now()+t.duration*1e3),this.bytes=t?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(t){this.bytes!=null&&(this.bytes-=BigInt(t.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let t={};if(this.bytes!=null){let e=this;Object.defineProperty(t,"bytes",{get(){return e.bytes}})}if(this.expires!=null){let e=this;Object.defineProperty(t,"seconds",{get(){return Math.round(((e.expires??0)-Date.now())/1e3)}})}return t}};function Js(r,t){let e={[Symbol.iterator]:()=>e,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:t(s)}}};return e}var Ae=class{map;constructor(t){if(this.map=new Map,t!=null)for(let[e,n]of t.entries())this.map.set(e.toString(),{key:e,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(t){return this.map.delete(t.toString())}entries(){return Js(this.map.entries(),t=>[t[1].key,t[1].value])}forEach(t){this.map.forEach((e,n)=>{t(e.value,e.key,this)})}get(t){return this.map.get(t.toString())?.value}has(t){return this.map.has(t.toString())}set(t,e){this.map.set(t.toString(),{key:t,value:e})}keys(){return Js(this.map.values(),t=>t.key)}values(){return Js(this.map.values(),t=>t.value)}get size(){return this.map.size}};var ca=xo(aa(),1);var Ip=Math.LN2*Math.LN2,to=class{seeds;bits;buffer;constructor(t={}){t.seeds!=null?this.seeds=t.seeds:this.seeds=kp(t.hashes??8),this.bits=t.bits??1024,this.buffer=it(Math.ceil(this.bits/8))}add(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.seeds.length;e++){let s=ca.default.x86.hash32(t,this.seeds[e])%this.bits;this.setbit(s)}}has(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.seeds.length;e++){let s=ca.default.x86.hash32(t,this.seeds[e])%this.bits;if(!this.getbit(s))return!1}return!0}clear(){this.buffer.fill(0)}setbit(t){let e=Math.floor(t/8),n=t%8,s=this.buffer[e];s|=1<<n,this.buffer[e]=s}getbit(t){let e=Math.floor(t/8),n=t%8;return(this.buffer[e]&1<<n)!==0}};function la(r,t=.005){let e=Tp(r,t);return new to(e)}function Tp(r,t=.005){let e=Math.round(-1*r*Math.log(t)/Ip),n=Math.round(e/r*Math.LN2);return{bits:e,hashes:n}}function kp(r){let t,e,n=[];for(let s=0;s<r;s++)for(t=new Pt(Ts(4)),n[s]=t.getUint32(0,!0),e=0;e<s;e++)if(n[s]===n[e]){s--;break}return n}var ua=64,Qt=class{fp;h;seed;constructor(t,e,n,s=2){if(s>ua)throw new TypeError("Invalid Fingerprint Size");let o=e.hashV(t,n),i=it(s);for(let a=0;a<i.length;a++)i[a]=o[a];i.length===0&&(i[0]=7),this.fp=i,this.h=e,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(t){return t?.fp instanceof Uint8Array?ct(this.fp,t.fp):!1}};function tr(r,t){return Math.floor(Math.random()*(t-r))+r}var er=class{contents;constructor(t){this.contents=new Array(t).fill(null)}has(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");return this.contents.some(e=>t.equals(e))}add(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");for(let e=0;e<this.contents.length;e++)if(this.contents[e]==null)return this.contents[e]=t,!0;return!0}swap(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");let e=tr(0,this.contents.length-1),n=this.contents[e];return this.contents[e]=t,n}remove(t){if(!(t instanceof Qt))throw new TypeError("Invalid Fingerprint");let e=this.contents.findIndex(n=>t.equals(n));return e>-1?(this.contents[e]=null,!0):!1}};var fa={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Iu={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},Tu=new globalThis.TextEncoder;function Np(r,t){let e=fa[t],n=Iu[t];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(t,n*e);return n}function Cp(r,t,e){if(e.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=fa[t],s=Iu[t],o=r;for(;o.length>0;){let i=Tu.encodeInto(o,e);o=o.slice(i.read);for(let a=0;a<i.written;a++)s^=BigInt(e[a]),s=BigInt.asUintN(t,s*n)}return s}function ha(r,{size:t=32,utf8Buffer:e}={}){if(!fa[t])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(e)return Cp(r,t,e);r=Tu.encode(r)}return Np(r,t)}var Rp=xo(aa(),1);var gn={hash:r=>Number(ha(r,{size:32})),hashV:(r,t)=>Lp(gn.hash(r,t))};function Lp(r){let t=r.toString(16);return t.length%2===1&&(t=`0${t}`),F(t,"base16")}var Up=500,yn=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(t){this.filterSize=t.filterSize,this.bucketSize=t.bucketSize??4,this.fingerprintSize=t.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=t.hash??gn,this.seed=t.seed??tr(0,Math.pow(2,10))}add(t){typeof t=="string"&&(t=F(t));let e=new Qt(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,s=(n^e.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new er(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new er(this.bucketSize)),this.buckets[n].add(e)||this.buckets[s].add(e))return this.count++,!0;let o=[n,s],i=o[tr(0,o.length-1)];this.buckets[i]==null&&(this.buckets[i]=new er(this.bucketSize));for(let a=0;a<Up;a++){let c=this.buckets[i].swap(e);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new er(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(t){typeof t=="string"&&(t=F(t));let e=new Qt(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,s=this.buckets[n]?.has(e)??!1;if(s)return s;let o=(n^e.hash())%this.filterSize;return this.buckets[o]?.has(e)??!1}remove(t){typeof t=="string"&&(t=F(t));let e=new Qt(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,s=this.buckets[n]?.remove(e)??!1;if(s)return this.count--,s;let o=(n^e.hash())%this.filterSize,i=this.buckets[o]?.remove(e)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Dp={1:.5,2:.84,4:.95,8:.98};function Op(r=.001){return r>.002?2:r>1e-5?4:8}function ku(r,t=.001){let e=Op(t),n=Dp[e],s=Math.round(r/n),o=Math.min(Math.ceil(Math.log2(1/t)+Math.log2(2*e)),ua);return{filterSize:s,bucketSize:e,fingerprintSize:o}}var eo=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(t){this.bucketSize=t.bucketSize??4,this.filterSize=t.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=t.fingerprintSize??2,this.scale=t.scale??2,this.hash=t.hash??gn,this.seed=t.seed??tr(0,Math.pow(2,10)),this.filterSeries=[new yn({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(t){if(typeof t=="string"&&(t=F(t)),this.has(t))return!0;let e=this.filterSeries.find(n=>n.reliable);if(e==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);e=new yn({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(e)}return e.add(t)}has(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].has(t))return!0;return!1}remove(t){typeof t=="string"&&(t=F(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].remove(t))return!0;return!1}get count(){return this.filterSeries.reduce((t,e)=>t+e.count,0)}};function da(r,t=.001,e){return new eo({...ku(r,t),...e??{}})}var ro=class{filter;constructor(t,e){this.filter=da(t,e)}has(t){return this.filter.has(t.toMultihash().bytes)}add(t){this.filter.add(t.toMultihash().bytes)}remove(t){this.filter.remove?.(t.toMultihash().bytes)}};function pa(r,t=.001){return new ro(r,t)}var no=class{reservations=new Ae;_started=!1;interval;maxReservations;reservationClearInterval;applyDefaultLimit;reservationTtl;defaultDurationLimit;defaultDataLimit;constructor(t={}){this.maxReservations=t.maxReservations??15,this.reservationClearInterval=t.reservationClearInterval??3e5,this.applyDefaultLimit=t.applyDefaultLimit!==!1,this.reservationTtl=t.reservationTtl??72e5,this.defaultDurationLimit=t.defaultDurationLimit??12e4,this.defaultDataLimit=t.defaultDataLimit??wu}isStarted(){return this._started}start(){this._started||(this._started=!0,this.interval=setInterval(()=>{let t=new Date().getTime();this.reservations.forEach((e,n)=>{e.expire.getTime()<t&&this.reservations.delete(n)})},this.reservationClearInterval))}stop(){clearInterval(this.interval)}reserve(t,e,n){if(this.reservations.size>=this.maxReservations&&!this.reservations.has(t))return{status:q.RESERVATION_REFUSED};let s=new Date(Date.now()+this.reservationTtl),o;return this.applyDefaultLimit&&(o=n??{data:this.defaultDataLimit,duration:this.defaultDurationLimit}),this.reservations.set(t,{addr:e,expire:s,limit:o}),{status:q.OK,expire:Math.round(s.getTime()/1e3)}}removeReservation(t){this.reservations.delete(t)}hasReservation(t){return this.reservations.has(t)}get(t){return this.reservations.get(t)}};var so=class r{domain="libp2p-relay-rsvp";codec=new Uint8Array([3,2]);relay;peer;expiration;constructor({relay:t,peer:e,expiration:n}){this.relay=t,this.peer=e,this.expiration=n}marshal(){return Zs.encode({relay:this.relay.toMultihash().bytes,peer:this.peer.toMultihash().bytes,expiration:BigInt(this.expiration)})}equals(t){return!(!(t instanceof r)||!this.peer.equals(t.peer)||!this.relay.equals(t.relay)||this.expiration!==t.expiration)}};var Nu=r=>r.protoCodes().includes(290),Fp={maxOutboundStopStreams:hn},ma=class extends qt{registrar;peerStore;addressManager;peerId;privateKey;connectionManager;connectionGater;reservationStore;started;hopTimeout;shutdownController;maxInboundHopStreams;maxOutboundHopStreams;maxOutboundStopStreams;log;constructor(t,e={}){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:server"),this.registrar=t.registrar,this.peerStore=t.peerStore,this.addressManager=t.addressManager,this.peerId=t.peerId,this.privateKey=t.privateKey,this.connectionManager=t.connectionManager,this.connectionGater=t.connectionGater,this.started=!1,this.hopTimeout=e?.hopTimeout??xu,this.maxInboundHopStreams=e.maxInboundHopStreams,this.maxOutboundHopStreams=e.maxOutboundHopStreams,this.maxOutboundStopStreams=e.maxOutboundStopStreams??Fp.maxOutboundStopStreams,this.reservationStore=new no(e.reservations),this.shutdownController=new AbortController,Ft(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-server";isStarted(){return this.started}async start(){this.started||(await this.registrar.handle(Gt,t=>{this.onHop(t).catch(e=>{this.log.error(e)})},{maxInboundStreams:this.maxInboundHopStreams,maxOutboundStreams:this.maxOutboundHopStreams,runOnLimitedConnection:!0}),this.reservationStore.start(),this.started=!0)}async stop(){this.reservationStore.stop(),this.shutdownController.abort(),await this.registrar.unhandle(Gt),this.started=!1}async onHop({connection:t,stream:e}){this.log("received circuit v2 hop protocol stream from %p",t.remotePeer);let n=Vt(),s=setTimeout(()=>{n.reject("timed out")},this.hopTimeout),o=Ve(e);try{let i=await Promise.race([o.pb(Z).read(),n.promise]);if(i?.type==null)throw new Error("request was invalid, could not read from stream");this.log("received",i.type),await Promise.race([this.handleHopProtocol({connection:t,stream:o,request:i}),n.promise])}catch(i){this.log.error("error while handling hop",i),await o.pb(Z).write({type:Z.Type.STATUS,status:q.MALFORMED_MESSAGE}),e.abort(i)}finally{clearTimeout(s)}}async handleHopProtocol({stream:t,request:e,connection:n}){switch(this.log("received hop message"),e.type){case Z.Type.RESERVE:await this.handleReserve({stream:t,request:e,connection:n});break;case Z.Type.CONNECT:await this.handleConnect({stream:t,request:e,connection:n});break;default:this.log.error("invalid hop request type %s via peer %p",e.type,n.remotePeer),await t.pb(Z).write({type:Z.Type.STATUS,status:q.UNEXPECTED_MESSAGE})}}async handleReserve({stream:t,request:e,connection:n}){let s=t.pb(Z);if(this.log("hop reserve request from %p",n.remotePeer),Nu(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}if(await this.connectionGater.denyInboundRelayReservation?.(n.remotePeer)===!0){this.log.error("reservation for %p denied by connection gater",n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}let o=this.reservationStore.reserve(n.remotePeer,n.remoteAddr);if(o.status!==q.OK){await s.write({type:Z.Type.STATUS,status:o.status});return}try{if(o.expire!=null){let i=o.expire*1e3-Date.now();await this.peerStore.merge(n.remotePeer,{tags:{[yu]:{value:1,ttl:i}}})}await s.write({type:Z.Type.STATUS,status:q.OK,reservation:await this.makeReservation(n.remotePeer,BigInt(o.expire??0)),limit:this.reservationStore.get(n.remotePeer)?.limit}),this.log("sent confirmation response to %s",n.remotePeer)}catch(i){this.log.error("failed to send confirmation response to %p",n.remotePeer,i),this.reservationStore.removeReservation(n.remotePeer)}}async makeReservation(t,e){let n=[];for(let o of this.addressManager.getAddresses())o.toString().includes("/p2p-circuit")||n.push(o.bytes);let s=await fn.seal(new so({peer:t,relay:this.peerId,expiration:Number(e)}),this.privateKey);return{addrs:n,expire:e,voucher:s.marshal()}}async handleConnect({stream:t,request:e,connection:n}){let s=t.pb(Z);if(Nu(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}this.log("hop connect request from %p",n.remotePeer);let o;try{if(e.peer==null)throw this.log.error("no peer info in hop connect request"),new Error("no peer info in request");e.peer.addrs.forEach(xt),o=ln(Kt(e.peer.id))}catch(u){this.log.error("invalid hop connect request via peer %p %s",n.remotePeer,u),await s.write({type:Z.Type.STATUS,status:q.MALFORMED_MESSAGE});return}if(!this.reservationStore.hasReservation(o)){this.log.error("hop connect denied for destination peer %p not having a reservation for %p with status %s",o,n.remotePeer,q.NO_RESERVATION),await s.write({type:Z.Type.STATUS,status:q.NO_RESERVATION});return}if(await this.connectionGater.denyOutboundRelayedConnection?.(n.remotePeer,o)===!0){this.log.error("hop connect for %p to %p denied by connection gater",n.remotePeer,o),await s.write({type:Z.Type.STATUS,status:q.PERMISSION_DENIED});return}let i=this.connectionManager.getConnections(o);if(i.length===0){this.log("hop connect denied for destination peer %p not having a connection for %p as there is no destination connection",o,n.remotePeer),await s.write({type:Z.Type.STATUS,status:q.NO_RESERVATION});return}let a=this.reservationStore.get(o)?.limit,c=i[0],h=await this.stopHop({connection:c,request:{type:Ht.Type.CONNECT,peer:{id:n.remotePeer.toMultihash().bytes,addrs:[]},limit:a}});if(h==null){this.log.error("failed to open stream to destination peer %p",c?.remotePeer),await s.write({type:Z.Type.STATUS,status:q.CONNECTION_FAILED});return}await s.write({type:Z.Type.STATUS,status:q.OK,limit:a});let f=t.unwrap();this.log("connection from %p to %p established - merging streams",n.remotePeer,o),Au(f,h,this.shutdownController.signal,a,{log:this.log})}async stopHop({connection:t,request:e}){this.log("starting circuit relay v2 stop request to %s",t.remotePeer);let n=await t.newStream([Qe],{maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),s=Ve(n),o=s.pb(Ht);await o.write(e);let i;try{i=await o.read()}catch{this.log.error("error parsing stop message response from %p",t.remotePeer)}if(i==null){this.log.error("could not read response from %p",t.remotePeer),await n.close();return}if(i.status===q.OK)return this.log("stop request to %p was successful",t.remotePeer),s.unwrap();this.log("stop request failed with code %d",i.status),await n.close()}get reservations(){return this.reservationStore.reservations}};function Cu(r={}){return t=>new ma(t,r)}function qp(r){let[t,e]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>t.next(),push:s=>{n.push(s)},next:()=>n.length>0?{done:!1,value:n.shift()}:t.next(),[e](){return this}}}var Ru=qp;function Kp(r){return r[Symbol.asyncIterator]!=null}function Lu(r){return r?.then!=null}function zp(r,t){let e=0;if(Kp(r))return async function*(){for await(let c of r){let h=t(c,e++);Lu(h)&&await h,yield c}}();let n=Ru(r),{value:s,done:o}=n.next();if(o===!0)return function*(){}();if(typeof t(s,e++)?.then=="function")return async function*(){yield s;for await(let c of n){let h=t(c,e++);Lu(h)&&await h,yield c}}();let a=t;return function*(){yield s;for(let c of n)a(c,e++),yield c}()}var Uu=zp;var oo=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||t-1&t)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},Cr=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new oo(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new oo(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var ya=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function Rr(r={}){return $p(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function $p(r,t){t=t??{};let e=t.onEnd,n=new Cr,s,o,i,a=Vt(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,b)=>{o=w=>{o=null,n.push(w);try{y(r(n))}catch(m){b(m)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=Vt()})}},h=y=>o!=null?o(y):(n.push(y),s),f=y=>(n=new Cr,o!=null?o({error:y}):(n.push({error:y}),s)),u=y=>{if(i)return s;if(t?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return h({done:!1,value:y})},p=y=>i?s:(i=!0,y!=null?f(y):h({done:!0})),l=()=>(n=new Cr,p(),{done:!0}),d=y=>(p(y),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:l,throw:d,push:u,end:p,get readableLength(){return n.size},onEmpty:async y=>{let b=y?.signal;if(b?.throwIfAborted(),n.isEmpty())return;let w,m;b!=null&&(w=new Promise((v,A)=>{m=()=>{A(new ya)},b.addEventListener("abort",m)}));try{await Promise.race([a.promise,w])}finally{m!=null&&b!=null&&b?.removeEventListener("abort",m)}}},e==null)return s;let g=s;return s={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(y){return g.throw(y),e!=null&&(e(y),e=void 0),{done:!0}},return(){return g.return(),e!=null&&(e(),e=void 0),{done:!0}},push:u,end(y){return g.end(y),e!=null&&(e(y),e=void 0),s},get readableLength(){return g.readableLength},onEmpty:y=>g.onEmpty(y)},s}function Gp(r){return r[Symbol.asyncIterator]!=null}function Wp(...r){let t=[];for(let e of r)Gp(e)||t.push(e);return t.length===r.length?function*(){for(let e of t)yield*e}():async function*(){let e=Rr({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let s of n)e.push(s)})),e.end()}catch(n){e.end(n)}}),yield*e}()}var Du=Wp;function Ou(r,...t){if(r==null)throw new Error("Empty pipeline");if(ba(r)){let n=r;r=()=>n.source}else if(Pu(r)||Mu(r)){let n=r;r=()=>n}let e=[r,...t];if(e.length>1&&ba(e[e.length-1])&&(e[e.length-1]=e[e.length-1].sink),e.length>2)for(let n=1;n<e.length-1;n++)ba(e[n])&&(e[n]=Zp(e[n]));return jp(...e)}var jp=(...r)=>{let t;for(;r.length>0;)t=r.shift()(t);return t},Mu=r=>r?.[Symbol.asyncIterator]!=null,Pu=r=>r?.[Symbol.iterator]!=null,ba=r=>r==null?!1:r.sink!=null&&r.source!=null,Zp=r=>t=>{let e=r.sink(t);if(e?.then!=null){let n=Rr({objectMode:!0});e.then(()=>{n.end()},i=>{n.end(i)});let s,o=r.source;if(Mu(o))s=async function*(){yield*o,n.end()};else if(Pu(o))s=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Du(n,s())}return r.source};function wa(r){let{stream:t,remoteAddr:e,logger:n,onDataRead:s,onDataWrite:o}=r,i=n.forComponent("libp2p:stream:converter"),a=!1,c=!1,h=t.close.bind(t);t.close=async d=>{await h(d),l(!0)};let f=t.abort.bind(t);t.abort=d=>{f(d),l(!0)};let u=t.sink.bind(t);t.sink=async d=>{try{await u(Ou(d,g=>Uu(g,y=>o?.(y))))}catch(g){g.type!=="aborted"&&i.error("%s error in sink",e,g)}finally{c=!0,l()}};let p={log:i,sink:t.sink,source:async function*(){try{for await(let d of t.source)s?.(d),yield d}finally{a=!0,l()}}(),remoteAddr:e,timeline:{open:Date.now(),close:void 0},close:t.close,abort:t.abort};function l(d){d===!0&&(a=!0,c=!0),a&&c&&p.timeline.close==null&&(p.timeline.close=Date.now())}return p}var Xp=T("dns4"),Yp=T("dns6"),Jp=T("dnsaddr"),rr=at(T("dns"),Jp,Xp,Yp),co=at(T("ip4"),T("ip6")),Lr=at(D(co,T("tcp")),D(rr,T("tcp"))),lo=D(co,T("udp")),Qp=D(lo,T("utp")),t0=D(lo,T("quic")),e0=D(lo,T("quic-v1")),xa=at(D(Lr,T("ws")),D(rr,T("ws"))),io=at(D(xa,T("p2p")),xa),va=at(D(Lr,T("wss")),D(rr,T("wss")),D(Lr,T("tls"),T("ws")),D(rr,T("tls"),T("ws"))),ao=at(D(va,T("p2p")),va),Ea=at(D(Lr,T("http")),D(co,T("http")),D(rr,T("http"))),Sa=at(D(Lr,T("https")),D(co,T("https")),D(rr,T("https"))),Vu=D(lo,T("webrtc-direct"),T("certhash")),qu=at(D(Vu,T("p2p")),Vu),Hu=D(e0,T("webtransport"),T("certhash"),T("certhash")),Ku=at(D(Hu,T("p2p")),Hu),zu=at(D(io,T("p2p-webrtc-star"),T("p2p")),D(ao,T("p2p-webrtc-star"),T("p2p")),D(io,T("p2p-webrtc-star")),D(ao,T("p2p-webrtc-star"))),G2=at(D(io,T("p2p-websocket-star"),T("p2p")),D(ao,T("p2p-websocket-star"),T("p2p")),D(io,T("p2p-websocket-star")),D(ao,T("p2p-websocket-star"))),$u=at(D(Ea,T("p2p-webrtc-direct"),T("p2p")),D(Sa,T("p2p-webrtc-direct"),T("p2p")),D(Ea,T("p2p-webrtc-direct")),D(Sa,T("p2p-webrtc-direct"))),nr=at(xa,va,Ea,Sa,zu,$u,Lr,Qp,t0,rr,qu,Ku),W2=at(D(nr,T("p2p-stardust"),T("p2p")),D(nr,T("p2p-stardust"))),He=at(D(nr,T("p2p")),zu,$u,qu,Ku,T("p2p")),Fu=at(D(He,T("p2p-circuit"),He),D(He,T("p2p-circuit")),D(T("p2p-circuit"),He),D(nr,T("p2p-circuit")),D(T("p2p-circuit"),nr),T("p2p-circuit")),Gu=()=>at(D(Fu,Gu),Fu),Be=Gu(),j2=at(D(Be,He,Be),D(He,Be),D(Be,He),Be,He);var Z2=at(D(Be,T("webrtc"),T("p2p")),D(Be,T("webrtc")),D(nr,T("webrtc"),T("p2p")),D(nr,T("webrtc")),T("webrtc"));function Wu(r){function t(e){let n;try{n=xt(e)}catch{return!1}let s=r(n.protoNames());return s===null?!1:s===!0||s===!1?s:s.length===0}return t}function D(...r){function t(e){if(e.length<r.length)return null;let n=e;return r.some(s=>(n=typeof s=="function"?s().partialMatch(e):s.partialMatch(e),Array.isArray(n)&&(e=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Wu(t),partialMatch:t}}function at(...r){function t(n){let s=null;return r.some(o=>{let i=typeof o=="function"?o().partialMatch(n):o.partialMatch(n);return i!=null?(s=i,!0):!1}),s}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Wu(t),partialMatch:t}}function T(r){let t=r;function e(s){let o;try{o=xt(s)}catch{return!1}let i=o.protoNames();return i.length===1&&i[0]===t}function n(s){return s.length===0?null:s[0]===t?s.slice(1):null}return{toString:function(){return t},matches:e,partialMatch:n}}var Fe=class extends Event{type;detail;constructor(t,e){super(t),this.type=t,this.detail=e}};var Aa=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function uo(r,t,e,n){let s=new Aa(n?.errorMessage,n?.errorCode);return e?.aborted===!0?Promise.reject(s):new Promise((o,i)=>{function a(){e?.removeEventListener("abort",f),r.removeEventListener(t,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,h)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(p){a(),i(p);return}a(),o(u)},h=u=>{a(),i(u.detail)},f=()=>{a(),i(s)};e?.addEventListener("abort",f),r.addEventListener(t,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,h)})}var fo=class{deferred;signal;constructor(t){this.signal=t,this.deferred=Vt(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ae)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function n0(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ho=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=n0(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,Ft(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ae),this.cleanup())}async join(t={}){let e=new fo(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await Tr(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};var po=class extends qt{concurrency;queue;pending;sort;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.pending=0,t.metricName!=null&&t.metrics?.registerMetricGroup(t.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=t.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 t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}async add(t,e){e?.signal?.throwIfAborted();let n=new ho(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(e).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(t=>{t.abort(new ae)}),this.clear()}async onEmpty(t){this.size!==0&&await uo(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await uo(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await uo(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=Rr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},s=c=>{c.detail!=null&&e.push(c.detail)},o=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new ae("Queue aborted"))};this.addEventListener("completed",s),this.addEventListener("error",o),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("completed",s),this.removeEventListener("error",o),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var Ur=class extends po{has(t){return this.find(t)!=null}find(t){return this.queue.find(e=>t.equals(e.options.peerId))}};var mo=class extends qt{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;constructor(t,e={}){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=t.peerStore,this.registrar=t.registrar,this.connectionManager=t.connectionManager,this.randomWalk=t.randomWalk,this.filter=e.filter,this.discoveryController=new AbortController,Ft(1/0,this.discoveryController.signal)}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Gt,{filter:this.filter,onConnect:t=>{this.log("discovered relay %p",t),this.safeDispatchEvent("relay:discover",{detail:t})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,Ft(1/0,this.discoveryController.signal),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let t=await this.peerStore.all({filters:[n=>n.protocols.includes(Gt)],orders:[()=>Math.random()<.5?1:-1]});for(let n of t)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",t.length);let e=new Ur({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),e.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(s=>s.toString()));continue}this.log.trace("wait for space in queue for %p",n.id),await Tr(e.onSizeLessThan(10),this.discoveryController.signal),this.log("adding random peer %p to dial queue (length: %d)",n.id,e.size),e.add(async()=>{let s=Xs([this.discoveryController.signal,AbortSignal.timeout(5e3)]);Ft(1/0,s);try{await this.connectionManager.openConnection(n.id,{signal:s})}finally{s.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(s=>{this.log.error("error opening connection to random peer %p",n.id,s)})}await e.onIdle()}).catch(t=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",t)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};var Ba=class extends qt{connectionManager;relayStore;listeningAddrs;log;constructor(t){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=t.connectionManager,this.relayStore=t.relayStore,this.listeningAddrs=new Ae,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=t=>{this.#t(t.detail)};async listen(t){this.log("listen on %a",t);let e=t.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(e);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let s=this.relayStore.getReservation(n.remotePeer);if(s==null)throw new vn("Did not have reservation after making reservation");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,s.addrs.map(o=>xt(o).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#t(t){let e=this.listeningAddrs.has(t);this.log("relay peer removed %p - had reservation",t,e),this.listeningAddrs.delete(t),e&&(this.log.trace("removing relay event listener for peer %p",t),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function ju(r){return new Ba(r)}var a0=60*1e3*10,c0=60*1e3*5,l0=30*1e3,go=class extends qt{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(t,e){super(),this.log=t.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=t.peerId,this.connectionManager=t.connectionManager,this.transportManager=t.transportManager,this.peerStore=t.peerStore,this.events=t.events,this.reservations=new Ae,this.maxDiscoveredRelays=e?.discoverRelays??0,this.maxReservationQueueLength=e?.maxReservationQueueLength??100,this.reservationCompletionTimeout=e?.reservationCompletionTimeout??1e3,this.started=!1,this.relayFilter=la(100),this.reserveQueue=new Ur({concurrency:e?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:t.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#e(n.detail)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{}))}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:t})=>{clearTimeout(t)}),this.reservations.clear(),this.started=!1}async addRelay(t,e){if(this.peerId.equals(t)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding potential relay peer %p as the queue is full",t);return}if(this.reserveQueue.has(t)){this.log("potential relay peer %p is already in the reservation queue",t);return}if(this.relayFilter.has(t.toMultihash().bytes)){this.log("potential relay peer %p has failed previously, not trying again",t);return}this.log("try to reserve relay slot with %p",t),await this.reserveQueue.add(async()=>{let n=Date.now();try{let s=this.reservations.get(t);if(s!=null){if(ia(s.reservation.expire)>a0){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",t);return}clearTimeout(s.timeout),this.reservations.delete(t)}if(e==="discovered"&&[...this.reservations.values()].reduce((u,p)=>(p.type==="discovered"&&u++,u),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout);Ft(1/0,o);let i=await this.connectionManager.openConnection(t,{signal:o});if(i.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let a=await this.#t(i,{signal:o});this.log("created reservation on relay peer %p",t);let c=ia(a.expire),h=Math.min(Math.max(c-c0,l0),Math.pow(2,31)-1),f=setTimeout(()=>{this.addRelay(t,e).catch(u=>{this.log.error("could not refresh reservation to relay %p",t,u)})},h);this.reservations.set(t,{timeout:f,reservation:a,type:e}),await this.peerStore.merge(t,{tags:{[bu]:{value:1,ttl:c}}}),await this.transportManager.listen([xt(`/p2p/${t.toString()}/p2p-circuit`)]),this.safeDispatchEvent("relay:created-reservation",{detail:t})}catch(s){this.log.error("could not reserve slot on %p after %dms",t,Date.now()-n,s);let o=this.reservations.get(t);o!=null&&clearTimeout(o.timeout),this.reservations.delete(t),this.relayFilter.add(t.toMultihash().bytes)}},{peerId:t})}hasReservation(t){return this.reservations.has(t)}getReservation(t){return this.reservations.get(t)?.reservation}reservationCount(){return this.reservations.size}async#t(t,e){e.signal?.throwIfAborted(),this.log("requesting reservation from %p",t.remotePeer);let n=await t.newStream(Gt,e),o=Ve(n).pb(Z);await o.write({type:Z.Type.RESERVE},e);let i;try{i=await o.read(e)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(e)}if(i.status===q.OK&&i.reservation!=null){let c=!1,h=t.remoteAddr.bytes;for(let f of i.reservation.addrs)if(ct(h,f)){c=!0;break}return c||i.reservation.addrs.push(h),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#e(t){let e=this.reservations.get(t);e!=null&&(this.log("connection to relay %p closed, removing reservation from local store",t),clearTimeout(e.timeout),this.reservations.delete(t),this.safeDispatchEvent("relay:removed",{detail:t}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};var u0=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(xt)}catch{return!1}return!0},_a={maxInboundStopStreams:hn,maxOutboundStopStreams:hn,stopTimeout:3e4},yo=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(t,e){this.log=t.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=t.registrar,this.peerStore=t.peerStore,this.connectionManager=t.connectionManager,this.transportManager=t.transportManager,this.logger=t.logger,this.peerId=t.peerId,this.upgrader=t.upgrader,this.addressManager=t.addressManager,this.connectionGater=t.connectionGater,this.maxInboundStopStreams=e.maxInboundStopStreams??_a.maxInboundStopStreams,this.maxOutboundStopStreams=e.maxOutboundStopStreams??_a.maxOutboundStopStreams,this.stopTimeout=e.stopTimeout??_a.stopTimeout;let n=e.discoverRelays??0;n>0&&(this.discovery=new mo(t,{filter:e.discoveryFilter??pa(vu,Eu)}),this.discovery.addEventListener("relay:discover",s=>{this.reservationStore.addRelay(s.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",s.detail,o)})})),this.reservationStore=new go(t,e),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:created-reservation",()=>{this.reservationStore.reservationCount()>=n&&this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[Ha]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[Fa](){return this.discovery!=null?["@libp2p/identify"]:[]}[Oa]=!0;isStarted(){return this.started}async start(){await this.registrar.handle(Qe,t=>{this.onStop(t).catch(e=>{this.log.error("error while handling STOP protocol",e),t.stream.abort(e)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await Pa(this.discovery,this.reservationStore),this.started=!0}async stop(){await Va(this.discovery,this.reservationStore),await this.registrar.unhandle(Qe),this.started=!1}async dial(t,e){if(t.protoCodes().filter(d=>d===290).length!==1){let d="Invalid circuit relay address";throw this.log.error(d,t),new Mr(d)}let n=t.toString().split("/p2p-circuit"),s=xt(n[0]),o=xt(n[n.length-1]),i=s.getPeerId(),a=o.getPeerId();if(i==null||a==null){let d=`Circuit relay dial to ${t.toString()} failed as address did not have peer ids`;throw this.log.error(d),new Mr(d)}let c=Hi(i),h=Hi(a),f=!1,p=this.connectionManager.getConnections(c)[0];p==null?(await this.peerStore.merge(c,{multiaddrs:[s]}),e.onProgress?.(new Fe("circuit-relay:open-connection")),p=await this.connectionManager.openConnection(c,e),f=!0):e.onProgress?.(new Fe("circuit-relay:reuse-connection"));let l;try{return e.onProgress?.(new Fe("circuit-relay:open-hop-stream")),l=await p.newStream(Gt),await this.connectV2({stream:l,connection:p,destinationPeer:h,destinationAddr:o,relayAddr:s,ma:t,disconnectOnFailure:f,onProgress:e.onProgress})}catch(d){throw this.log.error("circuit relay dial to destination %p via relay %p failed",h,c,d),l?.abort(d),f&&await p.close(),d}}async connectV2({stream:t,connection:e,destinationPeer:n,destinationAddr:s,relayAddr:o,ma:i,disconnectOnFailure:a,onProgress:c}){try{let h=Ve(t),f=h.pb(Z);c?.(new Fe("circuit-relay:write-connect-message")),await f.write({type:Z.Type.CONNECT,peer:{id:n.toMultihash().bytes,addrs:[xt(s).bytes]}}),c?.(new Fe("circuit-relay:read-connect-response"));let u=await f.read();if(u.status!==q.OK)throw new xn(`failed to connect via relay with status ${u?.status?.toString()??"undefined"}`);let p=new pn(u.limit),l=wa({stream:h.unwrap(),remoteAddr:i,localAddr:o.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger,onDataRead:p.onData,onDataWrite:p.onData});return this.log("new outbound relayed connection %a",l.remoteAddr),await this.upgrader.upgradeOutbound(l,{limits:p.getLimits(),onProgress:c})}catch(h){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${e.remotePeer.toString()} failed`,h),a&&await e.close(),h}}createListener(t){return ju({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}listenFilter(t){return t=Array.isArray(t)?t:[t],t.filter(e=>Be.matches(e))}dialFilter(t){return this.listenFilter(t)}async onStop({connection:t,stream:e}){if(!this.reservationStore.hasReservation(t.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([t.remoteAddr.encapsulate("/p2p-circuit")])}catch(u){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",u)}let n=AbortSignal.timeout(this.stopTimeout),s=Ve(e).pb(Ht),o=await s.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",t.remotePeer,o.type),o?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.MALFORMED_MESSAGE},{signal:n}),await e.close();return}if(o.type!==Ht.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.UNEXPECTED_MESSAGE},{signal:n}),await e.close();return}if(!u0(o)){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.MALFORMED_MESSAGE},{signal:n}),await e.close();return}let i=ln(Kt(o.peer.id));if(await this.connectionGater.denyInboundRelayedConnection?.(t.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.PERMISSION_DENIED},{signal:n}),await e.close();return}this.log.trace("sending success response to %p",t.remotePeer),await s.write({type:Ht.Type.STATUS,status:q.OK},{signal:n});let a=new pn(o.limit),c=t.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),h=this.addressManager.getAddresses()[0],f=wa({stream:s.unwrap().unwrap(),remoteAddr:c,localAddr:h,logger:this.logger,onDataRead:a.onData,onDataWrite:a.onData});this.log("new inbound relayed connection %a",f.remoteAddr),await this.upgrader.upgradeInbound(f,{limits:a.getLimits()}),this.log("%s connection %a upgraded","inbound",f.remoteAddr)}};function Zu(r={}){return t=>new yo(t,r)}return uf(f0);})();
|
7
7
|
/*! Bundled license information:
|
8
8
|
|
9
9
|
pvtsutils/build/index.js:
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/circuit-relay-v2",
|
3
|
-
"version": "2.0.
|
3
|
+
"version": "2.0.1-21fe841f2",
|
4
4
|
"description": "Implementation of Circuit Relay v2",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-circuit-relay-v2#readme",
|
@@ -52,12 +52,12 @@
|
|
52
52
|
"doc-check": "aegir doc-check"
|
53
53
|
},
|
54
54
|
"dependencies": {
|
55
|
-
"@libp2p/interface": "
|
56
|
-
"@libp2p/interface-internal": "
|
57
|
-
"@libp2p/peer-collections": "
|
58
|
-
"@libp2p/peer-id": "
|
59
|
-
"@libp2p/peer-record": "
|
60
|
-
"@libp2p/utils": "
|
55
|
+
"@libp2p/interface": "2.0.1-21fe841f2",
|
56
|
+
"@libp2p/interface-internal": "2.0.1-21fe841f2",
|
57
|
+
"@libp2p/peer-collections": "6.0.1-21fe841f2",
|
58
|
+
"@libp2p/peer-id": "5.0.1-21fe841f2",
|
59
|
+
"@libp2p/peer-record": "8.0.1-21fe841f2",
|
60
|
+
"@libp2p/utils": "6.0.1-21fe841f2",
|
61
61
|
"@multiformats/mafmt": "^12.1.6",
|
62
62
|
"@multiformats/multiaddr": "^12.2.3",
|
63
63
|
"any-signal": "^4.1.1",
|
@@ -72,7 +72,7 @@
|
|
72
72
|
"uint8arrays": "^5.1.0"
|
73
73
|
},
|
74
74
|
"devDependencies": {
|
75
|
-
"@libp2p/interface-compliance-tests": "
|
75
|
+
"@libp2p/interface-compliance-tests": "6.0.1-21fe841f2",
|
76
76
|
"aegir": "^44.0.1",
|
77
77
|
"delay": "^6.0.0",
|
78
78
|
"it-drain": "^3.0.7",
|
package/dist/typedoc-urls.json
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"CircuitRelayService": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayService.html",
|
3
|
-
".:CircuitRelayService": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayService.html",
|
4
|
-
"CircuitRelayServiceEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayServiceEvents.html",
|
5
|
-
".:CircuitRelayServiceEvents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.CircuitRelayServiceEvents.html",
|
6
|
-
"RelayReservation": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.RelayReservation.html",
|
7
|
-
".:RelayReservation": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_circuit_relay_v2.RelayReservation.html",
|
8
|
-
"RELAY_V2_HOP_CODEC": "https://libp2p.github.io/js-libp2p/variables/_libp2p_circuit_relay_v2.RELAY_V2_HOP_CODEC.html",
|
9
|
-
"RELAY_V2_STOP_CODEC": "https://libp2p.github.io/js-libp2p/variables/_libp2p_circuit_relay_v2.RELAY_V2_STOP_CODEC.html",
|
10
|
-
"circuitRelayServer": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit_relay_v2.circuitRelayServer.html",
|
11
|
-
"circuitRelayTransport": "https://libp2p.github.io/js-libp2p/functions/_libp2p_circuit_relay_v2.circuitRelayTransport.html"
|
12
|
-
}
|