@helia/libp2p 1.0.0-3a1dd561 → 1.0.0-883ff053
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +36 -36
- package/dist/index.min.js.map +3 -3
- package/dist/src/routing.d.ts.map +1 -1
- package/dist/src/routing.js +2 -1
- package/dist/src/routing.js.map +1 -1
- package/package.json +5 -4
- package/src/routing.ts +3 -2
package/dist/index.min.js
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.HeliaLibp2P = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var HeliaLibp2P=(()=>{var HC=Object.create;var dd=Object.defineProperty;var zC=Object.getOwnPropertyDescriptor;var GC=Object.getOwnPropertyNames;var WC=Object.getPrototypeOf,jC=Object.prototype.hasOwnProperty;var vr=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},$=(r,e)=>{for(var t in e)dd(r,t,{get:e[t],enumerable:!0})},w8=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of GC(e))!jC.call(r,o)&&o!==t&&dd(r,o,{get:()=>e[o],enumerable:!(n=zC(e,o))||n.enumerable});return r};var gi=(r,e,t)=>(t=r!=null?HC(WC(r)):{},w8(e||!r||!r.__esModule?dd(t,"default",{value:r,enumerable:!0}):t,r)),YC=r=>w8(dd({},"__esModule",{value:!0}),r);var Qm=vr(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.Netmask4Impl=void 0;Wi.ip2long=Gi;Wi.long2ip=nn;function nn(r){let e=(r&-16777216)>>>24,t=(r&255<<16)>>>16,n=(r&65280)>>>8,o=r&255;return[e,t,n,o].join(".")}var tR=48,rR=97,nR=65;function oR(r){let e=0,t=10,n="9",o=0;r.length>1&&r[o]==="0"&&(r[o+1]==="x"||r[o+1]==="X"?(o+=2,t=16):"0"<=r[o+1]&&r[o+1]<="9"&&(o++,t=8,n="7"));let s=o;for(;o<r.length;){if("0"<=r[o]&&r[o]<=n)e=e*t+(r.charCodeAt(o)-tR)>>>0;else if(t===16)if("a"<=r[o]&&r[o]<="f")e=e*t+(10+r.charCodeAt(o)-rR)>>>0;else if("A"<=r[o]&&r[o]<="F")e=e*t+(10+r.charCodeAt(o)-nR)>>>0;else break;else break;if(e>4294967295)throw new Error("too large");o++}if(o===s)throw new Error("empty octet");return[e,o]}function Gi(r){let e=[];for(let t=0;t<=3&&r.length!==0;t++){if(t>0){if(r[0]!==".")throw new Error("Invalid IP");r=r.substring(1)}let[n,o]=oR(r);r=r.substring(o),e.push(n)}if(r.length!==0)throw new Error("Invalid IP");switch(e.length){case 1:if(e[0]>4294967295)throw new Error("Invalid IP");return e[0]>>>0;case 2:if(e[0]>255||e[1]>16777215)throw new Error("Invalid IP");return(e[0]<<24|e[1])>>>0;case 3:if(e[0]>255||e[1]>255||e[2]>65535)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2])>>>0;case 4:if(e[0]>255||e[1]>255||e[2]>255||e[3]>255)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0;default:throw new Error("Invalid IP")}}var Ym=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(!n){let o=e.split("/",2);e=o[0],n=o[1]}if(n||(n=32),typeof n=="string"&&n.indexOf(".")>-1){try{this.maskLong=Gi(n)}catch{throw new Error("Invalid mask: "+n)}this.bitmask=NaN;for(let o=32;o>=0;o--)if(this.maskLong===4294967295<<32-o>>>0){this.bitmask=o;break}}else if(n||n===0)this.bitmask=parseInt(n,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(Gi(e)&this.maskLong)>>>0}catch{throw new Error("Invalid net address: "+e)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+n);this.size=Math.pow(2,32-this.bitmask),this.base=nn(this.netLong),this.mask=nn(this.maskLong),this.hostmask=nn(~this.maskLong),this.first=this.bitmask<=30?nn(this.netLong+1):this.base,this.last=this.bitmask<=30?nn(this.netLong+this.size-2):nn(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?nn(this.netLong+this.size-1):void 0}contains(e){return typeof e=="string"&&(e.indexOf("/")>0||e.split(".").length!==4)&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):(Gi(e)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0}next(e=1){return new r(nn(this.netLong+this.size*e),this.mask)}forEach(e){let t=Gi(this.first),n=Gi(this.last),o=0;for(;t<=n;)e(nn(t),t,o),o++,t++}toString(){return this.base+"/"+this.bitmask}};Wi.Netmask4Impl=Ym});var r9=vr(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.Netmask6Impl=void 0;ji.ip6bigint=Zm;ji.bigint2ip6=Ks;var sR=Qm(),Xm=(1n<<128n)-1n;function Zm(r){let e=r.indexOf("%");e!==-1&&(r=r.substring(0,e));let t=r.lastIndexOf(":");if(t!==-1&&r.indexOf(".",t)!==-1){let n=r.substring(t+1),o=(0,sR.ip2long)(n),s=r.substring(0,t+1)+"0:0";return t9(s)&~0xffffffffn|BigInt(o)}return t9(r)}function t9(r){let e=r.indexOf("::"),t;if(e!==-1){let o=r.substring(0,e),s=r.substring(e+2),i=o===""?[]:o.split(":"),a=s===""?[]:s.split(":"),c=8-i.length-a.length;if(c<0)throw new Error("Invalid IPv6: too many groups");t=[...i,...Array(c).fill("0"),...a]}else t=r.split(":");if(t.length!==8)throw new Error("Invalid IPv6: expected 8 groups, got "+t.length);let n=0n;for(let o=0;o<8;o++){let s=t[o];if(s.length===0||s.length>4)throw new Error('Invalid IPv6: bad group "'+s+'"');let i=parseInt(s,16);if(isNaN(i)||i<0||i>65535)throw new Error('Invalid IPv6: bad group "'+s+'"');n=n<<16n|BigInt(i)}return n}function Ks(r){if(r<0n||r>Xm)throw new Error("Invalid IPv6 address value");let e=[];for(let i=0;i<8;i++)e.unshift(Number(r&0xffffn)),r>>=16n;let t=-1,n=0,o=-1,s=0;for(let i=0;i<8;i++)e[i]===0?o===-1?(o=i,s=1):s++:(s>n&&s>=2&&(t=o,n=s),o=-1,s=0);if(s>n&&s>=2&&(t=o,n=s),t!==-1&&t+n===8&&t>0)return e.slice(0,t).map(a=>a.toString(16)).join(":")+"::";if(t===0)return"::"+e.slice(n).map(a=>a.toString(16)).join(":");if(t>0){let i=e.slice(0,t).map(c=>c.toString(16)),a=e.slice(t+n).map(c=>c.toString(16));return i.join(":")+"::"+a.join(":")}else return e.map(i=>i.toString(16)).join(":")}var Jm=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(n==null){let o=e.indexOf("/");o!==-1?(n=parseInt(e.substring(o+1),10),e=e.substring(0,o)):n=128}if(isNaN(n)||n<0||n>128)throw new Error("Invalid mask for IPv6: "+n);this.bitmask=n,this.bitmask===0?this.maskBigint=0n:this.maskBigint=Xm>>BigInt(128-this.bitmask)<<BigInt(128-this.bitmask);try{this.netBigint=Zm(e)&this.maskBigint}catch{throw new Error("Invalid IPv6 net address: "+e)}this.size=Number(1n<<BigInt(128-this.bitmask)),this.base=Ks(this.netBigint),this.mask=Ks(this.maskBigint),this.hostmask=Ks(~this.maskBigint&Xm),this.first=this.base,this.last=Ks(this.netBigint+(1n<<BigInt(128-this.bitmask))-1n),this.broadcast=void 0}contains(e){return typeof e=="string"&&e.indexOf("/")>0&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.last):(Zm(e)&this.maskBigint)===this.netBigint}next(e=1){let t=1n<<BigInt(128-this.bitmask);return new r(Ks(this.netBigint+t*BigInt(e)),this.bitmask)}forEach(e){let t=this.netBigint,n=1n<<BigInt(128-this.bitmask),o=this.netBigint+n-1n,s=0;for(;t<=o;)e(Ks(t),Number(t),s),s++,t++}toString(){return this.base+"/"+this.bitmask}};ji.Netmask6Impl=Jm});var n9=vr(Ao=>{"use strict";Object.defineProperty(Ao,"__esModule",{value:!0});Ao.long2ip=Ao.ip2long=Ao.Netmask=void 0;var cf=Qm();Object.defineProperty(Ao,"ip2long",{enumerable:!0,get:function(){return cf.ip2long}});Object.defineProperty(Ao,"long2ip",{enumerable:!0,get:function(){return cf.long2ip}});var iR=r9(),e3=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");(e.indexOf("/")!==-1?e.substring(0,e.indexOf("/")):e).indexOf(":")!==-1?this._impl=new iR.Netmask6Impl(e,t):this._impl=new cf.Netmask4Impl(e,t),this.base=this._impl.base,this.mask=this._impl.mask,this.hostmask=this._impl.hostmask,this.bitmask=this._impl.bitmask,this.size=this._impl.size,this.first=this._impl.first,this.last=this._impl.last,this.broadcast=this._impl.broadcast,this._impl instanceof cf.Netmask4Impl?(this.maskLong=this._impl.maskLong,this.netLong=this._impl.netLong):(this.maskLong=0,this.netLong=0)}contains(e){return typeof e=="string"&&(e.indexOf("/")>0?e=new r(e):e.indexOf(":")===-1&&e.split(".").length!==4&&(e=new r(e))),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):this._impl.contains(e)}next(e=1){let t=this._impl.next(e);return new r(t.base,t.bitmask)}forEach(e){this._impl.forEach(e)}toString(){return this._impl.toString()}};Ao.Netmask=e3});var Sb=vr((Fee,Q3)=>{"use strict";var nP=Object.prototype.hasOwnProperty,$t="~";function Nl(){}Object.create&&(Nl.prototype=Object.create(null),new Nl().__proto__||($t=!1));function oP(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function vb(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new oP(t,n||r,o),i=$t?$t+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function kh(r,e){--r._eventsCount===0?r._events=new Nl:delete r._events[e]}function Lt(){this._events=new Nl,this._eventsCount=0}Lt.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)nP.call(t,n)&&e.push($t?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Lt.prototype.listeners=function(e){var t=$t?$t+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Lt.prototype.listenerCount=function(e){var t=$t?$t+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Lt.prototype.emit=function(e,t,n,o,s,i){var a=$t?$t+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,d;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(d=1,u=new Array(l-1);d<l;d++)u[d-1]=arguments[d];c.fn.apply(c.context,u)}else{var f=c.length,h;for(d=0;d<f;d++)switch(c[d].once&&this.removeListener(e,c[d].fn,void 0,!0),l){case 1:c[d].fn.call(c[d].context);break;case 2:c[d].fn.call(c[d].context,t);break;case 3:c[d].fn.call(c[d].context,t,n);break;case 4:c[d].fn.call(c[d].context,t,n,o);break;default:if(!u)for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c[d].fn.apply(c[d].context,u)}}return!0};Lt.prototype.on=function(e,t,n){return vb(this,e,t,n,!1)};Lt.prototype.once=function(e,t,n){return vb(this,e,t,n,!0)};Lt.prototype.removeListener=function(e,t,n,o){var s=$t?$t+e:e;if(!this._events[s])return this;if(!t)return kh(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&kh(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:kh(this,s)}return this};Lt.prototype.removeAllListeners=function(e){var t;return e?(t=$t?$t+e:e,this._events[t]&&kh(this,t)):(this._events=new Nl,this._eventsCount=0),this};Lt.prototype.off=Lt.prototype.removeListener;Lt.prototype.addListener=Lt.prototype.on;Lt.prefixed=$t;Lt.EventEmitter=Lt;typeof Q3<"u"&&(Q3.exports=Lt)});var Ib=vr((ate,Cb)=>{Cb.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var zb=vr((Coe,Hb)=>{"use strict";function DP(r){return r>=55296&&r<=56319}function kP(r){return r>=56320&&r<=57343}Hb.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],DP(i)&&kP(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var Wb=vr((Ioe,Gb)=>{"use strict";function NP(r){return r>=55296&&r<=56319}function OP(r){return r>=56320&&r<=57343}Gb.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),OP(o)?s!=null&&NP(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var Yb=vr((Toe,jb)=>{"use strict";var MP=zb(),BP=Wb();jb.exports=MP.bind(null,BP)});var Zb=vr((_oe,Xb)=>{"use strict";var UP=Yb(),FP=/[\/\?<>\\:\*\|"]/g,$P=/[\x00-\x1f\x80-\x9f]/g,VP=/^\.+$/,KP=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;function qP(r,e){for(var t=r.length;t>0&&(r[t-1]==="."||r[t-1]===" ");)t--;return t<r.length?r.slice(0,t)+e:r}function Qb(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(FP,e).replace($P,e).replace(VP,e).replace(KP,e);return t=qP(t,e),UP(t,255)}Xb.exports=function(r,e){var t=e&&e.replacement||"",n=Qb(r,t);return t===""?n:Qb(n,"")}});var Jb=vr(pa=>{"use strict";var zP="[object ArrayBuffer]",Gn=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===zP}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},S4="string",GP=/^[0-9a-f\s]+$/i,WP=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,jP=/^[a-zA-Z0-9-_]+$/,t1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=Gn.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},br=class{static toString(e,t=!1){let n=Gn.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},r1=class r{static isHex(e){return typeof e===S4&&GP.test(e)}static isBase64(e){return typeof e===S4&&WP.test(e)}static isBase64Url(e){return typeof e===S4&&jP.test(e)}static ToString(e,t="utf8"){let n=Gn.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return br.toString(n,!0);case"utf16":case"utf16be":return br.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return br.fromString(e,!0);case"utf16":case"utf16be":return br.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Gn.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return t1.fromString(e);case"utf16":case"utf16be":return br.fromString(e);case"utf16le":case"usc2":return br.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return t1.toString(e);case"utf16":case"utf16be":return br.toString(e);case"utf16le":case"usc2":return br.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=Gn.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=Gn.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return br.toString(e,t)}static FromUtf16String(e,t=!1){return br.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};r1.DEFAULT_UTF8_ENCODING="utf8";function YP(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function QP(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function XP(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}pa.BufferSourceConverter=Gn;pa.Convert=r1;pa.assign=YP;pa.combine=QP;pa.isEqual=XP});var uA=vr(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});An.parseCookie=cA;An.parse=cA;An.stringifyCookie=HF;An.stringifySetCookie=ep;An.serialize=ep;An.parseSetCookie=zF;An.stringifySetCookie=ep;An.serialize=ep;var iA=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,aA=/^[\u0021-\u003A\u003C-\u007E]*$/,FF=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,$F=/^[\u0020-\u003A\u003D-\u007E]*$/,VF=/^-?\d+$/,KF=Object.prototype.toString,qF=(()=>{let r=function(){};return r.prototype=Object.create(null),r})();function cA(r,e){let t=new qF,n=r.length;if(n<2)return t;let o=e?.decode||lA,s=0;do{let i=V5(r,s,n);if(i===-1)break;let a=$5(r,s,n);if(i>a){s=r.lastIndexOf(";",i-1)+1;continue}let c=jo(r,s,i);t[c]===void 0&&(t[c]=o(jo(r,i+1,a))),s=a+1}while(s<n);return t}function HF(r,e){let t=e?.encode||encodeURIComponent,n=[];for(let o of Object.keys(r)){let s=r[o];if(s===void 0)continue;if(!iA.test(o))throw new TypeError(`cookie name is invalid: ${o}`);let i=t(s);if(!aA.test(i))throw new TypeError(`cookie val is invalid: ${s}`);n.push(`${o}=${i}`)}return n.join("; ")}function ep(r,e,t){let n=typeof r=="object"?r:{...t,name:r,value:String(e)},s=(typeof e=="object"?e:t)?.encode||encodeURIComponent;if(!iA.test(n.name))throw new TypeError(`argument name is invalid: ${n.name}`);let i=n.value?s(n.value):"";if(!aA.test(i))throw new TypeError(`argument val is invalid: ${n.value}`);let a=n.name+"="+i;if(n.maxAge!==void 0){if(!Number.isInteger(n.maxAge))throw new TypeError(`option maxAge is invalid: ${n.maxAge}`);a+="; Max-Age="+n.maxAge}if(n.domain){if(!FF.test(n.domain))throw new TypeError(`option domain is invalid: ${n.domain}`);a+="; Domain="+n.domain}if(n.path){if(!$F.test(n.path))throw new TypeError(`option path is invalid: ${n.path}`);a+="; Path="+n.path}if(n.expires){if(!GF(n.expires)||!Number.isFinite(n.expires.valueOf()))throw new TypeError(`option expires is invalid: ${n.expires}`);a+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(a+="; HttpOnly"),n.secure&&(a+="; Secure"),n.partitioned&&(a+="; Partitioned"),n.priority)switch(typeof n.priority=="string"?n.priority.toLowerCase():void 0){case"low":a+="; Priority=Low";break;case"medium":a+="; Priority=Medium";break;case"high":a+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${n.priority}`)}if(n.sameSite)switch(typeof n.sameSite=="string"?n.sameSite.toLowerCase():n.sameSite){case!0:case"strict":a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"none":a+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${n.sameSite}`)}return a}function zF(r,e){let t=e?.decode||lA,n=r.length,o=$5(r,0,n),s=V5(r,0,o),i=s===-1?{name:"",value:t(jo(r,0,o))}:{name:jo(r,0,s),value:t(jo(r,s+1,o))},a=o+1;for(;a<n;){let c=$5(r,a,n),l=V5(r,a,c),u=l===-1?jo(r,a,c):jo(r,a,l),d=l===-1?void 0:jo(r,l+1,c);switch(u.toLowerCase()){case"httponly":i.httpOnly=!0;break;case"secure":i.secure=!0;break;case"partitioned":i.partitioned=!0;break;case"domain":i.domain=d;break;case"path":i.path=d;break;case"max-age":d&&VF.test(d)&&(i.maxAge=Number(d));break;case"expires":if(!d)break;let f=new Date(d);Number.isFinite(f.valueOf())&&(i.expires=f);break;case"priority":if(!d)break;let h=d.toLowerCase();(h==="low"||h==="medium"||h==="high")&&(i.priority=h);break;case"samesite":if(!d)break;let p=d.toLowerCase();(p==="lax"||p==="strict"||p==="none")&&(i.sameSite=p);break}a=c+1}return i}function $5(r,e,t){let n=r.indexOf(";",e);return n===-1?t:n}function V5(r,e,t){let n=r.indexOf("=",e);return n<t?n:-1}function jo(r,e,t){let n=e,o=t;do{let s=r.charCodeAt(n);if(s!==32&&s!==9)break}while(++n<o);for(;o>n;){let s=r.charCodeAt(o-1);if(s!==32&&s!==9)break;o--}return r.slice(n,o)}function lA(r){if(r.indexOf("%")===-1)return r;try{return decodeURIComponent(r)}catch{return r}}function GF(r){return KF.call(r)==="[object Date]"}});var X$={};$(X$,{libp2pDefaults:()=>s2,withLibp2p:()=>Q$});var x8=Symbol.for("@libp2p/connection");var is=Symbol.for("@libp2p/content-routing");var tr=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}},fd=class extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}},hd=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},C=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},In=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},pc=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}},mc=class extends Error{static name="UnsupportedOperationError";constructor(e="Unsupported operation"){super(e),this.name="UnsupportedOperationError"}};var as=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}},yi=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}},Sr=class extends Error{static name="MuxerClosedError";constructor(e="The muxer is closed"){super(e),this.name="MuxerClosedError"}},bi=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}};var jr=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},gc=class extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}},Pe=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},wi=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},Yr=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},pd=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},md=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},gd=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},oe=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}},cs=class extends Error{static name="ProtocolError";constructor(e="Protocol error"){super(e),this.name="ProtocolError"}},co=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},Ar=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var lo=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}},ls=class extends Error{static name="ListenError";constructor(e="Listen error"){super(e),this.name="ListenError"}},yc=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},yd=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},xi=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Cr=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var bd=class extends Event{data;constructor(e,t){super("message",t),this.data=e}},uo=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}},wd=class extends uo{constructor(e,t){super(!0,e,t)}},xd=class extends uo{constructor(e,t){super(!1,e,t)}};var us=Symbol.for("@libp2p/peer-discovery");var Ed=Symbol.for("@libp2p/peer-id");function Qr(r){return!!r?.[Ed]}var ds=Symbol.for("@libp2p/peer-routing");var fs="keep-alive";function vd(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Ir(...r){let e=[];for(let t of r)vd(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Xr(...r){let e=[];for(let t of r)vd(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var fo=Symbol.for("@libp2p/transport");var bc;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(bc||(bc={}));function QC(r){return typeof r?.handleEvent=="function"}function XC(r){return(r!==!0&&r!==!1&&r?.once)??!1}var se=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){let o=XC(n);super.addEventListener(e,i=>{if(o){let a=this.#e.get(i.type);a!=null&&(a=a.filter(({callback:c})=>c!==t),this.#e.set(i.type,a))}QC(t)?t.handleEvent(i):t(i)},n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:o})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var ue=Symbol.for("@libp2p/service-capabilities"),rr=Symbol.for("@libp2p/service-dependencies");var u2={};$(u2,{base58btc:()=>Ee,base58flickr:()=>sI});var OV=new Uint8Array(0);function E8(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Tn(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return hs(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return hs(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function v8(r){return new TextEncoder().encode(r)}function S8(r){return new TextDecoder().decode(r)}function ZC(r){return r?.buffer instanceof ArrayBuffer}function hs(r){return ZC(r)?r:r.slice()}function JC(r,e,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),o=0;o<n.length;o++)n[o]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),a=i.charCodeAt(0);if(n[a]!==255)throw new TypeError(i+" is ambiguous");if(n[a]=s,t){var c=i.toLowerCase().charCodeAt(0),l=i.toUpperCase().charCodeAt(0);c!==a&&(n[c]=s),l!==a&&(n[l]=s)}}var u=r.length,d=r.charAt(0),f=Math.log(u)/Math.log(256),h=Math.log(256)/Math.log(u);function p(m){if(m instanceof Uint8Array||(ArrayBuffer.isView(m)?m=new Uint8Array(m.buffer,m.byteOffset,m.byteLength):Array.isArray(m)&&(m=Uint8Array.from(m))),!(m instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(m.length===0)return"";for(var b=0,w=0,x=0,v=m.length;x!==v&&m[x]===0;)x++,b++;for(var A=(v-x)*h+1>>>0,S=new Uint8Array(A);x!==v;){for(var I=m[x],k=0,K=A-1;(I!==0||k<w)&&K!==-1;K--,k++)I+=256*S[K]>>>0,S[K]=I%u>>>0,I=I/u>>>0;if(I!==0)throw new Error("Non-zero carry");w=k,x++}for(var F=A-w;F!==A&&S[F]===0;)F++;for(var E=d.repeat(b);F<A;++F)E+=r.charAt(S[F]);return E}function y(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var b=0;if(m[b]!==" "){for(var w=0,x=0;m[b]===d;)w++,b++;for(var v=(m.length-b)*f+1>>>0,A=new Uint8Array(v);m[b];){var S=n[m.charCodeAt(b)];if(S===255)return;for(var I=0,k=v-1;(S!==0||I<x)&&k!==-1;k--,I++)S+=u*A[k]>>>0,A[k]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");x=I,b++}if(m[b]!==" "){for(var K=v-x;K!==v&&A[K]===0;)K++;for(var F=new Uint8Array(w+(v-K)),E=w;K!==v;)F[E++]=A[K++];return F}}}function g(m){var b=y(m);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:p,decodeUnsafe:y,decode:g}}var eI=JC,tI=eI,C8=tI;var i2=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},a2=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return I8(this,e)}},c2=class{decoders;constructor(e){this.decoders=e}or(e){return I8(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function I8(r,e){return new c2({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var l2=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new i2(e,t,n),this.decoder=new a2(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ei({name:r,prefix:e,encode:t,decode:n}){return new l2(r,e,t,n)}function ho({name:r,prefix:e,alphabet:t,caseInsensitive:n=!1}){let{encode:o,decode:s}=C8(t,r,n);return Ei({prefix:e,name:r,encode:o,decode:i=>Tn(s(i))})}function rI(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function nI(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function oI(r,e){let t={};for(let n=0;n<r.length;++n)if(t[r[n]]=n,e){let o=r[n].toLowerCase(),s=r[n].toUpperCase();o!==r[n]&&(t[o]=n),s!==r[n]&&(t[s]=n)}return t}function Ve({name:r,prefix:e,bitsPerChar:t,alphabet:n,caseInsensitive:o=!1}){let s=oI(n,o);return Ei({prefix:e,name:r,encode(i){return nI(i,n,t)},decode(i){return rI(i,s,t,r)}})}var Ee=ho({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),sI=ho({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var d2={};$(d2,{base32:()=>pr,base32hex:()=>lI,base32hexpad:()=>dI,base32hexpadupper:()=>fI,base32hexupper:()=>uI,base32pad:()=>aI,base32padupper:()=>cI,base32upper:()=>iI,base32z:()=>hI});var pr=Ve({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5,caseInsensitive:!0}),iI=Ve({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5,caseInsensitive:!0}),aI=Ve({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5,caseInsensitive:!0}),cI=Ve({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5,caseInsensitive:!0}),lI=Ve({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5,caseInsensitive:!0}),uI=Ve({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5,caseInsensitive:!0}),dI=Ve({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5,caseInsensitive:!0}),fI=Ve({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5,caseInsensitive:!0}),hI=Ve({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var f2={};$(f2,{base36:()=>ps,base36upper:()=>pI});var ps=ho({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz",caseInsensitive:!0}),pI=ho({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",caseInsensitive:!0});var Ue={};$(Ue,{Digest:()=>ms,create:()=>Nt,decode:()=>ve,equals:()=>p2,hasCode:()=>kI});var mI=R8,T8=128,gI=127,yI=~gI,bI=Math.pow(2,31);function R8(r,e,t){e=e||[],t=t||0;for(var n=t;r>=bI;)e[t++]=r&255|T8,r/=128;for(;r&yI;)e[t++]=r&255|T8,r>>>=7;return e[t]=r|0,R8.bytes=t-n+1,e}var wI=h2,xI=128,_8=127;function h2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw h2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&_8)<<o:(i&_8)*Math.pow(2,o),o+=7}while(i>=xI);return h2.bytes=s-n,t}var EI=Math.pow(2,7),vI=Math.pow(2,14),SI=Math.pow(2,21),AI=Math.pow(2,28),CI=Math.pow(2,35),II=Math.pow(2,42),TI=Math.pow(2,49),_I=Math.pow(2,56),RI=Math.pow(2,63),LI=function(r){return r<EI?1:r<vI?2:r<SI?3:r<AI?4:r<CI?5:r<II?6:r<TI?7:r<_I?8:r<RI?9:10},PI={encode:mI,decode:wI,encodingLength:LI},DI=PI,wc=DI;function xc(r,e=0){return[wc.decode(r,e),wc.decode.bytes]}function vi(r,e,t=0){return wc.encode(r,e,t),e}function Si(r){return wc.encodingLength(r)}function Nt(r,e){let t=e.byteLength,n=Si(r),o=n+Si(t),s=new Uint8Array(o+t);return vi(r,s,0),vi(t,s,n),s.set(e,o),new ms(r,t,e,s)}function ve(r){let e=Tn(r),[t,n]=xc(e),[o,s]=xc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ms(t,o,i,e)}function p2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&E8(r.bytes,t.bytes)}}var ms=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=hs(n),this.bytes=hs(o)}};function kI(r,e){return r.code===e}function L8(r,e){let{bytes:t,version:n}=r;return n===0?OI(t,m2(r),e??Ee.encoder):MI(t,m2(r),e??pr.encoder)}var P8=new WeakMap;function m2(r){let e=P8.get(r);if(e==null){let t=new Map;return P8.set(r,t),t}return e}var ie=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=hs(o),this["/"]=this.bytes}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ec)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==BI)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Nt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&p2(e.multihash,n.multihash)}toString(e){return L8(this,e)}toJSON(){return{"/":L8(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??D8(n,o,s.bytes))}else if(t[UI]===!0){let{version:n,multihash:o,code:s}=t,i=ve(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ec)throw new Error(`Version 0 CID must use dag-pb (code: ${Ec}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=D8(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ec,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=Tn(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new ms(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=xc(e.subarray(t));return t+=f,d},o=n(),s=Ec;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=NI(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return m2(s).set(n,e),s}};function NI(r,e){switch(r[0]){case"Q":{let t=e??Ee;return[Ee.prefix,t.decode(`${Ee.prefix}${r}`)]}case Ee.prefix:{let t=e??Ee;return[Ee.prefix,t.decode(r)]}case pr.prefix:{let t=e??pr;return[pr.prefix,t.decode(r)]}case ps.prefix:{let t=e??ps;return[ps.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function OI(r,e,t){let{prefix:n}=t;if(n!==Ee.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function MI(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ec=112,BI=18;function D8(r,e,t){let n=Si(r),o=n+Si(e),s=new Uint8Array(o+t.byteLength);return vi(r,s,0),vi(e,s,n),s.set(t,o),s}var UI=Symbol.for("@ipld/js-cid/CID");var g2={};$(g2,{identity:()=>nr});var k8=0,FI="identity",N8=Tn;function $I(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Nt(k8,N8(r))}var nr={code:k8,name:FI,encode:N8,digest:$I};function Z(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function VI(r){return r.buffer instanceof ArrayBuffer}function ae(r){return VI(r)?r:r.slice()}var O8="1.2.840.10045.3.1.7",M8="1.3.132.0.34",B8="1.3.132.0.35";async function U8(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function F8(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);t?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,ae(e.subarray()));return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function $8(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,ae(e),ae(t.subarray()));return n?.signal?.throwIfAborted(),s}function de(r=0){return new Uint8Array(r)}function Ke(r=0){return new Uint8Array(r)}function KI(r){return r?.buffer instanceof ArrayBuffer}function Ad(r){if(KI(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}function et(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=Ke(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Ad(t)}var K8=Symbol.for("@achingbrain/uint8arraylist");function V8(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function Ai(r){return!!r?.[K8]}var W=class r{bufs;length;[K8]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Ai(n)){t+=n.byteLength;for(let o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Ai(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=V8(this.bufs,e);return t.buf[t.index]}set(e,t){let n=V8(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Ai(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return et(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:et(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=n,s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let d=e-a;n.push(i.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Ai(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let d=0;d<s;d++)i[d]=-1;for(let d=0;d<o;d++)i[n[d]]=d;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let f=l;f>=0;f--){let h=this.get(d+f);if(n[f]!==h){u=Math.max(1,f-a[h]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ke(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=de(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=de(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=de(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ke(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=de(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=de(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=de(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=de(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=de(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Z(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var y2={};$(y2,{base10:()=>qI});var qI=ho({prefix:"9",name:"base10",alphabet:"0123456789"});var b2={};$(b2,{base16:()=>HI,base16upper:()=>zI});var HI=Ve({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4,caseInsensitive:!0}),zI=Ve({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4,caseInsensitive:!0});var w2={};$(w2,{base2:()=>GI});var GI=Ve({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var x2={};$(x2,{base256emoji:()=>XI});var q8=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}"),WI=q8.reduce((r,e,t)=>(r[t]=e,r),[]),jI=q8.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function YI(r){return r.reduce((e,t)=>(e+=WI[t],e),"")}function QI(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=jI[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var XI=Ei({prefix:"\u{1F680}",name:"base256emoji",encode:YI,decode:QI});var E2={};$(E2,{base64:()=>_n,base64pad:()=>vc,base64url:()=>Sc,base64urlpad:()=>ZI});var _n=Ve({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),vc=Ve({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Sc=Ve({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ZI=Ve({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var v2={};$(v2,{base8:()=>JI});var JI=Ve({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var S2={};$(S2,{identity:()=>eT});var eT=Ei({prefix:"\0",name:"identity",encode:r=>S8(r),decode:r=>v8(r)});var xK=new TextEncoder,EK=new TextDecoder;var Cd=85;var I2={};$(I2,{sha256:()=>pt,sha512:()=>nT});var rT=20;function Ac({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new C2(r,e,t,n,o)}var C2=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??rT,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?H8(n,this.code,t?.truncate):n.then(o=>H8(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function H8(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Nt(e,r)}function G8(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var pt=Ac({name:"sha2-256",code:18,encode:G8("SHA-256")}),nT=Ac({name:"sha2-512",code:19,encode:G8("SHA-512")});var gs={...S2,...w2,...v2,...y2,...b2,...d2,...f2,...u2,...E2,...x2},kK={...I2,...g2};function j8(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var W8=j8("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),T2=j8("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Ke(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),oT={utf8:W8,"utf-8":W8,hex:gs.base16,latin1:T2,ascii:T2,binary:T2,...gs},Id=oT;function O(r,e="utf8"){let t=Id[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function B(r,e="utf8"){let t=Id[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var sT=parseInt("11111",2),_2=parseInt("10000000",2),iT=parseInt("01111111",2),Y8={0:Cc,1:Cc,2:aT,3:uT,4:dT,5:lT,6:cT,16:Cc,22:Cc,48:Cc};function mr(r,e={offset:0}){let t=r[e.offset]&sT;if(e.offset++,Y8[t]!=null)return Y8[t](r,e);throw new Error("No decoder for tag "+t)}function Ic(r,e){let t=0;if((r[e.offset]&_2)===_2){let n=r[e.offset]&iT,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function Cc(r,e){Ic(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=mr(r,e);if(n===null)break;t.push(n)}return t}function aT(r,e){let t=Ic(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function cT(r,e){let t=Ic(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let d=0;d<c.length;d++)u+=c[d]<<d*7;a+=`.${u}`,c=[]}}return a}function lT(r,e){return e.offset++,null}function uT(r,e){let t=Ic(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function dT(r,e){let t=Ic(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function fT(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new W;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function Td(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=fT(r.byteLength);return new W(Uint8Array.from([e.byteLength|_2]),e)}function Ot(r){let e=new W,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new W(Uint8Array.from([2]),Td(e),e)}function Tc(r){let e=Uint8Array.from([0]),t=new W(e,r);return new W(Uint8Array.from([3]),Td(t),t)}function Q8(r){return new W(Uint8Array.from([4]),Td(r),r)}function Tr(r,e=48){let t=new W;for(let n of r)t.append(n);return new W(Uint8Array.from([e]),Td(t),t)}var hT=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),pT=Uint8Array.from([6,5,43,129,4,0,34]),mT=Uint8Array.from([6,5,43,129,4,0,35]),X8={ext:!0,kty:"EC",crv:"P-256"},Z8={ext:!0,kty:"EC",crv:"P-384"},J8={ext:!0,kty:"EC",crv:"P-521"},Ci=32,Ii=48,Ti=66;function e7(r){let e=mr(r);return R2(e)}function R2(r){let e=r[1],t=B(e,"base64url"),n=r[2][1][0],o=1,s,i;if(e.byteLength===Ci)return s=B(n.subarray(o,o+Ci),"base64url"),i=B(n.subarray(o+Ci),"base64url"),new bs({...X8,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===Ii)return s=B(n.subarray(o,o+Ii),"base64url"),i=B(n.subarray(o+Ii),"base64url"),new bs({...Z8,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===Ti)return s=B(n.subarray(o,o+Ti),"base64url"),i=B(n.subarray(o+Ti),"base64url"),new bs({...J8,key_ops:["sign"],d:t,x:s,y:i});throw new C(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function L2(r){let e=mr(r);return t7(e)}function t7(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===Ci*2+1)return n=B(e.subarray(t,t+Ci),"base64url"),o=B(e.subarray(t+Ci),"base64url"),new ys({...X8,key_ops:["verify"],x:n,y:o});if(e.byteLength===Ii*2+1)return n=B(e.subarray(t,t+Ii),"base64url"),o=B(e.subarray(t+Ii),"base64url"),new ys({...Z8,key_ops:["verify"],x:n,y:o});if(e.byteLength===Ti*2+1)return n=B(e.subarray(t,t+Ti),"base64url"),o=B(e.subarray(t+Ti),"base64url"),new ys({...J8,key_ops:["verify"],x:n,y:o});throw new C(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function r7(r){return Tr([Ot(Uint8Array.from([1])),Q8(O(r.d??"","base64url")),Tr([o7(r.crv)],160),Tr([Tc(new W(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function n7(r){return Tr([Ot(Uint8Array.from([1])),Tr([o7(r.crv)],160),Tr([Tc(new W(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function o7(r){if(r==="P-256")return hT;if(r==="P-384")return pT;if(r==="P-521")return mT;throw new C(`Invalid curve ${r}`)}async function s7(r="P-256"){let e=await U8(r);return new bs(e.privateKey)}var ys=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=n7(this.jwk)),this._raw}toMultihash(){return nr.digest(ct(this))}toCID(){return ie.createV1(114,this.toMultihash())}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}async verify(e,t,n){return $8(this.jwk,t,e,n)}},bs=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new ys({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=r7(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}async sign(e,t){return F8(this.jwk,e,t)}};function P2(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in r&&r.BYTES_PER_ELEMENT===1}function Ht(r,e=""){if(typeof r!="number"){let t=e&&`"${e}" `;throw new TypeError(`${t}expected number, got ${typeof r}`)}if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new RangeError(`${t}expected integer >= 0, got ${r}`)}}function mt(r,e,t=""){let n=P2(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`,l=i+"expected Uint8Array"+a+", got "+c;throw n?new RangeError(l):new TypeError(l)}return r}function Ln(r){if(typeof r!="function"||typeof r.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(Ht(r.outputLen),Ht(r.blockLen),r.outputLen<1)throw new Error('"outputLen" must be >= 1');if(r.blockLen<1)throw new Error('"blockLen" must be >= 1')}function _i(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function _d(r,e){mt(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new RangeError('"digestInto() output" expected to be of length >='+t)}function At(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function ws(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function _r(r,e){return r<<32-e|r>>>e}function Rd(r,e){return r<<e|r>>>32-e>>>0}var a7=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",gT=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Ld(r){if(mt(r),a7)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=gT[r[t]];return e}var Rn={_0:48,_9:57,A:65,F:70,a:97,f:102};function i7(r){if(r>=Rn._0&&r<=Rn._9)return r-Rn._0;if(r>=Rn.A&&r<=Rn.F)return r-(Rn.A-10);if(r>=Rn.a&&r<=Rn.f)return r-(Rn.a-10)}function _c(r){if(typeof r!="string")throw new TypeError("hex string expected, got "+typeof r);if(a7)try{return Uint8Array.fromHex(r)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}let e=r.length,t=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=i7(r.charCodeAt(s)),a=i7(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}var yT=async()=>{};async function c7(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await yT(),n+=s)}}function bT(r){if(typeof r!="string")throw new TypeError("string expected");return new Uint8Array(new TextEncoder().encode(r))}function D2(r,e=""){return typeof r=="string"?bT(r):mt(r,void 0,e)}function k2(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];mt(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function l7(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new TypeError("options must be object or undefined");return Object.assign(r,e)}function Rc(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.canXOF=n.canXOF,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function u7(r=32){Ht(r,"bytesLength");let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(r>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${r}`);return e.getRandomValues(new Uint8Array(r))}var N2=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function Pd(r,e,t){return r&e^~r&t}function Dd(r,e,t){return r&e^r&t^e&t}var xs=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ws(this.buffer)}update(e){_i(this),mt(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=ws(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){_i(this),_d(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,At(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let d=i;d<o;d++)t[d]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=ws(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<l;d++)a.setUint32(4*d,u[d],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Pn=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var gt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var kd=BigInt(4294967295),d7=BigInt(32);function wT(r,e=!1){return e?{h:Number(r&kd),l:Number(r>>d7&kd)}:{h:Number(r>>d7&kd)|0,l:Number(r&kd)|0}}function f7(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let s=0;s<t;s++){let{h:i,l:a}=wT(r[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var O2=(r,e,t)=>r>>>t,M2=(r,e,t)=>r<<32-t|e>>>t,Es=(r,e,t)=>r>>>t|e<<32-t,vs=(r,e,t)=>r<<32-t|e>>>t,Lc=(r,e,t)=>r<<64-t|e>>>t-32,Pc=(r,e,t)=>r>>>t-32|e<<64-t;function Zr(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var h7=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),p7=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,m7=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),g7=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,y7=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),b7=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var ET=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),po=new Uint32Array(64),B2=class extends xs{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)po[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let f=po[d-15],h=po[d-2],p=_r(f,7)^_r(f,18)^f>>>3,y=_r(h,17)^_r(h,19)^h>>>10;po[d]=y+po[d-7]+p+po[d-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:u}=this;for(let d=0;d<64;d++){let f=_r(a,6)^_r(a,11)^_r(a,25),h=u+f+Pd(a,c,l)+ET[d]+po[d]|0,y=(_r(n,2)^_r(n,13)^_r(n,22))+Dd(n,o,s)|0;u=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+y|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,s,i,a,c,l,u)}roundClean(){At(po)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),At(this.buffer)}},U2=class extends B2{A=Pn[0]|0;B=Pn[1]|0;C=Pn[2]|0;D=Pn[3]|0;E=Pn[4]|0;F=Pn[5]|0;G=Pn[6]|0;H=Pn[7]|0;constructor(){super(32)}};var w7=f7(["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))),vT=w7[0],ST=w7[1],mo=new Uint32Array(80),go=new Uint32Array(80),F2=class extends xs{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:d,Fl:f,Gh:h,Gl:p,Hh:y,Hl:g}=this;return[e,t,n,o,s,i,a,c,l,u,d,f,h,p,y,g]}set(e,t,n,o,s,i,a,c,l,u,d,f,h,p,y,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=d|0,this.Fl=f|0,this.Gh=h|0,this.Gl=p|0,this.Hh=y|0,this.Hl=g|0}process(e,t){for(let w=0;w<16;w++,t+=4)mo[w]=e.getUint32(t),go[w]=e.getUint32(t+=4);for(let w=16;w<80;w++){let x=mo[w-15]|0,v=go[w-15]|0,A=Es(x,v,1)^Es(x,v,8)^O2(x,v,7),S=vs(x,v,1)^vs(x,v,8)^M2(x,v,7),I=mo[w-2]|0,k=go[w-2]|0,K=Es(I,k,19)^Lc(I,k,61)^O2(I,k,6),F=vs(I,k,19)^Pc(I,k,61)^M2(I,k,6),E=m7(S,F,go[w-7],go[w-16]),P=g7(E,A,K,mo[w-7],mo[w-16]);mo[w]=P|0,go[w]=E|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:d,El:f,Fh:h,Fl:p,Gh:y,Gl:g,Hh:m,Hl:b}=this;for(let w=0;w<80;w++){let x=Es(d,f,14)^Es(d,f,18)^Lc(d,f,41),v=vs(d,f,14)^vs(d,f,18)^Pc(d,f,41),A=d&h^~d&y,S=f&p^~f&g,I=y7(b,v,S,ST[w],go[w]),k=b7(I,m,x,A,vT[w],mo[w]),K=I|0,F=Es(n,o,28)^Lc(n,o,34)^Lc(n,o,39),E=vs(n,o,28)^Pc(n,o,34)^Pc(n,o,39),P=n&s^n&a^s&a,L=o&i^o&c^i&c;m=y|0,b=g|0,y=h|0,g=p|0,h=d|0,p=f|0,{h:d,l:f}=Zr(l|0,u|0,k|0,K|0),l=a|0,u=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let _=h7(K,E,L);n=p7(_,k,F,P),o=_|0}({h:n,l:o}=Zr(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=Zr(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=Zr(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=Zr(this.Dh|0,this.Dl|0,l|0,u|0),{h:d,l:f}=Zr(this.Eh|0,this.El|0,d|0,f|0),{h,l:p}=Zr(this.Fh|0,this.Fl|0,h|0,p|0),{h:y,l:g}=Zr(this.Gh|0,this.Gl|0,y|0,g|0),{h:m,l:b}=Zr(this.Hh|0,this.Hl|0,m|0,b|0),this.set(n,o,s,i,a,c,l,u,d,f,h,p,y,g,m,b)}roundClean(){At(mo,go)}destroy(){this.destroyed=!0,At(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},$2=class extends F2{Ah=gt[0]|0;Al=gt[1]|0;Bh=gt[2]|0;Bl=gt[3]|0;Ch=gt[4]|0;Cl=gt[5]|0;Dh=gt[6]|0;Dl=gt[7]|0;Eh=gt[8]|0;El=gt[9]|0;Fh=gt[10]|0;Fl=gt[11]|0;Gh=gt[12]|0;Gl=gt[13]|0;Hh=gt[14]|0;Hl=gt[15]|0;constructor(){super(64)}};var gr=Rc(()=>new U2,N2(1));var Jr=Rc(()=>new $2,N2(3));var ce=(r,e,t)=>mt(r,e,t),K2=Ht,Ri=Ld,tt=(...r)=>k2(...r),Li=r=>_c(r),Ss=P2,As=r=>u7(r),Od=BigInt(0),V2=BigInt(1);function Rr(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new TypeError(t+"expected boolean, got type="+typeof r)}return r}function Md(r){if(typeof r=="bigint"){if(!Nd(r))throw new RangeError("positive bigint expected, got "+r)}else K2(r);return r}function Lr(r,e=""){if(typeof r!="number"){let t=e&&`"${e}" `;throw new TypeError(t+"expected number, got type="+typeof r)}if(!Number.isSafeInteger(r)){let t=e&&`"${e}" `;throw new RangeError(t+"expected safe integer, got "+r)}}function Dc(r){let e=Md(r).toString(16);return e.length&1?"0"+e:e}function x7(r){if(typeof r!="string")throw new TypeError("hex string expected, got "+typeof r);return r===""?Od:BigInt("0x"+r)}function Cs(r){return x7(Ld(r))}function or(r){return x7(Ld(yo(mt(r)).reverse()))}function Bd(r,e){if(Ht(e),e===0)throw new RangeError("zero length");r=Md(r);let t=r.toString(16);if(t.length>e*2)throw new RangeError("number too large");return _c(t.padStart(e*2,"0"))}function kc(r,e){return Bd(r,e).reverse()}function E7(r,e){if(r=ce(r),e=ce(e),r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function yo(r){return Uint8Array.from(ce(r))}function Ud(r){if(typeof r!="string")throw new TypeError("ascii string expected, got "+typeof r);return Uint8Array.from(r,(e,t)=>{let n=e.charCodeAt(0);if(e.length!==1||n>127)throw new RangeError(`string contains non-ASCII character "${r[t]}" with code ${n} at position ${t}`);return n})}var Nd=r=>typeof r=="bigint"&&Od<=r;function AT(r,e,t){return Nd(r)&&Nd(e)&&Nd(t)&&e<=r&&r<t}function Dn(r,e,t,n){if(!AT(e,t,n))throw new RangeError("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Pi(r){if(r<Od)throw new Error("expected non-negative bigint, got "+r);let e;for(e=0;r>Od;r>>=V2,e+=1);return e}var Nc=r=>(V2<<BigInt(r))-V2;function v7(r,e,t){if(Ht(r,"hashLen"),Ht(e,"qByteLen"),typeof t!="function")throw new TypeError("hmacFn must be a function");let n=g=>new Uint8Array(g),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),u=0,d=()=>{c.fill(1),l.fill(0),u=0},f=(...g)=>t(l,tt(c,...g)),h=(g=o)=>{l=f(s,g),c=f(),g.length!==0&&(l=f(i,g),c=f())},p=()=>{if(u++>=a)throw new Error("drbg: tried max amount of iterations");let g=0,m=[];for(;g<e;){c=f();let b=c.slice();m.push(b),g+=c.length}return tt(...m)};return(g,m)=>{d(),h(g);let b;for(;(b=m(p()))===void 0;)h();return d(),b}}function sr(r,e={},t={}){if(Object.prototype.toString.call(r)!=="[object Object]")throw new TypeError("expected valid options object");function n(s,i,a){if(!a&&i!=="function"&&!Object.hasOwn(r,s))throw new TypeError(`param "${s}" is invalid: expected own property`);let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new TypeError(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}var q2=()=>{throw new Error("not implemented")};var yt=BigInt(0),qe=BigInt(1),Is=BigInt(2),I7=BigInt(3),T7=BigInt(4),_7=BigInt(5),CT=BigInt(7),R7=BigInt(8),IT=BigInt(9),L7=BigInt(16);function Fe(r,e){if(e<=yt)throw new Error("mod: expected positive modulus, got "+e);let t=r%e;return t>=yt?t:e+t}function Ne(r,e,t){if(e<yt)throw new Error("pow2: expected non-negative exponent, got "+e);let n=r;for(;e-- >yt;)n*=n,n%=t;return n}function S7(r,e){if(r===yt)throw new Error("invert: expected non-zero number");if(e<=yt)throw new Error("invert: expected positive modulus, got "+e);let t=Fe(r,e),n=e,o=yt,s=qe,i=qe,a=yt;for(;t!==yt;){let l=n/t,u=n-t*l,d=o-i*l,f=s-a*l;n=t,t=u,o=i,s=a,i=d,a=f}if(n!==qe)throw new Error("invert: does not exist");return Fe(o,e)}function H2(r,e,t){let n=r;if(!n.eql(n.sqr(e),t))throw new Error("Cannot find square root")}function P7(r,e){let t=r,n=(t.ORDER+qe)/T7,o=t.pow(e,n);return H2(t,o,e),o}function TT(r,e){let t=r,n=(t.ORDER-_7)/R7,o=t.mul(e,Is),s=t.pow(o,n),i=t.mul(e,s),a=t.mul(t.mul(i,Is),s),c=t.mul(i,t.sub(a,t.ONE));return H2(t,c,e),c}function _T(r){let e=Di(r),t=D7(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+CT)/L7;return((a,c)=>{let l=a,u=l.pow(c,i),d=l.mul(u,n),f=l.mul(u,o),h=l.mul(u,s),p=l.eql(l.sqr(d),c),y=l.eql(l.sqr(f),c);u=l.cmov(u,d,p),d=l.cmov(h,f,y);let g=l.eql(l.sqr(d),c),m=l.cmov(u,d,g);return H2(l,m,c),m})}function D7(r){if(r<I7)throw new Error("sqrt is not defined for small field");let e=r-qe,t=0;for(;e%Is===yt;)e/=Is,t++;let n=Is,o=Di(r);for(;A7(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return P7;let s=o.pow(n,e),i=(e+qe)/Is;return function(c,l){let u=c;if(u.is0(l))return l;if(A7(u,l)!==1)throw new Error("Cannot find square root");let d=t,f=u.mul(u.ONE,s),h=u.pow(l,e),p=u.pow(l,i);for(;!u.eql(h,u.ONE);){if(u.is0(h))return u.ZERO;let y=1,g=u.sqr(h);for(;!u.eql(g,u.ONE);)if(y++,g=u.sqr(g),y===d)throw new Error("Cannot find square root");let m=qe<<BigInt(d-y-1),b=u.pow(f,m);d=y,f=u.sqr(b),h=u.mul(h,f),p=u.mul(p,b)}return p}}function RT(r){return r%T7===I7?P7:r%R7===_7?TT:r%L7===IT?_T(r):D7(r)}var kn=(r,e)=>(Fe(r,e)&qe)===qe,LT=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function z2(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=LT.reduce((n,o)=>(n[o]="function",n),e);if(sr(r,t),Lr(r.BYTES,"BYTES"),Lr(r.BITS,"BITS"),r.BYTES<1||r.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(r.ORDER<=qe)throw new Error("invalid field: expected ORDER > 1, got "+r.ORDER);return r}function PT(r,e,t){let n=r;if(t<yt)throw new Error("invalid exponent, negatives unsupported");if(t===yt)return n.ONE;if(t===qe)return e;let o=n.ONE,s=e;for(;t>yt;)t&qe&&(o=n.mul(o,s)),s=n.sqr(s),t>>=qe;return o}function Oc(r,e,t=!1){let n=r,o=new Array(e.length).fill(t?n.ZERO:void 0),s=e.reduce((a,c,l)=>n.is0(c)?a:(o[l]=a,n.mul(a,c)),n.ONE),i=n.inv(s);return e.reduceRight((a,c,l)=>n.is0(c)?a:(o[l]=n.mul(a,o[l]),n.mul(a,c)),i),o}function A7(r,e){let t=r,n=(t.ORDER-qe)/Is,o=t.pow(e,n),s=t.eql(o,t.ONE),i=t.eql(o,t.ZERO),a=t.eql(o,t.neg(t.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function DT(r,e){if(e!==void 0&&K2(e),r<=yt)throw new Error("invalid n length: expected positive n, got "+r);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);let t=Pi(r);if(e!==void 0&&e<t)throw new Error(`invalid n length: expected bit length (${t}) >= n.length (${e})`);let n=e!==void 0?e:t,o=Math.ceil(n/8);return{nBitLength:n,nByteLength:o}}var C7=new WeakMap,Fd=class{ORDER;BITS;BYTES;isLE;ZERO=yt;ONE=qe;_lengths;_mod;constructor(e,t={}){if(e<=qe)throw new Error("invalid field: expected ORDER > 1, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:t.sqrt,enumerable:!0}),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=Object.freeze(t.allowedLengths.slice())),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=DT(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return Fe(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return yt<=e&&e<this.ORDER}is0(e){return e===yt}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&qe)===qe}neg(e){return Fe(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return Fe(e*e,this.ORDER)}add(e,t){return Fe(e+t,this.ORDER)}sub(e,t){return Fe(e-t,this.ORDER)}mul(e,t){return Fe(e*t,this.ORDER)}pow(e,t){return PT(this,e,t)}div(e,t){return Fe(e*S7(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return S7(e,this.ORDER)}sqrt(e){let t=C7.get(this);return t||C7.set(this,t=RT(this.ORDER)),t(this,e)}toBytes(e){return this.isLE?kc(e,this.BYTES):Bd(e,this.BYTES)}fromBytes(e,t=!1){ce(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?or(e):Cs(e);if(a&&(c=Fe(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return Oc(this,e)}cmov(e,t,n){return Rr(n,"condition"),n?t:e}};Object.freeze(Fd.prototype);function Di(r,e={}){return new Fd(r,e)}function k7(r){if(typeof r!="bigint")throw new Error("field order must be bigint");if(r<=qe)throw new Error("field order must be greater than 1");let e=Pi(r-qe);return Math.ceil(e/8)}function G2(r){let e=k7(r);return e+Math.ceil(e/2)}function W2(r,e,t=!1){ce(r);let n=r.length,o=k7(e),s=Math.max(G2(e),16);if(n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?or(r):Cs(r),a=Fe(i,e-qe)+qe;return t?kc(a,o):Bd(a,o)}var ki=BigInt(0),Ts=BigInt(1);function Mc(r,e){let t=e.negate();return r?t:e}function _s(r,e){let t=Oc(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function B7(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function j2(r,e){B7(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=Nc(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function N7(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=Ts);let l=e*n,u=l+Math.abs(a)-1,d=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:u,isZero:d,isNeg:f,isNegF:h,offsetF:l}}var Y2=new WeakMap,U7=new WeakMap;function Q2(r){return U7.get(r)||1}function O7(r){if(r!==ki)throw new Error("invalid wNAF")}var Ni=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>ki;)t&Ts&&(n=n.add(o)),o=o.double(),t>>=Ts;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=j2(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=j2(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:d,isNegF:f,offsetF:h}=N7(n,a,i);n=c,u?s=s.add(Mc(f,t[h])):o=o.add(Mc(d,t[l]))}return O7(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=j2(e,this.bits);for(let i=0;i<s.windows&&n!==ki;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=N7(n,i,s);if(n=a,!l){let d=t[c];o=o.add(u?d.negate():d)}}return O7(n),o}getPrecomputes(e,t,n){let o=Y2.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),Y2.set(t,o))),o}cached(e,t,n){let o=Q2(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=Q2(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){B7(t,this.bits),U7.set(e,t),Y2.delete(e)}hasCache(e){return Q2(e)!==1}};function F7(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>ki||n>ki;)t&Ts&&(s=s.add(o)),n&Ts&&(i=i.add(o)),o=o.double(),t>>=Ts,n>>=Ts;return{p1:s,p2:i}}function M7(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return z2(e),e}else return Di(r,{isLE:t})}function $d(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>ki))throw new Error(`CURVE.${c} must be positive bigint`)}let o=M7(e.p,t.Fp,n),s=M7(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function Oi(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var bo=BigInt(0),lt=BigInt(1),X2=BigInt(2),kT=BigInt(8);function NT(r,e,t,n){let o=r.sqr(t),s=r.sqr(n),i=r.add(r.mul(e.a,o),s),a=r.add(r.ONE,r.mul(e.d,r.mul(o,s)));return r.eql(i,a)}function $7(r,e={}){let t=e,n=$d("edwards",r,t,t.FpFnLE),{Fp:o,Fn:s}=n,i=n.CURVE,{h:a}=i;sr(t,{},{uvRatio:"function"});let c=X2<<BigInt(s.BYTES*8)-lt,l=y=>o.create(y),u=t.uvRatio===void 0?(y,g)=>{try{return{isValid:!0,value:o.sqrt(o.div(y,g))}}catch{return{isValid:!1,value:bo}}}:t.uvRatio;if(!NT(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function d(y,g,m=!1){let b=m?lt:bo;return Dn("coordinate "+y,g,b,c),g}function f(y){if(!(y instanceof h))throw new Error("EdwardsPoint expected")}class h{static BASE=new h(i.Gx,i.Gy,lt,l(i.Gx*i.Gy));static ZERO=new h(bo,lt,lt,bo);static Fp=o;static Fn=s;X;Y;Z;T;constructor(g,m,b,w){this.X=d("x",g),this.Y=d("y",m),this.Z=d("z",b,!0),this.T=d("t",w),Object.freeze(this)}static CURVE(){return i}static fromAffine(g){if(g instanceof h)throw new Error("extended point not allowed");let{x:m,y:b}=g||{};return d("x",m),d("y",b),new h(m,b,lt,l(m*b))}static fromBytes(g,m=!1){let b=o.BYTES,{a:w,d:x}=i;g=yo(ce(g,b,"point")),Rr(m,"zip215");let v=yo(g),A=g[b-1];v[b-1]=A&-129;let S=or(v),I=m?c:o.ORDER;Dn("point.y",S,bo,I);let k=l(S*S),K=l(k-lt),F=l(x*k-w),{isValid:E,value:P}=u(K,F);if(!E)throw new Error("bad point: invalid y coordinate");let L=(P<)===lt,_=(A&128)!==0;if(!m&&P===bo&&_)throw new Error("bad point: x=0 and x_0=1");return _!==L&&(P=l(-P)),h.fromAffine({x:P,y:S})}static fromHex(g,m=!1){return h.fromBytes(Li(g),m)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,m=!0){return p.createCache(this,g),m||this.multiply(X2),this}assertValidity(){let g=this,{a:m,d:b}=i;if(g.is0())throw new Error("bad point: ZERO");let{X:w,Y:x,Z:v,T:A}=g,S=l(w*w),I=l(x*x),k=l(v*v),K=l(k*k),F=l(S*m),E=l(k*l(F+I)),P=l(K+l(b*l(S*I)));if(E!==P)throw new Error("bad point: equation left != right (1)");let L=l(w*x),_=l(v*A);if(L!==_)throw new Error("bad point: equation left != right (2)")}equals(g){f(g);let{X:m,Y:b,Z:w}=this,{X:x,Y:v,Z:A}=g,S=l(m*A),I=l(x*w),k=l(b*A),K=l(v*w);return S===I&&k===K}is0(){return this.equals(h.ZERO)}negate(){return new h(l(-this.X),this.Y,this.Z,l(-this.T))}double(){let{a:g}=i,{X:m,Y:b,Z:w}=this,x=l(m*m),v=l(b*b),A=l(X2*l(w*w)),S=l(g*x),I=m+b,k=l(l(I*I)-x-v),K=S+v,F=K-A,E=S-v,P=l(k*F),L=l(K*E),_=l(k*E),T=l(F*K);return new h(P,L,T,_)}add(g){f(g);let{a:m,d:b}=i,{X:w,Y:x,Z:v,T:A}=this,{X:S,Y:I,Z:k,T:K}=g,F=l(w*S),E=l(x*I),P=l(A*b*K),L=l(v*k),_=l((w+x)*(S+I)-F-E),T=L-P,D=L+P,N=l(E-m*F),R=l(_*T),M=l(D*N),U=l(_*N),G=l(T*D);return new h(R,M,G,U)}subtract(g){return f(g),this.add(g.negate())}multiply(g){if(!s.isValidNot0(g))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");let{p:m,f:b}=p.cached(this,g,w=>_s(h,w));return _s(h,[m,b])[0]}multiplyUnsafe(g){if(!s.isValid(g))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return g===bo?h.ZERO:this.is0()||g===lt?this:p.unsafe(this,g,m=>_s(h,m))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return p.unsafe(this,i.n).is0()}toAffine(g){let m=this,b=g,{X:w,Y:x,Z:v}=m,A=m.is0();b==null&&(b=A?kT:o.inv(v));let S=l(w*b),I=l(x*b),k=o.mul(v,b);if(A)return{x:bo,y:lt};if(k!==lt)throw new Error("invZ was invalid");return{x:S,y:I}}clearCofactor(){return a===lt?this:this.multiplyUnsafe(a)}toBytes(){let{x:g,y:m}=this.toAffine(),b=o.toBytes(m);return b[b.length-1]|=g<?128:0,b}toHex(){return Ri(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let p=new Ni(h,s.BITS);return s.BITS>=8&&h.BASE.precompute(8),Object.freeze(h.prototype),Object.freeze(h),h}var Vd=class{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){q2()}static fromHex(e){q2()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return Ri(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,t){return this.ep.precompute(e,t),this}};function V7(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');let n=e,o=t;sr(o,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});let{prehash:s}=o,{BASE:i,Fp:a,Fn:c}=r,l=n.outputLen,u=2*a.BYTES;if(l!==void 0&&(Lr(l,"hash.outputLen"),l!==u))throw new Error(`hash.outputLen must be ${u}, got ${l}`);let d=o.randomBytes===void 0?As:o.randomBytes,f=o.adjustScalarBytes===void 0?E=>E:o.adjustScalarBytes,h=o.domain===void 0?(E,P,L)=>{if(Rr(L,"phflag"),P.length||L)throw new Error("Contexts/pre-hash are not supported");return E}:o.domain;function p(E){return c.create(or(E))}function y(E){let P=S.secretKey;ce(E,S.secretKey,"secretKey");let L=ce(n(E),2*P,"hashedSecretKey"),_=f(L.slice(0,P)),T=L.slice(P,2*P),D=p(_);return{head:_,prefix:T,scalar:D}}function g(E){let{head:P,prefix:L,scalar:_}=y(E),T=i.multiply(_),D=T.toBytes();return{head:P,prefix:L,scalar:_,point:T,pointBytes:D}}function m(E){return g(E).pointBytes}function b(E=Uint8Array.of(),...P){let L=tt(...P);return p(n(h(L,ce(E,void 0,"context"),!!s)))}function w(E,P,L={}){E=ce(E,void 0,"message"),s&&(E=s(E));let{prefix:_,scalar:T,pointBytes:D}=g(P),N=b(L.context,_,E),R=i.multiply(N).toBytes(),M=b(L.context,R,D,E),U=c.create(N+M*T);if(!c.isValid(U))throw new Error("sign failed: invalid s");let G=tt(R,c.toBytes(U));return ce(G,S.signature,"result")}let x={zip215:o.zip215};function v(E,P,L,_=x){let{context:T}=_,D=_.zip215===void 0?!!x.zip215:_.zip215,N=S.signature;E=ce(E,N,"signature"),P=ce(P,void 0,"message"),L=ce(L,S.publicKey,"publicKey"),D!==void 0&&Rr(D,"zip215"),s&&(P=s(P));let R=N/2,M=E.subarray(0,R),U=or(E.subarray(R,N)),G,J,Q;try{G=r.fromBytes(L,D),J=r.fromBytes(M,D),Q=i.multiplyUnsafe(U)}catch{return!1}if(!D&&G.isSmallOrder())return!1;let Ie=b(T,M,L,P);return J.add(G.multiplyUnsafe(Ie)).subtract(Q).clearCofactor().is0()}let A=a.BYTES,S={secretKey:A,publicKey:A,signature:2*A,seed:A};function I(E){return E=E===void 0?d(S.seed):E,ce(E,S.seed,"seed")}function k(E){return Ss(E)&&E.length===S.secretKey}function K(E,P){try{return!!r.fromBytes(E,P===void 0?x.zip215:P)}catch{return!1}}let F={getExtendedPublicKey:g,randomSecretKey:I,isValidSecretKey:k,isValidPublicKey:K,toMontgomery(E){let{y:P}=r.fromBytes(E),L=S.publicKey,_=L===32;if(!_&&L!==57)throw new Error("only defined for 25519 and 448");let T=_?a.div(lt+P,lt-P):a.div(P-lt,P+lt);return a.toBytes(T)},toMontgomerySecret(E){let P=S.secretKey;ce(E,P);let L=n(E.subarray(0,P));return f(L).subarray(0,P)}};return Object.freeze(S),Object.freeze(F),Object.freeze({keygen:Oi(I,m),getPublicKey:m,sign:w,verify:v,utils:F,Point:r,lengths:S})}function Bc(r,e){if(Lr(r),Lr(e),e<0||e>4)throw new Error("invalid I2OSP length: "+e);if(r<0||r>2**(8*e)-1)throw new Error("invalid I2OSP input: "+r);let t=Array.from({length:e}).fill(0);for(let n=e-1;n>=0;n--)t[n]=r&255,r>>>=8;return new Uint8Array(t)}function OT(r,e){let t=new Uint8Array(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function MT(r){if(!Ss(r)&&typeof r!="string")throw new Error("DST must be Uint8Array or ascii string");let e=typeof r=="string"?Ud(r):r;if(e.length===0)throw new Error("DST must be non-empty");return e}function Z2(r,e,t,n){ce(r),Lr(t),e=MT(e),e.length>255&&(e=n(tt(Ud("H2C-OVERSIZE-DST-"),e)));let{outputLen:o,blockLen:s}=n,i=Math.ceil(t/o);if(t>65535||i>255)throw new Error("expand_message_xmd: invalid lenInBytes");let a=tt(e,Bc(e.length,1)),c=new Uint8Array(s),l=Bc(t,2),u=new Array(i),d=n(tt(c,r,l,Bc(0,1),a));u[0]=n(tt(d,Bc(1,1),a));for(let h=1;h<i;h++){let p=[OT(d,u[h-1]),Bc(h+1,1),a];u[h]=n(tt(...p))}return tt(...u).slice(0,t)}var K7="HashToScalar-";var Uc=BigInt(0),Mi=BigInt(1),Kd=BigInt(2);function BT(r){return sr(r,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function"}),Object.freeze({...r})}function q7(r){let e=BT(r),{P:t,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=n==="x25519";if(!a&&n!=="x448")throw new Error("invalid type");let c=i===void 0?As:i,l=a?255:448,u=a?32:56,d=BigInt(a?9:5),f=BigInt(a?121665:39081),h=a?Kd**BigInt(254):Kd**BigInt(447),p=a?BigInt(8)*Kd**BigInt(251)-Mi:BigInt(4)*Kd**BigInt(445)-Mi,y=h+p+Mi,g=L=>Fe(L,t),m=b(d);function b(L){return kc(g(L),u)}function w(L){let _=yo(ce(L,u,"uCoordinate"));return a&&(_[31]&=127),g(or(_))}function x(L){return or(o(yo(ce(L,u,"scalar"))))}function v(L,_){let T=K(w(_),x(L));if(T===Uc)throw new Error("invalid private or public key received");return b(T)}function A(L){return v(L,m)}let S=A,I=v;function k(L,_,T){let D=g(L*(_-T));return _=g(_-D),T=g(T+D),{x_2:_,x_3:T}}function K(L,_){Dn("u",L,Uc,t),Dn("scalar",_,h,y);let T=_,D=L,N=Mi,R=Uc,M=L,U=Mi,G=Uc;for(let Q=BigInt(l-1);Q>=Uc;Q--){let Ie=T>>Q&Mi;G^=Ie,{x_2:N,x_3:M}=k(G,N,M),{x_2:R,x_3:U}=k(G,R,U),G=Ie;let Te=N+R,_e=g(Te*Te),ye=N-R,Be=g(ye*ye),Cn=_e-Be,ss=M+U,mi=M-U,fc=g(mi*Te),hc=g(ss*ye),y8=fc+hc,b8=fc-hc;M=g(y8*y8),U=g(D*g(b8*b8)),N=g(_e*Be),R=g(Cn*(_e+g(f*Cn)))}({x_2:N,x_3:M}=k(G,N,M)),{x_2:R,x_3:U}=k(G,R,U);let J=s(R);return g(N*J)}let F={secretKey:u,publicKey:u,seed:u},E=L=>(L=L===void 0?c(u):L,ce(L,F.seed,"seed"),L),P={randomSecretKey:E};return Object.freeze(F),Object.freeze(P),Object.freeze({keygen:Oi(E,S),getSharedSecret:I,getPublicKey:S,scalarMult:v,scalarMultBase:A,utils:P,GuBytes:m.slice(),lengths:F})}var UT=BigInt(0),Nn=BigInt(1),H7=BigInt(2),FT=BigInt(3),$T=BigInt(5),VT=BigInt(8),Rs=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),rm={p:Rs,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:VT,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function W7(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),s=Rs,a=r*r%s*r%s,c=Ne(a,H7,s)*a%s,l=Ne(c,Nn,s)*r%s,u=Ne(l,$T,s)*l%s,d=Ne(u,e,s)*u%s,f=Ne(d,t,s)*d%s,h=Ne(f,n,s)*f%s,p=Ne(h,o,s)*h%s,y=Ne(p,o,s)*h%s,g=Ne(y,e,s)*u%s;return{pow_p_5_8:Ne(g,H7,s)*r%s,b2:a}}function j7(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var J2=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function nm(r,e){let t=Rs,n=Fe(e*e*e,t),o=Fe(n*n*e,t),s=W7(r*o).pow_p_5_8,i=Fe(r*n*s,t),a=Fe(e*i*i,t),c=i,l=Fe(i*J2,t),u=a===r,d=a===Fe(-r,t),f=a===Fe(-r*J2,t);return u&&(i=c),(d||f)&&(i=l),kn(i,t)&&(i=Fe(-i,t)),{isValid:u||d,value:i}}var xo=$7(rm,{uvRatio:nm}),wo=xo.Fp,Y7=xo.Fn;function KT(r){return V7(xo,Jr,Object.assign({adjustScalarBytes:j7,zip215:!0},r))}var Fc=KT({});var $c=(()=>{let r=Rs;return q7({P:r,type:"x25519",powPminus2:e=>{let{pow_p_5_8:t,b2:n}=W7(e);return Fe(Ne(t,FT,r)*n,r)},adjustScalarBytes:j7})})();var em=J2,qT=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),HT=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),zT=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),GT=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),z7=r=>nm(Nn,r),WT=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),tm=r=>wo.create(or(r)&WT);function G7(r){let{d:e}=rm,t=Rs,n=m=>wo.create(m),o=n(em*r*r),s=n((o+Nn)*zT),i=BigInt(-1),a=n((i-e*o)*n(o+e)),{isValid:c,value:l}=nm(s,a),u=n(l*r);kn(u,t)||(u=n(-u)),c||(l=u),c||(i=o);let d=n(i*(o-Nn)*GT-a),f=l*l,h=n((l+l)*a),p=n(d*qT),y=n(Nn-f),g=n(Nn+f);return new xo(n(h*g),n(y*p),n(p*g),n(h*y))}var Eo=class r extends Vd{static BASE=new r(xo.BASE);static ZERO=new r(xo.ZERO);static Fp=wo;static Fn=Y7;constructor(e){super(e)}static fromAffine(e){return new r(xo.fromAffine(e))}assertSame(e){if(!(e instanceof r))throw new Error("RistrettoPoint expected")}init(e){return new r(e)}static fromBytes(e){mt(e,32);let{a:t,d:n}=rm,o=Rs,s=x=>wo.create(x),i=tm(e);if(!E7(wo.toBytes(i),e)||kn(i,o))throw new Error("invalid ristretto255 encoding 1");let a=s(i*i),c=s(Nn+t*a),l=s(Nn-t*a),u=s(c*c),d=s(l*l),f=s(t*n*u-d),{isValid:h,value:p}=z7(s(f*d)),y=s(p*l),g=s(p*y*f),m=s((i+i)*y);kn(m,o)&&(m=s(-m));let b=s(c*g),w=s(m*b);if(!h||kn(w,o)||b===UT)throw new Error("invalid ristretto255 encoding 2");return new r(new xo(m,b,Nn,w))}static fromHex(e){return r.fromBytes(_c(e))}toBytes(){let{X:e,Y:t,Z:n,T:o}=this.ep,s=Rs,i=g=>wo.create(g),a=i(i(n+t)*i(n-t)),c=i(e*t),l=i(c*c),{value:u}=z7(i(a*l)),d=i(u*a),f=i(u*c),h=i(d*f*o),p;if(kn(o*h,s)){let g=i(t*em),m=i(e*em);e=g,t=m,p=i(d*HT)}else p=f;kn(e*h,s)&&(t=i(-t));let y=i((n-t)*p);return kn(y,s)&&(y=i(-y)),wo.toBytes(y)}equals(e){this.assertSame(e);let{X:t,Y:n}=this.ep,{X:o,Y:s}=e.ep,i=l=>wo.create(l),a=i(t*s)===i(n*o),c=i(n*s)===i(t*o);return a||c}is0(){return this.equals(r.ZERO)}};Object.freeze(Eo.BASE);Object.freeze(Eo.ZERO);Object.freeze(Eo.prototype);Object.freeze(Eo);var jT=Object.freeze({Point:Eo,hashToCurve(r,e){let t=e?.DST===void 0?"ristretto255_XMD:SHA-512_R255MAP_RO_":e.DST,n=Z2(r,t,64,Jr);return jT.deriveToCurve(n)},hashToScalar(r,e={DST:K7}){let t=Z2(r,e.DST,64,Jr);return Y7.create(or(t))},deriveToCurve(r){mt(r,64);let e=tm(r.subarray(0,32)),t=G7(e),n=tm(r.subarray(32,64)),o=G7(n);return new Eo(t.add(o))}});var Vc=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},Kc=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},qd=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var Qe={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new qd("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Ls=32,ir=64,om=32;var Bi,Q7=(async()=>{try{return await Qe.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function X7(){let r=Fc.utils.randomSecretKey(),e=Fc.getPublicKey(r);return{privateKey:JT(r,e),publicKey:e}}async function YT(r,e){let t;r.length===ir?t=r.subarray(0,32):t=r;let n={crv:"Ed25519",kty:"OKP",x:B(r.subarray(32),"base64url"),d:B(t,"base64url"),ext:!0,key_ops:["sign"]},o=await Qe.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Qe.get().subtle.sign({name:"Ed25519"},o,ae(e instanceof Uint8Array?e:e.subarray()));return new Uint8Array(s,0,s.byteLength)}function QT(r,e){let t=r.subarray(0,om);return Fc.sign(e instanceof Uint8Array?e:e.subarray(),t)}async function Z7(r,e){return Bi==null&&(Bi=await Q7),Bi?YT(r,e):QT(r,e)}async function XT(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await Qe.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Qe.get().subtle.verify({name:"Ed25519"},n,ae(e),ae(t instanceof Uint8Array?t:t.subarray()))}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function ZT(r,e,t){return Fc.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function J7(r,e,t){return Bi==null&&(Bi=await Q7),Bi?XT(r,e,t):ZT(r,e,t)}function JT(r,e){let t=new Uint8Array(ir);for(let n=0;n<om;n++)t[n]=r[n],t[om+n]=e[n];return t}function Ui(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var qc=class{type="Ed25519";raw;constructor(e){this.raw=$i(e,Ls)}toMultihash(){return nr.digest(ct(this))}toCID(){return ie.createV1(114,this.toMultihash())}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=J7(this.raw,t,e);return Ui(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},Fi=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=$i(e,ir),this.publicKey=new qc(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}sign(e,t){t?.signal?.throwIfAborted();let n=Z7(this.raw,e);return Ui(n)?n.then(o=>(t?.signal?.throwIfAborted(),o)):(t?.signal?.throwIfAborted(),n)}};function sm(r){if(r.length>ir){r=$i(r,ir+Ls);let n=r.subarray(0,ir),o=r.subarray(ir,r.length);return new Fi(n,o)}r=$i(r,ir);let e=r.subarray(0,ir),t=r.subarray(Ls);return new Fi(e,t)}function im(r){return r=$i(r,Ls),new qc(r)}async function ty(){let{privateKey:r,publicKey:e}=X7();return new Fi(r,e)}function $i(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new C(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var e_=Math.pow(2,7),t_=Math.pow(2,14),r_=Math.pow(2,21),am=Math.pow(2,28),cm=Math.pow(2,35),lm=Math.pow(2,42),um=Math.pow(2,49),Se=128,Ct=127;function Re(r){if(r<e_)return 1;if(r<t_)return 2;if(r<r_)return 3;if(r<am)return 4;if(r<cm)return 5;if(r<lm)return 6;if(r<um)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Vi(r,e,t=0){switch(Re(r)){case 8:e[t++]=r&255|Se,r/=128;case 7:e[t++]=r&255|Se,r/=128;case 6:e[t++]=r&255|Se,r/=128;case 5:e[t++]=r&255|Se,r/=128;case 4:e[t++]=r&255|Se,r>>>=7;case 3:e[t++]=r&255|Se,r>>>=7;case 2:e[t++]=r&255|Se,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function n_(r,e,t=0){switch(Re(r)){case 8:e.set(t++,r&255|Se),r/=128;case 7:e.set(t++,r&255|Se),r/=128;case 6:e.set(t++,r&255|Se),r/=128;case 5:e.set(t++,r&255|Se),r/=128;case 4:e.set(t++,r&255|Se),r>>>=7;case 3:e.set(t++,r&255|Se),r>>>=7;case 2:e.set(t++,r&255|Se),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function dm(r,e){let t=r[e],n=0;if(n+=t&Ct,t<Se||(t=r[e+1],n+=(t&Ct)<<7,t<Se)||(t=r[e+2],n+=(t&Ct)<<14,t<Se)||(t=r[e+3],n+=(t&Ct)<<21,t<Se)||(t=r[e+4],n+=(t&Ct)*am,t<Se)||(t=r[e+5],n+=(t&Ct)*cm,t<Se)||(t=r[e+6],n+=(t&Ct)*lm,t<Se)||(t=r[e+7],n+=(t&Ct)*um,t<Se))return n;throw new RangeError("Could not decode varint")}function o_(r,e){let t=r.get(e),n=0;if(n+=t&Ct,t<Se||(t=r.get(e+1),n+=(t&Ct)<<7,t<Se)||(t=r.get(e+2),n+=(t&Ct)<<14,t<Se)||(t=r.get(e+3),n+=(t&Ct)<<21,t<Se)||(t=r.get(e+4),n+=(t&Ct)*am,t<Se)||(t=r.get(e+5),n+=(t&Ct)*cm,t<Se)||(t=r.get(e+6),n+=(t&Ct)*lm,t<Se)||(t=r.get(e+7),n+=(t&Ct)*um,t<Se))return n;throw new RangeError("Could not decode varint")}function zt(r,e,t=0){return e==null&&(e=Ke(Re(r))),e instanceof Uint8Array?Vi(r,e,t):n_(r,e,t)}function Pr(r,e=0){return r instanceof Uint8Array?dm(r,e):o_(r,e)}var fm=new Float32Array([-0]),vo=new Uint8Array(fm.buffer);function ry(r,e,t){fm[0]=r,e[t]=vo[0],e[t+1]=vo[1],e[t+2]=vo[2],e[t+3]=vo[3]}function ny(r,e){return vo[0]=r[e],vo[1]=r[e+1],vo[2]=r[e+2],vo[3]=r[e+3],fm[0]}var hm=new Float64Array([-0]),It=new Uint8Array(hm.buffer);function oy(r,e,t){hm[0]=r,e[t]=It[0],e[t+1]=It[1],e[t+2]=It[2],e[t+3]=It[3],e[t+4]=It[4],e[t+5]=It[5],e[t+6]=It[6],e[t+7]=It[7]}function sy(r,e){return It[0]=r[e],It[1]=r[e+1],It[2]=r[e+2],It[3]=r[e+3],It[4]=r[e+4],It[5]=r[e+5],It[6]=r[e+6],It[7]=r[e+7],hm[0]}var s_=BigInt(Number.MAX_SAFE_INTEGER),i_=BigInt(Number.MIN_SAFE_INTEGER),ar=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return Ps;if(e<s_&&e>i_)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>iy&&(o=0n,++n>iy&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Ps;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):Ps}},Ps=new ar(0,0);Ps.toBigInt=function(){return 0n};Ps.zzEncode=Ps.zzDecode=function(){return this};Ps.length=function(){return 1};var iy=4294967296n;function ay(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function cy(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function pm(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function Dr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Hd(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var mm=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=ae(e),this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Dr(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Dr(this,4);return Hd(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Dr(this,4);return Hd(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Dr(this,4);let e=ny(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Dr(this,4);let e=sy(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Dr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return cy(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Dr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Dr(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ar(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Dr(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Dr(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Dr(this,8);let e=Hd(this.buf,this.pos+=4),t=Hd(this.buf,this.pos+=4);return new ar(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=dm(this.buf,this.pos);return this.pos+=Re(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Hc(r){return new mm(r instanceof Uint8Array?r:r.subarray())}function ee(r,e,t){let n=Hc(r);return e.decode(n,void 0,t)}function gm(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return Ke(i);o+i>e&&(n=Ke(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var Ds=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function ym(){}var wm=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},a_=gm();function c_(r){return globalThis.Buffer!=null?Ke(r):a_(r)}var Gc=class{len;head;tail;states;constructor(){this.len=0,this.head=new Ds(ym,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Ds(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new xm((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(zd,10,ar.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ar.fromBigInt(e);return this._push(zd,t.length(),t)}uint64Number(e){return this._push(Vi,Re(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=ar.fromBigInt(e).zzEncode();return this._push(zd,t.length(),t)}sint64Number(e){let t=ar.fromNumber(e).zzEncode();return this._push(zd,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(bm,1,e?1:0)}fixed32(e){return this._push(zc,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ar.fromBigInt(e);return this._push(zc,4,t.lo)._push(zc,4,t.hi)}fixed64Number(e){let t=ar.fromNumber(e);return this._push(zc,4,t.lo)._push(zc,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(ry,4,e)}double(e){return this._push(oy,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(bm,1,0):this.uint32(t)._push(u_,t,e)}string(e){let t=ay(e);return t!==0?this.uint32(t)._push(pm,t,e):this._push(bm,1,0)}fork(){return this.states=new wm(this),this.head=this.tail=new Ds(ym,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 Ds(ym,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=c_(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function bm(r,e,t){e[t]=r&255}function l_(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var xm=class extends Ds{next;constructor(e,t){super(l_,e,t),this.next=void 0}};function zd(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function zc(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function u_(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Gc.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(d_,e,r),this},Gc.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(f_,e,r),this});function d_(r,e,t){e.set(r,t)}function f_(r,e,t){r.length<40?pm(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(O(r),t)}function Em(){return new Gc}function te(r,e){let t=Em();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}function*re(r,e,t){let n=Hc(r);yield*e.stream(n,void 0,"$",t)}var Gd={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5};function Wd(r,e,t,n,o){return{name:r,type:e,encode:t,decode:n,stream:o}}function rt(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(i,a){let c=e(i);a.int32(c)},n=function(i){let a=i.int32();return e(a)},o=function*(i){let a=i.int32();yield e(a)};return Wd("enum",Gd.VARINT,t,n,o)}function ne(r,e,t){return Wd("message",Gd.LENGTH_DELIMITED,r,e,t)}var fe=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Wc=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var Le;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(Le||(Le={}));var vm;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(vm||(vm={}));(function(r){r.codec=()=>rt(vm)})(Le||(Le={}));var en;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.Type!=null&&(i.uint32(8),Le.codec().encode(s.Type,i)),s.Data!=null&&(i.uint32(18),i.bytes(s.Data)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.Type=Le.codec().decode(s);break}case 2:{c.Data=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Type`,value:Le.codec().decode(s)};break}case 2:{yield{field:`${a}.Data`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(en||(en={}));var jc;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.Type!=null&&(i.uint32(8),Le.codec().encode(s.Type,i)),s.Data!=null&&(i.uint32(18),i.bytes(s.Data)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.Type=Le.codec().decode(s);break}case 2:{c.Data=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Type`,value:Le.codec().decode(s)};break}case 2:{yield{field:`${a}.Data`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(jc||(jc={}));var Qc={};$(Qc,{MAX_RSA_KEY_SIZE:()=>Sm,generateRSAKeyPair:()=>Dm,jwkToJWKKeyPair:()=>hy,jwkToPkcs1:()=>g_,jwkToPkix:()=>Tm,jwkToRSAPrivateKey:()=>Pm,pkcs1MessageToJwk:()=>Cm,pkcs1MessageToRSAPrivateKey:()=>jd,pkcs1ToJwk:()=>m_,pkcs1ToRSAPrivateKey:()=>_m,pkixMessageToJwk:()=>Im,pkixMessageToRSAPublicKey:()=>Lm,pkixToJwk:()=>y_,pkixToRSAPublicKey:()=>Rm});var Ki=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=Qc.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ie.createV1(114,this._multihash)}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){return fy(this.jwk,t,e,n)}},Yc=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=Qc.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}sign(e,t){return dy(this.jwk,e,t)}};var Sm=8192,Am=18,h_=1062,p_=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function m_(r){let e=mr(r);return Cm(e)}function Cm(r){return{n:B(r[1],"base64url"),e:B(r[2],"base64url"),d:B(r[3],"base64url"),p:B(r[4],"base64url"),q:B(r[5],"base64url"),dp:B(r[6],"base64url"),dq:B(r[7],"base64url"),qi:B(r[8],"base64url"),kty:"RSA"}}function g_(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 C("JWK was missing components");return Tr([Ot(Uint8Array.from([0])),Ot(O(r.n,"base64url")),Ot(O(r.e,"base64url")),Ot(O(r.d,"base64url")),Ot(O(r.p,"base64url")),Ot(O(r.q,"base64url")),Ot(O(r.dp,"base64url")),Ot(O(r.dq,"base64url")),Ot(O(r.qi,"base64url"))]).subarray()}function y_(r){let e=mr(r,{offset:0});return Im(e)}function Im(r){let e=mr(r[1],{offset:0});return{kty:"RSA",n:B(e[0],"base64url"),e:B(e[1],"base64url")}}function Tm(r){if(r.n==null||r.e==null)throw new C("JWK was missing components");return Tr([p_,Tc(Tr([Ot(O(r.n,"base64url")),Ot(O(r.e,"base64url"))]))]).subarray()}function _m(r){let e=mr(r);return jd(e)}function jd(r){let e=Cm(r);return Pm(e)}function Rm(r,e){if(r.byteLength>=h_)throw new In("Key size is too large");let t=mr(r,{offset:0});return Lm(t,r,e)}function Lm(r,e,t){let n=Im(r);if(t==null){let o=gr(en.encode({Type:Le.RSA,Data:e}));t=Nt(Am,o)}return new Ki(n,t)}function Pm(r){if(my(r)>Sm)throw new C("Key size is too large");let e=hy(r),t=gr(en.encode({Type:Le.RSA,Data:Tm(e.publicKey)})),n=Nt(Am,t);return new Yc(e.privateKey,new Ki(e.publicKey,n))}async function Dm(r){if(r>Sm)throw new C("Key size is too large");let e=await py(r),t=gr(en.encode({Type:Le.RSA,Data:Tm(e.publicKey)})),n=Nt(Am,t);return new Yc(e.privateKey,new Ki(e.publicKey,n))}function hy(r){if(r==null)throw new C("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function py(r,e){let t=await Qe.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await b_(t,e);return{privateKey:n[0],publicKey:n[1]}}async function dy(r,e,t){let n=await Qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await Qe.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,ae(e instanceof Uint8Array?e:e.subarray()));return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function fy(r,e,t,n){let o=await Qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await Qe.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,ae(e),ae(t instanceof Uint8Array?t:t.subarray()));return n?.signal?.throwIfAborted(),s}async function b_(r,e){if(r.privateKey==null||r.publicKey==null)throw new C("Private and public key are required");let t=await Promise.all([Qe.get().subtle.exportKey("jwk",r.privateKey),Qe.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function my(r){if(r.kty!=="RSA")throw new C("invalid key type");if(r.n==null)throw new C("invalid key modulus");return O(r.n,"base64url").length*8}var Yd=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){if(Ln(e),mt(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),At(o)}update(e){return _i(this),this.iHash.update(e),this}digestInto(e){_i(this),_d(e,this),this.finished=!0;let t=e.subarray(0,this.outputLen);this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ks=(()=>{let r=((e,t,n)=>new Yd(e,t).update(n).digest());return r.create=(e,t)=>new Yd(e,t),r})();var gy=(r,e)=>(r+(r>=0?e:-e)/yy)/e;function w_(r,e,t){Dn("scalar",r,tn,t);let[[n,o],[s,i]]=e,a=gy(i*r,t),c=gy(-o*r,t),l=r-a*n-c*s,u=-a*o-c*i,d=l<tn,f=u<tn;d&&(l=-l),f&&(u=-u);let h=Nc(Math.ceil(Pi(t)/2))+So;if(l<tn||l>=h||u<tn||u>=h)throw new Error("splitScalar (endomorphism): failed for k");return{k1neg:d,k1:l,k2neg:f,k2:u}}function Nm(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function km(r,e){sr(r);let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return Rr(t.lowS,"lowS"),Rr(t.prehash,"prehash"),t.format!==void 0&&Nm(t.format),t}var Om=class extends Error{constructor(e=""){super(e)}},kr={Err:Om,_tlv:{encode:(r,e)=>{let{Err:t}=kr;if(Lr(r,"tag"),r<0||r>255)throw new t("tlv.encode: wrong tag");if(typeof e!="string")throw new TypeError('"data" expected string, got type='+typeof e);if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=Dc(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?Dc(o.length/2|128):"";return Dc(r)+s+o+e},decode(r,e){let{Err:t}=kr;e=ce(e,void 0,"DER data");let n=0;if(r<0||r>255)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=kr;if(Md(r),r<tn)throw new e("integer: negative integers are not allowed");let t=Dc(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=kr;if(r.length<1)throw new e("invalid signature integer: empty");if(r[0]&128)throw new e("invalid signature integer: negative");if(r.length>1&&r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Cs(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=kr,o=ce(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=kr,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}};Object.freeze(kr._tlv);Object.freeze(kr._int);Object.freeze(kr);var tn=BigInt(0),So=BigInt(1),yy=BigInt(2),Qd=BigInt(3),x_=BigInt(4);function by(r,e={}){let t=$d("weierstrass",r,e),n=t.Fp,o=t.Fn,s=t.CURVE,{h:i,n:a}=s;sr(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c,allowInfinityPoint:l}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let u=xy(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(F,E,P){if(l&&E.is0())return Uint8Array.of(0);let{x:L,y:_}=E.toAffine(),T=n.toBytes(L);if(Rr(P,"isCompressed"),P){d();let D=!n.isOdd(_);return tt(wy(D),T)}else return tt(Uint8Array.of(4),T,n.toBytes(_))}function h(F){ce(F,void 0,"Point");let{publicKey:E,publicKeyUncompressed:P}=u,L=F.length,_=F[0],T=F.subarray(1);if(l&&L===1&&_===0)return{x:n.ZERO,y:n.ZERO};if(L===E&&(_===2||_===3)){let D=n.fromBytes(T);if(!n.isValid(D))throw new Error("bad point: is not on curve, wrong x");let N=g(D),R;try{R=n.sqrt(N)}catch(G){let J=G instanceof Error?": "+G.message:"";throw new Error("bad point: is not on curve, sqrt error"+J)}d();let M=n.isOdd(R);return(_&1)===1!==M&&(R=n.neg(R)),{x:D,y:R}}else if(L===P&&_===4){let D=n.BYTES,N=n.fromBytes(T.subarray(0,D)),R=n.fromBytes(T.subarray(D,D*2));if(!m(N,R))throw new Error("bad point: is not on curve");return{x:N,y:R}}else throw new Error(`bad point: got length ${L}, expected compressed=${E} or uncompressed=${P}`)}let p=e.toBytes===void 0?f:e.toBytes,y=e.fromBytes===void 0?h:e.fromBytes;function g(F){let E=n.sqr(F),P=n.mul(E,F);return n.add(n.add(P,n.mul(F,s.a)),s.b)}function m(F,E){let P=n.sqr(E),L=g(F);return n.eql(P,L)}if(!m(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let b=n.mul(n.pow(s.a,Qd),x_),w=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(b,w)))throw new Error("bad curve params: a or b");function x(F,E,P=!1){if(!n.isValid(E)||P&&n.is0(E))throw new Error(`bad point coordinate ${F}`);return E}function v(F){if(!(F instanceof I))throw new Error("Weierstrass Point expected")}function A(F){if(!c||!c.basises)throw new Error("no endo");return w_(F,c.basises,o.ORDER)}function S(F,E,P,L,_){return P=new I(n.mul(P.X,F),P.Y,P.Z),E=Mc(L,E),P=Mc(_,P),E.add(P)}class I{static BASE=new I(s.Gx,s.Gy,n.ONE);static ZERO=new I(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(E,P,L){this.X=x("x",E),this.Y=x("y",P,!0),this.Z=x("z",L),Object.freeze(this)}static CURVE(){return s}static fromAffine(E){let{x:P,y:L}=E||{};if(!E||!n.isValid(P)||!n.isValid(L))throw new Error("invalid affine point");if(E instanceof I)throw new Error("projective point not allowed");return n.is0(P)&&n.is0(L)?I.ZERO:new I(P,L,n.ONE)}static fromBytes(E){let P=I.fromAffine(y(ce(E,void 0,"point")));return P.assertValidity(),P}static fromHex(E){return I.fromBytes(Li(E))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(E=8,P=!0){return K.createCache(this,E),P||this.multiply(Qd),this}assertValidity(){let E=this;if(E.is0()){if(e.allowInfinityPoint&&n.is0(E.X)&&n.eql(E.Y,n.ONE)&&n.is0(E.Z))return;throw new Error("bad point: ZERO")}let{x:P,y:L}=E.toAffine();if(!n.isValid(P)||!n.isValid(L))throw new Error("bad point: x or y not field elements");if(!m(P,L))throw new Error("bad point: equation left != right");if(!E.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:E}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(E)}equals(E){v(E);let{X:P,Y:L,Z:_}=this,{X:T,Y:D,Z:N}=E,R=n.eql(n.mul(P,N),n.mul(T,_)),M=n.eql(n.mul(L,N),n.mul(D,_));return R&&M}negate(){return new I(this.X,n.neg(this.Y),this.Z)}double(){let{a:E,b:P}=s,L=n.mul(P,Qd),{X:_,Y:T,Z:D}=this,N=n.ZERO,R=n.ZERO,M=n.ZERO,U=n.mul(_,_),G=n.mul(T,T),J=n.mul(D,D),Q=n.mul(_,T);return Q=n.add(Q,Q),M=n.mul(_,D),M=n.add(M,M),N=n.mul(E,M),R=n.mul(L,J),R=n.add(N,R),N=n.sub(G,R),R=n.add(G,R),R=n.mul(N,R),N=n.mul(Q,N),M=n.mul(L,M),J=n.mul(E,J),Q=n.sub(U,J),Q=n.mul(E,Q),Q=n.add(Q,M),M=n.add(U,U),U=n.add(M,U),U=n.add(U,J),U=n.mul(U,Q),R=n.add(R,U),J=n.mul(T,D),J=n.add(J,J),U=n.mul(J,Q),N=n.sub(N,U),M=n.mul(J,G),M=n.add(M,M),M=n.add(M,M),new I(N,R,M)}add(E){v(E);let{X:P,Y:L,Z:_}=this,{X:T,Y:D,Z:N}=E,R=n.ZERO,M=n.ZERO,U=n.ZERO,G=s.a,J=n.mul(s.b,Qd),Q=n.mul(P,T),Ie=n.mul(L,D),Te=n.mul(_,N),_e=n.add(P,L),ye=n.add(T,D);_e=n.mul(_e,ye),ye=n.add(Q,Ie),_e=n.sub(_e,ye),ye=n.add(P,_);let Be=n.add(T,N);return ye=n.mul(ye,Be),Be=n.add(Q,Te),ye=n.sub(ye,Be),Be=n.add(L,_),R=n.add(D,N),Be=n.mul(Be,R),R=n.add(Ie,Te),Be=n.sub(Be,R),U=n.mul(G,ye),R=n.mul(J,Te),U=n.add(R,U),R=n.sub(Ie,U),U=n.add(Ie,U),M=n.mul(R,U),Ie=n.add(Q,Q),Ie=n.add(Ie,Q),Te=n.mul(G,Te),ye=n.mul(J,ye),Ie=n.add(Ie,Te),Te=n.sub(Q,Te),Te=n.mul(G,Te),ye=n.add(ye,Te),Q=n.mul(Ie,ye),M=n.add(M,Q),Q=n.mul(Be,ye),R=n.mul(_e,R),R=n.sub(R,Q),Q=n.mul(_e,Ie),U=n.mul(Be,U),U=n.add(U,Q),new I(R,M,U)}subtract(E){return v(E),this.add(E.negate())}is0(){return this.equals(I.ZERO)}multiply(E){let{endo:P}=e;if(!o.isValidNot0(E))throw new RangeError("invalid scalar: out of range");let L,_,T=D=>K.cached(this,D,N=>_s(I,N));if(P){let{k1neg:D,k1:N,k2neg:R,k2:M}=A(E),{p:U,f:G}=T(N),{p:J,f:Q}=T(M);_=G.add(Q),L=S(P.beta,U,J,D,R)}else{let{p:D,f:N}=T(E);L=D,_=N}return _s(I,[L,_])[0]}multiplyUnsafe(E){let{endo:P}=e,L=this,_=E;if(!o.isValid(_))throw new RangeError("invalid scalar: out of range");if(_===tn||L.is0())return I.ZERO;if(_===So)return L;if(K.hasCache(this))return this.multiply(_);if(P){let{k1neg:T,k1:D,k2neg:N,k2:R}=A(_),{p1:M,p2:U}=F7(I,L,D,R);return S(P.beta,M,U,T,N)}else return K.unsafe(L,_)}toAffine(E){let P=this,L=E,{X:_,Y:T,Z:D}=P;if(n.eql(D,n.ONE))return{x:_,y:T};let N=P.is0();L==null&&(L=N?n.ONE:n.inv(D));let R=n.mul(_,L),M=n.mul(T,L),U=n.mul(D,L);if(N)return{x:n.ZERO,y:n.ZERO};if(!n.eql(U,n.ONE))throw new Error("invZ was invalid");return{x:R,y:M}}isTorsionFree(){let{isTorsionFree:E}=e;return i===So?!0:E?E(I,this):K.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:E}=e;return i===So?this:E?E(I,this):this.multiplyUnsafe(i)}isSmallOrder(){return i===So?this.is0():this.clearCofactor().is0()}toBytes(E=!0){return Rr(E,"isCompressed"),this.assertValidity(),p(I,this,E)}toHex(E=!0){return Ri(this.toBytes(E))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let k=o.BITS,K=new Ni(I,e.endo?Math.ceil(k/2):k);return k>=8&&I.BASE.precompute(8),Object.freeze(I.prototype),Object.freeze(I),I}function wy(r){return Uint8Array.of(r?2:3)}function xy(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function E_(r,e={}){let{Fn:t}=r,n=e.randomBytes===void 0?As:e.randomBytes,o=Object.assign(xy(r.Fp,t),{seed:Math.max(G2(t.ORDER),16)});function s(h){try{let p=t.fromBytes(h);return t.isValidNot0(p)}catch{return!1}}function i(h,p){let{publicKey:y,publicKeyUncompressed:g}=o;try{let m=h.length;return p===!0&&m!==y||p===!1&&m!==g?!1:!!r.fromBytes(h)}catch{return!1}}function a(h){return h=h===void 0?n(o.seed):h,W2(ce(h,o.seed,"seed"),t.ORDER)}function c(h,p=!0){return r.BASE.multiply(t.fromBytes(h)).toBytes(p)}function l(h){let{secretKey:p,publicKey:y,publicKeyUncompressed:g}=o,m=t._lengths;if(!Ss(h))return;let b=ce(h,void 0,"key").length,w=b===y||b===g,x=b===p||!!m?.includes(b);if(!(w&&x))return w}function u(h,p,y=!0){if(l(h)===!0)throw new Error("first arg must be private key");if(l(p)===!1)throw new Error("second arg must be public key");let g=t.fromBytes(h);return r.fromBytes(p).multiply(g).toBytes(y)}let d={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},f=Oi(a,c);return Object.freeze(d),Object.freeze(o),Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:f,Point:r,utils:d,lengths:o})}function Ey(r,e,t={}){let n=e;Ln(n),sr(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let o=t.randomBytes===void 0?As:t.randomBytes,s=t.hmac===void 0?(_,T)=>ks(n,_,T):t.hmac,{Fp:i,Fn:a}=r,{ORDER:c,BITS:l}=a,{keygen:u,getPublicKey:d,getSharedSecret:f,utils:h,lengths:p}=E_(r,t),y={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},g=c*yy+So<i.ORDER;function m(_){let T=c>>So;return _>T}function b(_,T){if(!a.isValidNot0(T))throw new Error(`invalid signature ${_}: out of range 1..Point.Fn.ORDER`);return T}function w(){if(g)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function x(_,T){Nm(T);let D=p.signature,N=T==="compact"?D:T==="recovered"?D+1:void 0;return ce(_,N)}class v{r;s;recovery;constructor(T,D,N){if(this.r=b("r",T),this.s=b("s",D),N!=null){if(w(),![0,1,2,3].includes(N))throw new Error("invalid recovery id");this.recovery=N}Object.freeze(this)}static fromBytes(T,D=y.format){x(T,D);let N;if(D==="der"){let{r:G,s:J}=kr.toSig(ce(T));return new v(G,J)}D==="recovered"&&(N=T[0],D="compact",T=T.subarray(1));let R=p.signature/2,M=T.subarray(0,R),U=T.subarray(R,R*2);return new v(a.fromBytes(M),a.fromBytes(U),N)}static fromHex(T,D){return this.fromBytes(Li(T),D)}assertRecovery(){let{recovery:T}=this;if(T==null)throw new Error("invalid recovery id: must be present");return T}addRecoveryBit(T){return new v(this.r,this.s,T)}recoverPublicKey(T){let{r:D,s:N}=this,R=this.assertRecovery(),M=R===2||R===3?D+c:D;if(!i.isValid(M))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let U=i.toBytes(M),G=r.fromBytes(tt(wy((R&1)===0),U)),J=a.inv(M),Q=S(ce(T,void 0,"msgHash")),Ie=a.create(-Q*J),Te=a.create(N*J),_e=r.BASE.multiplyUnsafe(Ie).add(G.multiplyUnsafe(Te));if(_e.is0())throw new Error("invalid recovery: point at infinify");return _e.assertValidity(),_e}hasHighS(){return m(this.s)}toBytes(T=y.format){if(Nm(T),T==="der")return Li(kr.hexFromSig(this));let{r:D,s:N}=this,R=a.toBytes(D),M=a.toBytes(N);return T==="recovered"?(w(),tt(Uint8Array.of(this.assertRecovery()),R,M)):tt(R,M)}toHex(T){return Ri(this.toBytes(T))}}Object.freeze(v.prototype),Object.freeze(v);let A=t.bits2int===void 0?function(T){if(T.length>8192)throw new Error("input is too large");let D=Cs(T),N=T.length*8-l;return N>0?D>>BigInt(N):D}:t.bits2int,S=t.bits2int_modN===void 0?function(T){return a.create(A(T))}:t.bits2int_modN,I=Nc(l);function k(_){return Dn("num < 2^"+l,_,tn,I),a.toBytes(_)}function K(_,T){return ce(_,void 0,"message"),T?ce(n(_),void 0,"prehashed message"):_}function F(_,T,D){let{lowS:N,prehash:R,extraEntropy:M}=km(D,y);_=K(_,R);let U=S(_),G=a.fromBytes(T);if(!a.isValidNot0(G))throw new Error("invalid private key");let J=[k(G),k(U)];if(M!=null&&M!==!1){let _e=M===!0?o(p.secretKey):M;J.push(ce(_e,void 0,"extraEntropy"))}let Q=tt(...J),Ie=U;function Te(_e){let ye=A(_e);if(!a.isValidNot0(ye))return;let Be=a.inv(ye),Cn=r.BASE.multiply(ye).toAffine(),ss=a.create(Cn.x);if(ss===tn)return;let mi=a.create(Be*a.create(Ie+ss*G));if(mi===tn)return;let fc=(Cn.x===ss?0:2)|Number(Cn.y&So),hc=mi;return N&&m(mi)&&(hc=a.neg(mi),fc^=1),new v(ss,hc,g?void 0:fc)}return{seed:Q,k2sig:Te}}function E(_,T,D={}){let{seed:N,k2sig:R}=F(_,T,D);return v7(n.outputLen,a.BYTES,s)(N,R).toBytes(D.format)}function P(_,T,D,N={}){let{lowS:R,prehash:M,format:U}=km(N,y);if(D=ce(D,void 0,"publicKey"),T=K(T,M),!Ss(_)){let G=_ instanceof v?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+G)}x(_,U);try{let G=v.fromBytes(_,U),J=r.fromBytes(D);if(R&&G.hasHighS())return!1;let{r:Q,s:Ie}=G,Te=S(T),_e=a.inv(Ie),ye=a.create(Te*_e),Be=a.create(Q*_e),Cn=r.BASE.multiplyUnsafe(ye).add(J.multiplyUnsafe(Be));return Cn.is0()?!1:a.create(Cn.x)===Q}catch{return!1}}function L(_,T,D={}){let{prehash:N}=km(D,y);return T=K(T,N),v.fromBytes(_,"recovered").recoverPublicKey(T).toBytes()}return Object.freeze({keygen:u,getPublicKey:d,getSharedSecret:f,utils:h,lengths:p,Point:r,sign:E,verify:P,recoverPublicKey:L,Signature:v,hash:n})}var Bm={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},v_={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var vy=BigInt(2);function S_(r){let e=Bm.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,d=Ne(u,t,e)*u%e,f=Ne(d,t,e)*u%e,h=Ne(f,vy,e)*l%e,p=Ne(h,o,e)*h%e,y=Ne(p,s,e)*p%e,g=Ne(y,a,e)*y%e,m=Ne(g,c,e)*g%e,b=Ne(m,a,e)*y%e,w=Ne(b,t,e)*u%e,x=Ne(w,i,e)*p%e,v=Ne(x,n,e)*l%e,A=Ne(v,vy,e);if(!Mm.eql(Mm.sqr(A),r))throw new Error("Cannot find square root");return A}var Mm=Di(Bm.p,{sqrt:S_}),A_=by(Bm,{Fp:Mm,endo:v_}),Nr=Ey(A_,gr);var Sy=32;function Ay(r,e,t){let n=pt.digest(e instanceof Uint8Array?e:e.subarray());if(Ui(n))return n.then(({digest:o})=>(t?.signal?.throwIfAborted(),Nr.sign(o,r,{prehash:!1,format:"der"}))).catch(o=>{throw o.name==="AbortError"?o:new Vc(String(o))});try{return Nr.sign(n.digest,r,{prehash:!1,format:"der"})}catch(o){throw new Vc(String(o))}}function Cy(r,e,t,n){let o=pt.digest(t instanceof Uint8Array?t:t.subarray());if(Ui(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),Nr.verify(e,s,r,{prehash:!1,format:"der"}))).catch(s=>{throw s.name==="AbortError"?s:new Kc(String(s))});try{return n?.signal?.throwIfAborted(),Nr.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(s){throw new Kc(String(s))}}var Xc=class{type="secp256k1";raw;_key;constructor(e){this._key=_y(e),this.raw=Iy(this._key)}toMultihash(){return nr.digest(ct(this))}toCID(){return ie.createV1(114,this.toMultihash())}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){return Cy(this._key,t,e,n)}},Zc=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=Ty(e),this.publicKey=new Xc(t??Ry(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}sign(e,t){return Ay(this.raw,e,t)}};function Um(r){return new Zc(r)}function Fm(r){return new Xc(r)}async function Ly(){let r=C_();return new Zc(r)}function Iy(r){return Nr.Point.fromBytes(r).toBytes()}function Ty(r){try{return Nr.getPublicKey(r,!0),r}catch(e){throw new pc(String(e))}}function _y(r){try{return Nr.Point.fromBytes(r),r}catch(e){throw new In(String(e))}}function Ry(r){try{return Nr.getPublicKey(r,!0)}catch(e){throw new pc(String(e))}}function C_(){return Nr.utils.randomSecretKey()}async function Xd(r,e){if(r==="Ed25519")return ty();if(r==="secp256k1")return Ly();if(r==="RSA")return Dm(I_(e));if(r==="ECDSA")return s7(T_(e));throw new Cr}function nt(r,e){let{Type:t,Data:n}=en.decode(r),o=n??new Uint8Array;switch(t){case Le.RSA:return Rm(o,e);case Le.Ed25519:return im(o);case Le.secp256k1:return Fm(o);case Le.ECDSA:return L2(o);default:throw new Cr}}function Py(r){let{Type:e,Data:t}=en.decode(r.digest),n=t??new Uint8Array;switch(e){case Le.Ed25519:return im(n);case Le.secp256k1:return Fm(n);case Le.ECDSA:return L2(n);default:throw new Cr}}function ct(r){return en.encode({Type:Le[r.type],Data:r.raw})}function Dy(r){let e=jc.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Le.RSA:return _m(t);case Le.Ed25519:return sm(t);case Le.secp256k1:return Um(t);case Le.ECDSA:return e7(t);default:throw new Cr}}function ky(r){if(r.byteLength===ir)return sm(r);if(r.byteLength===Sy)return Um(r);let e=mr(r),t=e[2]?.[0];if(t===O8||t===M8||t===B8)return R2(e);if(e.length>8)return jd(e);throw new C("Could not extract private key from raw bytes")}function Ns(r){return jc.encode({Type:Le[r.type],Data:r.raw})}function I_(r){return r==null?2048:parseInt(r,10)}function T_(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new C("Unsupported curve, should be P-256, P-384 or P-521")}var Ny=Symbol.for("nodejs.util.inspect.custom"),__=114,Jc=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Ed]=!0;toString(){return this.string==null&&(this.string=Ee.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ie.createV1(__,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Z(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return Z(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Ny](){return`PeerId(${this.toString()})`}},el=class extends Jc{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},tl=class extends Jc{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},rl=class extends Jc{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},R_=2336,nl=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=nr.digest(O(this.url))}[Ny](){return`PeerId(${this.url})`}[Ed]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ie.createV1(R_,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=B(e)),e.toString()===this.toString())}};var L_=114,Oy=2336;function Oe(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ve(Ee.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return Mt(ie.parse(r));if(e==null)throw new C('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ve(e.decode(r))}return Xe(t)}function rn(r){if(r.type==="Ed25519")return new tl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new rl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new el({multihash:r.toCID().multihash,publicKey:r});throw new Cr}function My(r){return rn(r.publicKey)}function Xe(r){if(D_(r))return new el({multihash:r});if(P_(r))try{let e=Py(r);if(e.type==="Ed25519")return new tl({multihash:r,publicKey:e});if(e.type==="secp256k1")return new rl({multihash:r,publicKey:e})}catch{let t=B(r.digest);return new nl(new URL(t))}throw new md("Supplied PeerID Multihash is invalid")}function Mt(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==L_&&r.code!==Oy)throw new pd("Supplied PeerID CID is invalid");if(r.code===Oy){let e=B(r.multihash.digest);return new nl(new URL(e))}return Xe(r.multihash)}function P_(r){return r.code===nr.code}function D_(r){return r.code===pt.code}async function By(r){if(r.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new C("Private network is enforced, but no protector was provided");return r}function Zd(r,e){if(typeof r=="string")return k_(r);if(typeof r=="number")return M_(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function k_(r){if(typeof r!="string"||r.length===0||r.length>100)throw new Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,o=parseFloat(t),s=n.toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return o*315576e5;case"months":case"month":case"mo":return o*26298e5;case"weeks":case"week":case"w":return o*6048e5;case"days":case"day":case"d":return o*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return o*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return o*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return o*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:throw new Error(`Unknown unit "${s}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function N_(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function O_(r){let e=Math.abs(r);return e>=315576e5?Os(r,e,315576e5,"year"):e>=26298e5?Os(r,e,26298e5,"month"):e>=6048e5?Os(r,e,6048e5,"week"):e>=864e5?Os(r,e,864e5,"day"):e>=36e5?Os(r,e,36e5,"hour"):e>=6e4?Os(r,e,6e4,"minute"):e>=1e3?Os(r,e,1e3,"second"):`${r} ms`}function M_(r,e){if(typeof r!="number"||!Number.isFinite(r))throw new Error("Value provided to ms.format() must be of type number.");return e?.long?O_(r):N_(r)}function Os(r,e,t,n){let o=e>=t*1.5;return`${Math.round(r/t)} ${n}${o?"s":""}`}function $m(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=Zd,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let d=0;for(let f=0;f<u.length;f++)d=(d<<5)-d+u.charCodeAt(f),d|=0;return t.colors[Math.abs(d)%t.colors.length]}t.selectColor=e;function t(u,d){let f,h=null,p,y;function g(...m){if(!g.enabled)return;let b=g,w=Number(new Date),x=w-(f||w);b.diff=x,b.prev=f,b.curr=w,f=w,m[0]=t.coerce(m[0]),typeof m[0]!="string"&&m.unshift("%O");let v=0;m[0]=m[0].replace(/%([a-zA-Z%])/g,(S,I)=>{if(S==="%%")return"%";v++;let k=t.formatters[I];if(typeof k=="function"){let K=m[v];S=k.call(b,K),m.splice(v,1),v--}return S}),t.formatArgs.call(b,m),d?.onLog!=null&&d.onLog(...m),(b.log||t.log).apply(b,m)}return g.namespace=u,g.useColors=t.useColors(),g.color=t.selectColor(u),g.extend=n,g.destroy=t.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(p!==t.namespaces&&(p=t.namespaces,y=t.enabled(u)),y),set:m=>{h=m}}),typeof t.init=="function"&&t.init(g),g}function n(u,d){let f=t(this.namespace+(typeof d>"u"?":":d)+u);return f.log=this.log,f}function o(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let d,f=(typeof u=="string"?u:"").split(/[\s,]+/),h=f.length;for(d=0;d<h;d++)f[d]&&(u=f[d].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...t.names.map(a),...t.skips.map(a).map(d=>"-"+d)].join(",");return t.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let d,f;for(d=0,f=t.skips.length;d<f;d++)if(t.skips[d].test(u))return!1;for(d=0,f=t.names.length;d<f;d++)if(t.names[d].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Jd=q_(),B_=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function U_(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function F_(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Zd(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}var $_=console.debug??console.log??(()=>{});function V_(r){try{r?Jd?.setItem("debug",r):Jd?.removeItem("debug")}catch{}}function K_(){let r;try{r=Jd?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function q_(){try{return localStorage}catch{}}function H_(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Uy=$m({formatArgs:F_,save:V_,load:K_,useColors:U_,setupFormatters:H_,colors:B_,storage:Jd,log:$_});var Gt=Uy;Gt.formatters.b=r=>r==null?"undefined":Ee.baseEncode(r);Gt.formatters.t=r=>r==null?"undefined":pr.baseEncode(r);Gt.formatters.m=r=>r==null?"undefined":_n.baseEncode(r);Gt.formatters.p=r=>r==null?"undefined":r.toString();Gt.formatters.c=r=>r==null?"undefined":r.toString();Gt.formatters.k=r=>r==null?"undefined":r.toString();Gt.formatters.a=r=>r==null?"undefined":r.toString();function Fy(r,e=""){let t=$y(r.message),n=$y(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
|
|
2
|
+
"use strict";var HeliaLibp2P=(()=>{var zC=Object.create;var dd=Object.defineProperty;var GC=Object.getOwnPropertyDescriptor;var WC=Object.getOwnPropertyNames;var jC=Object.getPrototypeOf,YC=Object.prototype.hasOwnProperty;var Sr=(r,e)=>()=>{try{return e||r((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}},$=(r,e)=>{for(var t in e)dd(r,t,{get:e[t],enumerable:!0})},w8=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of WC(e))!YC.call(r,o)&&o!==t&&dd(r,o,{get:()=>e[o],enumerable:!(n=GC(e,o))||n.enumerable});return r};var gi=(r,e,t)=>(t=r!=null?zC(jC(r)):{},w8(e||!r||!r.__esModule?dd(t,"default",{value:r,enumerable:!0}):t,r)),QC=r=>w8(dd({},"__esModule",{value:!0}),r);var Qm=Sr(Wi=>{"use strict";Object.defineProperty(Wi,"__esModule",{value:!0});Wi.Netmask4Impl=void 0;Wi.ip2long=Gi;Wi.long2ip=on;function on(r){let e=(r&-16777216)>>>24,t=(r&255<<16)>>>16,n=(r&65280)>>>8,o=r&255;return[e,t,n,o].join(".")}var rR=48,nR=97,oR=65;function sR(r){let e=0,t=10,n="9",o=0;r.length>1&&r[o]==="0"&&(r[o+1]==="x"||r[o+1]==="X"?(o+=2,t=16):"0"<=r[o+1]&&r[o+1]<="9"&&(o++,t=8,n="7"));let s=o;for(;o<r.length;){if("0"<=r[o]&&r[o]<=n)e=e*t+(r.charCodeAt(o)-rR)>>>0;else if(t===16)if("a"<=r[o]&&r[o]<="f")e=e*t+(10+r.charCodeAt(o)-nR)>>>0;else if("A"<=r[o]&&r[o]<="F")e=e*t+(10+r.charCodeAt(o)-oR)>>>0;else break;else break;if(e>4294967295)throw new Error("too large");o++}if(o===s)throw new Error("empty octet");return[e,o]}function Gi(r){let e=[];for(let t=0;t<=3&&r.length!==0;t++){if(t>0){if(r[0]!==".")throw new Error("Invalid IP");r=r.substring(1)}let[n,o]=sR(r);r=r.substring(o),e.push(n)}if(r.length!==0)throw new Error("Invalid IP");switch(e.length){case 1:if(e[0]>4294967295)throw new Error("Invalid IP");return e[0]>>>0;case 2:if(e[0]>255||e[1]>16777215)throw new Error("Invalid IP");return(e[0]<<24|e[1])>>>0;case 3:if(e[0]>255||e[1]>255||e[2]>65535)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2])>>>0;case 4:if(e[0]>255||e[1]>255||e[2]>255||e[3]>255)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0;default:throw new Error("Invalid IP")}}var Ym=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(!n){let o=e.split("/",2);e=o[0],n=o[1]}if(n||(n=32),typeof n=="string"&&n.indexOf(".")>-1){try{this.maskLong=Gi(n)}catch{throw new Error("Invalid mask: "+n)}this.bitmask=NaN;for(let o=32;o>=0;o--)if(this.maskLong===4294967295<<32-o>>>0){this.bitmask=o;break}}else if(n||n===0)this.bitmask=parseInt(n,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(Gi(e)&this.maskLong)>>>0}catch{throw new Error("Invalid net address: "+e)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+n);this.size=Math.pow(2,32-this.bitmask),this.base=on(this.netLong),this.mask=on(this.maskLong),this.hostmask=on(~this.maskLong),this.first=this.bitmask<=30?on(this.netLong+1):this.base,this.last=this.bitmask<=30?on(this.netLong+this.size-2):on(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?on(this.netLong+this.size-1):void 0}contains(e){return typeof e=="string"&&(e.indexOf("/")>0||e.split(".").length!==4)&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):(Gi(e)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0}next(e=1){return new r(on(this.netLong+this.size*e),this.mask)}forEach(e){let t=Gi(this.first),n=Gi(this.last),o=0;for(;t<=n;)e(on(t),t,o),o++,t++}toString(){return this.base+"/"+this.bitmask}};Wi.Netmask4Impl=Ym});var n9=Sr(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.Netmask6Impl=void 0;ji.ip6bigint=Zm;ji.bigint2ip6=Ks;var iR=Qm(),Xm=(1n<<128n)-1n;function Zm(r){let e=r.indexOf("%");e!==-1&&(r=r.substring(0,e));let t=r.lastIndexOf(":");if(t!==-1&&r.indexOf(".",t)!==-1){let n=r.substring(t+1),o=(0,iR.ip2long)(n),s=r.substring(0,t+1)+"0:0";return r9(s)&~0xffffffffn|BigInt(o)}return r9(r)}function r9(r){let e=r.indexOf("::"),t;if(e!==-1){let o=r.substring(0,e),s=r.substring(e+2),i=o===""?[]:o.split(":"),a=s===""?[]:s.split(":"),c=8-i.length-a.length;if(c<0)throw new Error("Invalid IPv6: too many groups");t=[...i,...Array(c).fill("0"),...a]}else t=r.split(":");if(t.length!==8)throw new Error("Invalid IPv6: expected 8 groups, got "+t.length);let n=0n;for(let o=0;o<8;o++){let s=t[o];if(s.length===0||s.length>4)throw new Error('Invalid IPv6: bad group "'+s+'"');let i=parseInt(s,16);if(isNaN(i)||i<0||i>65535)throw new Error('Invalid IPv6: bad group "'+s+'"');n=n<<16n|BigInt(i)}return n}function Ks(r){if(r<0n||r>Xm)throw new Error("Invalid IPv6 address value");let e=[];for(let i=0;i<8;i++)e.unshift(Number(r&0xffffn)),r>>=16n;let t=-1,n=0,o=-1,s=0;for(let i=0;i<8;i++)e[i]===0?o===-1?(o=i,s=1):s++:(s>n&&s>=2&&(t=o,n=s),o=-1,s=0);if(s>n&&s>=2&&(t=o,n=s),t!==-1&&t+n===8&&t>0)return e.slice(0,t).map(a=>a.toString(16)).join(":")+"::";if(t===0)return"::"+e.slice(n).map(a=>a.toString(16)).join(":");if(t>0){let i=e.slice(0,t).map(c=>c.toString(16)),a=e.slice(t+n).map(c=>c.toString(16));return i.join(":")+"::"+a.join(":")}else return e.map(i=>i.toString(16)).join(":")}var Jm=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(n==null){let o=e.indexOf("/");o!==-1?(n=parseInt(e.substring(o+1),10),e=e.substring(0,o)):n=128}if(isNaN(n)||n<0||n>128)throw new Error("Invalid mask for IPv6: "+n);this.bitmask=n,this.bitmask===0?this.maskBigint=0n:this.maskBigint=Xm>>BigInt(128-this.bitmask)<<BigInt(128-this.bitmask);try{this.netBigint=Zm(e)&this.maskBigint}catch{throw new Error("Invalid IPv6 net address: "+e)}this.size=Number(1n<<BigInt(128-this.bitmask)),this.base=Ks(this.netBigint),this.mask=Ks(this.maskBigint),this.hostmask=Ks(~this.maskBigint&Xm),this.first=this.base,this.last=Ks(this.netBigint+(1n<<BigInt(128-this.bitmask))-1n),this.broadcast=void 0}contains(e){return typeof e=="string"&&e.indexOf("/")>0&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.last):(Zm(e)&this.maskBigint)===this.netBigint}next(e=1){let t=1n<<BigInt(128-this.bitmask);return new r(Ks(this.netBigint+t*BigInt(e)),this.bitmask)}forEach(e){let t=this.netBigint,n=1n<<BigInt(128-this.bitmask),o=this.netBigint+n-1n,s=0;for(;t<=o;)e(Ks(t),Number(t),s),s++,t++}toString(){return this.base+"/"+this.bitmask}};ji.Netmask6Impl=Jm});var o9=Sr(Ao=>{"use strict";Object.defineProperty(Ao,"__esModule",{value:!0});Ao.long2ip=Ao.ip2long=Ao.Netmask=void 0;var cf=Qm();Object.defineProperty(Ao,"ip2long",{enumerable:!0,get:function(){return cf.ip2long}});Object.defineProperty(Ao,"long2ip",{enumerable:!0,get:function(){return cf.long2ip}});var aR=n9(),e3=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");(e.indexOf("/")!==-1?e.substring(0,e.indexOf("/")):e).indexOf(":")!==-1?this._impl=new aR.Netmask6Impl(e,t):this._impl=new cf.Netmask4Impl(e,t),this.base=this._impl.base,this.mask=this._impl.mask,this.hostmask=this._impl.hostmask,this.bitmask=this._impl.bitmask,this.size=this._impl.size,this.first=this._impl.first,this.last=this._impl.last,this.broadcast=this._impl.broadcast,this._impl instanceof cf.Netmask4Impl?(this.maskLong=this._impl.maskLong,this.netLong=this._impl.netLong):(this.maskLong=0,this.netLong=0)}contains(e){return typeof e=="string"&&(e.indexOf("/")>0?e=new r(e):e.indexOf(":")===-1&&e.split(".").length!==4&&(e=new r(e))),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):this._impl.contains(e)}next(e=1){let t=this._impl.next(e);return new r(t.base,t.bitmask)}forEach(e){this._impl.forEach(e)}toString(){return this._impl.toString()}};Ao.Netmask=e3});var Ab=Sr(($ee,Q3)=>{"use strict";var oP=Object.prototype.hasOwnProperty,$t="~";function Nl(){}Object.create&&(Nl.prototype=Object.create(null),new Nl().__proto__||($t=!1));function sP(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Sb(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new sP(t,n||r,o),i=$t?$t+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function kh(r,e){--r._eventsCount===0?r._events=new Nl:delete r._events[e]}function Lt(){this._events=new Nl,this._eventsCount=0}Lt.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)oP.call(t,n)&&e.push($t?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Lt.prototype.listeners=function(e){var t=$t?$t+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Lt.prototype.listenerCount=function(e){var t=$t?$t+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Lt.prototype.emit=function(e,t,n,o,s,i){var a=$t?$t+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,d;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(d=1,u=new Array(l-1);d<l;d++)u[d-1]=arguments[d];c.fn.apply(c.context,u)}else{var f=c.length,h;for(d=0;d<f;d++)switch(c[d].once&&this.removeListener(e,c[d].fn,void 0,!0),l){case 1:c[d].fn.call(c[d].context);break;case 2:c[d].fn.call(c[d].context,t);break;case 3:c[d].fn.call(c[d].context,t,n);break;case 4:c[d].fn.call(c[d].context,t,n,o);break;default:if(!u)for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c[d].fn.apply(c[d].context,u)}}return!0};Lt.prototype.on=function(e,t,n){return Sb(this,e,t,n,!1)};Lt.prototype.once=function(e,t,n){return Sb(this,e,t,n,!0)};Lt.prototype.removeListener=function(e,t,n,o){var s=$t?$t+e:e;if(!this._events[s])return this;if(!t)return kh(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&kh(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:kh(this,s)}return this};Lt.prototype.removeAllListeners=function(e){var t;return e?(t=$t?$t+e:e,this._events[t]&&kh(this,t)):(this._events=new Nl,this._eventsCount=0),this};Lt.prototype.off=Lt.prototype.removeListener;Lt.prototype.addListener=Lt.prototype.on;Lt.prefixed=$t;Lt.EventEmitter=Lt;typeof Q3<"u"&&(Q3.exports=Lt)});var Tb=Sr((cte,Ib)=>{Ib.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var Gb=Sr((Toe,zb)=>{"use strict";function kP(r){return r>=55296&&r<=56319}function NP(r){return r>=56320&&r<=57343}zb.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],kP(i)&&NP(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var jb=Sr((_oe,Wb)=>{"use strict";function OP(r){return r>=55296&&r<=56319}function MP(r){return r>=56320&&r<=57343}Wb.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),MP(o)?s!=null&&OP(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var Qb=Sr((Roe,Yb)=>{"use strict";var BP=Gb(),UP=jb();Yb.exports=BP.bind(null,UP)});var Jb=Sr((Loe,Zb)=>{"use strict";var FP=Qb(),$P=/[\/\?<>\\:\*\|"]/g,VP=/[\x00-\x1f\x80-\x9f]/g,KP=/^\.+$/,qP=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;function HP(r,e){for(var t=r.length;t>0&&(r[t-1]==="."||r[t-1]===" ");)t--;return t<r.length?r.slice(0,t)+e:r}function Xb(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace($P,e).replace(VP,e).replace(KP,e).replace(qP,e);return t=HP(t,e),FP(t,255)}Zb.exports=function(r,e){var t=e&&e.replacement||"",n=Xb(r,t);return t===""?n:Xb(n,"")}});var ew=Sr(pa=>{"use strict";var GP="[object ArrayBuffer]",Gn=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===GP}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},S4="string",WP=/^[0-9a-f\s]+$/i,jP=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,YP=/^[a-zA-Z0-9-_]+$/,t1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=Gn.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},wr=class{static toString(e,t=!1){let n=Gn.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},r1=class r{static isHex(e){return typeof e===S4&&WP.test(e)}static isBase64(e){return typeof e===S4&&jP.test(e)}static isBase64Url(e){return typeof e===S4&&YP.test(e)}static ToString(e,t="utf8"){let n=Gn.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return wr.toString(n,!0);case"utf16":case"utf16be":return wr.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return wr.fromString(e,!0);case"utf16":case"utf16be":return wr.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Gn.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return t1.fromString(e);case"utf16":case"utf16be":return wr.fromString(e);case"utf16le":case"usc2":return wr.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return t1.toString(e);case"utf16":case"utf16be":return wr.toString(e);case"utf16le":case"usc2":return wr.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=Gn.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=Gn.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return wr.toString(e,t)}static FromUtf16String(e,t=!1){return wr.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};r1.DEFAULT_UTF8_ENCODING="utf8";function QP(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function XP(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function ZP(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}pa.BufferSourceConverter=Gn;pa.Convert=r1;pa.assign=QP;pa.combine=XP;pa.isEqual=ZP});var dA=Sr(Cn=>{"use strict";Object.defineProperty(Cn,"__esModule",{value:!0});Cn.parseCookie=lA;Cn.parse=lA;Cn.stringifyCookie=zF;Cn.stringifySetCookie=ep;Cn.serialize=ep;Cn.parseSetCookie=GF;Cn.stringifySetCookie=ep;Cn.serialize=ep;var aA=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,cA=/^[\u0021-\u003A\u003C-\u007E]*$/,$F=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,VF=/^[\u0020-\u003A\u003D-\u007E]*$/,KF=/^-?\d+$/,qF=Object.prototype.toString,HF=(()=>{let r=function(){};return r.prototype=Object.create(null),r})();function lA(r,e){let t=new HF,n=r.length;if(n<2)return t;let o=e?.decode||uA,s=0;do{let i=V5(r,s,n);if(i===-1)break;let a=$5(r,s,n);if(i>a){s=r.lastIndexOf(";",i-1)+1;continue}let c=jo(r,s,i);t[c]===void 0&&(t[c]=o(jo(r,i+1,a))),s=a+1}while(s<n);return t}function zF(r,e){let t=e?.encode||encodeURIComponent,n=[];for(let o of Object.keys(r)){let s=r[o];if(s===void 0)continue;if(!aA.test(o))throw new TypeError(`cookie name is invalid: ${o}`);let i=t(s);if(!cA.test(i))throw new TypeError(`cookie val is invalid: ${s}`);n.push(`${o}=${i}`)}return n.join("; ")}function ep(r,e,t){let n=typeof r=="object"?r:{...t,name:r,value:String(e)},s=(typeof e=="object"?e:t)?.encode||encodeURIComponent;if(!aA.test(n.name))throw new TypeError(`argument name is invalid: ${n.name}`);let i=n.value?s(n.value):"";if(!cA.test(i))throw new TypeError(`argument val is invalid: ${n.value}`);let a=n.name+"="+i;if(n.maxAge!==void 0){if(!Number.isInteger(n.maxAge))throw new TypeError(`option maxAge is invalid: ${n.maxAge}`);a+="; Max-Age="+n.maxAge}if(n.domain){if(!$F.test(n.domain))throw new TypeError(`option domain is invalid: ${n.domain}`);a+="; Domain="+n.domain}if(n.path){if(!VF.test(n.path))throw new TypeError(`option path is invalid: ${n.path}`);a+="; Path="+n.path}if(n.expires){if(!WF(n.expires)||!Number.isFinite(n.expires.valueOf()))throw new TypeError(`option expires is invalid: ${n.expires}`);a+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(a+="; HttpOnly"),n.secure&&(a+="; Secure"),n.partitioned&&(a+="; Partitioned"),n.priority)switch(typeof n.priority=="string"?n.priority.toLowerCase():void 0){case"low":a+="; Priority=Low";break;case"medium":a+="; Priority=Medium";break;case"high":a+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${n.priority}`)}if(n.sameSite)switch(typeof n.sameSite=="string"?n.sameSite.toLowerCase():n.sameSite){case!0:case"strict":a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"none":a+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${n.sameSite}`)}return a}function GF(r,e){let t=e?.decode||uA,n=r.length,o=$5(r,0,n),s=V5(r,0,o),i=s===-1?{name:"",value:t(jo(r,0,o))}:{name:jo(r,0,s),value:t(jo(r,s+1,o))},a=o+1;for(;a<n;){let c=$5(r,a,n),l=V5(r,a,c),u=l===-1?jo(r,a,c):jo(r,a,l),d=l===-1?void 0:jo(r,l+1,c);switch(u.toLowerCase()){case"httponly":i.httpOnly=!0;break;case"secure":i.secure=!0;break;case"partitioned":i.partitioned=!0;break;case"domain":i.domain=d;break;case"path":i.path=d;break;case"max-age":d&&KF.test(d)&&(i.maxAge=Number(d));break;case"expires":if(!d)break;let f=new Date(d);Number.isFinite(f.valueOf())&&(i.expires=f);break;case"priority":if(!d)break;let h=d.toLowerCase();(h==="low"||h==="medium"||h==="high")&&(i.priority=h);break;case"samesite":if(!d)break;let p=d.toLowerCase();(p==="lax"||p==="strict"||p==="none")&&(i.sameSite=p);break}a=c+1}return i}function $5(r,e,t){let n=r.indexOf(";",e);return n===-1?t:n}function V5(r,e,t){let n=r.indexOf("=",e);return n<t?n:-1}function jo(r,e,t){let n=e,o=t;do{let s=r.charCodeAt(n);if(s!==32&&s!==9)break}while(++n<o);for(;o>n;){let s=r.charCodeAt(o-1);if(s!==32&&s!==9)break;o--}return r.slice(n,o)}function uA(r){if(r.indexOf("%")===-1)return r;try{return decodeURIComponent(r)}catch{return r}}function WF(r){return qF.call(r)==="[object Date]"}});var Z$={};$(Z$,{libp2pDefaults:()=>s2,withLibp2p:()=>X$});var x8=Symbol.for("@libp2p/connection");var is=Symbol.for("@libp2p/content-routing");var tr=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}},fd=class extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}},hd=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},C=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},Tn=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},pc=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}},mc=class extends Error{static name="UnsupportedOperationError";constructor(e="Unsupported operation"){super(e),this.name="UnsupportedOperationError"}};var as=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}},yi=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}},Ar=class extends Error{static name="MuxerClosedError";constructor(e="The muxer is closed"){super(e),this.name="MuxerClosedError"}},bi=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}};var Yr=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},gc=class extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}},Pe=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},wi=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},Qr=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},pd=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},md=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},gd=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},oe=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}},cs=class extends Error{static name="ProtocolError";constructor(e="Protocol error"){super(e),this.name="ProtocolError"}},co=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},Cr=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var lo=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}},ls=class extends Error{static name="ListenError";constructor(e="Listen error"){super(e),this.name="ListenError"}},yc=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},yd=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},xi=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Ir=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var bd=class extends Event{data;constructor(e,t){super("message",t),this.data=e}},uo=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}},wd=class extends uo{constructor(e,t){super(!0,e,t)}},xd=class extends uo{constructor(e,t){super(!1,e,t)}};var us=Symbol.for("@libp2p/peer-discovery");var Ed=Symbol.for("@libp2p/peer-id");function Xr(r){return!!r?.[Ed]}var ds=Symbol.for("@libp2p/peer-routing");var fs="keep-alive";function vd(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Tr(...r){let e=[];for(let t of r)vd(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Zr(...r){let e=[];for(let t of r)vd(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var fo=Symbol.for("@libp2p/transport");var bc;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(bc||(bc={}));function XC(r){return typeof r?.handleEvent=="function"}function ZC(r){return(r!==!0&&r!==!1&&r?.once)??!1}var se=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){let o=ZC(n);super.addEventListener(e,i=>{if(o){let a=this.#e.get(i.type);a!=null&&(a=a.filter(({callback:c})=>c!==t),this.#e.set(i.type,a))}XC(t)?t.handleEvent(i):t(i)},n);let s=this.#e.get(e);s==null&&(s=[],this.#e.set(e,s)),s.push({callback:t,once:o})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var ue=Symbol.for("@libp2p/service-capabilities"),rr=Symbol.for("@libp2p/service-dependencies");var u2={};$(u2,{base58btc:()=>Ee,base58flickr:()=>iI});var MV=new Uint8Array(0);function v8(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function pr(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return hs(r);if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return hs(new Uint8Array(r.buffer,r.byteOffset,r.byteLength));throw new Error("Unknown type, must be binary type")}function S8(r){let e=new Uint8Array(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}var E8=4096;function A8(r){let e=r.length;if(e<=E8)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.subarray(n,n+=E8));return t}function JC(r){return r?.buffer instanceof ArrayBuffer}function hs(r){return JC(r)?r:r.slice()}function eI(r,e,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),o=0;o<n.length;o++)n[o]=255;for(var s=0;s<r.length;s++){var i=r.charAt(s),a=i.charCodeAt(0);if(n[a]!==255)throw new TypeError(i+" is ambiguous");if(n[a]=s,t){var c=i.toLowerCase().charCodeAt(0),l=i.toUpperCase().charCodeAt(0);c!==a&&(n[c]=s),l!==a&&(n[l]=s)}}var u=r.length,d=r.charAt(0),f=Math.log(u)/Math.log(256),h=Math.log(256)/Math.log(u);function p(m){if(m instanceof Uint8Array||(ArrayBuffer.isView(m)?m=new Uint8Array(m.buffer,m.byteOffset,m.byteLength):Array.isArray(m)&&(m=Uint8Array.from(m))),!(m instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(m.length===0)return"";for(var b=0,w=0,x=0,v=m.length;x!==v&&m[x]===0;)x++,b++;for(var A=(v-x)*h+1>>>0,S=new Uint8Array(A);x!==v;){for(var I=m[x],k=0,K=A-1;(I!==0||k<w)&&K!==-1;K--,k++)I+=256*S[K]>>>0,S[K]=I%u>>>0,I=I/u>>>0;if(I!==0)throw new Error("Non-zero carry");w=k,x++}for(var F=A-w;F!==A&&S[F]===0;)F++;for(var E=d.repeat(b);F<A;++F)E+=r.charAt(S[F]);return E}function y(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var b=0;if(m[b]!==" "){for(var w=0,x=0;m[b]===d;)w++,b++;for(var v=(m.length-b)*f+1>>>0,A=new Uint8Array(v);m[b];){var S=n[m.charCodeAt(b)];if(S===255)return;for(var I=0,k=v-1;(S!==0||I<x)&&k!==-1;k--,I++)S+=u*A[k]>>>0,A[k]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");x=I,b++}if(m[b]!==" "){for(var K=v-x;K!==v&&A[K]===0;)K++;for(var F=new Uint8Array(w+(v-K)),E=w;K!==v;)F[E++]=A[K++];return F}}}function g(m){var b=y(m);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:p,decodeUnsafe:y,decode:g}}var tI=eI,rI=tI,I8=rI;var i2=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},a2=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return T8(this,e)}},c2=class{decoders;constructor(e){this.decoders=e}or(e){return T8(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function T8(r,e){return new c2({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var l2=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new i2(e,t,n),this.decoder=new a2(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ei({name:r,prefix:e,encode:t,decode:n}){return new l2(r,e,t,n)}function ho({name:r,prefix:e,alphabet:t,caseInsensitive:n=!1}){let{encode:o,decode:s}=I8(t,r,n);return Ei({prefix:e,name:r,encode:o,decode:i=>pr(s(i))})}function nI(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function oI(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function sI(r,e){let t={};for(let n=0;n<r.length;++n)if(t[r[n]]=n,e){let o=r[n].toLowerCase(),s=r[n].toUpperCase();o!==r[n]&&(t[o]=n),s!==r[n]&&(t[s]=n)}return t}function Ve({name:r,prefix:e,bitsPerChar:t,alphabet:n,caseInsensitive:o=!1}){let s=sI(n,o);return Ei({prefix:e,name:r,encode(i){return oI(i,n,t)},decode(i){return nI(i,s,t,r)}})}var Ee=ho({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),iI=ho({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var d2={};$(d2,{base32:()=>mr,base32hex:()=>uI,base32hexpad:()=>fI,base32hexpadupper:()=>hI,base32hexupper:()=>dI,base32pad:()=>cI,base32padupper:()=>lI,base32upper:()=>aI,base32z:()=>pI});var mr=Ve({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5,caseInsensitive:!0}),aI=Ve({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5,caseInsensitive:!0}),cI=Ve({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5,caseInsensitive:!0}),lI=Ve({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5,caseInsensitive:!0}),uI=Ve({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5,caseInsensitive:!0}),dI=Ve({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5,caseInsensitive:!0}),fI=Ve({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5,caseInsensitive:!0}),hI=Ve({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5,caseInsensitive:!0}),pI=Ve({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var f2={};$(f2,{base36:()=>ps,base36upper:()=>mI});var ps=ho({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz",caseInsensitive:!0}),mI=ho({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",caseInsensitive:!0});var Ue={};$(Ue,{Digest:()=>ms,create:()=>Nt,decode:()=>ve,equals:()=>p2,hasCode:()=>NI});var gI=L8,_8=128,yI=127,bI=~yI,wI=Math.pow(2,31);function L8(r,e,t){e=e||[],t=t||0;for(var n=t;r>=wI;)e[t++]=r&255|_8,r/=128;for(;r&bI;)e[t++]=r&255|_8,r>>>=7;return e[t]=r|0,L8.bytes=t-n+1,e}var xI=h2,EI=128,R8=127;function h2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw h2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&R8)<<o:(i&R8)*Math.pow(2,o),o+=7}while(i>=EI);return h2.bytes=s-n,t}var vI=Math.pow(2,7),SI=Math.pow(2,14),AI=Math.pow(2,21),CI=Math.pow(2,28),II=Math.pow(2,35),TI=Math.pow(2,42),_I=Math.pow(2,49),RI=Math.pow(2,56),LI=Math.pow(2,63),PI=function(r){return r<vI?1:r<SI?2:r<AI?3:r<CI?4:r<II?5:r<TI?6:r<_I?7:r<RI?8:r<LI?9:10},DI={encode:gI,decode:xI,encodingLength:PI},kI=DI,wc=kI;function xc(r,e=0){return[wc.decode(r,e),wc.decode.bytes]}function vi(r,e,t=0){return wc.encode(r,e,t),e}function Si(r){return wc.encodingLength(r)}function Nt(r,e){let t=e.byteLength,n=Si(r),o=n+Si(t),s=new Uint8Array(o+t);return vi(r,s,0),vi(t,s,n),s.set(e,o),new ms(r,t,e,s)}function ve(r){let e=pr(r),[t,n]=xc(e),[o,s]=xc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ms(t,o,i,e)}function p2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&v8(r.bytes,t.bytes)}}var ms=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=hs(n),this.bytes=hs(o)}};function NI(r,e){return r.code===e}function P8(r,e){let{bytes:t,version:n}=r;return n===0?MI(t,m2(r),e??Ee.encoder):BI(t,m2(r),e??mr.encoder)}var D8=new WeakMap;function m2(r){let e=D8.get(r);if(e==null){let t=new Map;return D8.set(r,t),t}return e}var ae=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=hs(o),this["/"]=this.bytes}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ec)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==UI)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Nt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&p2(e.multihash,n.multihash)}toString(e){return P8(this,e)}toJSON(){return{"/":P8(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??k8(n,o,s.bytes))}else if(t[FI]===!0){let{version:n,multihash:o,code:s}=t,i=ve(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ec)throw new Error(`Version 0 CID must use dag-pb (code: ${Ec}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=k8(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ec,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=pr(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new ms(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=xc(e.subarray(t));return t+=f,d},o=n(),s=Ec;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=OI(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return m2(s).set(n,e),s}};function OI(r,e){switch(r[0]){case"Q":{let t=e??Ee;return[Ee.prefix,t.decode(`${Ee.prefix}${r}`)]}case Ee.prefix:{let t=e??Ee;return[Ee.prefix,t.decode(r)]}case mr.prefix:{let t=e??mr;return[mr.prefix,t.decode(r)]}case ps.prefix:{let t=e??ps;return[ps.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function MI(r,e,t){let{prefix:n}=t;if(n!==Ee.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function BI(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ec=112,UI=18;function k8(r,e,t){let n=Si(r),o=n+Si(e),s=new Uint8Array(o+t.byteLength);return vi(r,s,0),vi(e,s,n),s.set(t,o),s}var FI=Symbol.for("@ipld/js-cid/CID");var g2={};$(g2,{identity:()=>nr});var N8=0,$I="identity",O8=pr;function VI(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Nt(N8,O8(r))}var nr={code:N8,name:$I,encode:O8,digest:VI};function Z(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function KI(r){return r.buffer instanceof ArrayBuffer}function ie(r){return KI(r)?r:r.slice()}var M8="1.2.840.10045.3.1.7",B8="1.3.132.0.34",U8="1.3.132.0.35";async function F8(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function $8(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);t?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,ie(e.subarray()));return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function V8(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,ie(e),ie(t.subarray()));return n?.signal?.throwIfAborted(),s}function de(r=0){return new Uint8Array(r)}function Ke(r=0){return new Uint8Array(r)}function qI(r){return r?.buffer instanceof ArrayBuffer}function Ad(r){if(qI(r))return r;let e=r.slice();return new Uint8Array(e.buffer,0,e.byteLength)}function et(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=Ke(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Ad(t)}var q8=Symbol.for("@achingbrain/uint8arraylist");function K8(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function Ai(r){return!!r?.[q8]}var W=class r{bufs;length;[q8]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Ai(n)){t+=n.byteLength;for(let o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Ai(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=K8(this.bufs,e);return t.buf[t.index]}set(e,t){let n=K8(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Ai(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return et(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:et(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=n,s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let d=e-a;n.push(i.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Ai(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let d=0;d<s;d++)i[d]=-1;for(let d=0;d<o;d++)i[n[d]]=d;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let f=l;f>=0;f--){let h=this.get(d+f);if(n[f]!==h){u=Math.max(1,f-a[h]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ke(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=de(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=de(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=de(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ke(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=de(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=de(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=de(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=de(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=de(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Z(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var y2={};$(y2,{base10:()=>HI});var HI=ho({prefix:"9",name:"base10",alphabet:"0123456789"});var b2={};$(b2,{base16:()=>zI,base16upper:()=>GI});var zI=Ve({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4,caseInsensitive:!0}),GI=Ve({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4,caseInsensitive:!0});var w2={};$(w2,{base2:()=>WI});var WI=Ve({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var x2={};$(x2,{base256emoji:()=>ZI});var H8=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}"),jI=H8.reduce((r,e,t)=>(r[t]=e,r),[]),YI=H8.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function QI(r){return r.reduce((e,t)=>(e+=jI[t],e),"")}function XI(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=YI[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var ZI=Ei({prefix:"\u{1F680}",name:"base256emoji",encode:QI,decode:XI});var E2={};$(E2,{base64:()=>_n,base64pad:()=>vc,base64url:()=>Sc,base64urlpad:()=>JI});var _n=Ve({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),vc=Ve({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Sc=Ve({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),JI=Ve({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var v2={};$(v2,{base8:()=>eT});var eT=Ve({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var S2={};$(S2,{identity:()=>tT});var tT=Ei({prefix:"\0",name:"identity",encode:r=>A8(pr(r)),decode:r=>pr(S8(r))});var EK=new TextEncoder,vK=new TextDecoder;var Cd=85;var I2={};$(I2,{sha256:()=>pt,sha512:()=>oT});var nT=20;function Ac({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new C2(r,e,t,n,o)}var C2=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??nT,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?z8(n,this.code,t?.truncate):n.then(o=>z8(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function z8(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Nt(e,r)}function W8(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var pt=Ac({name:"sha2-256",code:18,encode:W8("SHA-256")}),oT=Ac({name:"sha2-512",code:19,encode:W8("SHA-512")});var gs={...S2,...w2,...v2,...y2,...b2,...d2,...f2,...u2,...E2,...x2},NK={...I2,...g2};function Y8(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var j8=Y8("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),T2=Y8("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Ke(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),sT={utf8:j8,"utf-8":j8,hex:gs.base16,latin1:T2,ascii:T2,binary:T2,...gs},Id=sT;function O(r,e="utf8"){let t=Id[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function B(r,e="utf8"){let t=Id[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var iT=parseInt("11111",2),_2=parseInt("10000000",2),aT=parseInt("01111111",2),Q8={0:Cc,1:Cc,2:cT,3:dT,4:fT,5:uT,6:lT,16:Cc,22:Cc,48:Cc};function gr(r,e={offset:0}){let t=r[e.offset]&iT;if(e.offset++,Q8[t]!=null)return Q8[t](r,e);throw new Error("No decoder for tag "+t)}function Ic(r,e){let t=0;if((r[e.offset]&_2)===_2){let n=r[e.offset]&aT,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function Cc(r,e){Ic(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=gr(r,e);if(n===null)break;t.push(n)}return t}function cT(r,e){let t=Ic(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function lT(r,e){let t=Ic(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let d=0;d<c.length;d++)u+=c[d]<<d*7;a+=`.${u}`,c=[]}}return a}function uT(r,e){return e.offset++,null}function dT(r,e){let t=Ic(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function fT(r,e){let t=Ic(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function hT(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new W;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function Td(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=hT(r.byteLength);return new W(Uint8Array.from([e.byteLength|_2]),e)}function Ot(r){let e=new W,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new W(Uint8Array.from([2]),Td(e),e)}function Tc(r){let e=Uint8Array.from([0]),t=new W(e,r);return new W(Uint8Array.from([3]),Td(t),t)}function X8(r){return new W(Uint8Array.from([4]),Td(r),r)}function _r(r,e=48){let t=new W;for(let n of r)t.append(n);return new W(Uint8Array.from([e]),Td(t),t)}var pT=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),mT=Uint8Array.from([6,5,43,129,4,0,34]),gT=Uint8Array.from([6,5,43,129,4,0,35]),Z8={ext:!0,kty:"EC",crv:"P-256"},J8={ext:!0,kty:"EC",crv:"P-384"},e7={ext:!0,kty:"EC",crv:"P-521"},Ci=32,Ii=48,Ti=66;function t7(r){let e=gr(r);return R2(e)}function R2(r){let e=r[1],t=B(e,"base64url"),n=r[2][1][0],o=1,s,i;if(e.byteLength===Ci)return s=B(n.subarray(o,o+Ci),"base64url"),i=B(n.subarray(o+Ci),"base64url"),new bs({...Z8,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===Ii)return s=B(n.subarray(o,o+Ii),"base64url"),i=B(n.subarray(o+Ii),"base64url"),new bs({...J8,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===Ti)return s=B(n.subarray(o,o+Ti),"base64url"),i=B(n.subarray(o+Ti),"base64url"),new bs({...e7,key_ops:["sign"],d:t,x:s,y:i});throw new C(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function L2(r){let e=gr(r);return r7(e)}function r7(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===Ci*2+1)return n=B(e.subarray(t,t+Ci),"base64url"),o=B(e.subarray(t+Ci),"base64url"),new ys({...Z8,key_ops:["verify"],x:n,y:o});if(e.byteLength===Ii*2+1)return n=B(e.subarray(t,t+Ii),"base64url"),o=B(e.subarray(t+Ii),"base64url"),new ys({...J8,key_ops:["verify"],x:n,y:o});if(e.byteLength===Ti*2+1)return n=B(e.subarray(t,t+Ti),"base64url"),o=B(e.subarray(t+Ti),"base64url"),new ys({...e7,key_ops:["verify"],x:n,y:o});throw new C(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function n7(r){return _r([Ot(Uint8Array.from([1])),X8(O(r.d??"","base64url")),_r([s7(r.crv)],160),_r([Tc(new W(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function o7(r){return _r([Ot(Uint8Array.from([1])),_r([s7(r.crv)],160),_r([Tc(new W(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function s7(r){if(r==="P-256")return pT;if(r==="P-384")return mT;if(r==="P-521")return gT;throw new C(`Invalid curve ${r}`)}async function i7(r="P-256"){let e=await F8(r);return new bs(e.privateKey)}var ys=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=o7(this.jwk)),this._raw}toMultihash(){return nr.digest(ct(this))}toCID(){return ae.createV1(114,this.toMultihash())}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}async verify(e,t,n){return V8(this.jwk,t,e,n)}},bs=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new ys({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=n7(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}async sign(e,t){return $8(this.jwk,e,t)}};function P2(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in r&&r.BYTES_PER_ELEMENT===1}function Ht(r,e=""){if(typeof r!="number"){let t=e&&`"${e}" `;throw new TypeError(`${t}expected number, got ${typeof r}`)}if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new RangeError(`${t}expected integer >= 0, got ${r}`)}}function mt(r,e,t=""){let n=P2(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`,l=i+"expected Uint8Array"+a+", got "+c;throw n?new RangeError(l):new TypeError(l)}return r}function Ln(r){if(typeof r!="function"||typeof r.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(Ht(r.outputLen),Ht(r.blockLen),r.outputLen<1)throw new Error('"outputLen" must be >= 1');if(r.blockLen<1)throw new Error('"blockLen" must be >= 1')}function _i(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function _d(r,e){mt(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new RangeError('"digestInto() output" expected to be of length >='+t)}function At(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function ws(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Rr(r,e){return r<<32-e|r>>>e}function Rd(r,e){return r<<e|r>>>32-e>>>0}var c7=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",yT=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Ld(r){if(mt(r),c7)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=yT[r[t]];return e}var Rn={_0:48,_9:57,A:65,F:70,a:97,f:102};function a7(r){if(r>=Rn._0&&r<=Rn._9)return r-Rn._0;if(r>=Rn.A&&r<=Rn.F)return r-(Rn.A-10);if(r>=Rn.a&&r<=Rn.f)return r-(Rn.a-10)}function _c(r){if(typeof r!="string")throw new TypeError("hex string expected, got "+typeof r);if(c7)try{return Uint8Array.fromHex(r)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}let e=r.length,t=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=a7(r.charCodeAt(s)),a=a7(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}var bT=async()=>{};async function l7(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await bT(),n+=s)}}function wT(r){if(typeof r!="string")throw new TypeError("string expected");return new Uint8Array(new TextEncoder().encode(r))}function D2(r,e=""){return typeof r=="string"?wT(r):mt(r,void 0,e)}function k2(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];mt(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function u7(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new TypeError("options must be object or undefined");return Object.assign(r,e)}function Rc(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.canXOF=n.canXOF,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function d7(r=32){Ht(r,"bytesLength");let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(r>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${r}`);return e.getRandomValues(new Uint8Array(r))}var N2=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function Pd(r,e,t){return r&e^~r&t}function Dd(r,e,t){return r&e^r&t^e&t}var xs=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ws(this.buffer)}update(e){_i(this),mt(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=ws(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){_i(this),_d(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,At(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let d=i;d<o;d++)t[d]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=ws(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<l;d++)a.setUint32(4*d,u[d],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Pn=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var gt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var kd=BigInt(4294967295),f7=BigInt(32);function xT(r,e=!1){return e?{h:Number(r&kd),l:Number(r>>f7&kd)}:{h:Number(r>>f7&kd)|0,l:Number(r&kd)|0}}function h7(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let s=0;s<t;s++){let{h:i,l:a}=xT(r[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var O2=(r,e,t)=>r>>>t,M2=(r,e,t)=>r<<32-t|e>>>t,Es=(r,e,t)=>r>>>t|e<<32-t,vs=(r,e,t)=>r<<32-t|e>>>t,Lc=(r,e,t)=>r<<64-t|e>>>t-32,Pc=(r,e,t)=>r>>>t-32|e<<64-t;function Jr(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var p7=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),m7=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,g7=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),y7=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,b7=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),w7=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var vT=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),po=new Uint32Array(64),B2=class extends xs{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let d=0;d<16;d++,t+=4)po[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let f=po[d-15],h=po[d-2],p=Rr(f,7)^Rr(f,18)^f>>>3,y=Rr(h,17)^Rr(h,19)^h>>>10;po[d]=y+po[d-7]+p+po[d-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:u}=this;for(let d=0;d<64;d++){let f=Rr(a,6)^Rr(a,11)^Rr(a,25),h=u+f+Pd(a,c,l)+vT[d]+po[d]|0,y=(Rr(n,2)^Rr(n,13)^Rr(n,22))+Dd(n,o,s)|0;u=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+y|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,s,i,a,c,l,u)}roundClean(){At(po)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),At(this.buffer)}},U2=class extends B2{A=Pn[0]|0;B=Pn[1]|0;C=Pn[2]|0;D=Pn[3]|0;E=Pn[4]|0;F=Pn[5]|0;G=Pn[6]|0;H=Pn[7]|0;constructor(){super(32)}};var x7=h7(["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))),ST=x7[0],AT=x7[1],mo=new Uint32Array(80),go=new Uint32Array(80),F2=class extends xs{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:u,Fh:d,Fl:f,Gh:h,Gl:p,Hh:y,Hl:g}=this;return[e,t,n,o,s,i,a,c,l,u,d,f,h,p,y,g]}set(e,t,n,o,s,i,a,c,l,u,d,f,h,p,y,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=d|0,this.Fl=f|0,this.Gh=h|0,this.Gl=p|0,this.Hh=y|0,this.Hl=g|0}process(e,t){for(let w=0;w<16;w++,t+=4)mo[w]=e.getUint32(t),go[w]=e.getUint32(t+=4);for(let w=16;w<80;w++){let x=mo[w-15]|0,v=go[w-15]|0,A=Es(x,v,1)^Es(x,v,8)^O2(x,v,7),S=vs(x,v,1)^vs(x,v,8)^M2(x,v,7),I=mo[w-2]|0,k=go[w-2]|0,K=Es(I,k,19)^Lc(I,k,61)^O2(I,k,6),F=vs(I,k,19)^Pc(I,k,61)^M2(I,k,6),E=g7(S,F,go[w-7],go[w-16]),P=y7(E,A,K,mo[w-7],mo[w-16]);mo[w]=P|0,go[w]=E|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:u,Eh:d,El:f,Fh:h,Fl:p,Gh:y,Gl:g,Hh:m,Hl:b}=this;for(let w=0;w<80;w++){let x=Es(d,f,14)^Es(d,f,18)^Lc(d,f,41),v=vs(d,f,14)^vs(d,f,18)^Pc(d,f,41),A=d&h^~d&y,S=f&p^~f&g,I=b7(b,v,S,AT[w],go[w]),k=w7(I,m,x,A,ST[w],mo[w]),K=I|0,F=Es(n,o,28)^Lc(n,o,34)^Lc(n,o,39),E=vs(n,o,28)^Pc(n,o,34)^Pc(n,o,39),P=n&s^n&a^s&a,L=o&i^o&c^i&c;m=y|0,b=g|0,y=h|0,g=p|0,h=d|0,p=f|0,{h:d,l:f}=Jr(l|0,u|0,k|0,K|0),l=a|0,u=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let _=p7(K,E,L);n=m7(_,k,F,P),o=_|0}({h:n,l:o}=Jr(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=Jr(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=Jr(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=Jr(this.Dh|0,this.Dl|0,l|0,u|0),{h:d,l:f}=Jr(this.Eh|0,this.El|0,d|0,f|0),{h,l:p}=Jr(this.Fh|0,this.Fl|0,h|0,p|0),{h:y,l:g}=Jr(this.Gh|0,this.Gl|0,y|0,g|0),{h:m,l:b}=Jr(this.Hh|0,this.Hl|0,m|0,b|0),this.set(n,o,s,i,a,c,l,u,d,f,h,p,y,g,m,b)}roundClean(){At(mo,go)}destroy(){this.destroyed=!0,At(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},$2=class extends F2{Ah=gt[0]|0;Al=gt[1]|0;Bh=gt[2]|0;Bl=gt[3]|0;Ch=gt[4]|0;Cl=gt[5]|0;Dh=gt[6]|0;Dl=gt[7]|0;Eh=gt[8]|0;El=gt[9]|0;Fh=gt[10]|0;Fl=gt[11]|0;Gh=gt[12]|0;Gl=gt[13]|0;Hh=gt[14]|0;Hl=gt[15]|0;constructor(){super(64)}};var yr=Rc(()=>new U2,N2(1));var en=Rc(()=>new $2,N2(3));var ce=(r,e,t)=>mt(r,e,t),K2=Ht,Ri=Ld,tt=(...r)=>k2(...r),Li=r=>_c(r),Ss=P2,As=r=>d7(r),Od=BigInt(0),V2=BigInt(1);function Lr(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new TypeError(t+"expected boolean, got type="+typeof r)}return r}function Md(r){if(typeof r=="bigint"){if(!Nd(r))throw new RangeError("positive bigint expected, got "+r)}else K2(r);return r}function Pr(r,e=""){if(typeof r!="number"){let t=e&&`"${e}" `;throw new TypeError(t+"expected number, got type="+typeof r)}if(!Number.isSafeInteger(r)){let t=e&&`"${e}" `;throw new RangeError(t+"expected safe integer, got "+r)}}function Dc(r){let e=Md(r).toString(16);return e.length&1?"0"+e:e}function E7(r){if(typeof r!="string")throw new TypeError("hex string expected, got "+typeof r);return r===""?Od:BigInt("0x"+r)}function Cs(r){return E7(Ld(r))}function or(r){return E7(Ld(yo(mt(r)).reverse()))}function Bd(r,e){if(Ht(e),e===0)throw new RangeError("zero length");r=Md(r);let t=r.toString(16);if(t.length>e*2)throw new RangeError("number too large");return _c(t.padStart(e*2,"0"))}function kc(r,e){return Bd(r,e).reverse()}function v7(r,e){if(r=ce(r),e=ce(e),r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function yo(r){return Uint8Array.from(ce(r))}function Ud(r){if(typeof r!="string")throw new TypeError("ascii string expected, got "+typeof r);return Uint8Array.from(r,(e,t)=>{let n=e.charCodeAt(0);if(e.length!==1||n>127)throw new RangeError(`string contains non-ASCII character "${r[t]}" with code ${n} at position ${t}`);return n})}var Nd=r=>typeof r=="bigint"&&Od<=r;function CT(r,e,t){return Nd(r)&&Nd(e)&&Nd(t)&&e<=r&&r<t}function Dn(r,e,t,n){if(!CT(e,t,n))throw new RangeError("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Pi(r){if(r<Od)throw new Error("expected non-negative bigint, got "+r);let e;for(e=0;r>Od;r>>=V2,e+=1);return e}var Nc=r=>(V2<<BigInt(r))-V2;function S7(r,e,t){if(Ht(r,"hashLen"),Ht(e,"qByteLen"),typeof t!="function")throw new TypeError("hmacFn must be a function");let n=g=>new Uint8Array(g),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),u=0,d=()=>{c.fill(1),l.fill(0),u=0},f=(...g)=>t(l,tt(c,...g)),h=(g=o)=>{l=f(s,g),c=f(),g.length!==0&&(l=f(i,g),c=f())},p=()=>{if(u++>=a)throw new Error("drbg: tried max amount of iterations");let g=0,m=[];for(;g<e;){c=f();let b=c.slice();m.push(b),g+=c.length}return tt(...m)};return(g,m)=>{d(),h(g);let b;for(;(b=m(p()))===void 0;)h();return d(),b}}function sr(r,e={},t={}){if(Object.prototype.toString.call(r)!=="[object Object]")throw new TypeError("expected valid options object");function n(s,i,a){if(!a&&i!=="function"&&!Object.hasOwn(r,s))throw new TypeError(`param "${s}" is invalid: expected own property`);let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new TypeError(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}var q2=()=>{throw new Error("not implemented")};var yt=BigInt(0),qe=BigInt(1),Is=BigInt(2),T7=BigInt(3),_7=BigInt(4),R7=BigInt(5),IT=BigInt(7),L7=BigInt(8),TT=BigInt(9),P7=BigInt(16);function Fe(r,e){if(e<=yt)throw new Error("mod: expected positive modulus, got "+e);let t=r%e;return t>=yt?t:e+t}function Ne(r,e,t){if(e<yt)throw new Error("pow2: expected non-negative exponent, got "+e);let n=r;for(;e-- >yt;)n*=n,n%=t;return n}function A7(r,e){if(r===yt)throw new Error("invert: expected non-zero number");if(e<=yt)throw new Error("invert: expected positive modulus, got "+e);let t=Fe(r,e),n=e,o=yt,s=qe,i=qe,a=yt;for(;t!==yt;){let l=n/t,u=n-t*l,d=o-i*l,f=s-a*l;n=t,t=u,o=i,s=a,i=d,a=f}if(n!==qe)throw new Error("invert: does not exist");return Fe(o,e)}function H2(r,e,t){let n=r;if(!n.eql(n.sqr(e),t))throw new Error("Cannot find square root")}function D7(r,e){let t=r,n=(t.ORDER+qe)/_7,o=t.pow(e,n);return H2(t,o,e),o}function _T(r,e){let t=r,n=(t.ORDER-R7)/L7,o=t.mul(e,Is),s=t.pow(o,n),i=t.mul(e,s),a=t.mul(t.mul(i,Is),s),c=t.mul(i,t.sub(a,t.ONE));return H2(t,c,e),c}function RT(r){let e=Di(r),t=k7(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+IT)/P7;return((a,c)=>{let l=a,u=l.pow(c,i),d=l.mul(u,n),f=l.mul(u,o),h=l.mul(u,s),p=l.eql(l.sqr(d),c),y=l.eql(l.sqr(f),c);u=l.cmov(u,d,p),d=l.cmov(h,f,y);let g=l.eql(l.sqr(d),c),m=l.cmov(u,d,g);return H2(l,m,c),m})}function k7(r){if(r<T7)throw new Error("sqrt is not defined for small field");let e=r-qe,t=0;for(;e%Is===yt;)e/=Is,t++;let n=Is,o=Di(r);for(;C7(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return D7;let s=o.pow(n,e),i=(e+qe)/Is;return function(c,l){let u=c;if(u.is0(l))return l;if(C7(u,l)!==1)throw new Error("Cannot find square root");let d=t,f=u.mul(u.ONE,s),h=u.pow(l,e),p=u.pow(l,i);for(;!u.eql(h,u.ONE);){if(u.is0(h))return u.ZERO;let y=1,g=u.sqr(h);for(;!u.eql(g,u.ONE);)if(y++,g=u.sqr(g),y===d)throw new Error("Cannot find square root");let m=qe<<BigInt(d-y-1),b=u.pow(f,m);d=y,f=u.sqr(b),h=u.mul(h,f),p=u.mul(p,b)}return p}}function LT(r){return r%_7===T7?D7:r%L7===R7?_T:r%P7===TT?RT(r):k7(r)}var kn=(r,e)=>(Fe(r,e)&qe)===qe,PT=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function z2(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=PT.reduce((n,o)=>(n[o]="function",n),e);if(sr(r,t),Pr(r.BYTES,"BYTES"),Pr(r.BITS,"BITS"),r.BYTES<1||r.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(r.ORDER<=qe)throw new Error("invalid field: expected ORDER > 1, got "+r.ORDER);return r}function DT(r,e,t){let n=r;if(t<yt)throw new Error("invalid exponent, negatives unsupported");if(t===yt)return n.ONE;if(t===qe)return e;let o=n.ONE,s=e;for(;t>yt;)t&qe&&(o=n.mul(o,s)),s=n.sqr(s),t>>=qe;return o}function Oc(r,e,t=!1){let n=r,o=new Array(e.length).fill(t?n.ZERO:void 0),s=e.reduce((a,c,l)=>n.is0(c)?a:(o[l]=a,n.mul(a,c)),n.ONE),i=n.inv(s);return e.reduceRight((a,c,l)=>n.is0(c)?a:(o[l]=n.mul(a,o[l]),n.mul(a,c)),i),o}function C7(r,e){let t=r,n=(t.ORDER-qe)/Is,o=t.pow(e,n),s=t.eql(o,t.ONE),i=t.eql(o,t.ZERO),a=t.eql(o,t.neg(t.ONE));if(!s&&!i&&!a)throw new Error("invalid Legendre symbol result");return s?1:i?0:-1}function kT(r,e){if(e!==void 0&&K2(e),r<=yt)throw new Error("invalid n length: expected positive n, got "+r);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);let t=Pi(r);if(e!==void 0&&e<t)throw new Error(`invalid n length: expected bit length (${t}) >= n.length (${e})`);let n=e!==void 0?e:t,o=Math.ceil(n/8);return{nBitLength:n,nByteLength:o}}var I7=new WeakMap,Fd=class{ORDER;BITS;BYTES;isLE;ZERO=yt;ONE=qe;_lengths;_mod;constructor(e,t={}){if(e<=qe)throw new Error("invalid field: expected ORDER > 1, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:t.sqrt,enumerable:!0}),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=Object.freeze(t.allowedLengths.slice())),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=kT(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,Object.freeze(this)}create(e){return Fe(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return yt<=e&&e<this.ORDER}is0(e){return e===yt}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&qe)===qe}neg(e){return Fe(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return Fe(e*e,this.ORDER)}add(e,t){return Fe(e+t,this.ORDER)}sub(e,t){return Fe(e-t,this.ORDER)}mul(e,t){return Fe(e*t,this.ORDER)}pow(e,t){return DT(this,e,t)}div(e,t){return Fe(e*A7(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return A7(e,this.ORDER)}sqrt(e){let t=I7.get(this);return t||I7.set(this,t=LT(this.ORDER)),t(this,e)}toBytes(e){return this.isLE?kc(e,this.BYTES):Bd(e,this.BYTES)}fromBytes(e,t=!1){ce(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?or(e):Cs(e);if(a&&(c=Fe(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return Oc(this,e)}cmov(e,t,n){return Lr(n,"condition"),n?t:e}};Object.freeze(Fd.prototype);function Di(r,e={}){return new Fd(r,e)}function N7(r){if(typeof r!="bigint")throw new Error("field order must be bigint");if(r<=qe)throw new Error("field order must be greater than 1");let e=Pi(r-qe);return Math.ceil(e/8)}function G2(r){let e=N7(r);return e+Math.ceil(e/2)}function W2(r,e,t=!1){ce(r);let n=r.length,o=N7(e),s=Math.max(G2(e),16);if(n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?or(r):Cs(r),a=Fe(i,e-qe)+qe;return t?kc(a,o):Bd(a,o)}var ki=BigInt(0),Ts=BigInt(1);function Mc(r,e){let t=e.negate();return r?t:e}function _s(r,e){let t=Oc(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function U7(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function j2(r,e){U7(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=Nc(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function O7(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=Ts);let l=e*n,u=l+Math.abs(a)-1,d=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:u,isZero:d,isNeg:f,isNegF:h,offsetF:l}}var Y2=new WeakMap,F7=new WeakMap;function Q2(r){return F7.get(r)||1}function M7(r){if(r!==ki)throw new Error("invalid wNAF")}var Ni=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>ki;)t&Ts&&(n=n.add(o)),o=o.double(),t>>=Ts;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=j2(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=j2(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:d,isNegF:f,offsetF:h}=O7(n,a,i);n=c,u?s=s.add(Mc(f,t[h])):o=o.add(Mc(d,t[l]))}return M7(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=j2(e,this.bits);for(let i=0;i<s.windows&&n!==ki;i++){let{nextN:a,offset:c,isZero:l,isNeg:u}=O7(n,i,s);if(n=a,!l){let d=t[c];o=o.add(u?d.negate():d)}}return M7(n),o}getPrecomputes(e,t,n){let o=Y2.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),Y2.set(t,o))),o}cached(e,t,n){let o=Q2(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=Q2(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){U7(t,this.bits),F7.set(e,t),Y2.delete(e)}hasCache(e){return Q2(e)!==1}};function $7(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>ki||n>ki;)t&Ts&&(s=s.add(o)),n&Ts&&(i=i.add(o)),o=o.double(),t>>=Ts,n>>=Ts;return{p1:s,p2:i}}function B7(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return z2(e),e}else return Di(r,{isLE:t})}function $d(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>ki))throw new Error(`CURVE.${c} must be positive bigint`)}let o=B7(e.p,t.Fp,n),s=B7(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function Oi(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var bo=BigInt(0),lt=BigInt(1),X2=BigInt(2),NT=BigInt(8);function OT(r,e,t,n){let o=r.sqr(t),s=r.sqr(n),i=r.add(r.mul(e.a,o),s),a=r.add(r.ONE,r.mul(e.d,r.mul(o,s)));return r.eql(i,a)}function V7(r,e={}){let t=e,n=$d("edwards",r,t,t.FpFnLE),{Fp:o,Fn:s}=n,i=n.CURVE,{h:a}=i;sr(t,{},{uvRatio:"function"});let c=X2<<BigInt(s.BYTES*8)-lt,l=y=>o.create(y),u=t.uvRatio===void 0?(y,g)=>{try{return{isValid:!0,value:o.sqrt(o.div(y,g))}}catch{return{isValid:!1,value:bo}}}:t.uvRatio;if(!OT(o,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function d(y,g,m=!1){let b=m?lt:bo;return Dn("coordinate "+y,g,b,c),g}function f(y){if(!(y instanceof h))throw new Error("EdwardsPoint expected")}class h{static BASE=new h(i.Gx,i.Gy,lt,l(i.Gx*i.Gy));static ZERO=new h(bo,lt,lt,bo);static Fp=o;static Fn=s;X;Y;Z;T;constructor(g,m,b,w){this.X=d("x",g),this.Y=d("y",m),this.Z=d("z",b,!0),this.T=d("t",w),Object.freeze(this)}static CURVE(){return i}static fromAffine(g){if(g instanceof h)throw new Error("extended point not allowed");let{x:m,y:b}=g||{};return d("x",m),d("y",b),new h(m,b,lt,l(m*b))}static fromBytes(g,m=!1){let b=o.BYTES,{a:w,d:x}=i;g=yo(ce(g,b,"point")),Lr(m,"zip215");let v=yo(g),A=g[b-1];v[b-1]=A&-129;let S=or(v),I=m?c:o.ORDER;Dn("point.y",S,bo,I);let k=l(S*S),K=l(k-lt),F=l(x*k-w),{isValid:E,value:P}=u(K,F);if(!E)throw new Error("bad point: invalid y coordinate");let L=(P<)===lt,_=(A&128)!==0;if(!m&&P===bo&&_)throw new Error("bad point: x=0 and x_0=1");return _!==L&&(P=l(-P)),h.fromAffine({x:P,y:S})}static fromHex(g,m=!1){return h.fromBytes(Li(g),m)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,m=!0){return p.createCache(this,g),m||this.multiply(X2),this}assertValidity(){let g=this,{a:m,d:b}=i;if(g.is0())throw new Error("bad point: ZERO");let{X:w,Y:x,Z:v,T:A}=g,S=l(w*w),I=l(x*x),k=l(v*v),K=l(k*k),F=l(S*m),E=l(k*l(F+I)),P=l(K+l(b*l(S*I)));if(E!==P)throw new Error("bad point: equation left != right (1)");let L=l(w*x),_=l(v*A);if(L!==_)throw new Error("bad point: equation left != right (2)")}equals(g){f(g);let{X:m,Y:b,Z:w}=this,{X:x,Y:v,Z:A}=g,S=l(m*A),I=l(x*w),k=l(b*A),K=l(v*w);return S===I&&k===K}is0(){return this.equals(h.ZERO)}negate(){return new h(l(-this.X),this.Y,this.Z,l(-this.T))}double(){let{a:g}=i,{X:m,Y:b,Z:w}=this,x=l(m*m),v=l(b*b),A=l(X2*l(w*w)),S=l(g*x),I=m+b,k=l(l(I*I)-x-v),K=S+v,F=K-A,E=S-v,P=l(k*F),L=l(K*E),_=l(k*E),T=l(F*K);return new h(P,L,T,_)}add(g){f(g);let{a:m,d:b}=i,{X:w,Y:x,Z:v,T:A}=this,{X:S,Y:I,Z:k,T:K}=g,F=l(w*S),E=l(x*I),P=l(A*b*K),L=l(v*k),_=l((w+x)*(S+I)-F-E),T=L-P,D=L+P,N=l(E-m*F),R=l(_*T),M=l(D*N),U=l(_*N),G=l(T*D);return new h(R,M,G,U)}subtract(g){return f(g),this.add(g.negate())}multiply(g){if(!s.isValidNot0(g))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");let{p:m,f:b}=p.cached(this,g,w=>_s(h,w));return _s(h,[m,b])[0]}multiplyUnsafe(g){if(!s.isValid(g))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return g===bo?h.ZERO:this.is0()||g===lt?this:p.unsafe(this,g,m=>_s(h,m))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return p.unsafe(this,i.n).is0()}toAffine(g){let m=this,b=g,{X:w,Y:x,Z:v}=m,A=m.is0();b==null&&(b=A?NT:o.inv(v));let S=l(w*b),I=l(x*b),k=o.mul(v,b);if(A)return{x:bo,y:lt};if(k!==lt)throw new Error("invZ was invalid");return{x:S,y:I}}clearCofactor(){return a===lt?this:this.multiplyUnsafe(a)}toBytes(){let{x:g,y:m}=this.toAffine(),b=o.toBytes(m);return b[b.length-1]|=g<?128:0,b}toHex(){return Ri(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let p=new Ni(h,s.BITS);return s.BITS>=8&&h.BASE.precompute(8),Object.freeze(h.prototype),Object.freeze(h),h}var Vd=class{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){q2()}static fromHex(e){q2()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return Ri(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,t){return this.ep.precompute(e,t),this}};function K7(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');let n=e,o=t;sr(o,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});let{prehash:s}=o,{BASE:i,Fp:a,Fn:c}=r,l=n.outputLen,u=2*a.BYTES;if(l!==void 0&&(Pr(l,"hash.outputLen"),l!==u))throw new Error(`hash.outputLen must be ${u}, got ${l}`);let d=o.randomBytes===void 0?As:o.randomBytes,f=o.adjustScalarBytes===void 0?E=>E:o.adjustScalarBytes,h=o.domain===void 0?(E,P,L)=>{if(Lr(L,"phflag"),P.length||L)throw new Error("Contexts/pre-hash are not supported");return E}:o.domain;function p(E){return c.create(or(E))}function y(E){let P=S.secretKey;ce(E,S.secretKey,"secretKey");let L=ce(n(E),2*P,"hashedSecretKey"),_=f(L.slice(0,P)),T=L.slice(P,2*P),D=p(_);return{head:_,prefix:T,scalar:D}}function g(E){let{head:P,prefix:L,scalar:_}=y(E),T=i.multiply(_),D=T.toBytes();return{head:P,prefix:L,scalar:_,point:T,pointBytes:D}}function m(E){return g(E).pointBytes}function b(E=Uint8Array.of(),...P){let L=tt(...P);return p(n(h(L,ce(E,void 0,"context"),!!s)))}function w(E,P,L={}){E=ce(E,void 0,"message"),s&&(E=s(E));let{prefix:_,scalar:T,pointBytes:D}=g(P),N=b(L.context,_,E),R=i.multiply(N).toBytes(),M=b(L.context,R,D,E),U=c.create(N+M*T);if(!c.isValid(U))throw new Error("sign failed: invalid s");let G=tt(R,c.toBytes(U));return ce(G,S.signature,"result")}let x={zip215:o.zip215};function v(E,P,L,_=x){let{context:T}=_,D=_.zip215===void 0?!!x.zip215:_.zip215,N=S.signature;E=ce(E,N,"signature"),P=ce(P,void 0,"message"),L=ce(L,S.publicKey,"publicKey"),D!==void 0&&Lr(D,"zip215"),s&&(P=s(P));let R=N/2,M=E.subarray(0,R),U=or(E.subarray(R,N)),G,J,Q;try{G=r.fromBytes(L,D),J=r.fromBytes(M,D),Q=i.multiplyUnsafe(U)}catch{return!1}if(!D&&G.isSmallOrder())return!1;let Ie=b(T,M,L,P);return J.add(G.multiplyUnsafe(Ie)).subtract(Q).clearCofactor().is0()}let A=a.BYTES,S={secretKey:A,publicKey:A,signature:2*A,seed:A};function I(E){return E=E===void 0?d(S.seed):E,ce(E,S.seed,"seed")}function k(E){return Ss(E)&&E.length===S.secretKey}function K(E,P){try{return!!r.fromBytes(E,P===void 0?x.zip215:P)}catch{return!1}}let F={getExtendedPublicKey:g,randomSecretKey:I,isValidSecretKey:k,isValidPublicKey:K,toMontgomery(E){let{y:P}=r.fromBytes(E),L=S.publicKey,_=L===32;if(!_&&L!==57)throw new Error("only defined for 25519 and 448");let T=_?a.div(lt+P,lt-P):a.div(P-lt,P+lt);return a.toBytes(T)},toMontgomerySecret(E){let P=S.secretKey;ce(E,P);let L=n(E.subarray(0,P));return f(L).subarray(0,P)}};return Object.freeze(S),Object.freeze(F),Object.freeze({keygen:Oi(I,m),getPublicKey:m,sign:w,verify:v,utils:F,Point:r,lengths:S})}function Bc(r,e){if(Pr(r),Pr(e),e<0||e>4)throw new Error("invalid I2OSP length: "+e);if(r<0||r>2**(8*e)-1)throw new Error("invalid I2OSP input: "+r);let t=Array.from({length:e}).fill(0);for(let n=e-1;n>=0;n--)t[n]=r&255,r>>>=8;return new Uint8Array(t)}function MT(r,e){let t=new Uint8Array(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function BT(r){if(!Ss(r)&&typeof r!="string")throw new Error("DST must be Uint8Array or ascii string");let e=typeof r=="string"?Ud(r):r;if(e.length===0)throw new Error("DST must be non-empty");return e}function Z2(r,e,t,n){ce(r),Pr(t),e=BT(e),e.length>255&&(e=n(tt(Ud("H2C-OVERSIZE-DST-"),e)));let{outputLen:o,blockLen:s}=n,i=Math.ceil(t/o);if(t>65535||i>255)throw new Error("expand_message_xmd: invalid lenInBytes");let a=tt(e,Bc(e.length,1)),c=new Uint8Array(s),l=Bc(t,2),u=new Array(i),d=n(tt(c,r,l,Bc(0,1),a));u[0]=n(tt(d,Bc(1,1),a));for(let h=1;h<i;h++){let p=[MT(d,u[h-1]),Bc(h+1,1),a];u[h]=n(tt(...p))}return tt(...u).slice(0,t)}var q7="HashToScalar-";var Uc=BigInt(0),Mi=BigInt(1),Kd=BigInt(2);function UT(r){return sr(r,{P:"bigint",type:"string",adjustScalarBytes:"function",powPminus2:"function"},{randomBytes:"function"}),Object.freeze({...r})}function H7(r){let e=UT(r),{P:t,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=n==="x25519";if(!a&&n!=="x448")throw new Error("invalid type");let c=i===void 0?As:i,l=a?255:448,u=a?32:56,d=BigInt(a?9:5),f=BigInt(a?121665:39081),h=a?Kd**BigInt(254):Kd**BigInt(447),p=a?BigInt(8)*Kd**BigInt(251)-Mi:BigInt(4)*Kd**BigInt(445)-Mi,y=h+p+Mi,g=L=>Fe(L,t),m=b(d);function b(L){return kc(g(L),u)}function w(L){let _=yo(ce(L,u,"uCoordinate"));return a&&(_[31]&=127),g(or(_))}function x(L){return or(o(yo(ce(L,u,"scalar"))))}function v(L,_){let T=K(w(_),x(L));if(T===Uc)throw new Error("invalid private or public key received");return b(T)}function A(L){return v(L,m)}let S=A,I=v;function k(L,_,T){let D=g(L*(_-T));return _=g(_-D),T=g(T+D),{x_2:_,x_3:T}}function K(L,_){Dn("u",L,Uc,t),Dn("scalar",_,h,y);let T=_,D=L,N=Mi,R=Uc,M=L,U=Mi,G=Uc;for(let Q=BigInt(l-1);Q>=Uc;Q--){let Ie=T>>Q&Mi;G^=Ie,{x_2:N,x_3:M}=k(G,N,M),{x_2:R,x_3:U}=k(G,R,U),G=Ie;let Te=N+R,_e=g(Te*Te),ye=N-R,Be=g(ye*ye),In=_e-Be,ss=M+U,mi=M-U,fc=g(mi*Te),hc=g(ss*ye),y8=fc+hc,b8=fc-hc;M=g(y8*y8),U=g(D*g(b8*b8)),N=g(_e*Be),R=g(In*(_e+g(f*In)))}({x_2:N,x_3:M}=k(G,N,M)),{x_2:R,x_3:U}=k(G,R,U);let J=s(R);return g(N*J)}let F={secretKey:u,publicKey:u,seed:u},E=L=>(L=L===void 0?c(u):L,ce(L,F.seed,"seed"),L),P={randomSecretKey:E};return Object.freeze(F),Object.freeze(P),Object.freeze({keygen:Oi(E,S),getSharedSecret:I,getPublicKey:S,scalarMult:v,scalarMultBase:A,utils:P,GuBytes:m.slice(),lengths:F})}var FT=BigInt(0),Nn=BigInt(1),z7=BigInt(2),$T=BigInt(3),VT=BigInt(5),KT=BigInt(8),Rs=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),rm={p:Rs,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:KT,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function j7(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),s=Rs,a=r*r%s*r%s,c=Ne(a,z7,s)*a%s,l=Ne(c,Nn,s)*r%s,u=Ne(l,VT,s)*l%s,d=Ne(u,e,s)*u%s,f=Ne(d,t,s)*d%s,h=Ne(f,n,s)*f%s,p=Ne(h,o,s)*h%s,y=Ne(p,o,s)*h%s,g=Ne(y,e,s)*u%s;return{pow_p_5_8:Ne(g,z7,s)*r%s,b2:a}}function Y7(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var J2=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function nm(r,e){let t=Rs,n=Fe(e*e*e,t),o=Fe(n*n*e,t),s=j7(r*o).pow_p_5_8,i=Fe(r*n*s,t),a=Fe(e*i*i,t),c=i,l=Fe(i*J2,t),u=a===r,d=a===Fe(-r,t),f=a===Fe(-r*J2,t);return u&&(i=c),(d||f)&&(i=l),kn(i,t)&&(i=Fe(-i,t)),{isValid:u||d,value:i}}var xo=V7(rm,{uvRatio:nm}),wo=xo.Fp,Q7=xo.Fn;function qT(r){return K7(xo,en,Object.assign({adjustScalarBytes:Y7,zip215:!0},r))}var Fc=qT({});var $c=(()=>{let r=Rs;return H7({P:r,type:"x25519",powPminus2:e=>{let{pow_p_5_8:t,b2:n}=j7(e);return Fe(Ne(t,$T,r)*n,r)},adjustScalarBytes:Y7})})();var em=J2,HT=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),zT=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),GT=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),WT=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),G7=r=>nm(Nn,r),jT=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),tm=r=>wo.create(or(r)&jT);function W7(r){let{d:e}=rm,t=Rs,n=m=>wo.create(m),o=n(em*r*r),s=n((o+Nn)*GT),i=BigInt(-1),a=n((i-e*o)*n(o+e)),{isValid:c,value:l}=nm(s,a),u=n(l*r);kn(u,t)||(u=n(-u)),c||(l=u),c||(i=o);let d=n(i*(o-Nn)*WT-a),f=l*l,h=n((l+l)*a),p=n(d*HT),y=n(Nn-f),g=n(Nn+f);return new xo(n(h*g),n(y*p),n(p*g),n(h*y))}var Eo=class r extends Vd{static BASE=new r(xo.BASE);static ZERO=new r(xo.ZERO);static Fp=wo;static Fn=Q7;constructor(e){super(e)}static fromAffine(e){return new r(xo.fromAffine(e))}assertSame(e){if(!(e instanceof r))throw new Error("RistrettoPoint expected")}init(e){return new r(e)}static fromBytes(e){mt(e,32);let{a:t,d:n}=rm,o=Rs,s=x=>wo.create(x),i=tm(e);if(!v7(wo.toBytes(i),e)||kn(i,o))throw new Error("invalid ristretto255 encoding 1");let a=s(i*i),c=s(Nn+t*a),l=s(Nn-t*a),u=s(c*c),d=s(l*l),f=s(t*n*u-d),{isValid:h,value:p}=G7(s(f*d)),y=s(p*l),g=s(p*y*f),m=s((i+i)*y);kn(m,o)&&(m=s(-m));let b=s(c*g),w=s(m*b);if(!h||kn(w,o)||b===FT)throw new Error("invalid ristretto255 encoding 2");return new r(new xo(m,b,Nn,w))}static fromHex(e){return r.fromBytes(_c(e))}toBytes(){let{X:e,Y:t,Z:n,T:o}=this.ep,s=Rs,i=g=>wo.create(g),a=i(i(n+t)*i(n-t)),c=i(e*t),l=i(c*c),{value:u}=G7(i(a*l)),d=i(u*a),f=i(u*c),h=i(d*f*o),p;if(kn(o*h,s)){let g=i(t*em),m=i(e*em);e=g,t=m,p=i(d*zT)}else p=f;kn(e*h,s)&&(t=i(-t));let y=i((n-t)*p);return kn(y,s)&&(y=i(-y)),wo.toBytes(y)}equals(e){this.assertSame(e);let{X:t,Y:n}=this.ep,{X:o,Y:s}=e.ep,i=l=>wo.create(l),a=i(t*s)===i(n*o),c=i(n*s)===i(t*o);return a||c}is0(){return this.equals(r.ZERO)}};Object.freeze(Eo.BASE);Object.freeze(Eo.ZERO);Object.freeze(Eo.prototype);Object.freeze(Eo);var YT=Object.freeze({Point:Eo,hashToCurve(r,e){let t=e?.DST===void 0?"ristretto255_XMD:SHA-512_R255MAP_RO_":e.DST,n=Z2(r,t,64,en);return YT.deriveToCurve(n)},hashToScalar(r,e={DST:q7}){let t=Z2(r,e.DST,64,en);return Q7.create(or(t))},deriveToCurve(r){mt(r,64);let e=tm(r.subarray(0,32)),t=W7(e),n=tm(r.subarray(32,64)),o=W7(n);return new Eo(t.add(o))}});var Vc=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},Kc=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},qd=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var Qe={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new qd("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Ls=32,ir=64,om=32;var Bi,X7=(async()=>{try{return await Qe.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function Z7(){let r=Fc.utils.randomSecretKey(),e=Fc.getPublicKey(r);return{privateKey:e_(r,e),publicKey:e}}async function QT(r,e){let t;r.length===ir?t=r.subarray(0,32):t=r;let n={crv:"Ed25519",kty:"OKP",x:B(r.subarray(32),"base64url"),d:B(t,"base64url"),ext:!0,key_ops:["sign"]},o=await Qe.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await Qe.get().subtle.sign({name:"Ed25519"},o,ie(e instanceof Uint8Array?e:e.subarray()));return new Uint8Array(s,0,s.byteLength)}function XT(r,e){let t=r.subarray(0,om);return Fc.sign(e instanceof Uint8Array?e:e.subarray(),t)}async function J7(r,e){return Bi==null&&(Bi=await X7),Bi?QT(r,e):XT(r,e)}async function ZT(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await Qe.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Qe.get().subtle.verify({name:"Ed25519"},n,ie(e),ie(t instanceof Uint8Array?t:t.subarray()))}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function JT(r,e,t){return Fc.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function ey(r,e,t){return Bi==null&&(Bi=await X7),Bi?ZT(r,e,t):JT(r,e,t)}function e_(r,e){let t=new Uint8Array(ir);for(let n=0;n<om;n++)t[n]=r[n],t[om+n]=e[n];return t}function Ui(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var qc=class{type="Ed25519";raw;constructor(e){this.raw=$i(e,Ls)}toMultihash(){return nr.digest(ct(this))}toCID(){return ae.createV1(114,this.toMultihash())}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=ey(this.raw,t,e);return Ui(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},Fi=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=$i(e,ir),this.publicKey=new qc(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}sign(e,t){t?.signal?.throwIfAborted();let n=J7(this.raw,e);return Ui(n)?n.then(o=>(t?.signal?.throwIfAborted(),o)):(t?.signal?.throwIfAborted(),n)}};function sm(r){if(r.length>ir){r=$i(r,ir+Ls);let n=r.subarray(0,ir),o=r.subarray(ir,r.length);return new Fi(n,o)}r=$i(r,ir);let e=r.subarray(0,ir),t=r.subarray(Ls);return new Fi(e,t)}function im(r){return r=$i(r,Ls),new qc(r)}async function ry(){let{privateKey:r,publicKey:e}=Z7();return new Fi(r,e)}function $i(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new C(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var t_=Math.pow(2,7),r_=Math.pow(2,14),n_=Math.pow(2,21),am=Math.pow(2,28),cm=Math.pow(2,35),lm=Math.pow(2,42),um=Math.pow(2,49),Se=128,Ct=127;function Re(r){if(r<t_)return 1;if(r<r_)return 2;if(r<n_)return 3;if(r<am)return 4;if(r<cm)return 5;if(r<lm)return 6;if(r<um)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Vi(r,e,t=0){switch(Re(r)){case 8:e[t++]=r&255|Se,r/=128;case 7:e[t++]=r&255|Se,r/=128;case 6:e[t++]=r&255|Se,r/=128;case 5:e[t++]=r&255|Se,r/=128;case 4:e[t++]=r&255|Se,r>>>=7;case 3:e[t++]=r&255|Se,r>>>=7;case 2:e[t++]=r&255|Se,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function o_(r,e,t=0){switch(Re(r)){case 8:e.set(t++,r&255|Se),r/=128;case 7:e.set(t++,r&255|Se),r/=128;case 6:e.set(t++,r&255|Se),r/=128;case 5:e.set(t++,r&255|Se),r/=128;case 4:e.set(t++,r&255|Se),r>>>=7;case 3:e.set(t++,r&255|Se),r>>>=7;case 2:e.set(t++,r&255|Se),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function dm(r,e){let t=r[e],n=0;if(n+=t&Ct,t<Se||(t=r[e+1],n+=(t&Ct)<<7,t<Se)||(t=r[e+2],n+=(t&Ct)<<14,t<Se)||(t=r[e+3],n+=(t&Ct)<<21,t<Se)||(t=r[e+4],n+=(t&Ct)*am,t<Se)||(t=r[e+5],n+=(t&Ct)*cm,t<Se)||(t=r[e+6],n+=(t&Ct)*lm,t<Se)||(t=r[e+7],n+=(t&Ct)*um,t<Se))return n;throw new RangeError("Could not decode varint")}function s_(r,e){let t=r.get(e),n=0;if(n+=t&Ct,t<Se||(t=r.get(e+1),n+=(t&Ct)<<7,t<Se)||(t=r.get(e+2),n+=(t&Ct)<<14,t<Se)||(t=r.get(e+3),n+=(t&Ct)<<21,t<Se)||(t=r.get(e+4),n+=(t&Ct)*am,t<Se)||(t=r.get(e+5),n+=(t&Ct)*cm,t<Se)||(t=r.get(e+6),n+=(t&Ct)*lm,t<Se)||(t=r.get(e+7),n+=(t&Ct)*um,t<Se))return n;throw new RangeError("Could not decode varint")}function zt(r,e,t=0){return e==null&&(e=Ke(Re(r))),e instanceof Uint8Array?Vi(r,e,t):o_(r,e,t)}function Dr(r,e=0){return r instanceof Uint8Array?dm(r,e):s_(r,e)}var fm=new Float32Array([-0]),vo=new Uint8Array(fm.buffer);function ny(r,e,t){fm[0]=r,e[t]=vo[0],e[t+1]=vo[1],e[t+2]=vo[2],e[t+3]=vo[3]}function oy(r,e){return vo[0]=r[e],vo[1]=r[e+1],vo[2]=r[e+2],vo[3]=r[e+3],fm[0]}var hm=new Float64Array([-0]),It=new Uint8Array(hm.buffer);function sy(r,e,t){hm[0]=r,e[t]=It[0],e[t+1]=It[1],e[t+2]=It[2],e[t+3]=It[3],e[t+4]=It[4],e[t+5]=It[5],e[t+6]=It[6],e[t+7]=It[7]}function iy(r,e){return It[0]=r[e],It[1]=r[e+1],It[2]=r[e+2],It[3]=r[e+3],It[4]=r[e+4],It[5]=r[e+5],It[6]=r[e+6],It[7]=r[e+7],hm[0]}var i_=BigInt(Number.MAX_SAFE_INTEGER),a_=BigInt(Number.MIN_SAFE_INTEGER),ar=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return Ps;if(e<i_&&e>a_)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>ay&&(o=0n,++n>ay&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Ps;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):Ps}},Ps=new ar(0,0);Ps.toBigInt=function(){return 0n};Ps.zzEncode=Ps.zzDecode=function(){return this};Ps.length=function(){return 1};var ay=4294967296n;function cy(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function ly(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function pm(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function kr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Hd(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var mm=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=ie(e),this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,kr(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw kr(this,4);return Hd(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw kr(this,4);return Hd(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw kr(this,4);let e=oy(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw kr(this,4);let e=iy(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw kr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return ly(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw kr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw kr(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ar(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw kr(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw kr(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw kr(this,8);let e=Hd(this.buf,this.pos+=4),t=Hd(this.buf,this.pos+=4);return new ar(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=dm(this.buf,this.pos);return this.pos+=Re(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function Hc(r){return new mm(r instanceof Uint8Array?r:r.subarray())}function ee(r,e,t){let n=Hc(r);return e.decode(n,void 0,t)}function gm(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return Ke(i);o+i>e&&(n=Ke(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var Ds=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function ym(){}var wm=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},c_=gm();function l_(r){return globalThis.Buffer!=null?Ke(r):c_(r)}var Gc=class{len;head;tail;states;constructor(){this.len=0,this.head=new Ds(ym,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Ds(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new xm((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(zd,10,ar.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ar.fromBigInt(e);return this._push(zd,t.length(),t)}uint64Number(e){return this._push(Vi,Re(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=ar.fromBigInt(e).zzEncode();return this._push(zd,t.length(),t)}sint64Number(e){let t=ar.fromNumber(e).zzEncode();return this._push(zd,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(bm,1,e?1:0)}fixed32(e){return this._push(zc,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ar.fromBigInt(e);return this._push(zc,4,t.lo)._push(zc,4,t.hi)}fixed64Number(e){let t=ar.fromNumber(e);return this._push(zc,4,t.lo)._push(zc,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(ny,4,e)}double(e){return this._push(sy,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(bm,1,0):this.uint32(t)._push(d_,t,e)}string(e){let t=cy(e);return t!==0?this.uint32(t)._push(pm,t,e):this._push(bm,1,0)}fork(){return this.states=new wm(this),this.head=this.tail=new Ds(ym,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 Ds(ym,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=l_(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function bm(r,e,t){e[t]=r&255}function u_(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var xm=class extends Ds{next;constructor(e,t){super(u_,e,t),this.next=void 0}};function zd(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function zc(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function d_(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Gc.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(f_,e,r),this},Gc.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(h_,e,r),this});function f_(r,e,t){e.set(r,t)}function h_(r,e,t){r.length<40?pm(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(O(r),t)}function Em(){return new Gc}function te(r,e){let t=Em();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}function*re(r,e,t){let n=Hc(r);yield*e.stream(n,void 0,"$",t)}var Gd={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5};function Wd(r,e,t,n,o){return{name:r,type:e,encode:t,decode:n,stream:o}}function rt(r){function e(s){if(r[s.toString()]==null)throw new Error("Invalid enum value");return r[s]}let t=function(i,a){let c=e(i);a.int32(c)},n=function(i){let a=i.int32();return e(a)},o=function*(i){let a=i.int32();yield e(a)};return Wd("enum",Gd.VARINT,t,n,o)}function ne(r,e,t){return Wd("message",Gd.LENGTH_DELIMITED,r,e,t)}var fe=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Wc=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var Le;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(Le||(Le={}));var vm;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(vm||(vm={}));(function(r){r.codec=()=>rt(vm)})(Le||(Le={}));var tn;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.Type!=null&&(i.uint32(8),Le.codec().encode(s.Type,i)),s.Data!=null&&(i.uint32(18),i.bytes(s.Data)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.Type=Le.codec().decode(s);break}case 2:{c.Data=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Type`,value:Le.codec().decode(s)};break}case 2:{yield{field:`${a}.Data`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(tn||(tn={}));var jc;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.Type!=null&&(i.uint32(8),Le.codec().encode(s.Type,i)),s.Data!=null&&(i.uint32(18),i.bytes(s.Data)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.Type=Le.codec().decode(s);break}case 2:{c.Data=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Type`,value:Le.codec().decode(s)};break}case 2:{yield{field:`${a}.Data`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(jc||(jc={}));var Qc={};$(Qc,{MAX_RSA_KEY_SIZE:()=>Sm,generateRSAKeyPair:()=>Dm,jwkToJWKKeyPair:()=>py,jwkToPkcs1:()=>y_,jwkToPkix:()=>Tm,jwkToRSAPrivateKey:()=>Pm,pkcs1MessageToJwk:()=>Cm,pkcs1MessageToRSAPrivateKey:()=>jd,pkcs1ToJwk:()=>g_,pkcs1ToRSAPrivateKey:()=>_m,pkixMessageToJwk:()=>Im,pkixMessageToRSAPublicKey:()=>Lm,pkixToJwk:()=>b_,pkixToRSAPublicKey:()=>Rm});var Ki=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=Qc.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return ae.createV1(114,this._multihash)}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){return hy(this.jwk,t,e,n)}},Yc=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=Qc.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}sign(e,t){return fy(this.jwk,e,t)}};var Sm=8192,Am=18,p_=1062,m_=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function g_(r){let e=gr(r);return Cm(e)}function Cm(r){return{n:B(r[1],"base64url"),e:B(r[2],"base64url"),d:B(r[3],"base64url"),p:B(r[4],"base64url"),q:B(r[5],"base64url"),dp:B(r[6],"base64url"),dq:B(r[7],"base64url"),qi:B(r[8],"base64url"),kty:"RSA"}}function y_(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 C("JWK was missing components");return _r([Ot(Uint8Array.from([0])),Ot(O(r.n,"base64url")),Ot(O(r.e,"base64url")),Ot(O(r.d,"base64url")),Ot(O(r.p,"base64url")),Ot(O(r.q,"base64url")),Ot(O(r.dp,"base64url")),Ot(O(r.dq,"base64url")),Ot(O(r.qi,"base64url"))]).subarray()}function b_(r){let e=gr(r,{offset:0});return Im(e)}function Im(r){let e=gr(r[1],{offset:0});return{kty:"RSA",n:B(e[0],"base64url"),e:B(e[1],"base64url")}}function Tm(r){if(r.n==null||r.e==null)throw new C("JWK was missing components");return _r([m_,Tc(_r([Ot(O(r.n,"base64url")),Ot(O(r.e,"base64url"))]))]).subarray()}function _m(r){let e=gr(r);return jd(e)}function jd(r){let e=Cm(r);return Pm(e)}function Rm(r,e){if(r.byteLength>=p_)throw new Tn("Key size is too large");let t=gr(r,{offset:0});return Lm(t,r,e)}function Lm(r,e,t){let n=Im(r);if(t==null){let o=yr(tn.encode({Type:Le.RSA,Data:e}));t=Nt(Am,o)}return new Ki(n,t)}function Pm(r){if(gy(r)>Sm)throw new C("Key size is too large");let e=py(r),t=yr(tn.encode({Type:Le.RSA,Data:Tm(e.publicKey)})),n=Nt(Am,t);return new Yc(e.privateKey,new Ki(e.publicKey,n))}async function Dm(r){if(r>Sm)throw new C("Key size is too large");let e=await my(r),t=yr(tn.encode({Type:Le.RSA,Data:Tm(e.publicKey)})),n=Nt(Am,t);return new Yc(e.privateKey,new Ki(e.publicKey,n))}function py(r){if(r==null)throw new C("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function my(r,e){let t=await Qe.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await w_(t,e);return{privateKey:n[0],publicKey:n[1]}}async function fy(r,e,t){let n=await Qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await Qe.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,ie(e instanceof Uint8Array?e:e.subarray()));return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function hy(r,e,t,n){let o=await Qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await Qe.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,ie(e),ie(t instanceof Uint8Array?t:t.subarray()));return n?.signal?.throwIfAborted(),s}async function w_(r,e){if(r.privateKey==null||r.publicKey==null)throw new C("Private and public key are required");let t=await Promise.all([Qe.get().subtle.exportKey("jwk",r.privateKey),Qe.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function gy(r){if(r.kty!=="RSA")throw new C("invalid key type");if(r.n==null)throw new C("invalid key modulus");return O(r.n,"base64url").length*8}var Yd=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){if(Ln(e),mt(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),At(o)}update(e){return _i(this),this.iHash.update(e),this}digestInto(e){_i(this),_d(e,this),this.finished=!0;let t=e.subarray(0,this.outputLen);this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ks=(()=>{let r=((e,t,n)=>new Yd(e,t).update(n).digest());return r.create=(e,t)=>new Yd(e,t),r})();var yy=(r,e)=>(r+(r>=0?e:-e)/by)/e;function x_(r,e,t){Dn("scalar",r,rn,t);let[[n,o],[s,i]]=e,a=yy(i*r,t),c=yy(-o*r,t),l=r-a*n-c*s,u=-a*o-c*i,d=l<rn,f=u<rn;d&&(l=-l),f&&(u=-u);let h=Nc(Math.ceil(Pi(t)/2))+So;if(l<rn||l>=h||u<rn||u>=h)throw new Error("splitScalar (endomorphism): failed for k");return{k1neg:d,k1:l,k2neg:f,k2:u}}function Nm(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function km(r,e){sr(r);let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return Lr(t.lowS,"lowS"),Lr(t.prehash,"prehash"),t.format!==void 0&&Nm(t.format),t}var Om=class extends Error{constructor(e=""){super(e)}},Nr={Err:Om,_tlv:{encode:(r,e)=>{let{Err:t}=Nr;if(Pr(r,"tag"),r<0||r>255)throw new t("tlv.encode: wrong tag");if(typeof e!="string")throw new TypeError('"data" expected string, got type='+typeof e);if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=Dc(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?Dc(o.length/2|128):"";return Dc(r)+s+o+e},decode(r,e){let{Err:t}=Nr;e=ce(e,void 0,"DER data");let n=0;if(r<0||r>255)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)i=i<<8|u;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=Nr;if(Md(r),r<rn)throw new e("integer: negative integers are not allowed");let t=Dc(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Nr;if(r.length<1)throw new e("invalid signature integer: empty");if(r[0]&128)throw new e("invalid signature integer: negative");if(r.length>1&&r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Cs(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Nr,o=ce(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Nr,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}};Object.freeze(Nr._tlv);Object.freeze(Nr._int);Object.freeze(Nr);var rn=BigInt(0),So=BigInt(1),by=BigInt(2),Qd=BigInt(3),E_=BigInt(4);function wy(r,e={}){let t=$d("weierstrass",r,e),n=t.Fp,o=t.Fn,s=t.CURVE,{h:i,n:a}=s;sr(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c,allowInfinityPoint:l}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let u=Ey(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(F,E,P){if(l&&E.is0())return Uint8Array.of(0);let{x:L,y:_}=E.toAffine(),T=n.toBytes(L);if(Lr(P,"isCompressed"),P){d();let D=!n.isOdd(_);return tt(xy(D),T)}else return tt(Uint8Array.of(4),T,n.toBytes(_))}function h(F){ce(F,void 0,"Point");let{publicKey:E,publicKeyUncompressed:P}=u,L=F.length,_=F[0],T=F.subarray(1);if(l&&L===1&&_===0)return{x:n.ZERO,y:n.ZERO};if(L===E&&(_===2||_===3)){let D=n.fromBytes(T);if(!n.isValid(D))throw new Error("bad point: is not on curve, wrong x");let N=g(D),R;try{R=n.sqrt(N)}catch(G){let J=G instanceof Error?": "+G.message:"";throw new Error("bad point: is not on curve, sqrt error"+J)}d();let M=n.isOdd(R);return(_&1)===1!==M&&(R=n.neg(R)),{x:D,y:R}}else if(L===P&&_===4){let D=n.BYTES,N=n.fromBytes(T.subarray(0,D)),R=n.fromBytes(T.subarray(D,D*2));if(!m(N,R))throw new Error("bad point: is not on curve");return{x:N,y:R}}else throw new Error(`bad point: got length ${L}, expected compressed=${E} or uncompressed=${P}`)}let p=e.toBytes===void 0?f:e.toBytes,y=e.fromBytes===void 0?h:e.fromBytes;function g(F){let E=n.sqr(F),P=n.mul(E,F);return n.add(n.add(P,n.mul(F,s.a)),s.b)}function m(F,E){let P=n.sqr(E),L=g(F);return n.eql(P,L)}if(!m(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let b=n.mul(n.pow(s.a,Qd),E_),w=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(b,w)))throw new Error("bad curve params: a or b");function x(F,E,P=!1){if(!n.isValid(E)||P&&n.is0(E))throw new Error(`bad point coordinate ${F}`);return E}function v(F){if(!(F instanceof I))throw new Error("Weierstrass Point expected")}function A(F){if(!c||!c.basises)throw new Error("no endo");return x_(F,c.basises,o.ORDER)}function S(F,E,P,L,_){return P=new I(n.mul(P.X,F),P.Y,P.Z),E=Mc(L,E),P=Mc(_,P),E.add(P)}class I{static BASE=new I(s.Gx,s.Gy,n.ONE);static ZERO=new I(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(E,P,L){this.X=x("x",E),this.Y=x("y",P,!0),this.Z=x("z",L),Object.freeze(this)}static CURVE(){return s}static fromAffine(E){let{x:P,y:L}=E||{};if(!E||!n.isValid(P)||!n.isValid(L))throw new Error("invalid affine point");if(E instanceof I)throw new Error("projective point not allowed");return n.is0(P)&&n.is0(L)?I.ZERO:new I(P,L,n.ONE)}static fromBytes(E){let P=I.fromAffine(y(ce(E,void 0,"point")));return P.assertValidity(),P}static fromHex(E){return I.fromBytes(Li(E))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(E=8,P=!0){return K.createCache(this,E),P||this.multiply(Qd),this}assertValidity(){let E=this;if(E.is0()){if(e.allowInfinityPoint&&n.is0(E.X)&&n.eql(E.Y,n.ONE)&&n.is0(E.Z))return;throw new Error("bad point: ZERO")}let{x:P,y:L}=E.toAffine();if(!n.isValid(P)||!n.isValid(L))throw new Error("bad point: x or y not field elements");if(!m(P,L))throw new Error("bad point: equation left != right");if(!E.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:E}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(E)}equals(E){v(E);let{X:P,Y:L,Z:_}=this,{X:T,Y:D,Z:N}=E,R=n.eql(n.mul(P,N),n.mul(T,_)),M=n.eql(n.mul(L,N),n.mul(D,_));return R&&M}negate(){return new I(this.X,n.neg(this.Y),this.Z)}double(){let{a:E,b:P}=s,L=n.mul(P,Qd),{X:_,Y:T,Z:D}=this,N=n.ZERO,R=n.ZERO,M=n.ZERO,U=n.mul(_,_),G=n.mul(T,T),J=n.mul(D,D),Q=n.mul(_,T);return Q=n.add(Q,Q),M=n.mul(_,D),M=n.add(M,M),N=n.mul(E,M),R=n.mul(L,J),R=n.add(N,R),N=n.sub(G,R),R=n.add(G,R),R=n.mul(N,R),N=n.mul(Q,N),M=n.mul(L,M),J=n.mul(E,J),Q=n.sub(U,J),Q=n.mul(E,Q),Q=n.add(Q,M),M=n.add(U,U),U=n.add(M,U),U=n.add(U,J),U=n.mul(U,Q),R=n.add(R,U),J=n.mul(T,D),J=n.add(J,J),U=n.mul(J,Q),N=n.sub(N,U),M=n.mul(J,G),M=n.add(M,M),M=n.add(M,M),new I(N,R,M)}add(E){v(E);let{X:P,Y:L,Z:_}=this,{X:T,Y:D,Z:N}=E,R=n.ZERO,M=n.ZERO,U=n.ZERO,G=s.a,J=n.mul(s.b,Qd),Q=n.mul(P,T),Ie=n.mul(L,D),Te=n.mul(_,N),_e=n.add(P,L),ye=n.add(T,D);_e=n.mul(_e,ye),ye=n.add(Q,Ie),_e=n.sub(_e,ye),ye=n.add(P,_);let Be=n.add(T,N);return ye=n.mul(ye,Be),Be=n.add(Q,Te),ye=n.sub(ye,Be),Be=n.add(L,_),R=n.add(D,N),Be=n.mul(Be,R),R=n.add(Ie,Te),Be=n.sub(Be,R),U=n.mul(G,ye),R=n.mul(J,Te),U=n.add(R,U),R=n.sub(Ie,U),U=n.add(Ie,U),M=n.mul(R,U),Ie=n.add(Q,Q),Ie=n.add(Ie,Q),Te=n.mul(G,Te),ye=n.mul(J,ye),Ie=n.add(Ie,Te),Te=n.sub(Q,Te),Te=n.mul(G,Te),ye=n.add(ye,Te),Q=n.mul(Ie,ye),M=n.add(M,Q),Q=n.mul(Be,ye),R=n.mul(_e,R),R=n.sub(R,Q),Q=n.mul(_e,Ie),U=n.mul(Be,U),U=n.add(U,Q),new I(R,M,U)}subtract(E){return v(E),this.add(E.negate())}is0(){return this.equals(I.ZERO)}multiply(E){let{endo:P}=e;if(!o.isValidNot0(E))throw new RangeError("invalid scalar: out of range");let L,_,T=D=>K.cached(this,D,N=>_s(I,N));if(P){let{k1neg:D,k1:N,k2neg:R,k2:M}=A(E),{p:U,f:G}=T(N),{p:J,f:Q}=T(M);_=G.add(Q),L=S(P.beta,U,J,D,R)}else{let{p:D,f:N}=T(E);L=D,_=N}return _s(I,[L,_])[0]}multiplyUnsafe(E){let{endo:P}=e,L=this,_=E;if(!o.isValid(_))throw new RangeError("invalid scalar: out of range");if(_===rn||L.is0())return I.ZERO;if(_===So)return L;if(K.hasCache(this))return this.multiply(_);if(P){let{k1neg:T,k1:D,k2neg:N,k2:R}=A(_),{p1:M,p2:U}=$7(I,L,D,R);return S(P.beta,M,U,T,N)}else return K.unsafe(L,_)}toAffine(E){let P=this,L=E,{X:_,Y:T,Z:D}=P;if(n.eql(D,n.ONE))return{x:_,y:T};let N=P.is0();L==null&&(L=N?n.ONE:n.inv(D));let R=n.mul(_,L),M=n.mul(T,L),U=n.mul(D,L);if(N)return{x:n.ZERO,y:n.ZERO};if(!n.eql(U,n.ONE))throw new Error("invZ was invalid");return{x:R,y:M}}isTorsionFree(){let{isTorsionFree:E}=e;return i===So?!0:E?E(I,this):K.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:E}=e;return i===So?this:E?E(I,this):this.multiplyUnsafe(i)}isSmallOrder(){return i===So?this.is0():this.clearCofactor().is0()}toBytes(E=!0){return Lr(E,"isCompressed"),this.assertValidity(),p(I,this,E)}toHex(E=!0){return Ri(this.toBytes(E))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let k=o.BITS,K=new Ni(I,e.endo?Math.ceil(k/2):k);return k>=8&&I.BASE.precompute(8),Object.freeze(I.prototype),Object.freeze(I),I}function xy(r){return Uint8Array.of(r?2:3)}function Ey(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function v_(r,e={}){let{Fn:t}=r,n=e.randomBytes===void 0?As:e.randomBytes,o=Object.assign(Ey(r.Fp,t),{seed:Math.max(G2(t.ORDER),16)});function s(h){try{let p=t.fromBytes(h);return t.isValidNot0(p)}catch{return!1}}function i(h,p){let{publicKey:y,publicKeyUncompressed:g}=o;try{let m=h.length;return p===!0&&m!==y||p===!1&&m!==g?!1:!!r.fromBytes(h)}catch{return!1}}function a(h){return h=h===void 0?n(o.seed):h,W2(ce(h,o.seed,"seed"),t.ORDER)}function c(h,p=!0){return r.BASE.multiply(t.fromBytes(h)).toBytes(p)}function l(h){let{secretKey:p,publicKey:y,publicKeyUncompressed:g}=o,m=t._lengths;if(!Ss(h))return;let b=ce(h,void 0,"key").length,w=b===y||b===g,x=b===p||!!m?.includes(b);if(!(w&&x))return w}function u(h,p,y=!0){if(l(h)===!0)throw new Error("first arg must be private key");if(l(p)===!1)throw new Error("second arg must be public key");let g=t.fromBytes(h);return r.fromBytes(p).multiply(g).toBytes(y)}let d={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},f=Oi(a,c);return Object.freeze(d),Object.freeze(o),Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:f,Point:r,utils:d,lengths:o})}function vy(r,e,t={}){let n=e;Ln(n),sr(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let o=t.randomBytes===void 0?As:t.randomBytes,s=t.hmac===void 0?(_,T)=>ks(n,_,T):t.hmac,{Fp:i,Fn:a}=r,{ORDER:c,BITS:l}=a,{keygen:u,getPublicKey:d,getSharedSecret:f,utils:h,lengths:p}=v_(r,t),y={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},g=c*by+So<i.ORDER;function m(_){let T=c>>So;return _>T}function b(_,T){if(!a.isValidNot0(T))throw new Error(`invalid signature ${_}: out of range 1..Point.Fn.ORDER`);return T}function w(){if(g)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function x(_,T){Nm(T);let D=p.signature,N=T==="compact"?D:T==="recovered"?D+1:void 0;return ce(_,N)}class v{r;s;recovery;constructor(T,D,N){if(this.r=b("r",T),this.s=b("s",D),N!=null){if(w(),![0,1,2,3].includes(N))throw new Error("invalid recovery id");this.recovery=N}Object.freeze(this)}static fromBytes(T,D=y.format){x(T,D);let N;if(D==="der"){let{r:G,s:J}=Nr.toSig(ce(T));return new v(G,J)}D==="recovered"&&(N=T[0],D="compact",T=T.subarray(1));let R=p.signature/2,M=T.subarray(0,R),U=T.subarray(R,R*2);return new v(a.fromBytes(M),a.fromBytes(U),N)}static fromHex(T,D){return this.fromBytes(Li(T),D)}assertRecovery(){let{recovery:T}=this;if(T==null)throw new Error("invalid recovery id: must be present");return T}addRecoveryBit(T){return new v(this.r,this.s,T)}recoverPublicKey(T){let{r:D,s:N}=this,R=this.assertRecovery(),M=R===2||R===3?D+c:D;if(!i.isValid(M))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let U=i.toBytes(M),G=r.fromBytes(tt(xy((R&1)===0),U)),J=a.inv(M),Q=S(ce(T,void 0,"msgHash")),Ie=a.create(-Q*J),Te=a.create(N*J),_e=r.BASE.multiplyUnsafe(Ie).add(G.multiplyUnsafe(Te));if(_e.is0())throw new Error("invalid recovery: point at infinify");return _e.assertValidity(),_e}hasHighS(){return m(this.s)}toBytes(T=y.format){if(Nm(T),T==="der")return Li(Nr.hexFromSig(this));let{r:D,s:N}=this,R=a.toBytes(D),M=a.toBytes(N);return T==="recovered"?(w(),tt(Uint8Array.of(this.assertRecovery()),R,M)):tt(R,M)}toHex(T){return Ri(this.toBytes(T))}}Object.freeze(v.prototype),Object.freeze(v);let A=t.bits2int===void 0?function(T){if(T.length>8192)throw new Error("input is too large");let D=Cs(T),N=T.length*8-l;return N>0?D>>BigInt(N):D}:t.bits2int,S=t.bits2int_modN===void 0?function(T){return a.create(A(T))}:t.bits2int_modN,I=Nc(l);function k(_){return Dn("num < 2^"+l,_,rn,I),a.toBytes(_)}function K(_,T){return ce(_,void 0,"message"),T?ce(n(_),void 0,"prehashed message"):_}function F(_,T,D){let{lowS:N,prehash:R,extraEntropy:M}=km(D,y);_=K(_,R);let U=S(_),G=a.fromBytes(T);if(!a.isValidNot0(G))throw new Error("invalid private key");let J=[k(G),k(U)];if(M!=null&&M!==!1){let _e=M===!0?o(p.secretKey):M;J.push(ce(_e,void 0,"extraEntropy"))}let Q=tt(...J),Ie=U;function Te(_e){let ye=A(_e);if(!a.isValidNot0(ye))return;let Be=a.inv(ye),In=r.BASE.multiply(ye).toAffine(),ss=a.create(In.x);if(ss===rn)return;let mi=a.create(Be*a.create(Ie+ss*G));if(mi===rn)return;let fc=(In.x===ss?0:2)|Number(In.y&So),hc=mi;return N&&m(mi)&&(hc=a.neg(mi),fc^=1),new v(ss,hc,g?void 0:fc)}return{seed:Q,k2sig:Te}}function E(_,T,D={}){let{seed:N,k2sig:R}=F(_,T,D);return S7(n.outputLen,a.BYTES,s)(N,R).toBytes(D.format)}function P(_,T,D,N={}){let{lowS:R,prehash:M,format:U}=km(N,y);if(D=ce(D,void 0,"publicKey"),T=K(T,M),!Ss(_)){let G=_ instanceof v?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+G)}x(_,U);try{let G=v.fromBytes(_,U),J=r.fromBytes(D);if(R&&G.hasHighS())return!1;let{r:Q,s:Ie}=G,Te=S(T),_e=a.inv(Ie),ye=a.create(Te*_e),Be=a.create(Q*_e),In=r.BASE.multiplyUnsafe(ye).add(J.multiplyUnsafe(Be));return In.is0()?!1:a.create(In.x)===Q}catch{return!1}}function L(_,T,D={}){let{prehash:N}=km(D,y);return T=K(T,N),v.fromBytes(_,"recovered").recoverPublicKey(T).toBytes()}return Object.freeze({keygen:u,getPublicKey:d,getSharedSecret:f,utils:h,lengths:p,Point:r,sign:E,verify:P,recoverPublicKey:L,Signature:v,hash:n})}var Bm={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},S_={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var Sy=BigInt(2);function A_(r){let e=Bm.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,d=Ne(u,t,e)*u%e,f=Ne(d,t,e)*u%e,h=Ne(f,Sy,e)*l%e,p=Ne(h,o,e)*h%e,y=Ne(p,s,e)*p%e,g=Ne(y,a,e)*y%e,m=Ne(g,c,e)*g%e,b=Ne(m,a,e)*y%e,w=Ne(b,t,e)*u%e,x=Ne(w,i,e)*p%e,v=Ne(x,n,e)*l%e,A=Ne(v,Sy,e);if(!Mm.eql(Mm.sqr(A),r))throw new Error("Cannot find square root");return A}var Mm=Di(Bm.p,{sqrt:A_}),C_=wy(Bm,{Fp:Mm,endo:S_}),Or=vy(C_,yr);var Ay=32;function Cy(r,e,t){let n=pt.digest(e instanceof Uint8Array?e:e.subarray());if(Ui(n))return n.then(({digest:o})=>(t?.signal?.throwIfAborted(),Or.sign(o,r,{prehash:!1,format:"der"}))).catch(o=>{throw o.name==="AbortError"?o:new Vc(String(o))});try{return Or.sign(n.digest,r,{prehash:!1,format:"der"})}catch(o){throw new Vc(String(o))}}function Iy(r,e,t,n){let o=pt.digest(t instanceof Uint8Array?t:t.subarray());if(Ui(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),Or.verify(e,s,r,{prehash:!1,format:"der"}))).catch(s=>{throw s.name==="AbortError"?s:new Kc(String(s))});try{return n?.signal?.throwIfAborted(),Or.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(s){throw new Kc(String(s))}}var Xc=class{type="secp256k1";raw;_key;constructor(e){this._key=Ry(e),this.raw=Ty(this._key)}toMultihash(){return nr.digest(ct(this))}toCID(){return ae.createV1(114,this.toMultihash())}toString(){return Ee.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){return Iy(this._key,t,e,n)}},Zc=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=_y(e),this.publicKey=new Xc(t??Ly(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}sign(e,t){return Cy(this.raw,e,t)}};function Um(r){return new Zc(r)}function Fm(r){return new Xc(r)}async function Py(){let r=I_();return new Zc(r)}function Ty(r){return Or.Point.fromBytes(r).toBytes()}function _y(r){try{return Or.getPublicKey(r,!0),r}catch(e){throw new pc(String(e))}}function Ry(r){try{return Or.Point.fromBytes(r),r}catch(e){throw new Tn(String(e))}}function Ly(r){try{return Or.getPublicKey(r,!0)}catch(e){throw new pc(String(e))}}function I_(){return Or.utils.randomSecretKey()}async function Xd(r,e){if(r==="Ed25519")return ry();if(r==="secp256k1")return Py();if(r==="RSA")return Dm(T_(e));if(r==="ECDSA")return i7(__(e));throw new Ir}function nt(r,e){let{Type:t,Data:n}=tn.decode(r),o=n??new Uint8Array;switch(t){case Le.RSA:return Rm(o,e);case Le.Ed25519:return im(o);case Le.secp256k1:return Fm(o);case Le.ECDSA:return L2(o);default:throw new Ir}}function Dy(r){let{Type:e,Data:t}=tn.decode(r.digest),n=t??new Uint8Array;switch(e){case Le.Ed25519:return im(n);case Le.secp256k1:return Fm(n);case Le.ECDSA:return L2(n);default:throw new Ir}}function ct(r){return tn.encode({Type:Le[r.type],Data:r.raw})}function ky(r){let e=jc.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Le.RSA:return _m(t);case Le.Ed25519:return sm(t);case Le.secp256k1:return Um(t);case Le.ECDSA:return t7(t);default:throw new Ir}}function Ny(r){if(r.byteLength===ir)return sm(r);if(r.byteLength===Ay)return Um(r);let e=gr(r),t=e[2]?.[0];if(t===M8||t===B8||t===U8)return R2(e);if(e.length>8)return jd(e);throw new C("Could not extract private key from raw bytes")}function Ns(r){return jc.encode({Type:Le[r.type],Data:r.raw})}function T_(r){return r==null?2048:parseInt(r,10)}function __(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new C("Unsupported curve, should be P-256, P-384 or P-521")}var Oy=Symbol.for("nodejs.util.inspect.custom"),R_=114,Jc=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Ed]=!0;toString(){return this.string==null&&(this.string=Ee.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return ae.createV1(R_,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Z(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return Z(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[Oy](){return`PeerId(${this.toString()})`}},el=class extends Jc{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},tl=class extends Jc{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},rl=class extends Jc{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},L_=2336,nl=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=nr.digest(O(this.url))}[Oy](){return`PeerId(${this.url})`}[Ed]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return ae.createV1(L_,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=B(e)),e.toString()===this.toString())}};var P_=114,My=2336;function Oe(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ve(Ee.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return Mt(ae.parse(r));if(e==null)throw new C('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ve(e.decode(r))}return Xe(t)}function nn(r){if(r.type==="Ed25519")return new tl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new rl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new el({multihash:r.toCID().multihash,publicKey:r});throw new Ir}function By(r){return nn(r.publicKey)}function Xe(r){if(k_(r))return new el({multihash:r});if(D_(r))try{let e=Dy(r);if(e.type==="Ed25519")return new tl({multihash:r,publicKey:e});if(e.type==="secp256k1")return new rl({multihash:r,publicKey:e})}catch{let t=B(r.digest);return new nl(new URL(t))}throw new md("Supplied PeerID Multihash is invalid")}function Mt(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==P_&&r.code!==My)throw new pd("Supplied PeerID CID is invalid");if(r.code===My){let e=B(r.multihash.digest);return new nl(new URL(e))}return Xe(r.multihash)}function D_(r){return r.code===nr.code}function k_(r){return r.code===pt.code}async function Uy(r){if(r.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new C("Private network is enforced, but no protector was provided");return r}function Zd(r,e){if(typeof r=="string")return N_(r);if(typeof r=="number")return B_(r,e);throw new Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}function N_(r){if(typeof r!="string"||r.length===0||r.length>100)throw new Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,o=parseFloat(t),s=n.toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return o*315576e5;case"months":case"month":case"mo":return o*26298e5;case"weeks":case"week":case"w":return o*6048e5;case"days":case"day":case"d":return o*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return o*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return o*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return o*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:throw new Error(`Unknown unit "${s}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function O_(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function M_(r){let e=Math.abs(r);return e>=315576e5?Os(r,e,315576e5,"year"):e>=26298e5?Os(r,e,26298e5,"month"):e>=6048e5?Os(r,e,6048e5,"week"):e>=864e5?Os(r,e,864e5,"day"):e>=36e5?Os(r,e,36e5,"hour"):e>=6e4?Os(r,e,6e4,"minute"):e>=1e3?Os(r,e,1e3,"second"):`${r} ms`}function B_(r,e){if(typeof r!="number"||!Number.isFinite(r))throw new Error("Value provided to ms.format() must be of type number.");return e?.long?M_(r):O_(r)}function Os(r,e,t,n){let o=e>=t*1.5;return`${Math.round(r/t)} ${n}${o?"s":""}`}function $m(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=Zd,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let d=0;for(let f=0;f<u.length;f++)d=(d<<5)-d+u.charCodeAt(f),d|=0;return t.colors[Math.abs(d)%t.colors.length]}t.selectColor=e;function t(u,d){let f,h=null,p,y;function g(...m){if(!g.enabled)return;let b=g,w=Number(new Date),x=w-(f||w);b.diff=x,b.prev=f,b.curr=w,f=w,m[0]=t.coerce(m[0]),typeof m[0]!="string"&&m.unshift("%O");let v=0;m[0]=m[0].replace(/%([a-zA-Z%])/g,(S,I)=>{if(S==="%%")return"%";v++;let k=t.formatters[I];if(typeof k=="function"){let K=m[v];S=k.call(b,K),m.splice(v,1),v--}return S}),t.formatArgs.call(b,m),d?.onLog!=null&&d.onLog(...m),(b.log||t.log).apply(b,m)}return g.namespace=u,g.useColors=t.useColors(),g.color=t.selectColor(u),g.extend=n,g.destroy=t.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(p!==t.namespaces&&(p=t.namespaces,y=t.enabled(u)),y),set:m=>{h=m}}),typeof t.init=="function"&&t.init(g),g}function n(u,d){let f=t(this.namespace+(typeof d>"u"?":":d)+u);return f.log=this.log,f}function o(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let d,f=(typeof u=="string"?u:"").split(/[\s,]+/),h=f.length;for(d=0;d<h;d++)f[d]&&(u=f[d].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function s(){let u=[...t.names.map(a),...t.skips.map(a).map(d=>"-"+d)].join(",");return t.enable(""),u}function i(u){if(u[u.length-1]==="*")return!0;let d,f;for(d=0,f=t.skips.length;d<f;d++)if(t.skips[d].test(u))return!1;for(d=0,f=t.names.length;d<f;d++)if(t.names[d].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Jd=H_(),U_=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function F_(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function $_(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Zd(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}var V_=console.debug??console.log??(()=>{});function K_(r){try{r?Jd?.setItem("debug",r):Jd?.removeItem("debug")}catch{}}function q_(){let r;try{r=Jd?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function H_(){try{return localStorage}catch{}}function z_(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Fy=$m({formatArgs:$_,save:K_,load:q_,useColors:F_,setupFormatters:z_,colors:U_,storage:Jd,log:V_});var Gt=Fy;Gt.formatters.b=r=>r==null?"undefined":Ee.baseEncode(r);Gt.formatters.t=r=>r==null?"undefined":mr.baseEncode(r);Gt.formatters.m=r=>r==null?"undefined":_n.baseEncode(r);Gt.formatters.p=r=>r==null?"undefined":r.toString();Gt.formatters.c=r=>r==null?"undefined":r.toString();Gt.formatters.k=r=>r==null?"undefined":r.toString();Gt.formatters.a=r=>r==null?"undefined":r.toString();function $y(r,e=""){let t=Vy(r.message),n=Vy(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
|
|
3
3
|
`).join(`
|
|
4
4
|
${e}`)}`:`${t}
|
|
5
5
|
${e}${n.split(`
|
|
6
6
|
`).join(`
|
|
7
7
|
${e}`)}`:n!=null?`${n.split(`
|
|
8
8
|
`).join(`
|
|
9
|
-
${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function
|
|
10
|
-
${e}${r.errors.map(n=>`${
|
|
9
|
+
${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function G_(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function Ky(r,e=""){if(G_(r)){let t=$y(r,e);return r.errors.length>0?(e=`${e} `,t+=`
|
|
10
|
+
${e}${r.errors.map(n=>`${Ky(n,`${e}`)}`).join(`
|
|
11
11
|
${e}`)}`):t+=`
|
|
12
|
-
${e}[Error list was empty]`,t.trim()}return Fy(r,e)}Gt.formatters.e=r=>r==null?"undefined":Vy(r);function G_(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e.useColors=()=>!1,e}function qi(r){return{forComponent(e){return Ky(e,r)}}}function Ky(r,e){let t=G_(`${r}:trace`);return Gt.enabled(`${r}:trace`)&&Gt.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=Gt(`${r}:trace`,e)),Object.assign(Gt(r,e),{error:Gt(`${r}:error`,e),trace:t,newScope:n=>Ky(`${r}:${n}`,e)})}function $y(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function Ms(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function ef(r){let e=ve(Ee.decode(`z${r}`));return Xe(e)}var Tt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Ms(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return Ms(this.map.values(),e=>e.key)}values(){return Ms(this.map.values(),e=>e.value)}get size(){return this.map.size}};var cr=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return Ms(this.set.entries(),e=>{let t=ef(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ef(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ms(this.set.values(),e=>ef(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};function Vm(){return new cr}var Km={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},qy={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},Hy=new globalThis.TextEncoder;function W_(r,e){let t=Km[e],n=qy[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function j_(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=Km[e],o=qy[e],s=r;for(;s.length>0;){let i=Hy.encodeInto(s,t);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function qm(r,{size:e=32,utf8Buffer:t}={}){if(!Km[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return j_(r,e,t);r=Hy.encode(r)}return W_(r,e)}var ol={hash:r=>Number(qm(r,{size:32})),hashV:(r,e)=>Y_(ol.hash(r,e))};function Y_(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),O(e,"base16")}var Hm=64,Or=class{fp;h;seed;constructor(e,t,n,o=2){if(o>Hm)throw new TypeError("Invalid Fingerprint Size");let s=t.hashV(e,n),i=de(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?Z(this.fp,e.fp):!1}};function Bs(r,e){return Math.floor(Math.random()*(e-r))+r}var Us=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof Or))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof Or))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof Or))throw new TypeError("Invalid Fingerprint");let t=Bs(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof Or))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var Q_=500,sl=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??ol,this.seed=e.seed??Bs(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=O(e));let t=new Or(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new Us(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new Us(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let s=[n,o],i=s[Bs(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new Us(this.bucketSize));for(let a=0;a<Q_;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new Us(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=O(e));let t=new Or(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let s=(n^t.hash())%this.filterSize;return this.buckets[s]?.has(t)??!1}remove(e){typeof e=="string"&&(e=O(e));let t=new Or(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let s=(n^t.hash())%this.filterSize,i=this.buckets[s]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},X_={1:.5,2:.84,4:.95,8:.98};function Z_(r=.001){return r>.002?2:r>1e-5?4:8}function zy(r,e=.001){let t=Z_(e),n=X_[t],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),Hm);return{filterSize:o,bucketSize:t,fingerprintSize:s}}var tf=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??ol,this.seed=e.seed??Bs(0,Math.pow(2,10)),this.filterSeries=[new sl({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=O(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new sl({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Wt(r,e=.001,t){return new tf({...zy(r,e),...t??{}})}function zm(r){let e=r.getComponents(),t={},n=0;return e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n]?.name==="ip4"||e[n]?.name==="ip6"||e[n]?.name==="dns"||e[n]?.name==="dns4"||e[n]?.name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n]?.name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null?null:(e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t)}function Y(r){let e=zm(r);if(e==null)throw new C(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e}var rf=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let d=this.readChar();if(d===void 0)return;let f=Number.parseInt(d,e);if(!Number.isNaN(f))return f});if(u===void 0)break;if(s*=e,s+=u,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Gy=45,J_=15,Hi=new rf;function nf(r){if(!(r.length>J_))return Hi.new(r).parseWith(()=>Hi.readIPv4Addr())}function of(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Gy))return Hi.new(r).parseWith(()=>Hi.readIPv6Addr())}function zi(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>Gy)return;let t=Hi.new(r).parseWith(()=>Hi.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function Wy(r,e,t){let n=0;for(let o of r)if(!(n<e)){if(n>t)break;if(o!==255)return!1;n++}return!0}function jy(r,e,t,n){let o=0;for(let s of r)if(!(o<t)){if(o>n)break;if(s!==e[o])return!1;o++}return!0}function Gm(r){switch(r.length){case Fs:return r.join(".");case $s:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function Yy(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let o=t+1;o<r.length;o++)if(r[o]!=0)return-1;break}return e}function Qy(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Fs=4,$s=16,gW=parseInt("0xFFFF",16),eR=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function il(r,e){e.length===$s&&r.length===Fs&&Wy(e,0,11)&&(e=e.slice(12)),e.length===Fs&&r.length===$s&&jy(r,eR,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=r[o]&e[o];return n}function Xy(r,e){if(typeof e=="string"&&(e=zi(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function Wm(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Fs,o=nf(e);if(o==null&&(n=$s,o=of(e),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=jm(s,8*n);return{network:il(o,i),mask:i}}function jm(r,e){if(e!==8*Fs&&e!==8*$s)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let o=0;o<t;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var Vs=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=Wm(e));else{let n=zi(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n.length*8){let s=zi(t);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=jm(o,8*n.length);this.network=il(n,this.mask)}}contains(e){return Xy({network:this.network,mask:this.mask},e)}toString(){let e=Yy(this.mask),t=e!==-1?String(e):Qy(this.mask);return Gm(this.network)+"/"+t}};function Zy(r,e){return new Vs(r).contains(e)}function sf(r){try{let e=Y(r);return e.type==="ip6"?Zy("2000::/3",e.host):!1}catch{return!1}}function Jy(r){try{let e=Y(r);switch(e.type){case"ip4":return e.host.startsWith("169.254.");case"ip6":return e.host.toLowerCase().startsWith("fe80");default:return!1}}catch{return!1}}function e9(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function al(r){try{let e=Y(r);switch(e.type){case"ip4":case"ip6":return e9(e.host);default:return!1}}catch{return!1}}function bt(r){return zm(r)!==null}function Mr(r){return!!nf(r)}function af(r){return!!of(r)}var o9=gi(n9(),1),aR=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],cR=aR.map(r=>new o9.Netmask(r));function t3(r){for(let e of cR)if(e.contains(r))return!0;return!1}function lR(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function uR(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return t3(o)}function dR(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function fR(r){let e=r.split(":"),t=e[e.length-1];return t3(t)}function hR(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function Yi(r){if(Mr(r))return t3(r);if(lR(r))return uR(r);if(dR(r))return fR(r);if(af(r))return hR(r)}function Ze(r){try{let e=Y(r);switch(e.type){case"ip4":case"ip6":return Yi(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function Co(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function Br(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=Ke(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return Ad(t)}var wt=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},Mn=class extends Error{static name="ValidationError";name="ValidationError"},lf=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},uf=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function n3(r){return e=>B(e,r)}function o3(r){return e=>O(e,r)}function Qi(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function qs(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function s9(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=O(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=qs(n);return et([t,o],t.length+o.length)}function i9(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=pr.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=qs(n);return et([t,o],t.length+o.length)}function s3(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=B(e,"base32"),o=Qi(t);return`${n}:${o}`}var i3=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new wt("Invalid byte value in IP address");e[n]=o}),e},a9=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=Mr(t[n]),i;s&&(i=i3(t[n]),t[n]=B(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,B(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new wt("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},c9=function(r){if(r.byteLength!==4)throw new wt("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},l9=function(r){if(r.byteLength!==16)throw new wt("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new wt(`Invalid IPv6 address "${t}"`)}};function u9(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new wt(`Invalid IPv6 address "${r}"`)}}var r3=Object.values(gs).map(r=>r.decoder),pR=(function(){let r=r3[0].or(r3[1]);return r3.slice(2).forEach(e=>r=r.or(e)),r})();function d9(r){return pR.decode(r)}function f9(r){return e=>r.encoder.encode(e)}function mR(r){if(parseInt(r).toString()!==r)throw new Mn("Value must be an integer")}function gR(r){if(r<0)throw new Mn("Value must be a positive integer, or zero")}function yR(r){return e=>{if(e>r)throw new Mn(`Value must be smaller than or equal to ${r}`)}}function bR(...r){return e=>{for(let t of r)t(e)}}var cl=bR(mR,gR,yR(65535));var ut=-1,a3=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new uf(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},Un=new a3,DR=[{code:4,name:"ip4",size:32,valueToBytes:i3,bytesToValue:c9,validate:r=>{if(!Mr(r))throw new Mn(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:273,name:"udp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:33,name:"dccp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:41,name:"ip6",size:128,valueToBytes:a9,bytesToValue:l9,stringToValue:u9,validate:r=>{if(!af(r))throw new Mn(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:ut},{code:43,name:"ipcidr",size:8,bytesToValue:n3("base10"),valueToBytes:o3("base10")},{code:53,name:"dns",size:ut},{code:54,name:"dns4",size:ut},{code:55,name:"dns6",size:ut},{code:56,name:"dnsaddr",size:ut},{code:132,name:"sctp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:ut,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:ut,bytesToValue:n3("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?o3("base58btc")(r):ie.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:s3,valueToBytes:s9},{code:445,name:"onion3",size:296,bytesToValue:s3,valueToBytes:i9},{code:446,name:"garlic64",size:ut},{code:447,name:"garlic32",size:ut},{code:448,name:"tls"},{code:449,name:"sni",size:ut},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:ut,bytesToValue:f9(Sc),valueToBytes:d9},{code:480,name:"http"},{code:481,name:"http-path",size:ut,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:ut}];DR.forEach(r=>{Un.addProtocol(r)});function h9(r){let e=[],t=0;for(;t<r.length;){let n=Pr(r,t),o=Un.getProtocol(n),s=Re(n),i=kR(o,r,t+s),a=0;i>0&&o.size===ut&&(a=Re(i));let c=s+a+i,l={code:n,name:o.name,bytes:ae(r.subarray(t,t+c))};if(i>0){let u=t+s+a,d=r.subarray(u,u+i);l.value=o.bytesToValue?.(d)??B(d)}e.push(l),t+=c}return e}function p9(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=Un.getProtocol(n.code),s=Re(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??O(n.value),a=i.byteLength,o.size===ut&&(c=Re(a)));let l=new Uint8Array(s+c+a),u=0;Vi(n.code,l,u),u+=s,i!=null&&(o.size===ut&&(Vi(a,l,u),u+=c),l.set(i,u)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return et(t,e)}function m9(r){if(r.charAt(0)!=="/")throw new wt('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=Un.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new wt(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new wt(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new wt("Incomplete multiaddr");return e}function g9(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=Un.getProtocol(e.code);if(t==null)throw new wt(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function kR(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:Pr(e,t)}var NR=Symbol.for("nodejs.util.inspect.custom"),g3=Symbol.for("@multiformats/multiaddr");function OR(r){if(r==null&&(r="/"),sn(r))return r.getComponents();if(r instanceof Uint8Array)return h9(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),m9(r);if(Array.isArray(r))return r;throw new wt("Must be a string, Uint8Array, Component[], or another Multiaddr")}var mf=class r{[g3]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=OR(e),t.validate!==!1&&MR(this)}get bytes(){return this.#r==null&&(this.#r=p9(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=g9(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new lf(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return Z(this.bytes,e.bytes)}[NR](){return`Multiaddr(${this.toString()})`}};function MR(r){r.getComponents().forEach(e=>{let t=Un.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function sn(r){return!!r?.[g3]}function V(r){return new mf(r)}var Ae=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),j=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),y9=r=>({match:e=>r.match(e)===!1?e:!1}),le=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),_t=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),pe=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function Ce(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var BR=j(421),b9=Ce(BR),yf=j(54),bf=j(55),wf=j(56),b3=j(53),nY=Ce(yf,le(j(421))),oY=Ce(bf,le(j(421))),sY=Ce(wf,le(j(421))),w9=Ce(_t(b3,wf,yf,bf),le(j(421))),x9=pe(j(4),le(j(43))),E9=pe(le(j(42)),j(41),le(j(43))),w3=_t(x9,E9),ea=_t(w3,b3,yf,bf,wf),v9=Ce(_t(w3,pe(_t(b3,wf,yf,bf),le(j(421))))),x3=Ce(x9),E3=Ce(E9),S9=Ce(w3),v3=pe(ea,j(6)),pl=pe(ea,j(273)),zs=Ce(pe(v3,le(j(421)))),iY=Ce(pl),S3=pe(pl,Ae(460),le(j(421))),xf=pe(pl,Ae(461),le(j(421))),UR=_t(S3,xf),aY=Ce(S3),A9=Ce(xf),y3=_t(ea,v3,pl,S3,xf),C9=_t(pe(y3,Ae(477),le(j(421)))),Fn=Ce(C9),I9=_t(pe(y3,Ae(478),le(j(421))),pe(y3,Ae(448),le(j(449)),Ae(477),le(j(421)))),Gs=Ce(I9),T9=pe(pl,Ae(280),le(j(466)),le(j(466)),le(j(421))),ml=Ce(T9),_9=pe(xf,Ae(465),le(j(466)),le(j(466)),le(j(421))),A3=Ce(_9),gf=_t(C9,I9,pe(v3,le(j(421))),pe(UR,le(j(421))),pe(ea,le(j(421))),T9,_9,j(421)),ta=Ce(gf),FR=pe(le(gf),Ae(290),y9(Ae(281)),le(j(421))),dt=Ce(FR),$R=_t(pe(gf,Ae(290),Ae(281),le(j(421))),pe(gf,Ae(281),le(j(421))),pe(Ae(281),le(j(421)))),gl=Ce($R),VR=pe(ea,_t(pe(j(6,"80")),pe(j(6),Ae(480)),Ae(480)),le(j(481)),le(j(421))),cY=Ce(VR),KR=pe(ea,_t(pe(j(6,"443")),pe(j(6,"443"),Ae(480)),pe(j(6),Ae(443)),pe(j(6),Ae(448),Ae(480)),pe(Ae(448),Ae(480)),Ae(448),Ae(443)),le(j(481)),le(j(421))),lY=Ce(KR),qR=_t(pe(j(777),le(j(421)))),uY=Ce(qR),HR=_t(pe(j(400),le(j(421)))),dY=Ce(HR);function R9(r,e){let t=zs.exactMatch(r),n=zs.exactMatch(e);if(t&&!n)return-1;if(!t&&n)return 1;let o=Gs.exactMatch(r),s=Gs.exactMatch(e);if(o&&!s)return-1;if(!o&&s)return 1;let i=Fn.exactMatch(r),a=Fn.exactMatch(e);if(i&&!a)return-1;if(!i&&a)return 1;let c=gl.exactMatch(r),l=gl.exactMatch(e);if(c&&!l)return-1;if(!c&&l)return 1;let u=ml.exactMatch(r),d=ml.exactMatch(e);if(u&&!d)return-1;if(!u&&d)return 1;let f=A3.exactMatch(r),h=A3.exactMatch(e);return f&&!h?-1:!f&&h?1:0}function L9(r,e){let t=al(r),n=al(e);return t&&!n?1:!t&&n?-1:0}function P9(r,e){let t=Ze(r),n=Ze(e);return t&&!n?1:!t&&n?-1:0}function D9(r,e){let t=dt.exactMatch(r),n=dt.exactMatch(e);return t&&!n?1:!t&&n?-1:0}function He(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Ef=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},ra=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Ef(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new Ef(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var C3=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Bt(r={}){return zR(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function zR(r,e){e=e??{};let t=e.onEnd,n=new ra,o,s,i,a=He(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((g,m)=>{s=b=>{s=null,n.push(b);try{g(r(n))}catch(w){m(w)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=He()})}},l=g=>s!=null?s(g):(n.push(g),o),u=g=>(n=new ra,s!=null?s({error:g}):(n.push({error:g}),o)),d=g=>{if(i)return o;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:g})},f=g=>i?o:(i=!0,g!=null?u(g):l({done:!0})),h=()=>(n=new ra,f(),{done:!0}),p=g=>(f(g),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:d,end:f,get readableLength(){return n.size},onEmpty:async g=>{let m=g?.signal;if(m?.throwIfAborted(),n.isEmpty())return;let b,w;m!=null&&(b=new Promise((x,v)=>{w=()=>{v(new C3)},m.addEventListener("abort",w)}));try{await Promise.race([a.promise,b])}finally{w!=null&&m!=null&&m?.removeEventListener("abort",w)}}},t==null)return o;let y=o;return o={[Symbol.asyncIterator](){return this},next(){return y.next()},throw(g){return y.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return y.return(),t!=null&&(t(),t=void 0),{done:!0}},push:d,end(g){return y.end(g),t!=null&&(t(g),t=void 0),o},get readableLength(){return y.readableLength},onEmpty:g=>y.onEmpty(g)},o}var I3=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},k9=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function Ut(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e,a,c,u=new Promise((d,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(i?.aborted){f(k9(i));return}if(i&&(c=()=>{f(k9(i))},i.addEventListener("abort",c,{once:!0})),r.then(d,f),t===Number.POSITIVE_INFINITY)return;let h=new I3;a=s.setTimeout.call(void 0,()=>{if(n){try{d(n())}catch(p){f(p)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?d():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${t} milliseconds`,f(h))},t)}).finally(()=>{u.clear(),c&&i&&i.removeEventListener("abort",c)});return u.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},u}var GR=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function WR(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=GR(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function yr(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=WR(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function $n(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var vf=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},Sf=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},Ws=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"},Af=class extends Error{static name="MaxEarlyStreamsError";name="MaxEarlyStreamsError"},Cf=class extends Error{static name="StreamClosedError";name="StreamClosedError"};function jR(r){return r.reason}async function De(r,e,t){if(e==null)return r;let n=t?.translateError??jR;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var If=class{deferred;signal;onProgress;constructor(e){this.signal=e?.signal,this.onProgress=e?.onProgress,this.deferred=He(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new tr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function YR(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Tf=class{id;fn;options;recipients;status;timeline;controller;dispatchingProgress;constructor(e,t){this.id=YR(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.dispatchingProgress=!1,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new tr),this.cleanup())}async join(e){let t=new If(e);return this.recipients.push(t),e?.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await De(this.fn({...this.options??{},signal:this.controller.signal,onProgress:t=>{if(!this.dispatchingProgress){this.dispatchingProgress=!0;try{this.recipients.forEach(n=>{n.onProgress?.(t)})}finally{this.dispatchingProgress=!1}}}}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var jt=class extends se{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=$n(this.emitEmpty.bind(this),1),this.emitIdle=$n(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Sf;let n=new Tf(e,t);this.enqueue(n),this.safeDispatchEvent("add");let o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s});return this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new tr)}),this.clear()}async onEmpty(e){this.size!==0&&await yr(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await yr(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await yr(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Bt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new tr("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var QR=Math.pow(2,20)*4,To=class extends se{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??QR,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new W,this.writeBuffer=new W,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);let t=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,queueMicrotask(()=>{try{this.processSendQueue()}catch(o){this.log.error("processSendQueue threw - %e",o)}})),this.onDrainPromise?.resolve()};this.addEventListener("drain",t);let n=o=>{this.onDrainPromise?.reject(o.error??new Cf)};this.addEventListener("close",n)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),De(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;let e=Bt(),t=s=>{e.push(s.data)};this.addEventListener("message",t);let n=s=>{e.end(s.error)};this.addEventListener("close",n);let o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",t),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new jr(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(t){this.log("failed to send reset to remote - %e",t)}this.dispatchEvent(new wd(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new jr("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new jr("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new jr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new jr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");let e=new bi;this.dispatchEvent(new xd(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new uo))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;if(this.writeStatus!=="writable"&&this.writeStatus!=="closing")return this.log.trace("not processing send queue as stream is %s",this.writeStatus),!1;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0,t=this.writeBuffer.byteLength,n=0;for(;this.writeBuffer.byteLength>0;){let o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}let s=this.writeBuffer.sublist(0,o),i=new W(s);this.writeBuffer.consume(s.byteLength);let a;try{a=this.sendData(s)}catch(c){throw this.writeBuffer.prepend(i),this.abort(c),c}if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,t,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}let e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new bd(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new gc(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new gc(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}};var _o=class extends To{remoteAddr;metricPrefix;metrics;constructor(e){super(e),this.metricPrefix=e.metricPrefix??"",this.metrics=e.metrics,this.remoteAddr=e.remoteAddr,this.addEventListener("close",t=>{this.metrics?.increment({[`${this.metricPrefix}end`]:!0}),t.error!=null?t.local?this.metrics?.increment({[`${this.metricPrefix}abort`]:!0}):this.metrics?.increment({[`${this.metricPrefix}reset`]:!0}):t.local?this.metrics?.increment({[`${this.metricPrefix}_local_close`]:!0}):this.metrics?.increment({[`${this.metricPrefix}_remote_close`]:!0})})}async close(e){this.status==="open"&&(this.status="closing",this.writeStatus="closing",this.remoteWriteStatus="closing",this.remoteReadStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await yr(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await yr(this,"drain",{...e,rejectionEvents:["close"]})),await this.sendClose(e),this.onTransportClosed())}};function _f(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ro=class extends se{streams;protocol;status;log;maConn;streamOptions;earlyStreams;maxEarlyStreams;metrics;constructor(e,t){super(),this.maConn=e,this.protocol=t.protocol,this.streams=[],this.earlyStreams=[],this.status="open",this.log=e.log.newScope(t.name),this.streamOptions=t.streamOptions,this.maxEarlyStreams=t.maxEarlyStreams??10,this.metrics=t.metrics;let n=i=>{try{this.onData(i.data)}catch(a){this.abort(a),this.maConn.abort(a)}};this.maConn.addEventListener("message",n);let o=()=>{this.log("underlying stream drained, signal %d streams to continue writing",this.streams.length),this.streams.forEach(i=>{i.onMuxerDrain()})};this.maConn.addEventListener("drain",o);let s=()=>{this.log("underlying stream closed with status %s and %d streams",this.status,this.streams.length),this.onTransportClosed()};this.maConn.addEventListener("close",s)}send(e){let t=this.maConn.send(e);return t===!1&&(this.log("underlying stream saturated, signal %d streams to pause writing",this.streams.length),this.streams.forEach(n=>{n.onMuxerNeedsDrain()})),t}async close(e){this.status==="closed"||this.status==="closing"||(this.status="closing",await De(Promise.all([...this.streams].map(async t=>{await t.close(e)})),e?.signal),this.status="closed")}abort(e){this.status!=="closed"&&(this.status="closing",[...this.streams].forEach(t=>{t.abort(e)}),this.status="closed")}onTransportClosed(e){this.status="closing";try{[...this.streams].forEach(t=>{t.onTransportClosed(e)})}catch(t){this.abort(t)}this.status="closed"}async createStream(e){if(this.status!=="open")throw new Sr;let t=this.onCreateStream({...this.streamOptions,...e});return _f(t)&&(t=await t),this.streams.push(t),this.cleanUpStream(t),t}onRemoteStream(e){if(this.streams.push(e),this.cleanUpStream(e),this.listenerCount("stream")===0){this.earlyStreams.push(e),this.earlyStreams.length>this.maxEarlyStreams&&this.abort(new Af(`Too many early streams were opened - ${this.earlyStreams.length}/${this.maxEarlyStreams}`));return}this.safeDispatchEvent("stream",{detail:e})}cleanUpStream(e){let t=n=>{let o=this.streams.findIndex(s=>s===e);o!==-1&&this.streams.splice(o,1),n.error!=null?n.local?this.metrics?.increment({[`${e.direction}_stream_reset`]:!0}):this.metrics?.increment({[`${e.direction}_stream_abort`]:!0}):this.metrics?.increment({[`${e.direction}_stream_end`]:!0})};e.addEventListener("close",t),this.metrics?.increment({[`${e.direction}_stream`]:!0})}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="stream"&&this.earlyStreams.length>0&&queueMicrotask(()=>{this.earlyStreams.forEach(t=>{this.safeDispatchEvent("stream",{detail:t})}),this.earlyStreams=[]})}};var Lo=class extends To{id;protocol;constructor(e){super(e),this.id=e.id,this.protocol=e.protocol??""}async close(e){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.writeStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await yr(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData),await yr(this,"drain",{...e,rejectionEvents:["close"]}),this.log("write queue drained, closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData)),await this.sendCloseWrite(e),this.writeStatus="closed",this.log("closed writable end gracefully"),this.remoteWriteStatus==="closed"&&this.onTransportClosed())}async closeRead(e){this.readStatus==="closing"||this.readStatus==="closed"||(this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.readStatus="closing",await this.sendCloseRead(e),this.readStatus="closed",this.log("closed readable end gracefully"))}};function me(r){let e=new globalThis.AbortController;function t(){let s=r.filter(i=>i?.aborted===!0).map(i=>i?.reason).pop();e.abort(s);for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var na=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,s=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var XR=1.2,ZR=2,JR=5e3,eL=6e4,tL=5e3,$r=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??tL;this.success=new na(t),this.failure=new na(t),this.next=new na(t),this.failureMultiplier=e.failureMultiplier??ZR,this.timeoutMultiplier=e.timeoutMultiplier??XR,this.minTimeout=e.minTimeout??JR,this.maxTimeout=e.maxTimeout??eL,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=me([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){e.clear();let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var T3=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=He(),this.haveNext=He()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=He(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=He(),await De(this.readNext.promise,t?.signal,t)}};function N9(){return new T3}function rL(r){return r[Symbol.asyncIterator]!=null}async function nL(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*oL(r){let e=new AbortController,t=N9();nL(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*sL(r){for(let e of r)yield*e}function iL(...r){let e=[];for(let t of r)rL(t)||e.push(t);return e.length===r.length?sL(e):oL(r)}var Vn=iL;function yl(r,...e){if(r==null)throw new Error("Empty pipeline");if(_3(r)){let n=r;r=()=>n.source}else if(M9(r)||O9(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&_3(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)_3(t[n])&&(t[n]=cL(t[n]));return aL(...t)}var aL=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},O9=r=>r?.[Symbol.asyncIterator]!=null,M9=r=>r?.[Symbol.iterator]!=null,_3=r=>r==null?!1:r.sink!=null&&r.source!=null,cL=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Bt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(O9(s))o=async function*(){yield*s,n.end()};else if(M9(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Vn(n,o())}return r.source};var lL=4194304,Rf=class extends Error{static name="UnwrappedError";name="UnwrappedError"},bl=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},L3=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},P3=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function uL(r){return typeof r?.closeRead=="function"}function dL(r){return typeof r?.close=="function"}function R3(r){return uL(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:dL(r)?r.status!=="open":!1}function fL(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function Lf(r,e){let t=e?.maxBufferSize??lL,n=new W,o,s=!1;if(!fL(r))throw new C("Argument should be a Stream or a Multiaddr");let i=u=>{if(n.append(u.data),n.byteLength>t){let d=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${d} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=u=>{u.error!=null?o?.reject(u.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(u){if(s===!0)throw new Rf("Stream was unwrapped");if(R3(r)){if(n.byteLength===0&&u?.bytes==null)return null;if(u?.bytes!=null&&n.byteLength<u.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,u.bytes),new Ws(`Unexpected EOF - stream closed after reading ${n.byteLength}/${u.bytes} bytes`)}let d=u?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=d){o.resolve();break}if(await De(o.promise,u?.signal),R3(r)){if(n.byteLength===0&&u?.bytes==null)return null;break}o=Promise.withResolvers()}let f=u?.bytes??n.byteLength;if(n.byteLength<f){if(R3(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,f),new Ws(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(u)}let h=n.sublist(0,f);return n.consume(f),h},async write(u,d){if(s===!0)throw new Rf("Stream was unwrapped");r.send(u)||await yr(r,"drain",{signal:d?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.unshift(n))),r}};return l}function Po(r,e={}){let t=Lf(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Re(e.maxDataLength));let n=e?.lengthDecoder??Pr,o=e?.lengthEncoder??zt;return{async read(i){let a=-1,c=new W;for(;;){let u=await t.read({...i,bytes:1});if(u==null)break;c.append(u);try{a=n(c)}catch(d){if(d instanceof RangeError)continue;throw d}if(a<0)throw new bl("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new P3(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new L3(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new Ws(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Ws(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new W(o(i.byteLength),i),a)},async writeV(i,a){let c=new W(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function ke(r,e){let t=Po(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var hL=1024*1024*4,pL=1024*1024*4,Pf=class{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new W,this.maxBufferSize=e.maxBufferSize??hL,this.maxDataLength=e.maxDataLength??pL,this.lengthDecoder=e.lengthDecoder??Pr,this.encodingLength=e.encodingLength??Re}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new C(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let t;try{t=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(t<0||t>this.maxDataLength)throw new bl("Invalid message length");let n=this.encodingLength(t),o=n+t;if(this.buffer.byteLength>=o){let s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}};var Df=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},oa=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},kf=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},wl=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function Nf(r){return r[Symbol.asyncIterator]!=null}function B9(r,e){if(r.byteLength>e)throw new oa("Message length too long")}var Mf=r=>{let e=Re(r),t=Ke(e);return zt(r,t),Mf.bytes=e,t};Mf.bytes=0;function js(r,e){e=e??{};let t=e.lengthEncoder??Mf,n=e?.maxDataLength??4194304;function*o(s){B9(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return Nf(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}js.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Mf,n=e?.maxDataLength??4194304;return B9(r,n),new W(t(r.byteLength),r)};var Ys;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Ys||(Ys={}));var D3=r=>{let e=Pr(r);return D3.bytes=Re(e),e};D3.bytes=0;function xl(r,e){let t=new W,n=Ys.LENGTH,o=-1,s=e?.lengthDecoder??D3,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===Ys.LENGTH)try{if(o=s(t),o<0)throw new Df("Invalid message length");if(o>a)throw new oa("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=Ys.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new kf("Message length length too long");break}throw l}if(n===Ys.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=Ys.LENGTH}}}return Nf(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wl("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wl("Unexpected end of input")})()}xl.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return xl(n,{...e??{},onLength:s=>{t=s}})};var U9=Symbol.for("sindresorhus/unlimited-timeout#brand");function F9(r,e,...t){if(typeof r!="function")throw new TypeError("Expected callback to be a function");e??=0,e=Number(e);let n=!1,o={[U9]:!0,id:void 0,cleared:!1,ref(){return n=!1,o.id?.ref?.(),o},unref(){return n=!0,o.id?.unref?.(),o}};if(e===Number.POSITIVE_INFINITY||e>Number.MAX_SAFE_INTEGER)return o;(!Number.isFinite(e)||e<0)&&(e=0);let s=performance.now()+e,i=a=>{o.cleared||(a<=2147483647?(o.id=globalThis.setTimeout(()=>{o.cleared||r(...t)},a),n&&o.id?.unref?.()):(o.id=globalThis.setTimeout(()=>{let c=performance.now(),l=Math.max(0,s-c);i(l)},2147483647),n&&o.id?.unref?.()))};return i(e),o}function $9(r){!r||typeof r!="object"||!r[U9]||(r.cleared=!0,r.id!==void 0&&(globalThis.clearTimeout(r.id),r.id=void 0))}var yL=new WeakMap;function bL({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(o.reason);let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(o.reason)},u=()=>{o&&o.removeEventListener("abort",l)},d=new Promise((f,h)=>{i=()=>{u(),f(n)},a=h,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),yL.set(d,()=>{c(s),s=null,i()}),d}}var wL=bL({setTimeout:F9,clearTimeout:$9}),V9=wL;var Yt=class extends jt{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Bf=class extends jt{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};var sa=class{memoryStorage;points;duration;blockDuration;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new k3}consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new vf("Rate limit exceeded",i);return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},k3=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function ia(r,e,t){let n,o,s=!1;function i(){let l={signal:o.signal},u;t?.timeout!=null&&(u=me([o.signal,AbortSignal.timeout(t.timeout)]),l.signal=u),s=!0,Promise.resolve().then(async()=>{await r(l)}).catch(()=>{}).finally(()=>{u!=null&&(u.aborted?u.clear():u.addEventListener("abort",()=>{u.clear()},{once:!0})),s=!1,!o.signal.aborted&&(n=setTimeout(i,e))})}let a=$n(i,t?.debounce??100),c=!1;return{setInterval:l=>{e!==l&&(e=l,n!=null&&(clearTimeout(n),n=setTimeout(i,e)))},setTimeout:l=>{t??={},t.timeout=l},run:()=>{s||(clearTimeout(n),a())},start:()=>{c||(c=!0,o=new AbortController,o.signal,t?.runImmediately===!0?queueMicrotask(()=>{i()}):n=setTimeout(i,e))},stop:()=>{clearTimeout(n),o?.abort(),c=!1}}}var N3=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function ft(r){let{name:e,metrics:t}=r,n;return t!=null?n=new N3({name:e,metrics:t}):n=new Map,n}var Uf=class{filter;constructor(e,t){this.filter=Wt(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function O3(r,e=.001){return new Uf(r,e)}var M3=class extends Tt{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function El(r){let{name:e,metrics:t}=r,n;return t!=null?n=new M3({name:e,metrics:t}):n=new Tt,n}var vl;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.publicKey!=null&&s.publicKey.byteLength>0&&(i.uint32(10),i.bytes(s.publicKey)),s.payloadType!=null&&s.payloadType.byteLength>0&&(i.uint32(18),i.bytes(s.payloadType)),s.payload!=null&&s.payload.byteLength>0&&(i.uint32(26),i.bytes(s.payload)),s.signature!=null&&s.signature.byteLength>0&&(i.uint32(42),i.bytes(s.signature)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={publicKey:de(0),payloadType:de(0),payload:de(0),signature:de(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.publicKey=s.bytes();break}case 2:{c.payloadType=s.bytes();break}case 3:{c.payload=s.bytes();break}case 5:{c.signature=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.publicKey`,value:s.bytes()};break}case 2:{yield{field:`${a}.payloadType`,value:s.bytes()};break}case 3:{yield{field:`${a}.payload`,value:s.bytes()};break}case 5:{yield{field:`${a}.signature`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(vl||(vl={}));var Ff=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var lr=class r{static createFromProtobuf=e=>{let t=vl.decode(e),n=nt(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t,n)=>{if(t==null)throw new Error("Missing private key");let o=e.domain,s=e.codec,i=e.marshal(),a=K9(o,s,i),c=await t.sign(a.subarray(),n);return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t,n)=>{let o=r.createFromProtobuf(e);if(!await o.validate(t,n))throw new Ff("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:o,signature:s}=e;this.publicKey=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=vl.encode({publicKey:ct(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return e==null?!1:Z(this.marshal(),e.marshal())}async validate(e,t){let n=K9(e,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,t)}},K9=(r,e,t)=>{let n=O(r),o=zt(n.byteLength),s=zt(e.length),i=zt(t.length);return new W(o,n,s,e,i,t)};var q9="libp2p-peer-record",H9=Uint8Array.from([3,1]);var Sl;(function(r){let e;(function(i){let a;i.codec=()=>(a==null&&(a=ne((d,f,h={})=>{h.lengthDelimited!==!1&&f.fork(),d.multiaddr!=null&&d.multiaddr.byteLength>0&&(f.uint32(10),f.bytes(d.multiaddr)),h.lengthDelimited!==!1&&f.ldelim()},(d,f,h={})=>{let p={multiaddr:de(0)},y=f==null?d.len:d.pos+f;for(;d.pos<y;){let g=d.uint32();g>>>3===1?p.multiaddr=d.bytes():d.skipType(g&7)}return p},function*(d,f,h,p={}){let y=f==null?d.len:d.pos+f;for(;d.pos<y;){let g=d.uint32();g>>>3===1?yield{field:`${h}.multiaddr`,value:d.bytes()}:d.skipType(g&7)}})),a);function c(d){return te(d,i.codec())}i.encode=c;function l(d,f){return ee(d,i.codec(),f)}i.decode=l;function u(d,f){return re(d,i.codec(),f)}i.stream=u})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=ne((i,a,c={})=>{if(c.lengthDelimited!==!1&&a.fork(),i.peerId!=null&&i.peerId.byteLength>0&&(a.uint32(10),a.bytes(i.peerId)),i.seq!=null&&i.seq!==0n&&(a.uint32(16),a.uint64(i.seq)),i.addresses!=null&&i.addresses.length>0)for(let l of i.addresses)a.uint32(26),r.AddressInfo.codec().encode(l,a);c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={peerId:de(0),seq:0n,addresses:[]},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let d=i.uint32();switch(d>>>3){case 1:{l.peerId=i.bytes();break}case 2:{l.seq=i.uint64();break}case 3:{if(c.limits?.addresses!=null&&l.addresses.length===c.limits.addresses)throw new fe('Decode error - repeated field "addresses" had too many elements');l.addresses.push(r.AddressInfo.codec().decode(i,i.uint32(),{limits:c.limits?.addresses$}));break}default:{i.skipType(d&7);break}}}return l},function*(i,a,c,l={}){let u={addresses:0},d=a==null?i.len:i.pos+a;for(;i.pos<d;){let f=i.uint32();switch(f>>>3){case 1:{yield{field:`${c}.peerId`,value:i.bytes()};break}case 2:{yield{field:`${c}.seq`,value:i.uint64()};break}case 3:{if(l.limits?.addresses!=null&&u.addresses===l.limits.addresses)throw new fe('Streaming decode error - repeated field "addresses" had too many elements');for(let h of r.AddressInfo.codec().stream(i,i.uint32(),`${c}.addresses[]`,{limits:l.limits?.addresses$}))yield{...h,index:u.addresses};u.addresses++;break}default:{i.skipType(f&7);break}}}})),t);function n(i){return te(i,r.codec())}r.encode=n;function o(i,a){return ee(i,r.codec(),a)}r.decode=o;function s(i,a){return re(i,r.codec(),a)}r.stream=s})(Sl||(Sl={}));function z9(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var Ft=class r{static createFromProtobuf=e=>{let t=Sl.decode(e),n=Xe(ve(t.peerId)),o=(t.addresses??[]).map(i=>V(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=q9;static CODEC=H9;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Sl.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!z9(this.multiaddrs,e.multiaddrs))}};function xL(r){return r[Symbol.asyncIterator]!=null}function EL(r){if(xL(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Qs=EL;var ur=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function Do(r,e,t,n){let o=new ur(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){U3(t,"abort",d),U3(r,e,l),U3(r,s,u)}let l=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){c(),a(h);return}c(),i(f)},u=f=>{if(c(),f instanceof Error){a(f);return}a(f.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},d=()=>{c(),a(o)};B3(t,"abort",d),B3(r,e,l),B3(r,s,u)})}function B3(r,e,t){r!=null&&(G9(r)?r.addEventListener(e,t):r.addListener(e,t))}function U3(r,e,t){r!=null&&(G9(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function G9(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var $f=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var Vf=class{deferred;signal;constructor(e){this.signal=e,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ur)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function vL(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Kf=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=vL(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ur),this.cleanup())}async join(e={}){let t=new Vf(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await De(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function F3(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var Al=class extends se{concurrency;maxSize;queue;pending;sort;autoStart;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=e.autoStart??!0,this.sort=e.sort,this.queue=[],this.emitEmpty=F3(this.emitEmpty.bind(this),1),this.emitIdle=F3(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new $f;let n=new Kf(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new ur)}),this.clear()}async onEmpty(e){this.size!==0&&await Do(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Do(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Do(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Bt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new ur("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var qf="lock:worker:request-read",Hf="lock:worker:abort-read-request",zf="lock:worker:release-read",Gf="lock:master:grant-read",Wf="lock:master:error-read",jf="lock:worker:request-write",Yf="lock:worker:abort-write-request",Qf="lock:worker:release-write",Xf="lock:master:grant-write",Zf="lock:master:error-write",Jf="lock:worker:finalize",eh="mortice",W9={singleProcess:!1};var $3=(r,e,t,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let u={type:l.data.type,name:l.data.name,identifier:l.data.identifier};u.type===o&&r.safeDispatchEvent(t,{detail:{name:u.name,identifier:u.identifier,handler:async()=>{e.postMessage({type:c,name:u.name,identifier:u.identifier}),await new Promise(d=>{let f=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===u.identifier&&(e.removeEventListener("message",f),d())};e.addEventListener("message",f)})},onError:d=>{e.postMessage({type:i,name:u.name,identifier:u.identifier,error:{message:d.message,name:d.name,stack:d.stack}})}}}),u.type===s&&r.safeDispatchEvent(n,{detail:{name:u.name,identifier:u.identifier}}),u.type===Jf&&r.safeDispatchEvent("finalizeRequest",{detail:{name:u.name}})};var j9=(r=10)=>Math.random().toString().substring(2,r+2);var th=class{name;channel;constructor(e){this.name=e,this.channel=new BroadcastChannel(eh)}readLock(e){return this.sendRequest(qf,Hf,Gf,Wf,zf,e)}writeLock(e){return this.sendRequest(jf,Yf,Xf,Zf,Qf,e)}finalize(){this.channel.postMessage({type:Jf,name:this.name}),this.channel.close()}async sendRequest(e,t,n,o,s,i){i?.signal?.throwIfAborted();let a=j9();return this.channel.postMessage({type:e,identifier:a,name:this.name}),new Promise((c,l)=>{let u=()=>{this.channel.postMessage({type:t,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",u,{once:!0});let d=f=>{if(f.data?.identifier===a&&(f.data?.type===n&&(this.channel.removeEventListener("message",d),i?.signal?.removeEventListener("abort",u),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),f.data.type===o)){this.channel.removeEventListener("message",d),i?.signal?.removeEventListener("abort",u);let h=new Error;f.data.error!=null&&(h.message=f.data.error.message,h.name=f.data.error.name,h.stack=f.data.error.stack),l(h)}};this.channel.addEventListener("message",d)})}};var Y9=r=>{if(r=Object.assign({},W9,r),!!globalThis.document||r.singleProcess){let t=new BroadcastChannel(eh),n=new se;return t.addEventListener("message",$3(n,t,"requestReadLock","abortReadLockRequest",qf,Hf,Wf,zf,Gf)),t.addEventListener("message",$3(n,t,"requestWriteLock","abortWriteLockRequest",jf,Yf,Zf,Qf,Xf)),n}return new th(r.name)};var Xs=new Map,Cl;function Q9(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function SL(r){if(Cl==null&&(Cl=Y9(r),!Q9(Cl))){let e=Cl;e.addEventListener("requestReadLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Xs.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortReadLockRequest",a)})}),e.addEventListener("requestWriteLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Xs.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortWriteLockRequest",a)})}),e.addEventListener("finalizeRequest",t=>{let n=t.detail.name,o=Xs.get(n);o?.finalize()})}return Cl}async function V3(r,e){let t,n,o=new Promise((i,a)=>{t=i,n=a}),s=()=>{n(new ur)};return e?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{t(()=>{e?.signal?.removeEventListener("abort",s),i()})})},{signal:e?.signal}).catch(i=>{n(i)}),o}var X9=(r,e)=>{let t=Xs.get(r);if(t!=null)return t;let n=SL(e);if(Q9(n))return t=n,Xs.set(r,t),t;let o=new Al({concurrency:1}),s;return t={async readLock(i){if(s!=null)return V3(s,i);s=new Al({concurrency:e.concurrency,autoStart:!1});let a=s,c=V3(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,V3(o,i)},finalize:()=>{Xs.delete(r)},queue:o},Xs.set(r,t),e.autoFinalize===!0&&o.addEventListener("idle",()=>{t.finalize()},{once:!0}),t};var AL={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function K3(r){let e=Object.assign({},AL,r);return X9(e.name,e)}var Kn;(function(r){let e;(function(a){let c;a.codec=()=>(c==null&&(c=ne((f,h,p={})=>{p.lengthDelimited!==!1&&h.fork(),f.key!=null&&f.key!==""&&(h.uint32(10),h.string(f.key)),f.value!=null&&f.value.byteLength>0&&(h.uint32(18),h.bytes(f.value)),p.lengthDelimited!==!1&&h.ldelim()},(f,h,p={})=>{let y={key:"",value:de(0)},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{y.key=f.string();break}case 2:{y.value=f.bytes();break}default:{f.skipType(m&7);break}}}return y},function*(f,h,p,y={}){let g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{yield{field:`${p}.key`,value:f.string()};break}case 2:{yield{field:`${p}.value`,value:f.bytes()};break}default:{f.skipType(m&7);break}}}})),c);function l(f){return te(f,a.codec())}a.encode=l;function u(f,h){return ee(f,a.codec(),h)}a.decode=u;function d(f,h){return re(f,a.codec(),h)}a.stream=d})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(a){let c;a.codec=()=>(c==null&&(c=ne((f,h,p={})=>{p.lengthDelimited!==!1&&h.fork(),f.key!=null&&f.key!==""&&(h.uint32(10),h.string(f.key)),f.value!=null&&(h.uint32(18),Tl.codec().encode(f.value,h)),p.lengthDelimited!==!1&&h.ldelim()},(f,h,p={})=>{let y={key:""},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{y.key=f.string();break}case 2:{y.value=Tl.codec().decode(f,f.uint32(),{limits:p.limits?.value});break}default:{f.skipType(m&7);break}}}return y},function*(f,h,p,y={}){let g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{yield{field:`${p}.key`,value:f.string()};break}case 2:{yield*Tl.codec().stream(f,f.uint32(),`${p}.value`,{limits:y.limits?.value});break}default:{f.skipType(m&7);break}}}})),c);function l(f){return te(f,a.codec())}a.encode=l;function u(f,h){return ee(f,a.codec(),h)}a.decode=u;function d(f,h){return re(f,a.codec(),h)}a.stream=d})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.addresses!=null&&a.addresses.length>0)for(let u of a.addresses)c.uint32(10),Il.codec().encode(u,c);if(a.protocols!=null&&a.protocols.length>0)for(let u of a.protocols)c.uint32(18),c.string(u);if(a.publicKey!=null&&(c.uint32(34),c.bytes(a.publicKey)),a.peerRecordEnvelope!=null&&(c.uint32(42),c.bytes(a.peerRecordEnvelope)),a.metadata!=null&&a.metadata.size>0)for(let[u,d]of a.metadata.entries())c.uint32(50),r.Peer$metadataEntry.codec().encode({key:u,value:d},c);if(a.tags!=null&&a.tags.size>0)for(let[u,d]of a.tags.entries())c.uint32(58),r.Peer$tagsEntry.codec().encode({key:u,value:d},c);a.updated!=null&&(c.uint32(64),c.uint64Number(a.updated)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={addresses:[],protocols:[],metadata:new Map,tags:new Map},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{if(l.limits?.addresses!=null&&u.addresses.length===l.limits.addresses)throw new fe('Decode error - repeated field "addresses" had too many elements');u.addresses.push(Il.codec().decode(a,a.uint32(),{limits:l.limits?.addresses$}));break}case 2:{if(l.limits?.protocols!=null&&u.protocols.length===l.limits.protocols)throw new fe('Decode error - repeated field "protocols" had too many elements');u.protocols.push(a.string());break}case 4:{u.publicKey=a.bytes();break}case 5:{u.peerRecordEnvelope=a.bytes();break}case 6:{if(l.limits?.metadata!=null&&u.metadata.size===l.limits.metadata)throw new Wc('Decode error - map field "metadata" had too many elements');let h=r.Peer$metadataEntry.codec().decode(a,a.uint32(),{limits:{value:l.limits?.metadata$value}});u.metadata.set(h.key,h.value);break}case 7:{if(l.limits?.tags!=null&&u.tags.size===l.limits.tags)throw new Wc('Decode error - map field "tags" had too many elements');let h=r.Peer$tagsEntry.codec().decode(a,a.uint32(),{limits:{value:l.limits?.tags$value}});u.tags.set(h.key,h.value);break}case 8:{u.updated=a.uint64Number();break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d={addresses:0,protocols:0,metadata:0,tags:0},f=c==null?a.len:a.pos+c;for(;a.pos<f;){let h=a.uint32();switch(h>>>3){case 1:{if(u.limits?.addresses!=null&&d.addresses===u.limits.addresses)throw new fe('Streaming decode error - repeated field "addresses" had too many elements');for(let p of Il.codec().stream(a,a.uint32(),`${l}.addresses[]`,{limits:u.limits?.addresses$}))yield{...p,index:d.addresses};d.addresses++;break}case 2:{if(u.limits?.protocols!=null&&d.protocols===u.limits.protocols)throw new fe('Streaming decode error - repeated field "protocols" had too many elements');yield{field:`${l}.protocols[]`,index:d.protocols,value:a.string()},d.protocols++;break}case 4:{yield{field:`${l}.publicKey`,value:a.bytes()};break}case 5:{yield{field:`${l}.peerRecordEnvelope`,value:a.bytes()};break}case 6:{if(u.limits?.metadata!=null&&d.metadata===u.limits.metadata)throw new fe('Decode error - map field "metadata" had too many elements');yield*r.Peer$metadataEntry.codec().stream(a,a.uint32(),`${l}.metadata{}`,{limits:{value:u.limits?.metadata$value}}),d.metadata++;break}case 7:{if(u.limits?.tags!=null&&d.tags===u.limits.tags)throw new fe('Decode error - map field "tags" had too many elements');yield*r.Peer$tagsEntry.codec().stream(a,a.uint32(),`${l}.tags{}`,{limits:{value:u.limits?.tags$value}}),d.tags++;break}case 8:{yield{field:`${l}.updated`,value:a.uint64Number()};break}default:{a.skipType(h&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(Kn||(Kn={}));var Il;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),s.isCertified!=null&&(i.uint32(16),i.bool(s.isCertified)),s.observed!=null&&(i.uint32(24),i.uint64Number(s.observed)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:de(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.multiaddr=s.bytes();break}case 2:{c.isCertified=s.bool();break}case 3:{c.observed=s.uint64Number();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.multiaddr`,value:s.bytes()};break}case 2:{yield{field:`${a}.isCertified`,value:s.bool()};break}case 3:{yield{field:`${a}.observed`,value:s.uint64Number()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Il||(Il={}));var Tl;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.value!=null&&s.value!==0&&(i.uint32(8),i.uint32(s.value)),s.expiry!=null&&(i.uint32(16),i.uint64(s.expiry)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={value:0},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.value=s.uint32();break}case 2:{c.expiry=s.uint64();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.value`,value:s.uint32()};break}case 2:{yield{field:`${a}.expiry`,value:s.uint64()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Tl||(Tl={}));function CL(r,e){if(r.publicKey!=null||e.publicKey==null)return r;let t;r.type==="RSA"&&(t=r.toMultihash());let n=nt(e.publicKey,t);return rn(n)}function Z9(r,e,t){let n=Kn.decode(e);return aa(r,n,t)}function aa(r,e,t){let n=new Map,o=BigInt(Date.now());for(let[s,i]of e.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...e,id:CL(r,e),addresses:e.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-t).map(({multiaddr:s,isCertified:i})=>({multiaddr:V(s),isCertified:i??!1})),metadata:e.metadata,peerRecordEnvelope:e.peerRecordEnvelope??void 0,tags:n}}function J9(r,e){return IL(r.addresses,e.addresses)&&TL(r.protocols,e.protocols)&&_L(r.publicKey,e.publicKey)&&RL(r.peerRecordEnvelope,e.peerRecordEnvelope)&&LL(r.metadata,e.metadata)&&PL(r.tags,e.tags)}function IL(r,e){return tb(r,e,(t,n)=>!(t.isCertified!==n.isCertified||!Z(t.multiaddr,n.multiaddr)))}function TL(r,e){return tb(r,e,(t,n)=>t===n)}function _L(r,e){return eb(r,e)}function RL(r,e){return eb(r,e)}function LL(r,e){return rb(r,e,(t,n)=>Z(t,n))}function PL(r,e){return rb(r,e,(t,n)=>t.value===n.value&&t.expiry===n.expiry)}function eb(r,e){return r==null&&e==null?!0:r!=null&&e!=null?Z(r,e):!1}function tb(r,e,t){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function rb(r,e,t){if(r.size!==e.size)return!1;for(let[n,o]of r.entries()){let s=e.get(n);if(s==null||!t(o,s))return!1}return!0}var qn="/",nb=new TextEncoder().encode(qn),rh=nb[0],Rt=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=O(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==rh)throw new Error("Invalid key")}toString(e="utf8"){return B(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(qn))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=nb),this._buf[0]!==rh){let e=new Uint8Array(this._buf.byteLength+1);e.fill(rh,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===rh;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(qn).slice(1)}type(){return DL(this.baseNamespace())}name(){return kL(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(qn)||(e+=qn),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(qn):new r(e.slice(0,-1).join(qn))}child(e){return this.toString()===qn?e:e.toString()===qn?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...NL(e.map(t=>t.namespaces()))])}};function DL(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function kL(r){let e=r.split(":");return e[e.length-1]}function NL(r){return[].concat(...r)}var q3="/peers/";function _l(r){if(!Qr(r)||r.type==null)throw new C("Invalid PeerId");let e=r.toCID().toString();return new Rt(`${q3}${e}`)}async function ob(r,e,t,n,o){let s=new Map;for(let i of t){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=V(i.multiaddr)),!sn(i.multiaddr))throw new C("Multiaddr was invalid");if(!await e(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getComponents().find(l=>l.code===421)?.value;return r.equals(c)&&(a=a.decapsulate(V(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function oh(r,e,t,n){if(e==null)throw new C("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new C("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new C("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=nh(f,{validate:sb})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=nh(f,{validate:ib,map:ab})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of f)p==null?a.delete(h):a.set(h,p);a=nh([...a.entries()],{validate:sb})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,y]of f)y==null?h.delete(p):h.set(p,y);c=nh([...h.entries()],{validate:ib,map:ab})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let u;o?.id.publicKey!=null?u=ct(o.id.publicKey):e.publicKey!=null?u=ct(e.publicKey):r.publicKey!=null&&(u=ct(r.publicKey));let d={addresses:await ob(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((f,h)=>f.localeCompare(h)),metadata:a,tags:c,publicKey:u,peerRecordEnvelope:l};return d.addresses.forEach(f=>{f.observed=n.existingPeer?.peerPB.addresses?.find(h=>Z(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete d.publicKey,d}function nh(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function sb(r,e){if(typeof r!="string")throw new C("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new C("Metadata value must be a Uint8Array")}function ib(r,e){if(typeof r!="string")throw new C("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new C("Tag value must be an integer");if(e.value<0||e.value>100)throw new C("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new C("Tag ttl must be an integer");if(e.ttl<0)throw new C("Tag ttl must be between greater than 0")}}function ab(r,e){let t;e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl)));let n={value:e.value??0};return t!=null&&(n.expiry=t),n}function cb(r){let e=r.toString().split("/")[2],t=ie.parse(e,pr);return Mt(t)}function H3(r,e,t){let n=cb(r);return Z9(n,e,t)}function OL(r,e){return{prefix:q3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(H3(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(H3(n.key,n.value,e),H3(o.key,o.value,e)))}}var sh=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.locks=El({name:"libp2p_peer_store_locks",metrics:e.metrics}),this.maxAddressAge=t.maxAddressAge??36e5,this.maxPeerAge=t.maxPeerAge??216e5}getLock(e){let t=this.locks.get(e);return t==null&&(t={refs:0,lock:K3({name:e.toString(),singleProcess:!0})},this.locks.set(e,t)),t.refs++,t}maybeRemoveLock(e,t){t.refs--,t.refs===0&&(t.lock.finalize(),this.locks.delete(e))}async getReadLock(e,t){let n=this.getLock(e);try{let o=await n.lock.readLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async getWriteLock(e,t){let n=this.getLock(e);try{let o=await n.lock.writeLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async has(e,t){try{return await this.load(e,t),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(e,t){this.peerId.equals(e)||await this.datastore.delete(_l(e),t)}async load(e,t){let n=_l(e),o=await this.datastore.get(n,t),s=Kn.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Pe;return aa(e,s,this.peerId.equals(e)?1/0:this.maxAddressAge)}async save(e,t,n){let o=await this.#e(e,n),s=await oh(e,t,"patch",{...n,addressFilter:this.addressFilter});return this.#t(e,s,o)}async patch(e,t,n){let o=await this.#e(e,n),s=await oh(e,t,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async merge(e,t,n){let o=await this.#e(e,n),s=await oh(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(OL(e??{},this.maxAddressAge),e)){let o=cb(t);if(o.equals(this.peerId))continue;let s=Kn.decode(n);if(this.#r(o,s)){await this.datastore.delete(t,e);continue}yield aa(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#e(e,t){try{let n=_l(e),o=await this.datastore.get(n,t),s=Kn.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Pe;return{peerPB:s,peer:aa(e,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#t(e,t,n,o){t.updated=Date.now();let s=Kn.encode(t);return await this.datastore.put(_l(e),s,o),{peer:aa(e,t,this.maxAddressAge),previous:n?.peer,updated:n==null||!J9(t,n.peerPB)}}#r(e,t){if(t.updated==null)return!0;if(this.peerId.equals(e))return!1;let n=t.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=t.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var z3=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new sh(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){for await(let n of this.store.all(t))e(n)}async all(e){return Qs(this.store.all(e))}async delete(e,t){let n=await this.store.getReadLock(e,t);try{await this.store.delete(e,t)}finally{n()}}async has(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.has(e,t)}finally{this.log.trace("has release read lock"),n?.()}}async get(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.load(e,t)}finally{n?.()}}async getInfo(e,t){let n=await this.get(e,t);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.save(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async patch(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.patch(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async merge(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.merge(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async consumePeerRecord(e,t,n){let o=Qr(t)?t:Qr(t?.expectedPeer)?t.expectedPeer:void 0,s=Qr(t)||t===void 0?n:t,i=await lr.openAndCertify(e,Ft.DOMAIN,s),a=Mt(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=Ft.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(u){if(u.name!=="NotFoundError")throw u}if(l?.peerRecordEnvelope!=null){let u=lr.createFromProtobuf(l.peerRecordEnvelope),d=Ft.createFromProtobuf(u.payload);if(d.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",d.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:e,addresses:c.multiaddrs.map(u=>({isCertified:!0,multiaddr:u}))},s),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function lb(r,e={}){return new z3(r,e)}var ih=class r extends Error{static name="NotFoundError";name=r.name;static code="ERR_NOT_FOUND";code=r.code;constructor(e="Not Found"){super(e)}};function ML(r){return r[Symbol.asyncIterator]!=null}function BL(r){if(ML(r))return(async()=>{for await(let e of r);})();for(let e of r);}var an=BL;function UL(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var ah=UL;function FL(r){return r[Symbol.asyncIterator]!=null}function $L(r,e){let t=0;if(FL(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=ah(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){i===!0&&(yield o);for(let c of n)a(c,t++)&&(yield c)})()}var Zs=$L;function VL(r){return r[Symbol.asyncIterator]!=null}function KL(r,e){return VL(r)?(async function*(){yield*(await Qs(r)).sort(e)})():(function*(){yield*Qs(r).sort(e)})()}var G3=KL;function qL(r){return r[Symbol.asyncIterator]!=null}function HL(r,e){return qL(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var Rl=HL;var ch=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await an(this.putMany(e,n)),e=[],await an(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=Zs(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zs(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>G3(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Zs(n,()=>o++>=s)}return e.limit!=null&&(n=Rl(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Zs(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zs(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>G3(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Zs(n,()=>s++>=o)}return e.limit!=null&&(n=Rl(n,e.limit)),n}};var lh=class extends ch{data;constructor(){super(),this.data=new Map}put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(e.toString(),t),e}get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(e.toString());if(n==null)throw new ih;return n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(e.toString())}delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(e.toString())}*_all(e,t){t?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new Rt(n),value:o},t?.signal?.throwIfAborted()}*_allKeys(e,t){t?.signal?.throwIfAborted();for(let n of this.data.keys())yield new Rt(n),t?.signal?.throwIfAborted()}};var ub=864e13;var uh=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=ft({name:"libp2p_address_manager_dns_mappings",metrics:e.metrics})}has(e){let t=Y(e),n=t.host;(t.type==="ip4"||t.type==="ip6")&&t.sni!=null&&(n=t.sni);for(let o of this.mappings.values())if(o.domain===n)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let o=Yi(n)===!0;this.mappings.set(n,{domain:e,verified:o,expires:o?ub-Date.now():0,lastVerified:o?ub-Date.now():void 0})})}remove(e){let t=Y(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries())s.domain===t.sni&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr;if(!bt(o))continue;let s=Y(o);for(let[i,a]of this.mappings.entries()){if(s.host!==i)continue;let c=this.maybeAddSNIComponent(o,a.domain);c!=null&&(e.splice(n,1),n--,t.push({multiaddr:c,verified:a.verified,type:"dns-mapping",expires:a.expires,lastVerified:a.lastVerified}))}}return t}maybeAddSNIComponent(e,t){let n=e.getComponents();for(let o=0;o<n.length;o++)if(n[o].code===448&&n[o+1]?.code!==449)return n.splice(o+1,0,{name:"sni",code:449,value:t}),V(n)}confirm(e,t){let n=Y(e),o=n.host;(n.type==="ip4"||n.type==="ip6")&&n.sni!=null&&(o=n.sni);let s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("marking %s to %s DNS mapping as verified",i,a.domain),s=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return s}unconfirm(e,t){let n=Y(e);if(n.type!=="ip4"&&n.type!=="ip6")return!1;let o=n.sni??n.host,s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("removing verification of %s to %s DNS mapping",i,a.domain),s=s||a.verified,a.verified=!1,a.expires=Date.now()+t);return s}};var dh=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=ft({name:"libp2p_address_manager_ip_mappings",metrics:e.metrics})}has(e){let t=Y(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;for(let n of this.mappings.values())for(let o of n)if(o.externalIp===t.host)return!0;return!1}add(e,t,n,o=t,s="tcp"){let i=`${e}-${t}-${s}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:o,externalFamily:Mr(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=Y(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries()){for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===t.host&&a.externalPort===t.port&&a.protocol===t.protocol&&(this.log("removing %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,t.host,t.port,t.protocol),n=n||a.verified,s.splice(i,1),i--)}s.length===0&&this.mappings.delete(o)}return n}getAll(e){let t=[];for(let{multiaddr:n}of e){if(!bt(n))continue;let o=Y(n);if(o.type!=="ip4"&&o.type!=="ip6")continue;let s;if(o.protocol==="tcp"?s=`${o.host}-${o.port}-tcp`:o.protocol==="udp"&&(s=`${o.host}-${o.port}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)t.push({multiaddr:this.maybeOverrideIp(n,a.externalIp,a.externalFamily,a.protocol,a.externalPort),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}maybeOverrideIp(e,t,n,o,s){let i=e.getComponents(),a=i.findIndex(l=>l.code===4||l.code===41),c=i.findIndex(l=>l.name===o);return a>-1&&c>-1?(i[a].value=t,i[a].code=n===4?4:41,i[c].value=`${s}`,V(i)):e}confirm(e,t){if(!bt(e))return!1;let n=Y(e),o=!1;for(let s of this.mappings.values())for(let i of s)i.externalIp===n.host&&(this.log("marking %s to %s IP mapping as verified",i.internalIp,i.externalIp),o=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return o}unconfirm(e,t){if(!bt(e))return!1;let n=Y(e),o=!1;for(let s of this.mappings.values())for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===n.host&&a.externalPort===n.port&&a.protocol===n.protocol&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,n.host,n.port,n.protocol),o=o||a.verified,a.verified=!1,a.expires=Date.now()+t)}return o}};var zL={maxObservedAddresses:10},fh=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ft({name:"libp2p_address_manager_observed_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??zL.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Ze(e)||Jy(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:V(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var GL={maxObservedAddresses:10},hh=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ft({name:"libp2p_address_manager_transport_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??GL.maxObservedAddresses}get(e,t){if(Ze(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),o=this.addresses.get(n);return o==null&&(o={verified:!bt(e),expires:0},this.addresses.set(n,o)),{multiaddr:e,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+t,this.addresses.set(n,o),s}toKey(e){if(!bt(e))return e.toString();let t=Y(e);return`${t.host}-${t.port}-${t.protocol}`}};var db=6e4,fb={maxObservedAddresses:10,addressVerificationTTL:db*10,addressVerificationRetry:db*5},WL=r=>r;function W3(r,e){let t=r.getComponents().findLast(n=>n.code===421)?.value;return t!=null&&Oe(t).equals(e)&&(r=r.decapsulate(V(`/p2p/${e.toString()}`))),r}var ph=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new fh(e,t),this.dnsMappings=new uh(e,t),this.ipMappings=new dh(e,t),this.transportAddresses=new hh(e,t),this.announceFilter=t.announceFilter??WL,this.observedAddressFilter=Wt(1024),this.addressVerificationTTL=t.addressVerificationTTL??fb.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??fb.addressVerificationRetry,this._updatePeerStoreAddresses=$n(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getComponents().findLast(n=>n.code===421)?.value===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses - %e",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>V(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>V(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>V(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=Y(e),n;switch(t.type){case"ip4":{n=`${t.host}:${t.port}`;break}case"ip6":{n=`[${t.host}]:${t.port}`;break}default:return}this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=W3(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=W3(e,this.components.peerId);let n=!0;(t?.type==="transport"||this.transportAddresses.has(e))&&!this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&!this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&!this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="observed"||this.observed.has(e))&&(this.maybeUpgradeToIPMapping(e)?(this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=W3(e,this.components.peerId);let n=!0;this.observed.has(e)&&this.observed.remove(e)&&n&&(n=!1),this.transportAddresses.has(e)&&this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(e)&&this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(e)&&this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n||this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return e.has(o)?!1:(e.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let o=V(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(e)}),e.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];t=t.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),t=t.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(V(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.add(e,t,n,o,s),this.observed.removePrefixed(`/ip${Mr(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.remove(V(`/ip${Mr(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(e){if(this.ipMappings.has(e)||!bt(e))return!1;let t=Y(e);if(t.type!=="ip4"||Yi(t.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>Fn.exactMatch(s)||Gs.exactMatch(s),s=>zs.exactMatch(s),s=>A9.exactMatch(s)];for(let s of o){if(!s(e))continue;let i=n.filter(l=>l.getAddrs().filter(u=>Y(u).type==="ip4"&&s(u)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>!al(l)).pop();if(a==null)continue;let c=Y(a);return c.port==null?!1:(this.observed.remove(e),this.ipMappings.add(c.host,c.port,t.host,t.port,t.protocol),!0)}return!1}};var hb;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(hb||(hb={}));var mh=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},gh=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},ca=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},Ll=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},yh=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},bh=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},wh=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},Pl=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},xh=class extends Error{constructor(e="No transport was configured to listen on this address"){super(e),this.name="UnsupportedListenAddressError"}},Eh=class extends Error{constructor(e="Configured listen addresses could not be listened on"){super(e),this.name="UnsupportedListenAddressesError"}},vh=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},Sh=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},Ah=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},ko=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},Js=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},Ch=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}},Ih=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}};var j3=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=qi())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>vd(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},jL=["metrics","connectionProtector","dns"],YL=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function pb(r={}){let e=new j3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!YL.includes(o)){let i=e.components[o];if(i==null&&!jL.includes(o))throw new mh(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function mb(r){let e={};for(let t of Object.values(r.components))for(let n of QL(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of XL(t))if(e[n]!==!0)throw new gh(`Service "${ZL(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function QL(r){return Array.isArray(r?.[ue])?r[ue]:[]}function XL(r){return Array.isArray(r?.[rr])?r[rr]:[]}function ZL(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}function gb(r={}){return r.denyDialMultiaddr==null&&(r.denyDialMultiaddr=e=>Fn.matches(e)?!0:Ze(e)),r}var JL=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function eP(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=JL(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Dl(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=eP(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var X=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};function Th(r){if(Qr(r))return{peerId:r,multiaddrs:[]};let e=Array.isArray(r)?r:[r],t;if(e.length>0){let n=e[0].getComponents().findLast(o=>o.code===421)?.value;t=n==null?void 0:Oe(n),e.forEach(o=>{if(!sn(o))throw new Yr("Invalid multiaddr");let s=o.getComponents().findLast(i=>i.code===421)?.value;if(s==null){if(t!=null)throw new C("Multiaddrs must all have the same peer id or have no peer id")}else{let i=Oe(s);if(t?.equals(i)!==!0)throw new C("Multiaddrs must all have the same peer id or have no peer id")}})}return e=e.filter(n=>!b9.exactMatch(n)),{peerId:t,multiaddrs:e}}var tP=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function yb(r,e){let t=r?.streams?.map(o=>o.protocol)??[],n=e?.closableProtocols??tP;if(!(t.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(e)}catch(o){r?.abort(o)}}function kl(r){let e=Y(r),t=e.cidr;if(e.type!=="ip4"&&e.type!=="ip6")throw new C(`Multiaddr ${r} was not an IPv4 or IPv6 address`);if(t==null)switch(e.type){case"ip4":{t=32;break}case"ip6":{t=128;break}default:throw new C(`Multiaddr ${r} was not an IPv4 or IPv6 address`)}return new Vs(e.host,t)}function Y3(r){return!dt.exactMatch(r)}function _h(r,e,t){if(r==null||e==null)return;let n=e.filter(s=>s.status==="open").sort((s,i)=>s.direct?-1:i.direct?1:0).find(s=>s.limits==null);if(n==null||n.direct||t==null)return n;if(!t.some(s=>Y3(s)))return n}var Rh=class{connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.allow=(t.allow??[]).map(n=>kl(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections - %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",t,n),t<=n)return;let o=new Tt;for(let c of e){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let u=await this.peerStore.get(l);o.set(l,[...u.tags.values()].reduce((d,f)=>d+f.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags - %e",u)}}}let s=this.sortConnections(e,o),i=Math.max(t-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(u=>{if(bt(c.remoteAddr)){let d=Y(c.remoteAddr);return u.contains(d.host)}return!0})||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await yb(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(e,t){return e.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=t.get(n.remotePeer)??0,i=t.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var bb="last-dial-failure",wb="last-dial-success";var xb=100,Lh=50;function rP(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function Eb(r){return r.sort((e,t)=>L9(e.multiaddr,t.multiaddr)||P9(e.multiaddr,t.multiaddr)||D9(e.multiaddr,t.multiaddr)||rP(e,t)||R9(e.multiaddr,t.multiaddr))}var Ph=class extends AggregateError{static name="DNSQueryFailedError";name="DNSQueryFailedError"},Dh=class extends AggregateError{static name="EmptyDNSAnswerError";name="EmptyDNSAnswerError"};var X3=gi(Sb(),1);function Z3(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var sP=100,la=class{#e=[];#t=0;enqueue(e,t){let{priority:n=0,id:o}=t??{},{size:s}=this,i={priority:n,id:o,run:e};if(s===0){this.#e.length=0,this.#t=0,this.#e.push(i);return}if(this.#e.at(-1).priority>=n){this.#e.push(i);return}this.#r();let a=Z3(this.#e,i,(c,l)=>l.priority-c.priority);this.#e.splice(a,0,i)}setPriority(e,t){let n=this.#e.findIndex((s,i)=>i>=this.#t&&s.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[o]=this.#e.splice(n,1);this.enqueue(o.run,{priority:t,id:e})}remove(e){let t=this.#e.findIndex((n,o)=>o<this.#t?!1:typeof e=="string"?n.id===e:n.run===e);t!==-1&&this.#e.splice(t,1)}dequeue(){if(this.#t===this.#e.length)return;let e=this.#e[this.#t];return this.#t++,this.#t===this.#e.length?(this.#e.length=0,this.#t=0):this.#t>sP&&this.#t>this.#e.length/2&&this.#r(),e?.run}filter(e){let t=[];for(let n=this.#t;n<this.#e.length;n++){let o=this.#e[n];o.priority===e.priority&&t.push(o.run)}return t}get size(){return this.#e.length-this.#t}#r(){this.#t!==0&&(this.#e.splice(0,this.#t),this.#t=0)}};var Ol=class extends X3.default{#e;#t;#r=0;#h;#m=!1;#w=!1;#c;#T=0;#x=0;#l;#u;#a;#i=[];#s=0;#n;#_;#o=0;#g;#d;#k=1n;#y=new Map;#E=new Set;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:la,strict:!1,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#h=e.intervalCap,this.#c=e.interval,this.#a=e.strict,this.#n=new e.queueClass,this.#_=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#d=e.autoStart===!1,this.#V()}#v(e){for(;this.#s<this.#i.length;){let n=this.#i[this.#s];if(n!==void 0&&e-n>=this.#c)this.#s++;else break}(this.#s>100&&this.#s>this.#i.length/2||this.#s===this.#i.length)&&(this.#i=this.#i.slice(this.#s),this.#s=0)}#N(e){this.#a?this.#i.push(e):this.#r++}#O(){this.#a?this.#i.length>this.#s&&this.#i.pop():this.#r>0&&this.#r--}#S(){return this.#i.length-this.#s}get#M(){return this.#t?!0:this.#a?this.#S()<this.#h:this.#r<this.#h}get#B(){return this.#o<this.#g}#U(){this.#o--,this.#o===0&&this.emit("pendingZero"),this.#b(),this.emit("next")}#F(){this.#u=void 0,this.#P(),this.#L()}#$(e){if(this.#a){if(this.#v(e),this.#S()>=this.#h){let n=this.#i[this.#s],o=this.#c-(e-n);return this.#A(o),!0}return!1}if(this.#l===void 0){let t=this.#T-e;if(t<0){if(this.#x>0){let n=e-this.#x;if(n<this.#c)return this.#A(this.#c-n),!0}this.#r=this.#e?this.#o:0}else return this.#A(t),!0}return!1}#A(e){this.#u===void 0&&(this.#u=setTimeout(()=>{this.#F()},e))}#C(){this.#l&&(clearInterval(this.#l),this.#l=void 0)}#R(){this.#u&&(clearTimeout(this.#u),this.#u=void 0)}#b(){if(this.#n.size===0){if(this.#C(),this.emit("empty"),this.#o===0){if(this.#R(),this.#a&&this.#s>0){let t=Date.now();this.#v(t)}this.emit("idle")}return!1}let e=!1;if(!this.#d){let t=Date.now(),n=!this.#$(t);if(this.#M&&this.#B){let o=this.#n.dequeue();this.#t||(this.#N(t),this.#p()),this.emit("active"),o(),n&&this.#L(),e=!0}}return e}#L(){this.#t||this.#l!==void 0||this.#a||(this.#l=setInterval(()=>{this.#P()},this.#c),this.#T=Date.now()+this.#c)}#P(){this.#a||(this.#r===0&&this.#o===0&&this.#l&&this.#C(),this.#r=this.#e?this.#o:0),this.#I(),this.#p()}#I(){for(;this.#b(););}get concurrency(){return this.#g}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#g=e,this.#I()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#n.setPriority(e,t)}async add(e,t={}){return t={timeout:this.timeout,...t,id:t.id??(this.#k++).toString()},new Promise((n,o)=>{let s=Symbol(`task-${t.id}`),i=()=>{},a=async()=>{i(),this.#o++,this.#y.set(s,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let l;try{try{t.signal?.throwIfAborted()}catch(f){throw this.#K(),this.#y.delete(s),f}this.#x=Date.now();let u=e({signal:t.signal});if(t.timeout&&(u=Ut(Promise.resolve(u),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#o} running, ${this.#n.size} waiting)`})),t.signal){let{signal:f}=t;u=Promise.race([u,new Promise((h,p)=>{l=()=>{p(f.reason)},f.addEventListener("abort",l,{once:!0})})])}let d=await u;n(d),this.emit("completed",d)}catch(u){o(u),this.emit("error",u)}finally{l&&t.signal?.removeEventListener("abort",l),this.#y.delete(s),queueMicrotask(()=>{this.#U()})}};this.#n.enqueue(a,t);let c=()=>{if(this.#n instanceof la){this.#n.remove(a);return}this.#n.remove?.(t.id)};if(t.signal){let{signal:l}=t,u=()=>{i(),c(),o(l.reason),this.#b(),this.emit("next")};if(i=()=>{l.removeEventListener("abort",u),this.#E.delete(i)},l.aborted){u();return}l.addEventListener("abort",u,{once:!0}),this.#E.add(i)}this.emit("add"),this.#b()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#d?(this.#d=!1,this.#I(),this):this}pause(){this.#d=!0}clear(){for(let e of this.#E)e();this.#n=new this.#_,this.#C(),this.#D(),this.emit("empty"),this.#o===0&&(this.#R(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#n.size!==0&&await this.#f("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#f("next",()=>this.#n.size<e)}async onIdle(){this.#o===0&&this.#n.size===0||await this.#f("idle")}async onPendingZero(){this.#o!==0&&await this.#f("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#f("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#f("rateLimitCleared")}onError(){return new Promise((e,t)=>{let n=o=>{this.off("error",n),t(o)};this.on("error",n)})}async#f(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#o}get isPaused(){return this.#d}#V(){this.#t||(this.on("add",()=>{this.#n.size>0&&this.#p()}),this.on("next",()=>{this.#p()}))}#p(){this.#t||this.#w||(this.#w=!0,queueMicrotask(()=>{this.#w=!1,this.#D()}))}#K(){this.#t||(this.#O(),this.#p())}#D(){let e=this.#m;if(this.#t||this.#n.size===0){e&&(this.#m=!1,this.emit("rateLimitCleared"));return}let t;if(this.#a){let o=Date.now();this.#v(o),t=this.#S()}else t=this.#r;let n=t>=this.#h;n!==e&&(this.#m=n,this.emit(n?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#m}get isSaturated(){return this.#o===this.#g&&this.#n.size>0||this.isRateLimited&&this.#n.size>0}get runningTasks(){return[...this.#y.values()].map(e=>({...e,timeoutRemaining:e.timeout?Math.max(0,e.startTime+e.timeout-Date.now()):void 0}))}};function Nh(r){let e=[dr.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var J3=60;function Oh(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:dr[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:dr[e.type],TTL:e.TTL??e.ttl??J3,data:e.data instanceof Uint8Array?B(e.data):e.data}))}}var iP=4;function e4(r,e={}){let t=new Ol({concurrency:e.queryConcurrency??iP});return async(n,o={})=>{let s=o?.logger?.forComponent("dns:dns-json-over-https"),i=new URLSearchParams;i.set("name",n),Nh(o.types).forEach(c=>{i.append("type",dr[c])}),o.onProgress?.(new X("dns:query",n)),s?.("GET %s",`${r}?${i}`);let a=await t.add(async()=>{let c=await fetch(`${r}?${i}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(s?.("GET %s %d",c.url,c.status),c.status!==200)throw new Error(`Unexpected HTTP status: ${c.status} - ${c.statusText}`);let l=Oh(await c.json());return o.onProgress?.(new X("dns:response",l)),l},{signal:o.signal});if(a==null)throw new Error("No DNS response received");return a}}function Ab(){return[e4("https://cloudflare-dns.com/dns-query"),e4("https://dns.google/resolve")]}var Tb=gi(Ib(),1);var t4=class{lru;constructor(e){this.lru=(0,Tb.default)(e)}get(e,t){let n=!0,o=[];for(let s of t){let i=this.getAnswers(e,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return Oh({answers:o})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:dr[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(t.TTL??J3)*1e3,value:t}),this.lru.set(n,o)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function _b(r){return new t4(r)}var aP=1e3,cP=()=>Math.random()>.5?-1:1,Mh=class{resolvers;cache;logger;sorter;constructor(e){this.resolvers={},this.cache=_b(e.cacheSize??aP),this.logger=e.logger,this.sorter=e.sorter??cP,Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Ab())}async query(e,t={}){let n=Nh(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new X("dns:cache",o)),o;let s=`${e.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(this.sorter),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,logger:this.logger,types:n});if(l.Answer.length===0)throw new Dh("Query result had no answers");for(let u of l.Answer)this.cache.add(e,u);return l}catch(l){a.push(l),t.onProgress?.(new X("dns:error",l))}}throw new Ph(a,`DNS lookup of ${e} ${n} failed`)}};var dr;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(dr||(dr={}));function Rb(r={}){return new Mh(r)}var r4=class{dns;canResolve(e){return e.getComponents().some(({name:t})=>t==="dnsaddr")}async resolve(e,t){let n=e.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[e];let s=await this.getDNS(t).query(`_dnsaddr.${n}`,{signal:t?.signal,types:[dr.TXT]}),i=e.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(V(l)))}return a}getDNS(e){return e.dns!=null?e.dns:(this.dns==null&&(this.dns=Rb()),this.dns)}},Ml=new r4;async function n4(r,e,t){let n=t.depth??0;if(n>(t.maxRecursiveDepth??32))throw new Ih("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(e))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,t);for(let c of a)s.push(...await n4(c,e,{...t,depth:n+1}))}return o===!1&&s.push(r),s}var ua={maxParallelDials:Lh,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,addressDialTimeout:6e3,resolvers:{dnsaddr:Ml}},Bh=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;addressDialTimeout;shutDownController;connections;log;resolvers;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??ua.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??ua.maxDialQueueLength,this.dialTimeout=t.dialTimeout??ua.dialTimeout,this.addressDialTimeout=t.addressDialTimeout??ua.addressDialTimeout,this.connections=t.connections??new Tt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.resolvers=t.resolvers??ua.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new Bf({concurrency:t.maxParallelDials??ua.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==tr.name&&this.log.error("error in dial queue - %e",n.detail.error)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Th(e);if(n!=null&&t.force!==!0){let i=_h(n,this.connections.get(n),o);if(i!=null)return this.log("already connected to %a",i.remoteAddr),t.onProgress?.(new X("dial-queue:already-connected",i)),i}let s=this.queue.queue.find(i=>{if(n?.equals(i.options.peerId)===!0)return!0;let a=i.options.multiaddrs;if(a==null)return!1;for(let c of o)if(a.has(c.toString()))return!0;return!1});if(s!=null){this.log("joining existing dial target for %p",n);for(let i of o)s.options.multiaddrs.add(i.toString());return t.onProgress?.(new X("dial-queue:already-in-dial-queue")),s.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new lo("Dial queue is full");return this.log("creating dial target for %p",n,o.map(i=>i.toString())),t.onProgress?.(new X("dial-queue:add-to-dial-queue")),this.queue.add(async i=>{i.onProgress?.(new X("dial-queue:start-dial"));let a=me([this.shutDownController.signal,i.signal]);try{return await this.dialPeer(i,a)}finally{a.clear()}},{peerId:n,priority:t.priority??c4,multiaddrs:new Set(o.map(i=>i.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async dialPeer(e,t){let n=e.peerId,o=e.multiaddrs,s=new Set,i=e.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let u=[],d=new Set(e.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...d]);let f=await this.calculateMultiaddrs(n,d,{...e,signal:t});for(let h of f){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}u.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,u.map(h=>h.multiaddr.toString())),e?.onProgress?.(new X("dial-queue:calculated-addresses",u));for(let h of u){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,e.peerId),new lo("Peer had more than maxPeerAddrsToDial");a++;let p=me([t,AbortSignal.timeout(this.addressDialTimeout)]);try{let y=await this.components.transportManager.dial(h.multiaddr,{...e,signal:p});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(y.remotePeer,{multiaddrs:[y.remoteAddr],metadata:{[wb]:O(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}return y}catch(y){if(this.log.error("dial failed to %a - %e",h.multiaddr,y),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[bb]:O(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}if(t.aborted)throw new co(y.message);l.push(y)}finally{p.clear()}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(d=>({multiaddr:V(d),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new lo("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new Pl("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",e);try{let d=await this.components.peerStore.get(e);o.push(...d.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:f})=>f.toString()))}catch(d){if(d.name!=="NotFoundError")throw d}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let d=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:f})=>f.toString())),o.push(...d.multiaddrs.map(f=>({multiaddr:f,isCertified:!1})))}catch(d){d.name==="NoPeerRoutersError"?this.log("no peer routers configured",e):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",e,d)}}}let s=(await Promise.all(o.map(async d=>{let f=await n4(d.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return f.length===1&&f[0].equals(d.multiaddr)?d:f.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let d=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:f.multiaddr.encapsulate(d),isCertified:f.isCertified}:f)}let i=s.filter(d=>{if(this.components.transportManager.dialTransportForMultiaddr(d.multiaddr)==null)return!1;let f=d.multiaddr.getComponents().findLast(h=>h.code===421)?.value;return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let d of i){let f=d.multiaddr.toString(),h=a.get(f);if(h!=null){h.isCertified=h.isCertified||d.isCertified||!1;continue}a.set(f,d)}let c=[...a.values()];if(c.length===0)throw new vh(`The dial request has no valid addresses for peer: ${e?.toString()??"unknown peer"}`);let l=[];for(let d of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(d.multiaddr)||l.push(d);let u=this.addressSorter==null?Eb(l):l.sort(this.addressSorter);if(u.length===0)throw new Pl(`The connection gater denied all addresses in the dial request for peer: ${e?.toString()??"unknown peer"}`);return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:d})=>d.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",u.map(({multiaddr:d})=>d.toString())),u}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(o=>o.toString())),t);return t.runOnLimitedConnection===!1?n.find(o=>!dt.matches(o.multiaddr))!=null:!0}catch{}return!1}};var lP=Object.prototype.toString,uP=r=>lP.call(r)==="[object Error]",dP=new Set(["network error","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function l4(r){if(!(r&&uP(r)&&r.name==="TypeError"&&typeof r.message=="string"))return!1;let{message:t,stack:n}=r;return t==="Load failed"||t.startsWith("Load failed (")&&t.endsWith(")")?n===void 0||"__sentry_captured__"in r:t.startsWith("error sending request for url")||t==="Failed to fetch"||t.startsWith("Failed to fetch (")&&t.endsWith(")")?!0:dP.has(t)}function fP(r){if(typeof r=="number"){if(r<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(r))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(r!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function Uh(r,e,{min:t=0,allowInfinity:n=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${r}\` to be a number${n?" or Infinity":""}.`);if(!n&&!Number.isFinite(e))throw new TypeError(`Expected \`${r}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${r}\` to be \u2265 ${t}.`)}}function u4(r,e){if(e!==void 0&&typeof e!="function")throw new TypeError(`Expected \`${r}\` to be a function.`)}var d4=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}};function hP(r,e){let t=Math.max(1,r+1),n=e.randomize?Math.random()+1:1,o=Math.round(n*e.minTimeout*e.factor**(t-1));return o=Math.min(o,e.maxTimeout),o}function Fh(r,e){return Number.isFinite(e)?e-(performance.now()-r):e}async function pP(r,e){r<=0||await new Promise((t,n)=>{let o=()=>{clearTimeout(s),e.signal?.removeEventListener("abort",o),n(e.signal.reason)},s=setTimeout(()=>{e.signal?.removeEventListener("abort",o),t()},r);e.unref&&s.unref?.(),e.signal?.addEventListener("abort",o,{once:!0})})}async function mP({error:r,attemptNumber:e,retriesConsumed:t,startTime:n,options:o}){let s=r instanceof Error?r:new TypeError(`Non-error was thrown: "${r}". You should only throw errors.`);if(s instanceof d4)throw s.originalError;let i=Number.isFinite(o.retries)?Math.max(0,o.retries-t):o.retries,a=o.maxRetryTime??Number.POSITIVE_INFINITY,c=hP(t,o);if(Fh(n,a)<=0){let m=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t,retryDelay:0});throw await o.onFailedAttempt(m),s}let u=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t,retryDelay:i>0?c:0}),d=await o.shouldConsumeRetry(u),f=d&&i>0?c:0,h=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t,retryDelay:f});if(await o.onFailedAttempt(h),Fh(n,a)<=0||Fh(n,a)<=0||i<=0||s instanceof TypeError&&!l4(s)||!await o.shouldRetry(h))throw s;let y=Fh(n,a);if(y<=0)throw s;if(!d)return o.signal?.throwIfAborted(),!1;let g=Math.min(f,y);return o.signal?.throwIfAborted(),await pP(g,o),o.signal?.throwIfAborted(),!0}async function f4(r,e={}){if(e={...e},fP(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.maxRetryTime??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.shouldConsumeRetry??=()=>!0,u4("onFailedAttempt",e.onFailedAttempt),u4("shouldRetry",e.shouldRetry),u4("shouldConsumeRetry",e.shouldConsumeRetry),Uh("factor",e.factor,{min:0,allowInfinity:!1}),Uh("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),Uh("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0}),Uh("maxRetryTime",e.maxRetryTime,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let t=0,n=0,o=performance.now();for(;!Number.isFinite(e.retries)||n<=e.retries;){t++;try{e.signal?.throwIfAborted();let s=await r(t);return e.signal?.throwIfAborted(),s}catch(s){await mP({error:s,attemptNumber:t,retriesConsumed:n,startTime:o,options:e})&&n++}}throw new Error("Retry attempts exhausted without throwing an error.")}var $h=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new Yt({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);Lb(t)&&(this.queue.has(e)||this.queue.add(async n=>{await f4(async o=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let o={};[...t.tags.keys()].forEach(s=>{s.startsWith(fs)&&(o[s]=void 0)}),await this.peerStore.merge(e,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>Lb(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error("could not open connection to keepalive peer - %e",n)})}))}).catch(e=>{this.log.error("error reconnect to peers after start - %e",e)})}stop(){this.started=!1,this.queue.abort()}};function Lb(r){for(let e of r.tags.keys())if(e.startsWith(fs))return!0;return!1}var c4=50,h4={maxConnections:xb,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Vh=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??h4.maxConnections,this.maxConnections<1)throw new C("Connection Manager maxConnections must be greater than 0");this.connections=new Tt,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>kl(V(n))),this.deny=(t.deny??[]).map(n=>kl(V(n))),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??h4.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new sa({points:t.inboundConnectionThreshold??h4.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Rh({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{allow:t.allow?.map(n=>V(n))}),this.dialQueue=new Bh(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??Lh,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??1e4,addressDialTimeout:t.addressDialTimeout??6e3,resolvers:t.resolvers??{dnsaddr:Ml},connections:this.connections}),this.reconnectQueue=new $h({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await Ir(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await Xr(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push(Promise.all([Dl(n,"close",{signal:AbortSignal.timeout(500)}),n.close({signal:AbortSignal.timeout(500)})]).catch(o=>{n.abort(o)}));this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(e){if(e<1)throw new C("Connection Manager maxConnections must be greater than 0");let t=!1;e<this.maxConnections&&(t=!0),this.maxConnections=e,t&&this.connectionPruner.maybePruneConnections()}onConnect(e){this._onConnect(e).catch(t=>{this.log.error("could not connect - %e",t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(t),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:n}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new Ar("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted(),t?.onProgress?.(new X("connection:open",e));let{peerId:n,multiaddrs:o}=Th(e);if(this.peerId.equals(n))throw new wi("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let c=_h(n,this.getConnections(n),o);if(c!=null)return this.log("had an existing connection to %p as %a",n,c.remoteAddr),t.onProgress?.(new X("dial-queue:already-connected")),t.onProgress?.(new X("connection:opened",c)),c}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??c4});if(s.status!=="open")throw new as("Remote closed connection during opening");let i=this.connections.get(s.remotePeer);i==null&&(i=[],this.connections.set(s.remotePeer,i));let a=!1;for(let c of i)if(c.id===s.id&&(a=!0),t.force!==!0&&c.id!==s.id&&c.remoteAddr.equals(s.remoteAddr))return s.abort(new Yr("Duplicate multiaddr connection")),c;return a||i.push(s),t.onProgress?.(new X("connection:opened",s)),s}finally{this.outboundPendingConnections--}}async openStream(e,t,n={}){return(await this.openConnection(e,n)).newStream(t,n)}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await Promise.all([Dl(o,"close",t),o.close(t)])}catch(s){o.abort(s)}}))}acceptIncomingConnection(e){if(this.deny.some(o=>{if(bt(e.remoteAddr)){let s=Y(e.remoteAddr);return o.contains(s.host)}return!1}))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>{if(bt(e.remoteAddr)){let s=Y(e.remoteAddr);return o.contains(s.host)}return!0}))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(bt(e.remoteAddr)){let o=Y(e.remoteAddr);try{this.inboundConnectionRateLimiter.consume(o.host,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o.host),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>V(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var bP=1e4,wP="1.0.0",xP="ping",EP="ipfs",Pb=32,vP=!0,Kh=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??EP}/${xP}/${wP}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??bP,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??vP,this.timeout=new $r({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[ue]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now(),n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o;try{o=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0});let s=Lf(o);t=Date.now(),await Promise.all([s.write(crypto.getRandomValues(new Uint8Array(Pb)),{signal:n}),s.read({bytes:Pb,signal:n})]),e.rtt=Date.now()-t,await o.close({signal:n})}catch(s){if(o?.abort(s),s.name!=="UnsupportedProtocolError")throw s;e.rtt=(Date.now()-t)/2}finally{this.timeout.cleanUp(n)}}).catch(t=>{this.log.error("error during heartbeat - %e",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};var qh=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:B(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:B(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new ca("No content routers available");let n=this,o=new cr;for await(let s of Vn(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new ca("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new ca("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new Ar;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new Ar;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(e,t)))}};var Hh=globalThis.CustomEvent??Event;async function*Hn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,s=[],i=He(),a=He(),c=!1,l,u=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=He(),await i.promise),u)break;let y={done:!1};s.push(y),p().then(g=>{y.done=!0,y.ok=!0,y.value=g,o.dispatchEvent(new Hh("task-complete"))},g=>{y.done=!0,y.err=g,o.dispatchEvent(new Hh("task-complete"))})}c=!0,o.dispatchEvent(new Hh("task-complete"))}catch(p){l=p,o.dispatchEvent(new Hh("task-complete"))}});function d(){return n?s[0]?.done:!!s.find(p=>p.done)}function*f(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw u=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;d();)for(let p=0;p<s.length;p++)if(s[p].done){let y=s[p];if(s.splice(p,1),p--,y.ok)yield y.value;else throw u=!0,i.resolve(),y.err;i.resolve()}}for(;;){if(d()||(a=He(),await a.promise),l!=null||(n?yield*f():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var zh=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:B(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new Ll("No peer routers available");if(e.toString()===this.peerId.toString())throw new yh("Should not try to find self");let n=this,o=Vn(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error("router failed to find peer - %e",i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),s;throw new Pe}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Ll("No peer routers available");let n=this,o=Wt(1024);for await(let s of Hn((async function*(){let i=Vn(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs - %e",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var Gh=class extends se{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=me([this.shutdownController.signal,e?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=He(),yield(await Dl(this,"walk:peer",{signal:t,rejectionEvents:["walk:error"]})).detail}catch(n){throw n.detail!=null?n.detail:n}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let e=me([this.walkController.signal,this.shutdownController.signal]);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=crypto.getRandomValues(new Uint8Array(32)),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await De(this.needNext.promise,e)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored - %e",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored - %e",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var p4=32,m4=64,Wh=class{log;topologies;handlers;components;middleware;constructor(e){this.components=e,this.log=e.logger.forComponent("libp2p:registrar"),this.middleware=new Map,this.topologies=new Map,e.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let t={};for(let[n,o]of this.topologies)t[n]=o.size;return t}}),this.handlers=ft({name:"libp2p_registrar_protocol_handlers",metrics:e.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new bh(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e)&&n?.force!==!0)throw new wh(`Handler already registered for protocol ${e}`);this.handlers.set(e,{handler:t,options:{maxInboundStreams:p4,maxOutboundStreams:m4,...n}}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]},n)}async unhandle(e,t){(Array.isArray(e)?e:[e]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},t)}async register(e,t){if(t==null)throw new C("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}use(e,t){this.middleware.set(e,t)}unuse(e){this.middleware.delete(e)}getMiddleware(e){return this.middleware.get(e)??[]}async _onDisconnect(e){let t=e.detail,n={signal:AbortSignal.timeout(5e3)};try{let o=await this.components.peerStore.get(t,n);for(let s of o.protocols){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter!=null&&a.filter.has(t)!==!0||(a.filter?.remove(t),await a.onDisconnect?.(t))}))}}catch(o){if(o.name==="NotFoundError")return;this.log.error("could not inform topologies of disconnecting peer %p - %e",t,o)}}async _onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));try{for(let s of o){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter!=null&&a.filter.has(t.id)!==!0||(a.filter?.remove(t.id),await a.onDisconnect?.(t.id))}))}}catch(s){this.log.error("could not inform topologies of updated peer %p - %e",t.id,s)}}async _onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;try{for(let s of t){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),await a.onConnect?.(o,n))}))}}catch(s){this.log.error("could not inform topologies of updated peer after identify %p - %e",o,s)}}};var jh=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=ft({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=ft({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??bc.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new C("Transport must have a valid tag");if(this.transports.has(t))throw new C(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new Ch(`No transport available for address ${String(e)}`);return t?.onProgress?.(new X("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new Ar("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};e.forEach(s=>{t.errors.set(s.toString(),new xh)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(e);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(s)??[];u==null&&(u=[],this.listeners.set(s,u)),u.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let d=u.findIndex(f=>f===l);u.splice(d,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),x3.matches(c)?t.ipv4.attempts++:E3.matches(c)&&t.ipv6.attempts++,n.push(l.listen(c).then(()=>{t.errors.delete(c.toString()),x3.matches(c)&&t.ipv4.success++,E3.matches(c)&&t.ipv6.success++},d=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,d),t.errors.set(c.toString(),d),d}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(t)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===bc.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Eh(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
|
|
12
|
+
${e}[Error list was empty]`,t.trim()}return $y(r,e)}Gt.formatters.e=r=>r==null?"undefined":Ky(r);function W_(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e.useColors=()=>!1,e}function qi(r){return{forComponent(e){return qy(e,r)}}}function qy(r,e){let t=W_(`${r}:trace`);return Gt.enabled(`${r}:trace`)&&Gt.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=Gt(`${r}:trace`,e)),Object.assign(Gt(r,e),{error:Gt(`${r}:error`,e),trace:t,newScope:n=>qy(`${r}:${n}`,e)})}function Vy(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function Ms(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function ef(r){let e=ve(Ee.decode(`z${r}`));return Xe(e)}var Tt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Ms(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return Ms(this.map.values(),e=>e.key)}values(){return Ms(this.map.values(),e=>e.value)}get size(){return this.map.size}};var cr=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return Ms(this.set.entries(),e=>{let t=ef(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ef(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ms(this.set.values(),e=>ef(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};function Vm(){return new cr}var Km={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Hy={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},zy=new globalThis.TextEncoder;function j_(r,e){let t=Km[e],n=Hy[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function Y_(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=Km[e],o=Hy[e],s=r;for(;s.length>0;){let i=zy.encodeInto(s,t);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function qm(r,{size:e=32,utf8Buffer:t}={}){if(!Km[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return Y_(r,e,t);r=zy.encode(r)}return j_(r,e)}var ol={hash:r=>Number(qm(r,{size:32})),hashV:(r,e)=>Q_(ol.hash(r,e))};function Q_(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),O(e,"base16")}var Hm=64,Mr=class{fp;h;seed;constructor(e,t,n,o=2){if(o>Hm)throw new TypeError("Invalid Fingerprint Size");let s=t.hashV(e,n),i=de(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?Z(this.fp,e.fp):!1}};function Bs(r,e){return Math.floor(Math.random()*(e-r))+r}var Us=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof Mr))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof Mr))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof Mr))throw new TypeError("Invalid Fingerprint");let t=Bs(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof Mr))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var X_=500,sl=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??ol,this.seed=e.seed??Bs(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=O(e));let t=new Mr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new Us(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new Us(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let s=[n,o],i=s[Bs(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new Us(this.bucketSize));for(let a=0;a<X_;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new Us(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=O(e));let t=new Mr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let s=(n^t.hash())%this.filterSize;return this.buckets[s]?.has(t)??!1}remove(e){typeof e=="string"&&(e=O(e));let t=new Mr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let s=(n^t.hash())%this.filterSize,i=this.buckets[s]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Z_={1:.5,2:.84,4:.95,8:.98};function J_(r=.001){return r>.002?2:r>1e-5?4:8}function Gy(r,e=.001){let t=J_(e),n=Z_[t],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),Hm);return{filterSize:o,bucketSize:t,fingerprintSize:s}}var tf=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??ol,this.seed=e.seed??Bs(0,Math.pow(2,10)),this.filterSeries=[new sl({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=O(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new sl({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Wt(r,e=.001,t){return new tf({...Gy(r,e),...t??{}})}function zm(r){let e=r.getComponents(),t={},n=0;return e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n]?.name==="ip4"||e[n]?.name==="ip6"||e[n]?.name==="dns"||e[n]?.name==="dns4"||e[n]?.name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n]?.name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null?null:(e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t)}function Y(r){let e=zm(r);if(e==null)throw new C(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e}var rf=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let d=this.readChar();if(d===void 0)return;let f=Number.parseInt(d,e);if(!Number.isNaN(f))return f});if(u===void 0)break;if(s*=e,s+=u,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Wy=45,eR=15,Hi=new rf;function nf(r){if(!(r.length>eR))return Hi.new(r).parseWith(()=>Hi.readIPv4Addr())}function of(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Wy))return Hi.new(r).parseWith(()=>Hi.readIPv6Addr())}function zi(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>Wy)return;let t=Hi.new(r).parseWith(()=>Hi.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function jy(r,e,t){let n=0;for(let o of r)if(!(n<e)){if(n>t)break;if(o!==255)return!1;n++}return!0}function Yy(r,e,t,n){let o=0;for(let s of r)if(!(o<t)){if(o>n)break;if(s!==e[o])return!1;o++}return!0}function Gm(r){switch(r.length){case Fs:return r.join(".");case $s:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function Qy(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let o=t+1;o<r.length;o++)if(r[o]!=0)return-1;break}return e}function Xy(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Fs=4,$s=16,yW=parseInt("0xFFFF",16),tR=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function il(r,e){e.length===$s&&r.length===Fs&&jy(e,0,11)&&(e=e.slice(12)),e.length===Fs&&r.length===$s&&Yy(r,tR,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=r[o]&e[o];return n}function Zy(r,e){if(typeof e=="string"&&(e=zi(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function Wm(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Fs,o=nf(e);if(o==null&&(n=$s,o=of(e),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=jm(s,8*n);return{network:il(o,i),mask:i}}function jm(r,e){if(e!==8*Fs&&e!==8*$s)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let o=0;o<t;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var Vs=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=Wm(e));else{let n=zi(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n.length*8){let s=zi(t);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=jm(o,8*n.length);this.network=il(n,this.mask)}}contains(e){return Zy({network:this.network,mask:this.mask},e)}toString(){let e=Qy(this.mask),t=e!==-1?String(e):Xy(this.mask);return Gm(this.network)+"/"+t}};function Jy(r,e){return new Vs(r).contains(e)}function sf(r){try{let e=Y(r);return e.type==="ip6"?Jy("2000::/3",e.host):!1}catch{return!1}}function e9(r){try{let e=Y(r);switch(e.type){case"ip4":return e.host.startsWith("169.254.");case"ip6":return e.host.toLowerCase().startsWith("fe80");default:return!1}}catch{return!1}}function t9(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function al(r){try{let e=Y(r);switch(e.type){case"ip4":case"ip6":return t9(e.host);default:return!1}}catch{return!1}}function bt(r){return zm(r)!==null}function Br(r){return!!nf(r)}function af(r){return!!of(r)}var s9=gi(o9(),1),cR=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],lR=cR.map(r=>new s9.Netmask(r));function t3(r){for(let e of lR)if(e.contains(r))return!0;return!1}function uR(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function dR(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return t3(o)}function fR(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function hR(r){let e=r.split(":"),t=e[e.length-1];return t3(t)}function pR(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function Yi(r){if(Br(r))return t3(r);if(uR(r))return dR(r);if(fR(r))return hR(r);if(af(r))return pR(r)}function Ze(r){try{let e=Y(r);switch(e.type){case"ip4":case"ip6":return Yi(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function Co(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function Ur(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=Ke(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return Ad(t)}var wt=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},Mn=class extends Error{static name="ValidationError";name="ValidationError"},lf=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},uf=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function n3(r){return e=>B(e,r)}function o3(r){return e=>O(e,r)}function Qi(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function qs(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function i9(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=O(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=qs(n);return et([t,o],t.length+o.length)}function a9(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=mr.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=qs(n);return et([t,o],t.length+o.length)}function s3(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=B(e,"base32"),o=Qi(t);return`${n}:${o}`}var i3=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new wt("Invalid byte value in IP address");e[n]=o}),e},c9=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=Br(t[n]),i;s&&(i=i3(t[n]),t[n]=B(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,B(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new wt("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},l9=function(r){if(r.byteLength!==4)throw new wt("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},u9=function(r){if(r.byteLength!==16)throw new wt("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new wt(`Invalid IPv6 address "${t}"`)}};function d9(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new wt(`Invalid IPv6 address "${r}"`)}}var r3=Object.values(gs).map(r=>r.decoder),mR=(function(){let r=r3[0].or(r3[1]);return r3.slice(2).forEach(e=>r=r.or(e)),r})();function f9(r){return mR.decode(r)}function h9(r){return e=>r.encoder.encode(e)}function gR(r){if(parseInt(r).toString()!==r)throw new Mn("Value must be an integer")}function yR(r){if(r<0)throw new Mn("Value must be a positive integer, or zero")}function bR(r){return e=>{if(e>r)throw new Mn(`Value must be smaller than or equal to ${r}`)}}function wR(...r){return e=>{for(let t of r)t(e)}}var cl=wR(gR,yR,bR(65535));var ut=-1,a3=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new uf(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},Un=new a3,kR=[{code:4,name:"ip4",size:32,valueToBytes:i3,bytesToValue:l9,validate:r=>{if(!Br(r))throw new Mn(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:273,name:"udp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:33,name:"dccp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:41,name:"ip6",size:128,valueToBytes:c9,bytesToValue:u9,stringToValue:d9,validate:r=>{if(!af(r))throw new Mn(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:ut},{code:43,name:"ipcidr",size:8,bytesToValue:n3("base10"),valueToBytes:o3("base10")},{code:53,name:"dns",size:ut},{code:54,name:"dns4",size:ut},{code:55,name:"dns6",size:ut},{code:56,name:"dnsaddr",size:ut},{code:132,name:"sctp",size:16,valueToBytes:qs,bytesToValue:Qi,validate:cl},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:ut,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:ut,bytesToValue:n3("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?o3("base58btc")(r):ae.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:s3,valueToBytes:i9},{code:445,name:"onion3",size:296,bytesToValue:s3,valueToBytes:a9},{code:446,name:"garlic64",size:ut},{code:447,name:"garlic32",size:ut},{code:448,name:"tls"},{code:449,name:"sni",size:ut},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:ut,bytesToValue:h9(Sc),valueToBytes:f9},{code:480,name:"http"},{code:481,name:"http-path",size:ut,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:ut}];kR.forEach(r=>{Un.addProtocol(r)});function p9(r){let e=[],t=0;for(;t<r.length;){let n=Dr(r,t),o=Un.getProtocol(n),s=Re(n),i=NR(o,r,t+s),a=0;i>0&&o.size===ut&&(a=Re(i));let c=s+a+i,l={code:n,name:o.name,bytes:ie(r.subarray(t,t+c))};if(i>0){let u=t+s+a,d=r.subarray(u,u+i);l.value=o.bytesToValue?.(d)??B(d)}e.push(l),t+=c}return e}function m9(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=Un.getProtocol(n.code),s=Re(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??O(n.value),a=i.byteLength,o.size===ut&&(c=Re(a)));let l=new Uint8Array(s+c+a),u=0;Vi(n.code,l,u),u+=s,i!=null&&(o.size===ut&&(Vi(a,l,u),u+=c),l.set(i,u)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return et(t,e)}function g9(r){if(r.charAt(0)!=="/")throw new wt('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=Un.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new wt(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new wt(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new wt("Incomplete multiaddr");return e}function y9(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=Un.getProtocol(e.code);if(t==null)throw new wt(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function NR(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:Dr(e,t)}var OR=Symbol.for("nodejs.util.inspect.custom"),g3=Symbol.for("@multiformats/multiaddr");function MR(r){if(r==null&&(r="/"),an(r))return r.getComponents();if(r instanceof Uint8Array)return p9(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),g9(r);if(Array.isArray(r))return r;throw new wt("Must be a string, Uint8Array, Component[], or another Multiaddr")}var mf=class r{[g3]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=MR(e),t.validate!==!1&&BR(this)}get bytes(){return this.#r==null&&(this.#r=m9(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=y9(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new lf(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return Z(this.bytes,e.bytes)}[OR](){return`Multiaddr(${this.toString()})`}};function BR(r){r.getComponents().forEach(e=>{let t=Un.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function an(r){return!!r?.[g3]}function V(r){return new mf(r)}var Ae=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),j=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),b9=r=>({match:e=>r.match(e)===!1?e:!1}),le=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),_t=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),pe=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function Ce(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var UR=j(421),w9=Ce(UR),yf=j(54),bf=j(55),wf=j(56),b3=j(53),oY=Ce(yf,le(j(421))),sY=Ce(bf,le(j(421))),iY=Ce(wf,le(j(421))),x9=Ce(_t(b3,wf,yf,bf),le(j(421))),E9=pe(j(4),le(j(43))),v9=pe(le(j(42)),j(41),le(j(43))),w3=_t(E9,v9),ea=_t(w3,b3,yf,bf,wf),S9=Ce(_t(w3,pe(_t(b3,wf,yf,bf),le(j(421))))),x3=Ce(E9),E3=Ce(v9),A9=Ce(w3),v3=pe(ea,j(6)),pl=pe(ea,j(273)),zs=Ce(pe(v3,le(j(421)))),aY=Ce(pl),S3=pe(pl,Ae(460),le(j(421))),xf=pe(pl,Ae(461),le(j(421))),FR=_t(S3,xf),cY=Ce(S3),C9=Ce(xf),y3=_t(ea,v3,pl,S3,xf),I9=_t(pe(y3,Ae(477),le(j(421)))),Fn=Ce(I9),T9=_t(pe(y3,Ae(478),le(j(421))),pe(y3,Ae(448),le(j(449)),Ae(477),le(j(421)))),Gs=Ce(T9),_9=pe(pl,Ae(280),le(j(466)),le(j(466)),le(j(421))),ml=Ce(_9),R9=pe(xf,Ae(465),le(j(466)),le(j(466)),le(j(421))),A3=Ce(R9),gf=_t(I9,T9,pe(v3,le(j(421))),pe(FR,le(j(421))),pe(ea,le(j(421))),_9,R9,j(421)),ta=Ce(gf),$R=pe(le(gf),Ae(290),b9(Ae(281)),le(j(421))),dt=Ce($R),VR=_t(pe(gf,Ae(290),Ae(281),le(j(421))),pe(gf,Ae(281),le(j(421))),pe(Ae(281),le(j(421)))),gl=Ce(VR),KR=pe(ea,_t(pe(j(6,"80")),pe(j(6),Ae(480)),Ae(480)),le(j(481)),le(j(421))),lY=Ce(KR),qR=pe(ea,_t(pe(j(6,"443")),pe(j(6,"443"),Ae(480)),pe(j(6),Ae(443)),pe(j(6),Ae(448),Ae(480)),pe(Ae(448),Ae(480)),Ae(448),Ae(443)),le(j(481)),le(j(421))),uY=Ce(qR),HR=_t(pe(j(777),le(j(421)))),dY=Ce(HR),zR=_t(pe(j(400),le(j(421)))),fY=Ce(zR);function L9(r,e){let t=zs.exactMatch(r),n=zs.exactMatch(e);if(t&&!n)return-1;if(!t&&n)return 1;let o=Gs.exactMatch(r),s=Gs.exactMatch(e);if(o&&!s)return-1;if(!o&&s)return 1;let i=Fn.exactMatch(r),a=Fn.exactMatch(e);if(i&&!a)return-1;if(!i&&a)return 1;let c=gl.exactMatch(r),l=gl.exactMatch(e);if(c&&!l)return-1;if(!c&&l)return 1;let u=ml.exactMatch(r),d=ml.exactMatch(e);if(u&&!d)return-1;if(!u&&d)return 1;let f=A3.exactMatch(r),h=A3.exactMatch(e);return f&&!h?-1:!f&&h?1:0}function P9(r,e){let t=al(r),n=al(e);return t&&!n?1:!t&&n?-1:0}function D9(r,e){let t=Ze(r),n=Ze(e);return t&&!n?1:!t&&n?-1:0}function k9(r,e){let t=dt.exactMatch(r),n=dt.exactMatch(e);return t&&!n?1:!t&&n?-1:0}function He(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Ef=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},ra=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Ef(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new Ef(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var C3=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Bt(r={}){return GR(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function GR(r,e){e=e??{};let t=e.onEnd,n=new ra,o,s,i,a=He(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((g,m)=>{s=b=>{s=null,n.push(b);try{g(r(n))}catch(w){m(w)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=He()})}},l=g=>s!=null?s(g):(n.push(g),o),u=g=>(n=new ra,s!=null?s({error:g}):(n.push({error:g}),o)),d=g=>{if(i)return o;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:g})},f=g=>i?o:(i=!0,g!=null?u(g):l({done:!0})),h=()=>(n=new ra,f(),{done:!0}),p=g=>(f(g),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:d,end:f,get readableLength(){return n.size},onEmpty:async g=>{let m=g?.signal;if(m?.throwIfAborted(),n.isEmpty())return;let b,w;m!=null&&(b=new Promise((x,v)=>{w=()=>{v(new C3)},m.addEventListener("abort",w)}));try{await Promise.race([a.promise,b])}finally{w!=null&&m!=null&&m?.removeEventListener("abort",w)}}},t==null)return o;let y=o;return o={[Symbol.asyncIterator](){return this},next(){return y.next()},throw(g){return y.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return y.return(),t!=null&&(t(),t=void 0),{done:!0}},push:d,end(g){return y.end(g),t!=null&&(t(g),t=void 0),o},get readableLength(){return y.readableLength},onEmpty:g=>y.onEmpty(g)},o}var I3=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},N9=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function Ut(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e,a,c,u=new Promise((d,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(i?.aborted){f(N9(i));return}if(i&&(c=()=>{f(N9(i))},i.addEventListener("abort",c,{once:!0})),r.then(d,f),t===Number.POSITIVE_INFINITY)return;let h=new I3;a=s.setTimeout.call(void 0,()=>{if(n){try{d(n())}catch(p){f(p)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?d():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${t} milliseconds`,f(h))},t)}).finally(()=>{u.clear(),c&&i&&i.removeEventListener("abort",c)});return u.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},u}var WR=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function jR(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=WR(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function br(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=jR(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function $n(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var vf=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},Sf=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},Ws=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"},Af=class extends Error{static name="MaxEarlyStreamsError";name="MaxEarlyStreamsError"},Cf=class extends Error{static name="StreamClosedError";name="StreamClosedError"};function YR(r){return r.reason}async function De(r,e,t){if(e==null)return r;let n=t?.translateError??YR;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var If=class{deferred;signal;onProgress;constructor(e){this.signal=e?.signal,this.onProgress=e?.onProgress,this.deferred=He(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new tr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function QR(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Tf=class{id;fn;options;recipients;status;timeline;controller;dispatchingProgress;constructor(e,t){this.id=QR(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.dispatchingProgress=!1,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new tr),this.cleanup())}async join(e){let t=new If(e);return this.recipients.push(t),e?.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await De(this.fn({...this.options??{},signal:this.controller.signal,onProgress:t=>{if(!this.dispatchingProgress){this.dispatchingProgress=!0;try{this.recipients.forEach(n=>{n.onProgress?.(t)})}finally{this.dispatchingProgress=!1}}}}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var jt=class extends se{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=$n(this.emitEmpty.bind(this),1),this.emitIdle=$n(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Sf;let n=new Tf(e,t);this.enqueue(n),this.safeDispatchEvent("add");let o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s});return this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new tr)}),this.clear()}async onEmpty(e){this.size!==0&&await br(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await br(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await br(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Bt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new tr("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var XR=Math.pow(2,20)*4,To=class extends se{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??XR,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new W,this.writeBuffer=new W,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);let t=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,queueMicrotask(()=>{try{this.processSendQueue()}catch(o){this.log.error("processSendQueue threw - %e",o)}})),this.onDrainPromise?.resolve()};this.addEventListener("drain",t);let n=o=>{this.onDrainPromise?.reject(o.error??new Cf)};this.addEventListener("close",n)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),De(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;let e=Bt(),t=s=>{e.push(s.data)};this.addEventListener("message",t);let n=s=>{e.end(s.error)};this.addEventListener("close",n);let o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",t),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new Yr(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(t){this.log("failed to send reset to remote - %e",t)}this.dispatchEvent(new wd(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Yr("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Yr("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Yr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new Yr(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");let e=new bi;this.dispatchEvent(new xd(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new uo))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;if(this.writeStatus!=="writable"&&this.writeStatus!=="closing")return this.log.trace("not processing send queue as stream is %s",this.writeStatus),!1;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0,t=this.writeBuffer.byteLength,n=0;for(;this.writeBuffer.byteLength>0;){let o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}let s=this.writeBuffer.sublist(0,o),i=new W(s);this.writeBuffer.consume(s.byteLength);let a;try{a=this.sendData(s)}catch(c){throw this.writeBuffer.prepend(i),this.abort(c),c}if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,t,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}let e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new bd(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new gc(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new gc(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}};var _o=class extends To{remoteAddr;metricPrefix;metrics;constructor(e){super(e),this.metricPrefix=e.metricPrefix??"",this.metrics=e.metrics,this.remoteAddr=e.remoteAddr,this.addEventListener("close",t=>{this.metrics?.increment({[`${this.metricPrefix}end`]:!0}),t.error!=null?t.local?this.metrics?.increment({[`${this.metricPrefix}abort`]:!0}):this.metrics?.increment({[`${this.metricPrefix}reset`]:!0}):t.local?this.metrics?.increment({[`${this.metricPrefix}_local_close`]:!0}):this.metrics?.increment({[`${this.metricPrefix}_remote_close`]:!0})})}async close(e){this.status==="open"&&(this.status="closing",this.writeStatus="closing",this.remoteWriteStatus="closing",this.remoteReadStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await br(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await br(this,"drain",{...e,rejectionEvents:["close"]})),await this.sendClose(e),this.onTransportClosed())}};function _f(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Ro=class extends se{streams;protocol;status;log;maConn;streamOptions;earlyStreams;maxEarlyStreams;metrics;constructor(e,t){super(),this.maConn=e,this.protocol=t.protocol,this.streams=[],this.earlyStreams=[],this.status="open",this.log=e.log.newScope(t.name),this.streamOptions=t.streamOptions,this.maxEarlyStreams=t.maxEarlyStreams??10,this.metrics=t.metrics;let n=i=>{try{this.onData(i.data)}catch(a){this.abort(a),this.maConn.abort(a)}};this.maConn.addEventListener("message",n);let o=()=>{this.log("underlying stream drained, signal %d streams to continue writing",this.streams.length),this.streams.forEach(i=>{i.onMuxerDrain()})};this.maConn.addEventListener("drain",o);let s=()=>{this.log("underlying stream closed with status %s and %d streams",this.status,this.streams.length),this.onTransportClosed()};this.maConn.addEventListener("close",s)}send(e){let t=this.maConn.send(e);return t===!1&&(this.log("underlying stream saturated, signal %d streams to pause writing",this.streams.length),this.streams.forEach(n=>{n.onMuxerNeedsDrain()})),t}async close(e){this.status==="closed"||this.status==="closing"||(this.status="closing",await De(Promise.all([...this.streams].map(async t=>{await t.close(e)})),e?.signal),this.status="closed")}abort(e){this.status!=="closed"&&(this.status="closing",[...this.streams].forEach(t=>{t.abort(e)}),this.status="closed")}onTransportClosed(e){this.status="closing";try{[...this.streams].forEach(t=>{t.onTransportClosed(e)})}catch(t){this.abort(t)}this.status="closed"}async createStream(e){if(this.status!=="open")throw new Ar;let t=this.onCreateStream({...this.streamOptions,...e});return _f(t)&&(t=await t),this.streams.push(t),this.cleanUpStream(t),t}onRemoteStream(e){if(this.streams.push(e),this.cleanUpStream(e),this.listenerCount("stream")===0){this.earlyStreams.push(e),this.earlyStreams.length>this.maxEarlyStreams&&this.abort(new Af(`Too many early streams were opened - ${this.earlyStreams.length}/${this.maxEarlyStreams}`));return}this.safeDispatchEvent("stream",{detail:e})}cleanUpStream(e){let t=n=>{let o=this.streams.findIndex(s=>s===e);o!==-1&&this.streams.splice(o,1),n.error!=null?n.local?this.metrics?.increment({[`${e.direction}_stream_reset`]:!0}):this.metrics?.increment({[`${e.direction}_stream_abort`]:!0}):this.metrics?.increment({[`${e.direction}_stream_end`]:!0})};e.addEventListener("close",t),this.metrics?.increment({[`${e.direction}_stream`]:!0})}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="stream"&&this.earlyStreams.length>0&&queueMicrotask(()=>{this.earlyStreams.forEach(t=>{this.safeDispatchEvent("stream",{detail:t})}),this.earlyStreams=[]})}};var Lo=class extends To{id;protocol;constructor(e){super(e),this.id=e.id,this.protocol=e.protocol??""}async close(e){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.writeStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await br(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData),await br(this,"drain",{...e,rejectionEvents:["close"]}),this.log("write queue drained, closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData)),await this.sendCloseWrite(e),this.writeStatus="closed",this.log("closed writable end gracefully"),this.remoteWriteStatus==="closed"&&this.onTransportClosed())}async closeRead(e){this.readStatus==="closing"||this.readStatus==="closed"||(this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.readStatus="closing",await this.sendCloseRead(e),this.readStatus="closed",this.log("closed readable end gracefully"))}};function me(r){let e=new globalThis.AbortController;function t(){let s=r.filter(i=>i?.aborted===!0).map(i=>i?.reason).pop();e.abort(s);for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var na=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,s=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var ZR=1.2,JR=2,eL=5e3,tL=6e4,rL=5e3,Vr=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??rL;this.success=new na(t),this.failure=new na(t),this.next=new na(t),this.failureMultiplier=e.failureMultiplier??JR,this.timeoutMultiplier=e.timeoutMultiplier??ZR,this.minTimeout=e.minTimeout??eL,this.maxTimeout=e.maxTimeout??tL,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=me([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){e.clear();let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var T3=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=He(),this.haveNext=He()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=He(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=He(),await De(this.readNext.promise,t?.signal,t)}};function O9(){return new T3}function nL(r){return r[Symbol.asyncIterator]!=null}async function oL(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*sL(r){let e=new AbortController,t=O9();oL(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*iL(r){for(let e of r)yield*e}function aL(...r){let e=[];for(let t of r)nL(t)||e.push(t);return e.length===r.length?iL(e):sL(r)}var Vn=aL;function yl(r,...e){if(r==null)throw new Error("Empty pipeline");if(_3(r)){let n=r;r=()=>n.source}else if(B9(r)||M9(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&_3(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)_3(t[n])&&(t[n]=lL(t[n]));return cL(...t)}var cL=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},M9=r=>r?.[Symbol.asyncIterator]!=null,B9=r=>r?.[Symbol.iterator]!=null,_3=r=>r==null?!1:r.sink!=null&&r.source!=null,lL=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Bt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(M9(s))o=async function*(){yield*s,n.end()};else if(B9(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Vn(n,o())}return r.source};var uL=4194304,Rf=class extends Error{static name="UnwrappedError";name="UnwrappedError"},bl=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},L3=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},P3=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function dL(r){return typeof r?.closeRead=="function"}function fL(r){return typeof r?.close=="function"}function R3(r){return dL(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:fL(r)?r.status!=="open":!1}function hL(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function Lf(r,e){let t=e?.maxBufferSize??uL,n=new W,o,s=!1;if(!hL(r))throw new C("Argument should be a Stream or a Multiaddr");let i=u=>{if(n.append(u.data),n.byteLength>t){let d=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${d} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=u=>{u.error!=null?o?.reject(u.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(u){if(s===!0)throw new Rf("Stream was unwrapped");if(R3(r)){if(n.byteLength===0&&u?.bytes==null)return null;if(u?.bytes!=null&&n.byteLength<u.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,u.bytes),new Ws(`Unexpected EOF - stream closed after reading ${n.byteLength}/${u.bytes} bytes`)}let d=u?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=d){o.resolve();break}if(await De(o.promise,u?.signal),R3(r)){if(n.byteLength===0&&u?.bytes==null)return null;break}o=Promise.withResolvers()}let f=u?.bytes??n.byteLength;if(n.byteLength<f){if(R3(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,f),new Ws(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(u)}let h=n.sublist(0,f);return n.consume(f),h},async write(u,d){if(s===!0)throw new Rf("Stream was unwrapped");r.send(u)||await br(r,"drain",{signal:d?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.unshift(n))),r}};return l}function Po(r,e={}){let t=Lf(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Re(e.maxDataLength));let n=e?.lengthDecoder??Dr,o=e?.lengthEncoder??zt;return{async read(i){let a=-1,c=new W;for(;;){let u=await t.read({...i,bytes:1});if(u==null)break;c.append(u);try{a=n(c)}catch(d){if(d instanceof RangeError)continue;throw d}if(a<0)throw new bl("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new P3(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new L3(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new Ws(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Ws(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new W(o(i.byteLength),i),a)},async writeV(i,a){let c=new W(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function ke(r,e){let t=Po(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var pL=1024*1024*4,mL=1024*1024*4,Pf=class{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new W,this.maxBufferSize=e.maxBufferSize??pL,this.maxDataLength=e.maxDataLength??mL,this.lengthDecoder=e.lengthDecoder??Dr,this.encodingLength=e.encodingLength??Re}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new C(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let t;try{t=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(t<0||t>this.maxDataLength)throw new bl("Invalid message length");let n=this.encodingLength(t),o=n+t;if(this.buffer.byteLength>=o){let s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}};var Df=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},oa=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},kf=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},wl=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function Nf(r){return r[Symbol.asyncIterator]!=null}function U9(r,e){if(r.byteLength>e)throw new oa("Message length too long")}var Mf=r=>{let e=Re(r),t=Ke(e);return zt(r,t),Mf.bytes=e,t};Mf.bytes=0;function js(r,e){e=e??{};let t=e.lengthEncoder??Mf,n=e?.maxDataLength??4194304;function*o(s){U9(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return Nf(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}js.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Mf,n=e?.maxDataLength??4194304;return U9(r,n),new W(t(r.byteLength),r)};var Ys;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Ys||(Ys={}));var D3=r=>{let e=Dr(r);return D3.bytes=Re(e),e};D3.bytes=0;function xl(r,e){let t=new W,n=Ys.LENGTH,o=-1,s=e?.lengthDecoder??D3,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===Ys.LENGTH)try{if(o=s(t),o<0)throw new Df("Invalid message length");if(o>a)throw new oa("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=Ys.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new kf("Message length length too long");break}throw l}if(n===Ys.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=Ys.LENGTH}}}return Nf(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wl("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wl("Unexpected end of input")})()}xl.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return xl(n,{...e??{},onLength:s=>{t=s}})};var F9=Symbol.for("sindresorhus/unlimited-timeout#brand");function $9(r,e,...t){if(typeof r!="function")throw new TypeError("Expected callback to be a function");e??=0,e=Number(e);let n=!1,o={[F9]:!0,id:void 0,cleared:!1,ref(){return n=!1,o.id?.ref?.(),o},unref(){return n=!0,o.id?.unref?.(),o}};if(e===Number.POSITIVE_INFINITY||e>Number.MAX_SAFE_INTEGER)return o;(!Number.isFinite(e)||e<0)&&(e=0);let s=performance.now()+e,i=a=>{o.cleared||(a<=2147483647?(o.id=globalThis.setTimeout(()=>{o.cleared||r(...t)},a),n&&o.id?.unref?.()):(o.id=globalThis.setTimeout(()=>{let c=performance.now(),l=Math.max(0,s-c);i(l)},2147483647),n&&o.id?.unref?.()))};return i(e),o}function V9(r){!r||typeof r!="object"||!r[F9]||(r.cleared=!0,r.id!==void 0&&(globalThis.clearTimeout(r.id),r.id=void 0))}var bL=new WeakMap;function wL({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(o.reason);let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(o.reason)},u=()=>{o&&o.removeEventListener("abort",l)},d=new Promise((f,h)=>{i=()=>{u(),f(n)},a=h,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),bL.set(d,()=>{c(s),s=null,i()}),d}}var xL=wL({setTimeout:$9,clearTimeout:V9}),K9=xL;var Yt=class extends jt{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Bf=class extends jt{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};var sa=class{memoryStorage;points;duration;blockDuration;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new k3}consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new vf("Rate limit exceeded",i);return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},k3=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function ia(r,e,t){let n,o,s=!1;function i(){let l={signal:o.signal},u;t?.timeout!=null&&(u=me([o.signal,AbortSignal.timeout(t.timeout)]),l.signal=u),s=!0,Promise.resolve().then(async()=>{await r(l)}).catch(()=>{}).finally(()=>{u!=null&&(u.aborted?u.clear():u.addEventListener("abort",()=>{u.clear()},{once:!0})),s=!1,!o.signal.aborted&&(n=setTimeout(i,e))})}let a=$n(i,t?.debounce??100),c=!1;return{setInterval:l=>{e!==l&&(e=l,n!=null&&(clearTimeout(n),n=setTimeout(i,e)))},setTimeout:l=>{t??={},t.timeout=l},run:()=>{s||(clearTimeout(n),a())},start:()=>{c||(c=!0,o=new AbortController,o.signal,t?.runImmediately===!0?queueMicrotask(()=>{i()}):n=setTimeout(i,e))},stop:()=>{clearTimeout(n),o?.abort(),c=!1}}}var N3=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function ft(r){let{name:e,metrics:t}=r,n;return t!=null?n=new N3({name:e,metrics:t}):n=new Map,n}var Uf=class{filter;constructor(e,t){this.filter=Wt(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function O3(r,e=.001){return new Uf(r,e)}var M3=class extends Tt{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function El(r){let{name:e,metrics:t}=r,n;return t!=null?n=new M3({name:e,metrics:t}):n=new Tt,n}var vl;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.publicKey!=null&&s.publicKey.byteLength>0&&(i.uint32(10),i.bytes(s.publicKey)),s.payloadType!=null&&s.payloadType.byteLength>0&&(i.uint32(18),i.bytes(s.payloadType)),s.payload!=null&&s.payload.byteLength>0&&(i.uint32(26),i.bytes(s.payload)),s.signature!=null&&s.signature.byteLength>0&&(i.uint32(42),i.bytes(s.signature)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={publicKey:de(0),payloadType:de(0),payload:de(0),signature:de(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.publicKey=s.bytes();break}case 2:{c.payloadType=s.bytes();break}case 3:{c.payload=s.bytes();break}case 5:{c.signature=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.publicKey`,value:s.bytes()};break}case 2:{yield{field:`${a}.payloadType`,value:s.bytes()};break}case 3:{yield{field:`${a}.payload`,value:s.bytes()};break}case 5:{yield{field:`${a}.signature`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(vl||(vl={}));var Ff=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var lr=class r{static createFromProtobuf=e=>{let t=vl.decode(e),n=nt(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t,n)=>{if(t==null)throw new Error("Missing private key");let o=e.domain,s=e.codec,i=e.marshal(),a=q9(o,s,i),c=await t.sign(a.subarray(),n);return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t,n)=>{let o=r.createFromProtobuf(e);if(!await o.validate(t,n))throw new Ff("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:o,signature:s}=e;this.publicKey=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=vl.encode({publicKey:ct(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return e==null?!1:Z(this.marshal(),e.marshal())}async validate(e,t){let n=q9(e,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,t)}},q9=(r,e,t)=>{let n=O(r),o=zt(n.byteLength),s=zt(e.length),i=zt(t.length);return new W(o,n,s,e,i,t)};var H9="libp2p-peer-record",z9=Uint8Array.from([3,1]);var Sl;(function(r){let e;(function(i){let a;i.codec=()=>(a==null&&(a=ne((d,f,h={})=>{h.lengthDelimited!==!1&&f.fork(),d.multiaddr!=null&&d.multiaddr.byteLength>0&&(f.uint32(10),f.bytes(d.multiaddr)),h.lengthDelimited!==!1&&f.ldelim()},(d,f,h={})=>{let p={multiaddr:de(0)},y=f==null?d.len:d.pos+f;for(;d.pos<y;){let g=d.uint32();g>>>3===1?p.multiaddr=d.bytes():d.skipType(g&7)}return p},function*(d,f,h,p={}){let y=f==null?d.len:d.pos+f;for(;d.pos<y;){let g=d.uint32();g>>>3===1?yield{field:`${h}.multiaddr`,value:d.bytes()}:d.skipType(g&7)}})),a);function c(d){return te(d,i.codec())}i.encode=c;function l(d,f){return ee(d,i.codec(),f)}i.decode=l;function u(d,f){return re(d,i.codec(),f)}i.stream=u})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=ne((i,a,c={})=>{if(c.lengthDelimited!==!1&&a.fork(),i.peerId!=null&&i.peerId.byteLength>0&&(a.uint32(10),a.bytes(i.peerId)),i.seq!=null&&i.seq!==0n&&(a.uint32(16),a.uint64(i.seq)),i.addresses!=null&&i.addresses.length>0)for(let l of i.addresses)a.uint32(26),r.AddressInfo.codec().encode(l,a);c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={peerId:de(0),seq:0n,addresses:[]},u=a==null?i.len:i.pos+a;for(;i.pos<u;){let d=i.uint32();switch(d>>>3){case 1:{l.peerId=i.bytes();break}case 2:{l.seq=i.uint64();break}case 3:{if(c.limits?.addresses!=null&&l.addresses.length===c.limits.addresses)throw new fe('Decode error - repeated field "addresses" had too many elements');l.addresses.push(r.AddressInfo.codec().decode(i,i.uint32(),{limits:c.limits?.addresses$}));break}default:{i.skipType(d&7);break}}}return l},function*(i,a,c,l={}){let u={addresses:0},d=a==null?i.len:i.pos+a;for(;i.pos<d;){let f=i.uint32();switch(f>>>3){case 1:{yield{field:`${c}.peerId`,value:i.bytes()};break}case 2:{yield{field:`${c}.seq`,value:i.uint64()};break}case 3:{if(l.limits?.addresses!=null&&u.addresses===l.limits.addresses)throw new fe('Streaming decode error - repeated field "addresses" had too many elements');for(let h of r.AddressInfo.codec().stream(i,i.uint32(),`${c}.addresses[]`,{limits:l.limits?.addresses$}))yield{...h,index:u.addresses};u.addresses++;break}default:{i.skipType(f&7);break}}}})),t);function n(i){return te(i,r.codec())}r.encode=n;function o(i,a){return ee(i,r.codec(),a)}r.decode=o;function s(i,a){return re(i,r.codec(),a)}r.stream=s})(Sl||(Sl={}));function G9(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var Ft=class r{static createFromProtobuf=e=>{let t=Sl.decode(e),n=Xe(ve(t.peerId)),o=(t.addresses??[]).map(i=>V(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=H9;static CODEC=z9;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Sl.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!G9(this.multiaddrs,e.multiaddrs))}};function EL(r){return r[Symbol.asyncIterator]!=null}function vL(r){if(EL(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var Qs=vL;var ur=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function Do(r,e,t,n){let o=new ur(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){U3(t,"abort",d),U3(r,e,l),U3(r,s,u)}let l=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){c(),a(h);return}c(),i(f)},u=f=>{if(c(),f instanceof Error){a(f);return}a(f.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},d=()=>{c(),a(o)};B3(t,"abort",d),B3(r,e,l),B3(r,s,u)})}function B3(r,e,t){r!=null&&(W9(r)?r.addEventListener(e,t):r.addListener(e,t))}function U3(r,e,t){r!=null&&(W9(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function W9(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var $f=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var Vf=class{deferred;signal;constructor(e){this.signal=e,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ur)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function SL(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Kf=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=SL(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ur),this.cleanup())}async join(e={}){let t=new Vf(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await De(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function F3(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var Al=class extends se{concurrency;maxSize;queue;pending;sort;autoStart;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=e.autoStart??!0,this.sort=e.sort,this.queue=[],this.emitEmpty=F3(this.emitEmpty.bind(this),1),this.emitIdle=F3(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new $f;let n=new Kf(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new ur)}),this.clear()}async onEmpty(e){this.size!==0&&await Do(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Do(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Do(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=Bt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new ur("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var qf="lock:worker:request-read",Hf="lock:worker:abort-read-request",zf="lock:worker:release-read",Gf="lock:master:grant-read",Wf="lock:master:error-read",jf="lock:worker:request-write",Yf="lock:worker:abort-write-request",Qf="lock:worker:release-write",Xf="lock:master:grant-write",Zf="lock:master:error-write",Jf="lock:worker:finalize",eh="mortice",j9={singleProcess:!1};var $3=(r,e,t,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let u={type:l.data.type,name:l.data.name,identifier:l.data.identifier};u.type===o&&r.safeDispatchEvent(t,{detail:{name:u.name,identifier:u.identifier,handler:async()=>{e.postMessage({type:c,name:u.name,identifier:u.identifier}),await new Promise(d=>{let f=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===u.identifier&&(e.removeEventListener("message",f),d())};e.addEventListener("message",f)})},onError:d=>{e.postMessage({type:i,name:u.name,identifier:u.identifier,error:{message:d.message,name:d.name,stack:d.stack}})}}}),u.type===s&&r.safeDispatchEvent(n,{detail:{name:u.name,identifier:u.identifier}}),u.type===Jf&&r.safeDispatchEvent("finalizeRequest",{detail:{name:u.name}})};var Y9=(r=10)=>Math.random().toString().substring(2,r+2);var th=class{name;channel;constructor(e){this.name=e,this.channel=new BroadcastChannel(eh)}readLock(e){return this.sendRequest(qf,Hf,Gf,Wf,zf,e)}writeLock(e){return this.sendRequest(jf,Yf,Xf,Zf,Qf,e)}finalize(){this.channel.postMessage({type:Jf,name:this.name}),this.channel.close()}async sendRequest(e,t,n,o,s,i){i?.signal?.throwIfAborted();let a=Y9();return this.channel.postMessage({type:e,identifier:a,name:this.name}),new Promise((c,l)=>{let u=()=>{this.channel.postMessage({type:t,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",u,{once:!0});let d=f=>{if(f.data?.identifier===a&&(f.data?.type===n&&(this.channel.removeEventListener("message",d),i?.signal?.removeEventListener("abort",u),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),f.data.type===o)){this.channel.removeEventListener("message",d),i?.signal?.removeEventListener("abort",u);let h=new Error;f.data.error!=null&&(h.message=f.data.error.message,h.name=f.data.error.name,h.stack=f.data.error.stack),l(h)}};this.channel.addEventListener("message",d)})}};var Q9=r=>{if(r=Object.assign({},j9,r),!!globalThis.document||r.singleProcess){let t=new BroadcastChannel(eh),n=new se;return t.addEventListener("message",$3(n,t,"requestReadLock","abortReadLockRequest",qf,Hf,Wf,zf,Gf)),t.addEventListener("message",$3(n,t,"requestWriteLock","abortWriteLockRequest",jf,Yf,Zf,Qf,Xf)),n}return new th(r.name)};var Xs=new Map,Cl;function X9(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function AL(r){if(Cl==null&&(Cl=Q9(r),!X9(Cl))){let e=Cl;e.addEventListener("requestReadLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Xs.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortReadLockRequest",a)})}),e.addEventListener("requestWriteLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Xs.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortWriteLockRequest",a)})}),e.addEventListener("finalizeRequest",t=>{let n=t.detail.name,o=Xs.get(n);o?.finalize()})}return Cl}async function V3(r,e){let t,n,o=new Promise((i,a)=>{t=i,n=a}),s=()=>{n(new ur)};return e?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{t(()=>{e?.signal?.removeEventListener("abort",s),i()})})},{signal:e?.signal}).catch(i=>{n(i)}),o}var Z9=(r,e)=>{let t=Xs.get(r);if(t!=null)return t;let n=AL(e);if(X9(n))return t=n,Xs.set(r,t),t;let o=new Al({concurrency:1}),s;return t={async readLock(i){if(s!=null)return V3(s,i);s=new Al({concurrency:e.concurrency,autoStart:!1});let a=s,c=V3(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,V3(o,i)},finalize:()=>{Xs.delete(r)},queue:o},Xs.set(r,t),e.autoFinalize===!0&&o.addEventListener("idle",()=>{t.finalize()},{once:!0}),t};var CL={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function K3(r){let e=Object.assign({},CL,r);return Z9(e.name,e)}var Kn;(function(r){let e;(function(a){let c;a.codec=()=>(c==null&&(c=ne((f,h,p={})=>{p.lengthDelimited!==!1&&h.fork(),f.key!=null&&f.key!==""&&(h.uint32(10),h.string(f.key)),f.value!=null&&f.value.byteLength>0&&(h.uint32(18),h.bytes(f.value)),p.lengthDelimited!==!1&&h.ldelim()},(f,h,p={})=>{let y={key:"",value:de(0)},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{y.key=f.string();break}case 2:{y.value=f.bytes();break}default:{f.skipType(m&7);break}}}return y},function*(f,h,p,y={}){let g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{yield{field:`${p}.key`,value:f.string()};break}case 2:{yield{field:`${p}.value`,value:f.bytes()};break}default:{f.skipType(m&7);break}}}})),c);function l(f){return te(f,a.codec())}a.encode=l;function u(f,h){return ee(f,a.codec(),h)}a.decode=u;function d(f,h){return re(f,a.codec(),h)}a.stream=d})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(a){let c;a.codec=()=>(c==null&&(c=ne((f,h,p={})=>{p.lengthDelimited!==!1&&h.fork(),f.key!=null&&f.key!==""&&(h.uint32(10),h.string(f.key)),f.value!=null&&(h.uint32(18),Tl.codec().encode(f.value,h)),p.lengthDelimited!==!1&&h.ldelim()},(f,h,p={})=>{let y={key:""},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{y.key=f.string();break}case 2:{y.value=Tl.codec().decode(f,f.uint32(),{limits:p.limits?.value});break}default:{f.skipType(m&7);break}}}return y},function*(f,h,p,y={}){let g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{yield{field:`${p}.key`,value:f.string()};break}case 2:{yield*Tl.codec().stream(f,f.uint32(),`${p}.value`,{limits:y.limits?.value});break}default:{f.skipType(m&7);break}}}})),c);function l(f){return te(f,a.codec())}a.encode=l;function u(f,h){return ee(f,a.codec(),h)}a.decode=u;function d(f,h){return re(f,a.codec(),h)}a.stream=d})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.addresses!=null&&a.addresses.length>0)for(let u of a.addresses)c.uint32(10),Il.codec().encode(u,c);if(a.protocols!=null&&a.protocols.length>0)for(let u of a.protocols)c.uint32(18),c.string(u);if(a.publicKey!=null&&(c.uint32(34),c.bytes(a.publicKey)),a.peerRecordEnvelope!=null&&(c.uint32(42),c.bytes(a.peerRecordEnvelope)),a.metadata!=null&&a.metadata.size>0)for(let[u,d]of a.metadata.entries())c.uint32(50),r.Peer$metadataEntry.codec().encode({key:u,value:d},c);if(a.tags!=null&&a.tags.size>0)for(let[u,d]of a.tags.entries())c.uint32(58),r.Peer$tagsEntry.codec().encode({key:u,value:d},c);a.updated!=null&&(c.uint32(64),c.uint64Number(a.updated)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={addresses:[],protocols:[],metadata:new Map,tags:new Map},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{if(l.limits?.addresses!=null&&u.addresses.length===l.limits.addresses)throw new fe('Decode error - repeated field "addresses" had too many elements');u.addresses.push(Il.codec().decode(a,a.uint32(),{limits:l.limits?.addresses$}));break}case 2:{if(l.limits?.protocols!=null&&u.protocols.length===l.limits.protocols)throw new fe('Decode error - repeated field "protocols" had too many elements');u.protocols.push(a.string());break}case 4:{u.publicKey=a.bytes();break}case 5:{u.peerRecordEnvelope=a.bytes();break}case 6:{if(l.limits?.metadata!=null&&u.metadata.size===l.limits.metadata)throw new Wc('Decode error - map field "metadata" had too many elements');let h=r.Peer$metadataEntry.codec().decode(a,a.uint32(),{limits:{value:l.limits?.metadata$value}});u.metadata.set(h.key,h.value);break}case 7:{if(l.limits?.tags!=null&&u.tags.size===l.limits.tags)throw new Wc('Decode error - map field "tags" had too many elements');let h=r.Peer$tagsEntry.codec().decode(a,a.uint32(),{limits:{value:l.limits?.tags$value}});u.tags.set(h.key,h.value);break}case 8:{u.updated=a.uint64Number();break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d={addresses:0,protocols:0,metadata:0,tags:0},f=c==null?a.len:a.pos+c;for(;a.pos<f;){let h=a.uint32();switch(h>>>3){case 1:{if(u.limits?.addresses!=null&&d.addresses===u.limits.addresses)throw new fe('Streaming decode error - repeated field "addresses" had too many elements');for(let p of Il.codec().stream(a,a.uint32(),`${l}.addresses[]`,{limits:u.limits?.addresses$}))yield{...p,index:d.addresses};d.addresses++;break}case 2:{if(u.limits?.protocols!=null&&d.protocols===u.limits.protocols)throw new fe('Streaming decode error - repeated field "protocols" had too many elements');yield{field:`${l}.protocols[]`,index:d.protocols,value:a.string()},d.protocols++;break}case 4:{yield{field:`${l}.publicKey`,value:a.bytes()};break}case 5:{yield{field:`${l}.peerRecordEnvelope`,value:a.bytes()};break}case 6:{if(u.limits?.metadata!=null&&d.metadata===u.limits.metadata)throw new fe('Decode error - map field "metadata" had too many elements');yield*r.Peer$metadataEntry.codec().stream(a,a.uint32(),`${l}.metadata{}`,{limits:{value:u.limits?.metadata$value}}),d.metadata++;break}case 7:{if(u.limits?.tags!=null&&d.tags===u.limits.tags)throw new fe('Decode error - map field "tags" had too many elements');yield*r.Peer$tagsEntry.codec().stream(a,a.uint32(),`${l}.tags{}`,{limits:{value:u.limits?.tags$value}}),d.tags++;break}case 8:{yield{field:`${l}.updated`,value:a.uint64Number()};break}default:{a.skipType(h&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(Kn||(Kn={}));var Il;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),s.isCertified!=null&&(i.uint32(16),i.bool(s.isCertified)),s.observed!=null&&(i.uint32(24),i.uint64Number(s.observed)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:de(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.multiaddr=s.bytes();break}case 2:{c.isCertified=s.bool();break}case 3:{c.observed=s.uint64Number();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.multiaddr`,value:s.bytes()};break}case 2:{yield{field:`${a}.isCertified`,value:s.bool()};break}case 3:{yield{field:`${a}.observed`,value:s.uint64Number()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Il||(Il={}));var Tl;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.value!=null&&s.value!==0&&(i.uint32(8),i.uint32(s.value)),s.expiry!=null&&(i.uint32(16),i.uint64(s.expiry)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={value:0},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.value=s.uint32();break}case 2:{c.expiry=s.uint64();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.value`,value:s.uint32()};break}case 2:{yield{field:`${a}.expiry`,value:s.uint64()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Tl||(Tl={}));function IL(r,e){if(r.publicKey!=null||e.publicKey==null)return r;let t;r.type==="RSA"&&(t=r.toMultihash());let n=nt(e.publicKey,t);return nn(n)}function J9(r,e,t){let n=Kn.decode(e);return aa(r,n,t)}function aa(r,e,t){let n=new Map,o=BigInt(Date.now());for(let[s,i]of e.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...e,id:IL(r,e),addresses:e.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-t).map(({multiaddr:s,isCertified:i})=>({multiaddr:V(s),isCertified:i??!1})),metadata:e.metadata,peerRecordEnvelope:e.peerRecordEnvelope??void 0,tags:n}}function eb(r,e){return TL(r.addresses,e.addresses)&&_L(r.protocols,e.protocols)&&RL(r.publicKey,e.publicKey)&&LL(r.peerRecordEnvelope,e.peerRecordEnvelope)&&PL(r.metadata,e.metadata)&&DL(r.tags,e.tags)}function TL(r,e){return rb(r,e,(t,n)=>!(t.isCertified!==n.isCertified||!Z(t.multiaddr,n.multiaddr)))}function _L(r,e){return rb(r,e,(t,n)=>t===n)}function RL(r,e){return tb(r,e)}function LL(r,e){return tb(r,e)}function PL(r,e){return nb(r,e,(t,n)=>Z(t,n))}function DL(r,e){return nb(r,e,(t,n)=>t.value===n.value&&t.expiry===n.expiry)}function tb(r,e){return r==null&&e==null?!0:r!=null&&e!=null?Z(r,e):!1}function rb(r,e,t){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function nb(r,e,t){if(r.size!==e.size)return!1;for(let[n,o]of r.entries()){let s=e.get(n);if(s==null||!t(o,s))return!1}return!0}var qn="/",ob=new TextEncoder().encode(qn),rh=ob[0],Rt=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=O(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==rh)throw new Error("Invalid key")}toString(e="utf8"){return B(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(qn))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=ob),this._buf[0]!==rh){let e=new Uint8Array(this._buf.byteLength+1);e.fill(rh,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===rh;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(qn).slice(1)}type(){return kL(this.baseNamespace())}name(){return NL(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(qn)||(e+=qn),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(qn):new r(e.slice(0,-1).join(qn))}child(e){return this.toString()===qn?e:e.toString()===qn?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...OL(e.map(t=>t.namespaces()))])}};function kL(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function NL(r){let e=r.split(":");return e[e.length-1]}function OL(r){return[].concat(...r)}var q3="/peers/";function _l(r){if(!Xr(r)||r.type==null)throw new C("Invalid PeerId");let e=r.toCID().toString();return new Rt(`${q3}${e}`)}async function sb(r,e,t,n,o){let s=new Map;for(let i of t){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=V(i.multiaddr)),!an(i.multiaddr))throw new C("Multiaddr was invalid");if(!await e(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getComponents().find(l=>l.code===421)?.value;return r.equals(c)&&(a=a.decapsulate(V(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function oh(r,e,t,n){if(e==null)throw new C("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new C("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new C("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=nh(f,{validate:ib})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=nh(f,{validate:ab,map:cb})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of f)p==null?a.delete(h):a.set(h,p);a=nh([...a.entries()],{validate:ib})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,y]of f)y==null?h.delete(p):h.set(p,y);c=nh([...h.entries()],{validate:ab,map:cb})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let u;o?.id.publicKey!=null?u=ct(o.id.publicKey):e.publicKey!=null?u=ct(e.publicKey):r.publicKey!=null&&(u=ct(r.publicKey));let d={addresses:await sb(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((f,h)=>f.localeCompare(h)),metadata:a,tags:c,publicKey:u,peerRecordEnvelope:l};return d.addresses.forEach(f=>{f.observed=n.existingPeer?.peerPB.addresses?.find(h=>Z(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete d.publicKey,d}function nh(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function ib(r,e){if(typeof r!="string")throw new C("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new C("Metadata value must be a Uint8Array")}function ab(r,e){if(typeof r!="string")throw new C("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new C("Tag value must be an integer");if(e.value<0||e.value>100)throw new C("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new C("Tag ttl must be an integer");if(e.ttl<0)throw new C("Tag ttl must be between greater than 0")}}function cb(r,e){let t;e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl)));let n={value:e.value??0};return t!=null&&(n.expiry=t),n}function lb(r){let e=r.toString().split("/")[2],t=ae.parse(e,mr);return Mt(t)}function H3(r,e,t){let n=lb(r);return J9(n,e,t)}function ML(r,e){return{prefix:q3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(H3(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(H3(n.key,n.value,e),H3(o.key,o.value,e)))}}var sh=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.locks=El({name:"libp2p_peer_store_locks",metrics:e.metrics}),this.maxAddressAge=t.maxAddressAge??36e5,this.maxPeerAge=t.maxPeerAge??216e5}getLock(e){let t=this.locks.get(e);return t==null&&(t={refs:0,lock:K3({name:e.toString(),singleProcess:!0})},this.locks.set(e,t)),t.refs++,t}maybeRemoveLock(e,t){t.refs--,t.refs===0&&(t.lock.finalize(),this.locks.delete(e))}async getReadLock(e,t){let n=this.getLock(e);try{let o=await n.lock.readLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async getWriteLock(e,t){let n=this.getLock(e);try{let o=await n.lock.writeLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async has(e,t){try{return await this.load(e,t),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(e,t){this.peerId.equals(e)||await this.datastore.delete(_l(e),t)}async load(e,t){let n=_l(e),o=await this.datastore.get(n,t),s=Kn.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Pe;return aa(e,s,this.peerId.equals(e)?1/0:this.maxAddressAge)}async save(e,t,n){let o=await this.#e(e,n),s=await oh(e,t,"patch",{...n,addressFilter:this.addressFilter});return this.#t(e,s,o)}async patch(e,t,n){let o=await this.#e(e,n),s=await oh(e,t,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async merge(e,t,n){let o=await this.#e(e,n),s=await oh(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(ML(e??{},this.maxAddressAge),e)){let o=lb(t);if(o.equals(this.peerId))continue;let s=Kn.decode(n);if(this.#r(o,s)){await this.datastore.delete(t,e);continue}yield aa(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#e(e,t){try{let n=_l(e),o=await this.datastore.get(n,t),s=Kn.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Pe;return{peerPB:s,peer:aa(e,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#t(e,t,n,o){t.updated=Date.now();let s=Kn.encode(t);return await this.datastore.put(_l(e),s,o),{peer:aa(e,t,this.maxAddressAge),previous:n?.peer,updated:n==null||!eb(t,n.peerPB)}}#r(e,t){if(t.updated==null)return!0;if(this.peerId.equals(e))return!1;let n=t.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=t.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var z3=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new sh(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){for await(let n of this.store.all(t))e(n)}async all(e){return Qs(this.store.all(e))}async delete(e,t){let n=await this.store.getReadLock(e,t);try{await this.store.delete(e,t)}finally{n()}}async has(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.has(e,t)}finally{this.log.trace("has release read lock"),n?.()}}async get(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.load(e,t)}finally{n?.()}}async getInfo(e,t){let n=await this.get(e,t);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.save(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async patch(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.patch(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async merge(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.merge(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async consumePeerRecord(e,t,n){let o=Xr(t)?t:Xr(t?.expectedPeer)?t.expectedPeer:void 0,s=Xr(t)||t===void 0?n:t,i=await lr.openAndCertify(e,Ft.DOMAIN,s),a=Mt(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=Ft.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(u){if(u.name!=="NotFoundError")throw u}if(l?.peerRecordEnvelope!=null){let u=lr.createFromProtobuf(l.peerRecordEnvelope),d=Ft.createFromProtobuf(u.payload);if(d.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",d.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:e,addresses:c.multiaddrs.map(u=>({isCertified:!0,multiaddr:u}))},s),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function ub(r,e={}){return new z3(r,e)}var ih=class r extends Error{static name="NotFoundError";name=r.name;static code="ERR_NOT_FOUND";code=r.code;constructor(e="Not Found"){super(e)}};function BL(r){return r[Symbol.asyncIterator]!=null}function UL(r){if(BL(r))return(async()=>{for await(let e of r);})();for(let e of r);}var cn=UL;function FL(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var ah=FL;function $L(r){return r[Symbol.asyncIterator]!=null}function VL(r,e){let t=0;if($L(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=ah(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){i===!0&&(yield o);for(let c of n)a(c,t++)&&(yield c)})()}var Zs=VL;function KL(r){return r[Symbol.asyncIterator]!=null}function qL(r,e){return KL(r)?(async function*(){yield*(await Qs(r)).sort(e)})():(function*(){yield*Qs(r).sort(e)})()}var G3=qL;function HL(r){return r[Symbol.asyncIterator]!=null}function zL(r,e){return HL(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var Rl=zL;var ch=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await cn(this.putMany(e,n)),e=[],await cn(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=Zs(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zs(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>G3(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Zs(n,()=>o++>=s)}return e.limit!=null&&(n=Rl(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Zs(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zs(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>G3(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Zs(n,()=>s++>=o)}return e.limit!=null&&(n=Rl(n,e.limit)),n}};var lh=class extends ch{data;constructor(){super(),this.data=new Map}put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(e.toString(),t),e}get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(e.toString());if(n==null)throw new ih;return n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(e.toString())}delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(e.toString())}*_all(e,t){t?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new Rt(n),value:o},t?.signal?.throwIfAborted()}*_allKeys(e,t){t?.signal?.throwIfAborted();for(let n of this.data.keys())yield new Rt(n),t?.signal?.throwIfAborted()}};var db=864e13;var uh=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=ft({name:"libp2p_address_manager_dns_mappings",metrics:e.metrics})}has(e){let t=Y(e),n=t.host;(t.type==="ip4"||t.type==="ip6")&&t.sni!=null&&(n=t.sni);for(let o of this.mappings.values())if(o.domain===n)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let o=Yi(n)===!0;this.mappings.set(n,{domain:e,verified:o,expires:o?db-Date.now():0,lastVerified:o?db-Date.now():void 0})})}remove(e){let t=Y(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries())s.domain===t.sni&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr;if(!bt(o))continue;let s=Y(o);for(let[i,a]of this.mappings.entries()){if(s.host!==i)continue;let c=this.maybeAddSNIComponent(o,a.domain);c!=null&&(e.splice(n,1),n--,t.push({multiaddr:c,verified:a.verified,type:"dns-mapping",expires:a.expires,lastVerified:a.lastVerified}))}}return t}maybeAddSNIComponent(e,t){let n=e.getComponents();for(let o=0;o<n.length;o++)if(n[o].code===448&&n[o+1]?.code!==449)return n.splice(o+1,0,{name:"sni",code:449,value:t}),V(n)}confirm(e,t){let n=Y(e),o=n.host;(n.type==="ip4"||n.type==="ip6")&&n.sni!=null&&(o=n.sni);let s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("marking %s to %s DNS mapping as verified",i,a.domain),s=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return s}unconfirm(e,t){let n=Y(e);if(n.type!=="ip4"&&n.type!=="ip6")return!1;let o=n.sni??n.host,s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("removing verification of %s to %s DNS mapping",i,a.domain),s=s||a.verified,a.verified=!1,a.expires=Date.now()+t);return s}};var dh=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=ft({name:"libp2p_address_manager_ip_mappings",metrics:e.metrics})}has(e){let t=Y(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;for(let n of this.mappings.values())for(let o of n)if(o.externalIp===t.host)return!0;return!1}add(e,t,n,o=t,s="tcp"){let i=`${e}-${t}-${s}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:o,externalFamily:Br(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=Y(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries()){for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===t.host&&a.externalPort===t.port&&a.protocol===t.protocol&&(this.log("removing %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,t.host,t.port,t.protocol),n=n||a.verified,s.splice(i,1),i--)}s.length===0&&this.mappings.delete(o)}return n}getAll(e){let t=[];for(let{multiaddr:n}of e){if(!bt(n))continue;let o=Y(n);if(o.type!=="ip4"&&o.type!=="ip6")continue;let s;if(o.protocol==="tcp"?s=`${o.host}-${o.port}-tcp`:o.protocol==="udp"&&(s=`${o.host}-${o.port}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)t.push({multiaddr:this.maybeOverrideIp(n,a.externalIp,a.externalFamily,a.protocol,a.externalPort),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}maybeOverrideIp(e,t,n,o,s){let i=e.getComponents(),a=i.findIndex(l=>l.code===4||l.code===41),c=i.findIndex(l=>l.name===o);return a>-1&&c>-1?(i[a].value=t,i[a].code=n===4?4:41,i[c].value=`${s}`,V(i)):e}confirm(e,t){if(!bt(e))return!1;let n=Y(e),o=!1;for(let s of this.mappings.values())for(let i of s)i.externalIp===n.host&&(this.log("marking %s to %s IP mapping as verified",i.internalIp,i.externalIp),o=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return o}unconfirm(e,t){if(!bt(e))return!1;let n=Y(e),o=!1;for(let s of this.mappings.values())for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===n.host&&a.externalPort===n.port&&a.protocol===n.protocol&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,n.host,n.port,n.protocol),o=o||a.verified,a.verified=!1,a.expires=Date.now()+t)}return o}};var GL={maxObservedAddresses:10},fh=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ft({name:"libp2p_address_manager_observed_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??GL.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Ze(e)||e9(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:V(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var WL={maxObservedAddresses:10},hh=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ft({name:"libp2p_address_manager_transport_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??WL.maxObservedAddresses}get(e,t){if(Ze(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),o=this.addresses.get(n);return o==null&&(o={verified:!bt(e),expires:0},this.addresses.set(n,o)),{multiaddr:e,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+t,this.addresses.set(n,o),s}toKey(e){if(!bt(e))return e.toString();let t=Y(e);return`${t.host}-${t.port}-${t.protocol}`}};var fb=6e4,hb={maxObservedAddresses:10,addressVerificationTTL:fb*10,addressVerificationRetry:fb*5},jL=r=>r;function W3(r,e){let t=r.getComponents().findLast(n=>n.code===421)?.value;return t!=null&&Oe(t).equals(e)&&(r=r.decapsulate(V(`/p2p/${e.toString()}`))),r}var ph=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new fh(e,t),this.dnsMappings=new uh(e,t),this.ipMappings=new dh(e,t),this.transportAddresses=new hh(e,t),this.announceFilter=t.announceFilter??jL,this.observedAddressFilter=Wt(1024),this.addressVerificationTTL=t.addressVerificationTTL??hb.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??hb.addressVerificationRetry,this._updatePeerStoreAddresses=$n(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getComponents().findLast(n=>n.code===421)?.value===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses - %e",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>V(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>V(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>V(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=Y(e),n;switch(t.type){case"ip4":{n=`${t.host}:${t.port}`;break}case"ip6":{n=`[${t.host}]:${t.port}`;break}default:return}this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=W3(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=W3(e,this.components.peerId);let n=!0;(t?.type==="transport"||this.transportAddresses.has(e))&&!this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&!this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&!this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="observed"||this.observed.has(e))&&(this.maybeUpgradeToIPMapping(e)?(this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=W3(e,this.components.peerId);let n=!0;this.observed.has(e)&&this.observed.remove(e)&&n&&(n=!1),this.transportAddresses.has(e)&&this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(e)&&this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(e)&&this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n||this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return e.has(o)?!1:(e.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let o=V(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(e)}),e.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];t=t.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),t=t.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(V(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.add(e,t,n,o,s),this.observed.removePrefixed(`/ip${Br(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.remove(V(`/ip${Br(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(e){if(this.ipMappings.has(e)||!bt(e))return!1;let t=Y(e);if(t.type!=="ip4"||Yi(t.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>Fn.exactMatch(s)||Gs.exactMatch(s),s=>zs.exactMatch(s),s=>C9.exactMatch(s)];for(let s of o){if(!s(e))continue;let i=n.filter(l=>l.getAddrs().filter(u=>Y(u).type==="ip4"&&s(u)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>!al(l)).pop();if(a==null)continue;let c=Y(a);return c.port==null?!1:(this.observed.remove(e),this.ipMappings.add(c.host,c.port,t.host,t.port,t.protocol),!0)}return!1}};var pb;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(pb||(pb={}));var mh=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},gh=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},ca=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},Ll=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},yh=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},bh=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},wh=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},Pl=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},xh=class extends Error{constructor(e="No transport was configured to listen on this address"){super(e),this.name="UnsupportedListenAddressError"}},Eh=class extends Error{constructor(e="Configured listen addresses could not be listened on"){super(e),this.name="UnsupportedListenAddressesError"}},vh=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},Sh=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},Ah=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},ko=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},Js=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},Ch=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}},Ih=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}};var j3=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=qi())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>vd(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},YL=["metrics","connectionProtector","dns"],QL=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function mb(r={}){let e=new j3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!QL.includes(o)){let i=e.components[o];if(i==null&&!YL.includes(o))throw new mh(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function gb(r){let e={};for(let t of Object.values(r.components))for(let n of XL(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of ZL(t))if(e[n]!==!0)throw new gh(`Service "${JL(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function XL(r){return Array.isArray(r?.[ue])?r[ue]:[]}function ZL(r){return Array.isArray(r?.[rr])?r[rr]:[]}function JL(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}function yb(r={}){return r.denyDialMultiaddr==null&&(r.denyDialMultiaddr=e=>Fn.matches(e)?!0:Ze(e)),r}var eP=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function tP(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=eP(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Dl(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=tP(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var X=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};function Th(r){if(Xr(r))return{peerId:r,multiaddrs:[]};let e=Array.isArray(r)?r:[r],t;if(e.length>0){let n=e[0].getComponents().findLast(o=>o.code===421)?.value;t=n==null?void 0:Oe(n),e.forEach(o=>{if(!an(o))throw new Qr("Invalid multiaddr");let s=o.getComponents().findLast(i=>i.code===421)?.value;if(s==null){if(t!=null)throw new C("Multiaddrs must all have the same peer id or have no peer id")}else{let i=Oe(s);if(t?.equals(i)!==!0)throw new C("Multiaddrs must all have the same peer id or have no peer id")}})}return e=e.filter(n=>!w9.exactMatch(n)),{peerId:t,multiaddrs:e}}var rP=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function bb(r,e){let t=r?.streams?.map(o=>o.protocol)??[],n=e?.closableProtocols??rP;if(!(t.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(e)}catch(o){r?.abort(o)}}function kl(r){let e=Y(r),t=e.cidr;if(e.type!=="ip4"&&e.type!=="ip6")throw new C(`Multiaddr ${r} was not an IPv4 or IPv6 address`);if(t==null)switch(e.type){case"ip4":{t=32;break}case"ip6":{t=128;break}default:throw new C(`Multiaddr ${r} was not an IPv4 or IPv6 address`)}return new Vs(e.host,t)}function Y3(r){return!dt.exactMatch(r)}function _h(r,e,t){if(r==null||e==null)return;let n=e.filter(s=>s.status==="open").sort((s,i)=>s.direct?-1:i.direct?1:0).find(s=>s.limits==null);if(n==null||n.direct||t==null)return n;if(!t.some(s=>Y3(s)))return n}var Rh=class{connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.allow=(t.allow??[]).map(n=>kl(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections - %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",t,n),t<=n)return;let o=new Tt;for(let c of e){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let u=await this.peerStore.get(l);o.set(l,[...u.tags.values()].reduce((d,f)=>d+f.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags - %e",u)}}}let s=this.sortConnections(e,o),i=Math.max(t-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(u=>{if(bt(c.remoteAddr)){let d=Y(c.remoteAddr);return u.contains(d.host)}return!0})||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await bb(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(e,t){return e.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=t.get(n.remotePeer)??0,i=t.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var wb="last-dial-failure",xb="last-dial-success";var Eb=100,Lh=50;function nP(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function vb(r){return r.sort((e,t)=>P9(e.multiaddr,t.multiaddr)||D9(e.multiaddr,t.multiaddr)||k9(e.multiaddr,t.multiaddr)||nP(e,t)||L9(e.multiaddr,t.multiaddr))}var Ph=class extends AggregateError{static name="DNSQueryFailedError";name="DNSQueryFailedError"},Dh=class extends AggregateError{static name="EmptyDNSAnswerError";name="EmptyDNSAnswerError"};var X3=gi(Ab(),1);function Z3(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var iP=100,la=class{#e=[];#t=0;enqueue(e,t){let{priority:n=0,id:o}=t??{},{size:s}=this,i={priority:n,id:o,run:e};if(s===0){this.#e.length=0,this.#t=0,this.#e.push(i);return}if(this.#e.at(-1).priority>=n){this.#e.push(i);return}this.#r();let a=Z3(this.#e,i,(c,l)=>l.priority-c.priority);this.#e.splice(a,0,i)}setPriority(e,t){let n=this.#e.findIndex((s,i)=>i>=this.#t&&s.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[o]=this.#e.splice(n,1);this.enqueue(o.run,{priority:t,id:e})}remove(e){let t=this.#e.findIndex((n,o)=>o<this.#t?!1:typeof e=="string"?n.id===e:n.run===e);t!==-1&&this.#e.splice(t,1)}dequeue(){if(this.#t===this.#e.length)return;let e=this.#e[this.#t];return this.#t++,this.#t===this.#e.length?(this.#e.length=0,this.#t=0):this.#t>iP&&this.#t>this.#e.length/2&&this.#r(),e?.run}filter(e){let t=[];for(let n=this.#t;n<this.#e.length;n++){let o=this.#e[n];o.priority===e.priority&&t.push(o.run)}return t}get size(){return this.#e.length-this.#t}#r(){this.#t!==0&&(this.#e.splice(0,this.#t),this.#t=0)}};var Ol=class extends X3.default{#e;#t;#r=0;#h;#m=!1;#w=!1;#c;#T=0;#x=0;#l;#u;#a;#i=[];#s=0;#n;#_;#o=0;#g;#d;#k=1n;#y=new Map;#E=new Set;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:la,strict:!1,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#h=e.intervalCap,this.#c=e.interval,this.#a=e.strict,this.#n=new e.queueClass,this.#_=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#d=e.autoStart===!1,this.#V()}#v(e){for(;this.#s<this.#i.length;){let n=this.#i[this.#s];if(n!==void 0&&e-n>=this.#c)this.#s++;else break}(this.#s>100&&this.#s>this.#i.length/2||this.#s===this.#i.length)&&(this.#i=this.#i.slice(this.#s),this.#s=0)}#N(e){this.#a?this.#i.push(e):this.#r++}#O(){this.#a?this.#i.length>this.#s&&this.#i.pop():this.#r>0&&this.#r--}#S(){return this.#i.length-this.#s}get#M(){return this.#t?!0:this.#a?this.#S()<this.#h:this.#r<this.#h}get#B(){return this.#o<this.#g}#U(){this.#o--,this.#o===0&&this.emit("pendingZero"),this.#b(),this.emit("next")}#F(){this.#u=void 0,this.#P(),this.#L()}#$(e){if(this.#a){if(this.#v(e),this.#S()>=this.#h){let n=this.#i[this.#s],o=this.#c-(e-n);return this.#A(o),!0}return!1}if(this.#l===void 0){let t=this.#T-e;if(t<0){if(this.#x>0){let n=e-this.#x;if(n<this.#c)return this.#A(this.#c-n),!0}this.#r=this.#e?this.#o:0}else return this.#A(t),!0}return!1}#A(e){this.#u===void 0&&(this.#u=setTimeout(()=>{this.#F()},e))}#C(){this.#l&&(clearInterval(this.#l),this.#l=void 0)}#R(){this.#u&&(clearTimeout(this.#u),this.#u=void 0)}#b(){if(this.#n.size===0){if(this.#C(),this.emit("empty"),this.#o===0){if(this.#R(),this.#a&&this.#s>0){let t=Date.now();this.#v(t)}this.emit("idle")}return!1}let e=!1;if(!this.#d){let t=Date.now(),n=!this.#$(t);if(this.#M&&this.#B){let o=this.#n.dequeue();this.#t||(this.#N(t),this.#p()),this.emit("active"),o(),n&&this.#L(),e=!0}}return e}#L(){this.#t||this.#l!==void 0||this.#a||(this.#l=setInterval(()=>{this.#P()},this.#c),this.#T=Date.now()+this.#c)}#P(){this.#a||(this.#r===0&&this.#o===0&&this.#l&&this.#C(),this.#r=this.#e?this.#o:0),this.#I(),this.#p()}#I(){for(;this.#b(););}get concurrency(){return this.#g}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#g=e,this.#I()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#n.setPriority(e,t)}async add(e,t={}){return t={timeout:this.timeout,...t,id:t.id??(this.#k++).toString()},new Promise((n,o)=>{let s=Symbol(`task-${t.id}`),i=()=>{},a=async()=>{i(),this.#o++,this.#y.set(s,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let l;try{try{t.signal?.throwIfAborted()}catch(f){throw this.#K(),this.#y.delete(s),f}this.#x=Date.now();let u=e({signal:t.signal});if(t.timeout&&(u=Ut(Promise.resolve(u),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#o} running, ${this.#n.size} waiting)`})),t.signal){let{signal:f}=t;u=Promise.race([u,new Promise((h,p)=>{l=()=>{p(f.reason)},f.addEventListener("abort",l,{once:!0})})])}let d=await u;n(d),this.emit("completed",d)}catch(u){o(u),this.emit("error",u)}finally{l&&t.signal?.removeEventListener("abort",l),this.#y.delete(s),queueMicrotask(()=>{this.#U()})}};this.#n.enqueue(a,t);let c=()=>{if(this.#n instanceof la){this.#n.remove(a);return}this.#n.remove?.(t.id)};if(t.signal){let{signal:l}=t,u=()=>{i(),c(),o(l.reason),this.#b(),this.emit("next")};if(i=()=>{l.removeEventListener("abort",u),this.#E.delete(i)},l.aborted){u();return}l.addEventListener("abort",u,{once:!0}),this.#E.add(i)}this.emit("add"),this.#b()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#d?(this.#d=!1,this.#I(),this):this}pause(){this.#d=!0}clear(){for(let e of this.#E)e();this.#n=new this.#_,this.#C(),this.#D(),this.emit("empty"),this.#o===0&&(this.#R(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#n.size!==0&&await this.#f("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#f("next",()=>this.#n.size<e)}async onIdle(){this.#o===0&&this.#n.size===0||await this.#f("idle")}async onPendingZero(){this.#o!==0&&await this.#f("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#f("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#f("rateLimitCleared")}onError(){return new Promise((e,t)=>{let n=o=>{this.off("error",n),t(o)};this.on("error",n)})}async#f(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#o}get isPaused(){return this.#d}#V(){this.#t||(this.on("add",()=>{this.#n.size>0&&this.#p()}),this.on("next",()=>{this.#p()}))}#p(){this.#t||this.#w||(this.#w=!0,queueMicrotask(()=>{this.#w=!1,this.#D()}))}#K(){this.#t||(this.#O(),this.#p())}#D(){let e=this.#m;if(this.#t||this.#n.size===0){e&&(this.#m=!1,this.emit("rateLimitCleared"));return}let t;if(this.#a){let o=Date.now();this.#v(o),t=this.#S()}else t=this.#r;let n=t>=this.#h;n!==e&&(this.#m=n,this.emit(n?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#m}get isSaturated(){return this.#o===this.#g&&this.#n.size>0||this.isRateLimited&&this.#n.size>0}get runningTasks(){return[...this.#y.values()].map(e=>({...e,timeoutRemaining:e.timeout?Math.max(0,e.startTime+e.timeout-Date.now()):void 0}))}};function Nh(r){let e=[dr.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var J3=60;function Oh(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:dr[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:dr[e.type],TTL:e.TTL??e.ttl??J3,data:e.data instanceof Uint8Array?B(e.data):e.data}))}}var aP=4;function e4(r,e={}){let t=new Ol({concurrency:e.queryConcurrency??aP});return async(n,o={})=>{let s=o?.logger?.forComponent("dns:dns-json-over-https"),i=new URLSearchParams;i.set("name",n),Nh(o.types).forEach(c=>{i.append("type",dr[c])}),o.onProgress?.(new X("dns:query",n)),s?.("GET %s",`${r}?${i}`);let a=await t.add(async()=>{let c=await fetch(`${r}?${i}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(s?.("GET %s %d",c.url,c.status),c.status!==200)throw new Error(`Unexpected HTTP status: ${c.status} - ${c.statusText}`);let l=Oh(await c.json());return o.onProgress?.(new X("dns:response",l)),l},{signal:o.signal});if(a==null)throw new Error("No DNS response received");return a}}function Cb(){return[e4("https://cloudflare-dns.com/dns-query"),e4("https://dns.google/resolve")]}var _b=gi(Tb(),1);var t4=class{lru;constructor(e){this.lru=(0,_b.default)(e)}get(e,t){let n=!0,o=[];for(let s of t){let i=this.getAnswers(e,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return Oh({answers:o})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:dr[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(t.TTL??J3)*1e3,value:t}),this.lru.set(n,o)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Rb(r){return new t4(r)}var cP=1e3,lP=()=>Math.random()>.5?-1:1,Mh=class{resolvers;cache;logger;sorter;constructor(e){this.resolvers={},this.cache=Rb(e.cacheSize??cP),this.logger=e.logger,this.sorter=e.sorter??lP,Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Cb())}async query(e,t={}){let n=Nh(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new X("dns:cache",o)),o;let s=`${e.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(this.sorter),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,logger:this.logger,types:n});if(l.Answer.length===0)throw new Dh("Query result had no answers");for(let u of l.Answer)this.cache.add(e,u);return l}catch(l){a.push(l),t.onProgress?.(new X("dns:error",l))}}throw new Ph(a,`DNS lookup of ${e} ${n} failed`)}};var dr;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(dr||(dr={}));function Lb(r={}){return new Mh(r)}var r4=class{dns;canResolve(e){return e.getComponents().some(({name:t})=>t==="dnsaddr")}async resolve(e,t){let n=e.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[e];let s=await this.getDNS(t).query(`_dnsaddr.${n}`,{signal:t?.signal,types:[dr.TXT]}),i=e.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(V(l)))}return a}getDNS(e){return e.dns!=null?e.dns:(this.dns==null&&(this.dns=Lb()),this.dns)}},Ml=new r4;async function n4(r,e,t){let n=t.depth??0;if(n>(t.maxRecursiveDepth??32))throw new Ih("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(e))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,t);for(let c of a)s.push(...await n4(c,e,{...t,depth:n+1}))}return o===!1&&s.push(r),s}var ua={maxParallelDials:Lh,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,addressDialTimeout:6e3,resolvers:{dnsaddr:Ml}},Bh=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;addressDialTimeout;shutDownController;connections;log;resolvers;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??ua.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??ua.maxDialQueueLength,this.dialTimeout=t.dialTimeout??ua.dialTimeout,this.addressDialTimeout=t.addressDialTimeout??ua.addressDialTimeout,this.connections=t.connections??new Tt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.resolvers=t.resolvers??ua.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new Bf({concurrency:t.maxParallelDials??ua.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==tr.name&&this.log.error("error in dial queue - %e",n.detail.error)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Th(e);if(n!=null&&t.force!==!0){let i=_h(n,this.connections.get(n),o);if(i!=null)return this.log("already connected to %a",i.remoteAddr),t.onProgress?.(new X("dial-queue:already-connected",i)),i}let s=this.queue.queue.find(i=>{if(n?.equals(i.options.peerId)===!0)return!0;let a=i.options.multiaddrs;if(a==null)return!1;for(let c of o)if(a.has(c.toString()))return!0;return!1});if(s!=null){this.log("joining existing dial target for %p",n);for(let i of o)s.options.multiaddrs.add(i.toString());return t.onProgress?.(new X("dial-queue:already-in-dial-queue")),s.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new lo("Dial queue is full");return this.log("creating dial target for %p",n,o.map(i=>i.toString())),t.onProgress?.(new X("dial-queue:add-to-dial-queue")),this.queue.add(async i=>{i.onProgress?.(new X("dial-queue:start-dial"));let a=me([this.shutDownController.signal,i.signal]);try{return await this.dialPeer(i,a)}finally{a.clear()}},{peerId:n,priority:t.priority??c4,multiaddrs:new Set(o.map(i=>i.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async dialPeer(e,t){let n=e.peerId,o=e.multiaddrs,s=new Set,i=e.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let u=[],d=new Set(e.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...d]);let f=await this.calculateMultiaddrs(n,d,{...e,signal:t});for(let h of f){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}u.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,u.map(h=>h.multiaddr.toString())),e?.onProgress?.(new X("dial-queue:calculated-addresses",u));for(let h of u){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,e.peerId),new lo("Peer had more than maxPeerAddrsToDial");a++;let p=me([t,AbortSignal.timeout(this.addressDialTimeout)]);try{let y=await this.components.transportManager.dial(h.multiaddr,{...e,signal:p});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(y.remotePeer,{multiaddrs:[y.remoteAddr],metadata:{[xb]:O(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}return y}catch(y){if(this.log.error("dial failed to %a - %e",h.multiaddr,y),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[wb]:O(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}if(t.aborted)throw new co(y.message);l.push(y)}finally{p.clear()}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(d=>({multiaddr:V(d),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new lo("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new Pl("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",e);try{let d=await this.components.peerStore.get(e);o.push(...d.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:f})=>f.toString()))}catch(d){if(d.name!=="NotFoundError")throw d}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let d=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:f})=>f.toString())),o.push(...d.multiaddrs.map(f=>({multiaddr:f,isCertified:!1})))}catch(d){d.name==="NoPeerRoutersError"?this.log("no peer routers configured",e):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",e,d)}}}let s=(await Promise.all(o.map(async d=>{let f=await n4(d.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return f.length===1&&f[0].equals(d.multiaddr)?d:f.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let d=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:f.multiaddr.encapsulate(d),isCertified:f.isCertified}:f)}let i=s.filter(d=>{if(this.components.transportManager.dialTransportForMultiaddr(d.multiaddr)==null)return!1;let f=d.multiaddr.getComponents().findLast(h=>h.code===421)?.value;return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let d of i){let f=d.multiaddr.toString(),h=a.get(f);if(h!=null){h.isCertified=h.isCertified||d.isCertified||!1;continue}a.set(f,d)}let c=[...a.values()];if(c.length===0)throw new vh(`The dial request has no valid addresses for peer: ${e?.toString()??"unknown peer"}`);let l=[];for(let d of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(d.multiaddr)||l.push(d);let u=this.addressSorter==null?vb(l):l.sort(this.addressSorter);if(u.length===0)throw new Pl(`The connection gater denied all addresses in the dial request for peer: ${e?.toString()??"unknown peer"}`);return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:d})=>d.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",u.map(({multiaddr:d})=>d.toString())),u}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(o=>o.toString())),t);return t.runOnLimitedConnection===!1?n.find(o=>!dt.matches(o.multiaddr))!=null:!0}catch{}return!1}};var uP=Object.prototype.toString,dP=r=>uP.call(r)==="[object Error]",fP=new Set(["network error","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function l4(r){if(!(r&&dP(r)&&r.name==="TypeError"&&typeof r.message=="string"))return!1;let{message:t,stack:n}=r;return t==="Load failed"||t.startsWith("Load failed (")&&t.endsWith(")")?n===void 0||"__sentry_captured__"in r:t.startsWith("error sending request for url")||t==="Failed to fetch"||t.startsWith("Failed to fetch (")&&t.endsWith(")")?!0:fP.has(t)}function hP(r){if(typeof r=="number"){if(r<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(r))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(r!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function Uh(r,e,{min:t=0,allowInfinity:n=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${r}\` to be a number${n?" or Infinity":""}.`);if(!n&&!Number.isFinite(e))throw new TypeError(`Expected \`${r}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${r}\` to be \u2265 ${t}.`)}}function u4(r,e){if(e!==void 0&&typeof e!="function")throw new TypeError(`Expected \`${r}\` to be a function.`)}var d4=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}};function pP(r,e){let t=Math.max(1,r+1),n=e.randomize?Math.random()+1:1,o=Math.round(n*e.minTimeout*e.factor**(t-1));return o=Math.min(o,e.maxTimeout),o}function Fh(r,e){return Number.isFinite(e)?e-(performance.now()-r):e}async function mP(r,e){r<=0||await new Promise((t,n)=>{let o=()=>{clearTimeout(s),e.signal?.removeEventListener("abort",o),n(e.signal.reason)},s=setTimeout(()=>{e.signal?.removeEventListener("abort",o),t()},r);e.unref&&s.unref?.(),e.signal?.addEventListener("abort",o,{once:!0})})}async function gP({error:r,attemptNumber:e,retriesConsumed:t,startTime:n,options:o}){let s=r instanceof Error?r:new TypeError(`Non-error was thrown: "${r}". You should only throw errors.`);if(s instanceof d4)throw s.originalError;let i=Number.isFinite(o.retries)?Math.max(0,o.retries-t):o.retries,a=o.maxRetryTime??Number.POSITIVE_INFINITY,c=pP(t,o);if(Fh(n,a)<=0){let m=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t,retryDelay:0});throw await o.onFailedAttempt(m),s}let u=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t,retryDelay:i>0?c:0}),d=await o.shouldConsumeRetry(u),f=d&&i>0?c:0,h=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t,retryDelay:f});if(await o.onFailedAttempt(h),Fh(n,a)<=0||Fh(n,a)<=0||i<=0||s instanceof TypeError&&!l4(s)||!await o.shouldRetry(h))throw s;let y=Fh(n,a);if(y<=0)throw s;if(!d)return o.signal?.throwIfAborted(),!1;let g=Math.min(f,y);return o.signal?.throwIfAborted(),await mP(g,o),o.signal?.throwIfAborted(),!0}async function f4(r,e={}){if(e={...e},hP(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.maxRetryTime??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.shouldConsumeRetry??=()=>!0,u4("onFailedAttempt",e.onFailedAttempt),u4("shouldRetry",e.shouldRetry),u4("shouldConsumeRetry",e.shouldConsumeRetry),Uh("factor",e.factor,{min:0,allowInfinity:!1}),Uh("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),Uh("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0}),Uh("maxRetryTime",e.maxRetryTime,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let t=0,n=0,o=performance.now();for(;!Number.isFinite(e.retries)||n<=e.retries;){t++;try{e.signal?.throwIfAborted();let s=await r(t);return e.signal?.throwIfAborted(),s}catch(s){await gP({error:s,attemptNumber:t,retriesConsumed:n,startTime:o,options:e})&&n++}}throw new Error("Retry attempts exhausted without throwing an error.")}var $h=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new Yt({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);Pb(t)&&(this.queue.has(e)||this.queue.add(async n=>{await f4(async o=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let o={};[...t.tags.keys()].forEach(s=>{s.startsWith(fs)&&(o[s]=void 0)}),await this.peerStore.merge(e,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>Pb(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error("could not open connection to keepalive peer - %e",n)})}))}).catch(e=>{this.log.error("error reconnect to peers after start - %e",e)})}stop(){this.started=!1,this.queue.abort()}};function Pb(r){for(let e of r.tags.keys())if(e.startsWith(fs))return!0;return!1}var c4=50,h4={maxConnections:Eb,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Vh=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??h4.maxConnections,this.maxConnections<1)throw new C("Connection Manager maxConnections must be greater than 0");this.connections=new Tt,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>kl(V(n))),this.deny=(t.deny??[]).map(n=>kl(V(n))),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??h4.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new sa({points:t.inboundConnectionThreshold??h4.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Rh({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{allow:t.allow?.map(n=>V(n))}),this.dialQueue=new Bh(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??Lh,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??1e4,addressDialTimeout:t.addressDialTimeout??6e3,resolvers:t.resolvers??{dnsaddr:Ml},connections:this.connections}),this.reconnectQueue=new $h({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await Tr(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await Zr(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push(Promise.all([Dl(n,"close",{signal:AbortSignal.timeout(500)}),n.close({signal:AbortSignal.timeout(500)})]).catch(o=>{n.abort(o)}));this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(e){if(e<1)throw new C("Connection Manager maxConnections must be greater than 0");let t=!1;e<this.maxConnections&&(t=!0),this.maxConnections=e,t&&this.connectionPruner.maybePruneConnections()}onConnect(e){this._onConnect(e).catch(t=>{this.log.error("could not connect - %e",t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(t),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:n}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new Cr("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted(),t?.onProgress?.(new X("connection:open",e));let{peerId:n,multiaddrs:o}=Th(e);if(this.peerId.equals(n))throw new wi("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let c=_h(n,this.getConnections(n),o);if(c!=null)return this.log("had an existing connection to %p as %a",n,c.remoteAddr),t.onProgress?.(new X("dial-queue:already-connected")),t.onProgress?.(new X("connection:opened",c)),c}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??c4});if(s.status!=="open")throw new as("Remote closed connection during opening");let i=this.connections.get(s.remotePeer);i==null&&(i=[],this.connections.set(s.remotePeer,i));let a=!1;for(let c of i)if(c.id===s.id&&(a=!0),t.force!==!0&&c.id!==s.id&&c.remoteAddr.equals(s.remoteAddr))return s.abort(new Qr("Duplicate multiaddr connection")),c;return a||i.push(s),t.onProgress?.(new X("connection:opened",s)),s}finally{this.outboundPendingConnections--}}async openStream(e,t,n={}){return(await this.openConnection(e,n)).newStream(t,n)}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await Promise.all([Dl(o,"close",t),o.close(t)])}catch(s){o.abort(s)}}))}acceptIncomingConnection(e){if(this.deny.some(o=>{if(bt(e.remoteAddr)){let s=Y(e.remoteAddr);return o.contains(s.host)}return!1}))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>{if(bt(e.remoteAddr)){let s=Y(e.remoteAddr);return o.contains(s.host)}return!0}))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(bt(e.remoteAddr)){let o=Y(e.remoteAddr);try{this.inboundConnectionRateLimiter.consume(o.host,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o.host),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>V(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var wP=1e4,xP="1.0.0",EP="ping",vP="ipfs",Db=32,SP=!0,Kh=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??vP}/${EP}/${xP}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??wP,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??SP,this.timeout=new Vr({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[ue]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now(),n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o;try{o=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0});let s=Lf(o);t=Date.now(),await Promise.all([s.write(crypto.getRandomValues(new Uint8Array(Db)),{signal:n}),s.read({bytes:Db,signal:n})]),e.rtt=Date.now()-t,await o.close({signal:n})}catch(s){if(o?.abort(s),s.name!=="UnsupportedProtocolError")throw s;e.rtt=(Date.now()-t)/2}finally{this.timeout.cleanUp(n)}}).catch(t=>{this.log.error("error during heartbeat - %e",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};var qh=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:B(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:B(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new ca("No content routers available");let n=this,o=new cr;for await(let s of Vn(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new ca("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new ca("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new Cr;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new Cr;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(e,t)))}};var Hh=globalThis.CustomEvent??Event;async function*Hn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,s=[],i=He(),a=He(),c=!1,l,u=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=He(),await i.promise),u)break;let y={done:!1};s.push(y),p().then(g=>{y.done=!0,y.ok=!0,y.value=g,o.dispatchEvent(new Hh("task-complete"))},g=>{y.done=!0,y.err=g,o.dispatchEvent(new Hh("task-complete"))})}c=!0,o.dispatchEvent(new Hh("task-complete"))}catch(p){l=p,o.dispatchEvent(new Hh("task-complete"))}});function d(){return n?s[0]?.done:!!s.find(p=>p.done)}function*f(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw u=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;d();)for(let p=0;p<s.length;p++)if(s[p].done){let y=s[p];if(s.splice(p,1),p--,y.ok)yield y.value;else throw u=!0,i.resolve(),y.err;i.resolve()}}for(;;){if(d()||(a=He(),await a.promise),l!=null||(n?yield*f():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var zh=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:B(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new Ll("No peer routers available");if(e.toString()===this.peerId.toString())throw new yh("Should not try to find self");let n=this,o=Vn(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error("router failed to find peer - %e",i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),s;throw new Pe}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Ll("No peer routers available");let n=this,o=Wt(1024);for await(let s of Hn((async function*(){let i=Vn(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs - %e",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var Gh=class extends se{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=me([this.shutdownController.signal,e?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=He(),yield(await Dl(this,"walk:peer",{signal:t,rejectionEvents:["walk:error"]})).detail}catch(n){throw n.detail!=null?n.detail:n}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let e=me([this.walkController.signal,this.shutdownController.signal]);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=crypto.getRandomValues(new Uint8Array(32)),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await De(this.needNext.promise,e)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored - %e",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored - %e",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var p4=32,m4=64,Wh=class{log;topologies;handlers;components;middleware;constructor(e){this.components=e,this.log=e.logger.forComponent("libp2p:registrar"),this.middleware=new Map,this.topologies=new Map,e.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let t={};for(let[n,o]of this.topologies)t[n]=o.size;return t}}),this.handlers=ft({name:"libp2p_registrar_protocol_handlers",metrics:e.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new bh(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e)&&n?.force!==!0)throw new wh(`Handler already registered for protocol ${e}`);this.handlers.set(e,{handler:t,options:{maxInboundStreams:p4,maxOutboundStreams:m4,...n}}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]},n)}async unhandle(e,t){(Array.isArray(e)?e:[e]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},t)}async register(e,t){if(t==null)throw new C("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}use(e,t){this.middleware.set(e,t)}unuse(e){this.middleware.delete(e)}getMiddleware(e){return this.middleware.get(e)??[]}async _onDisconnect(e){let t=e.detail,n={signal:AbortSignal.timeout(5e3)};try{let o=await this.components.peerStore.get(t,n);for(let s of o.protocols){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter!=null&&a.filter.has(t)!==!0||(a.filter?.remove(t),await a.onDisconnect?.(t))}))}}catch(o){if(o.name==="NotFoundError")return;this.log.error("could not inform topologies of disconnecting peer %p - %e",t,o)}}async _onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));try{for(let s of o){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter!=null&&a.filter.has(t.id)!==!0||(a.filter?.remove(t.id),await a.onDisconnect?.(t.id))}))}}catch(s){this.log.error("could not inform topologies of updated peer %p - %e",t.id,s)}}async _onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;try{for(let s of t){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),await a.onConnect?.(o,n))}))}}catch(s){this.log.error("could not inform topologies of updated peer after identify %p - %e",o,s)}}};var jh=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=ft({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=ft({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??bc.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new C("Transport must have a valid tag");if(this.transports.has(t))throw new C(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new Ch(`No transport available for address ${String(e)}`);return t?.onProgress?.(new X("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new Cr("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};e.forEach(s=>{t.errors.set(s.toString(),new xh)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(e);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(s)??[];u==null&&(u=[],this.listeners.set(s,u)),u.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let d=u.findIndex(f=>f===l);u.splice(d,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),x3.matches(c)?t.ipv4.attempts++:E3.matches(c)&&t.ipv6.attempts++,n.push(l.listen(c).then(()=>{t.errors.delete(c.toString()),x3.matches(c)&&t.ipv4.success++,E3.matches(c)&&t.ipv6.success++},d=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,d),t.errors.set(c.toString(),d),d}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(t)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===bc.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Eh(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
|
|
13
13
|
${[...t.errors.entries()].map(([s,i])=>`
|
|
14
|
-
${s}: ${`${
|
|
14
|
+
${s}: ${`${AP(i)}`.split(`
|
|
15
15
|
`).join(`
|
|
16
16
|
`)}
|
|
17
|
-
`).join("")}`)}}ipv6Unsupported(e){if(e.ipv4.attempts===0||e.ipv6.attempts===0)return!1;let t=e.ipv4.attempts===e.ipv4.success,n=e.ipv6.success===0;return t&&n}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};function
|
|
18
|
-
`);async function Bl(r,e){let n=(await r.read(e)).subarray();if(n.byteLength===0||n[n.length-1]!==
|
|
17
|
+
`).join("")}`)}}ipv6Unsupported(e){if(e.ipv4.attempts===0||e.ipv6.attempts===0)return!1;let t=e.ipv4.attempts===e.ipv4.success,n=e.ipv6.success===0;return t&&n}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};function AP(r){return r.stack!=null&&r.stack.trim()!==""?r.stack:r.message!=null?r.message:r.toString()}var ln="/multistream/1.0.0";var CP=O(`
|
|
18
|
+
`);async function Bl(r,e){let n=(await r.read(e)).subarray();if(n.byteLength===0||n[n.length-1]!==CP[0])throw new oe("Missing newline");return B(n).trimEnd()}async function da(r,e,t={}){if(e=Array.isArray(e)?[...e]:[e],e.length===0)throw new Error("At least one protocol must be specified");let n=r.log.newScope("mss:select"),o=Po(r,{...t,maxDataLength:1024});for(let s=0;s<e.length;s++){let i=e[s],a;if(s===0){n.trace('write ["%s", "%s"]',ln,i);let c=O(`${ln}
|
|
19
19
|
`),l=O(`${i}
|
|
20
|
-
`);if(await o.writeV([c,l],t),n.trace("reading multistream-select header"),a=await Bl(o,t),n.trace('read "%s"',a),a!==
|
|
21
|
-
`),t);if(n.trace("reading protocol response"),a=await Bl(o,t),n.trace('read "%s"',a),a===i)return n.trace('selected "%s" after negotiation',a),o.unwrap(),i}throw new gd(`Protocol selection failed - could not negotiate ${e}`)}async function fa(r,e,t={}){e=Array.isArray(e)?e:[e];let n=r.log.newScope("mss:handle"),o=Po(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){n.trace("reading incoming string");let s=await Bl(o,t);if(n.trace('read "%s"',s),s===
|
|
22
|
-
`),t),n.trace('responded with "%s" for "%s"',
|
|
20
|
+
`);if(await o.writeV([c,l],t),n.trace("reading multistream-select header"),a=await Bl(o,t),n.trace('read "%s"',a),a!==ln){n.error("did not read multistream-select header from response");break}}else n.trace('write "%s"',i),await o.write(O(`${i}
|
|
21
|
+
`),t);if(n.trace("reading protocol response"),a=await Bl(o,t),n.trace('read "%s"',a),a===i)return n.trace('selected "%s" after negotiation',a),o.unwrap(),i}throw new gd(`Protocol selection failed - could not negotiate ${e}`)}async function fa(r,e,t={}){e=Array.isArray(e)?e:[e];let n=r.log.newScope("mss:handle"),o=Po(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){n.trace("reading incoming string");let s=await Bl(o,t);if(n.trace('read "%s"',s),s===ln){n.trace('respond with "%s" for "%s"',ln,s),await o.write(O(`${ln}
|
|
22
|
+
`),t),n.trace('responded with "%s" for "%s"',ln,s);continue}if(e.includes(s))return n.trace('respond with "%s" for "%s"',s,s),await o.write(O(`${s}
|
|
23
23
|
`),t),n.trace('responded with "%s" for "%s"',s,s),o.unwrap(),s;if(s==="ls"){let i=new W(...e.map(a=>js.single(O(`${a}
|
|
24
24
|
`))),O(`
|
|
25
25
|
`));n.trace('respond with "%s" for %s',e,s),await o.write(i,t),n.trace('responded with "%s" for %s',e,s);continue}n.trace('respond with "na" for "%s"',s),await o.write(O(`na
|
|
26
|
-
`),t),n('responded with "na" for "%s"',s)}}var y4=class extends se{id;remoteAddr;remotePeer;direction;timeline;direct;multiplexer;encryption;limits;log;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;closeTimeout;constructor(e,t){super(),this.components=e,this.id=t.id,this.remoteAddr=t.maConn.remoteAddr,this.remotePeer=t.remotePeer,this.direction=t.direction??"outbound",this.timeline=t.maConn.timeline,this.encryption=t.cryptoProtocol,this.limits=t.limits,this.maConn=t.maConn,this.log=t.maConn.log,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.closeTimeout=t.closeTimeout??1e3,this.direct=Y3(t.maConn.remoteAddr),this.onIncomingStream=this.onIncomingStream.bind(this),this.remoteAddr.getComponents().find(n=>n.code===421)==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),t.muxer!=null&&(this.multiplexer=t.muxer.protocol,this.muxer=t.muxer,this.muxer.addEventListener("stream",this.onIncomingStream)),this.maConn.addEventListener("close",n=>{this.dispatchEvent(new uo(n.local,n.error))})}[Symbol.toStringTag]="Connection";[x8]=!0;get streams(){return this.muxer?.streams??[]}get status(){return this.maConn.status}newStream=async(e,t={})=>{if(this.muxer==null)throw new ko("Connection is not multiplexed");if(this.muxer.status!=="open")throw new as(`The connection muxer is "${this.muxer.status}" and not "open"`);if(this.maConn.status!=="open")throw new as(`The connection is "${this.status}" and not "open"`);if(this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new yc("Cannot open protocol stream on limited connection");Array.isArray(e)||(e=[e]),t.onProgress?.(new X("connection:open-stream",{connection:this,protocols:e})),this.log.trace("starting new stream for protocols %s",e);let n=await this.muxer.createStream({...t,protocol:e.length===1?e[0]:void 0});this.log.trace("started new stream %s for protocols %s",n.id,e);try{if(t.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",e);let c=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);t={...t,signal:c}}n.protocol===""?(n.log.trace("selecting protocol from protocols %s",e),n.protocol=await da(n,e,t),n.log("negotiated protocol %s",n.protocol)):n.log("pre-negotiated protocol %s",n.protocol);let o=TP(n.protocol,this.components.registrar,t),s=Nb(n.protocol,"outbound",this);if(s>o){let c=new xi(`Too many outbound protocol streams for protocol "${n.protocol}" - ${s}/${o}`);throw n.abort(c),c}await this.components.peerStore.merge(this.remotePeer,{protocols:[n.protocol]}),this.components.metrics?.trackProtocolStream(n);let i=this.components.registrar.getMiddleware(n.protocol),a=await this.runMiddlewareChain(n,this,i);return t.onProgress?.(new X("connection:opened-stream",{connection:this,stream:a})),a}catch(o){throw n.status==="open"?n.abort(o):this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,e,o),o}};async onIncomingStream(e){let t=e.detail,n=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);t.log("start protocol negotiation, timing out after %dms",this.inboundStreamProtocolNegotiationTimeout);try{if(t.protocol===""){let l=this.components.registrar.getProtocols();t.log.trace("selecting protocol from protocols %s",l),t.protocol=await fa(t,l,{signal:n}),t.log("negotiated protocol %s",t.protocol)}else t.log("pre-negotiated protocol %s",t.protocol);let o=IP(t.protocol,this.components.registrar);if(Nb(t.protocol,"inbound",this)>o)throw new yd(`Too many inbound protocol streams for protocol "${t.protocol}" - limit ${o}`);await this.components.peerStore.merge(this.remotePeer,{protocols:[t.protocol]},{signal:n}),this.components.metrics?.trackProtocolStream(t);let{handler:i,options:a}=this.components.registrar.getHandler(t.protocol);if(this.limits!=null&&a.runOnLimitedConnection!==!0)throw new yc("Cannot open protocol stream on limited connection");let c=this.components.registrar.getMiddleware(t.protocol);c.push(async(l,u,d)=>{await i(l,u),d(l,u)}),await this.runMiddlewareChain(t,this,c)}catch(o){t.abort(o)}}async runMiddlewareChain(e,t,n){for(let o=0;o<n.length;o++){let s=n[o];e.log.trace("running middleware",o,s),await new Promise((i,a)=>{try{let c=s(e,t,(l,u)=>{e=l,t=u,i()});c instanceof Promise&&c.catch(a)}catch(c){a(c)}}),e.log.trace("ran middleware",o,s)}return e}async close(e={}){if(this.log("closing connection to %a",this.remoteAddr),e.signal==null){let t=AbortSignal.timeout(this.closeTimeout);e={...e,signal:t}}await this.muxer?.close(e),await this.maConn.close(e)}abort(e){this.muxer?.abort(e),this.maConn.abort(e)}};function Ob(r,e){return new y4(r,e)}function IP(r,e){try{let{options:t}=e.getHandler(r);if(t.maxInboundStreams!=null)return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return p4}function TP(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??m4}function Nb(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var Yh=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;connectionCloseTimeout;constructor(e,t){this.components=e,this.connectionEncrypters=ft({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=ft({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.connectionCloseTimeout=t.connectionCloseTimeout??1e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new Sh(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=me([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,o=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=this.components.connectionManager.acceptIncomingConnection(e),!n)throw new Ah("Connection denied");await De(this.shouldBlockConnection("denyInboundConnection",e),o),await this._performUpgrade(e,"inbound",{...t,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getComponents().findLast(i=>i.code===421)?.value,o;n!=null&&(o=Oe(n),await De(this.shouldBlockConnection("denyOutboundConnection",o,e),t.signal));let s="outbound";return t.initiator===!1&&(s="inbound"),await this._performUpgrade(e,s,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(e,t,n){let o=e,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;if(e.log=e.log.newScope(`${t}:${l}`),this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t),n?.skipProtection!==!0){let d=this.components.connectionProtector;d!=null&&(e.log("protecting the %s connection",t),o=await d.protect(o,n))}try{if(_P(n)){if(n.remotePeer==null)throw new Yr(`${t} connection that skipped encryption must have a peer id`);c="native",s=n.remotePeer}else{let d=e.remoteAddr.getComponents().findLast(h=>h.code===421)?.value,f;d!=null&&(f=Oe(d)),n?.onProgress?.(new X(`upgrader:encrypt-${t}-connection`)),{connection:o,remotePeer:s,protocol:c,streamMuxer:i}=await(t==="inbound"?this._encryptInbound(o,{...n,remotePeer:f}):this._encryptOutbound(o,{...n,remotePeer:f}))}if(s.equals(this.components.peerId)){let d=new wi("Can not dial self");throw e.abort(d),d}await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,e),n?.muxerFactory!=null?i=n.muxerFactory:i==null&&this.streamMuxers.size>0&&(n?.onProgress?.(new X(`upgrader:multiplex-${t}-connection`)),i=await(t==="inbound"?this._multiplexInbound(o,this.streamMuxers,n):this._multiplexOutbound(o,this.streamMuxers,n)))}catch(d){throw e.log.error("failed to upgrade %s connection %s %a - %e",t,t==="inbound"?"from":"to",e.remoteAddr,d),d}i!=null&&(e.log("create muxer %s",i.protocol),a=i.createStreamMuxer(o)),await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,e);let u=this._createConnection({id:l,cryptoProtocol:c,direction:t,maConn:e,stream:o,muxer:a,remotePeer:s,limits:n?.limits,closeTimeout:this.connectionCloseTimeout});return u.log("successfully upgraded connection"),u}_createConnection(e){let t=Ob(this.components,{...e,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout});return t.addEventListener("close",()=>{this.events.safeDispatchEvent("connection:close",{detail:t})}),this.events.safeDispatchEvent("connection:open",{detail:t}),t}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let o=await fa(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new Js(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using %s",o),{...await s.secureInbound(e,t),protocol:o}}catch(o){throw new Js(o.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let o=await da(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new Js(`no crypto module found for ${o}`);return e.log("encrypting outbound connection using %s",o),{...await s.secureOutbound(e,t),protocol:o}}catch(o){throw new Js(o.message)}}async _multiplexOutbound(e,t,n){let o=Array.from(t.keys());e.log("outbound selecting muxer %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await da(e,o,n),i=t.get(s);if(i==null)throw new ko(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing outbound connection - %e",s),new ko(String(s))}}async _multiplexInbound(e,t,n){let o=Array.from(t.keys());e.log("inbound handling muxers %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await fa(e,o,n),i=t.get(s);if(i==null)throw new ko(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing inbound connection - %e",s),s}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};function _P(r){return r.skipEncryption===!0}var Qh="3.3.4",Xh="js-libp2p";function Zh(r,e){return`${r??Xh}/${e??Qh} browser/${globalThis.navigator.userAgent}`}var Ul=class extends se{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new se,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let u=n(l),d=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return u||d},this.peerId=e.peerId,this.logger=e.logger??qi(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=e.nodeInfo?.name??Xh,s=e.nodeInfo?.version??Qh,i=this.components=pb({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:o,version:s,userAgent:e.nodeInfo?.userAgent??Zh(o,s)},logger:this.logger,events:t,datastore:e.datastore??new lh,connectionGater:gb(e.connectionGater),dns:e.dns});e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",lb(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let u={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(d=>d.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:u})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new Yh(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,u)=>this.configureComponent(`connection-encryption-${u}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,u)=>this.configureComponent(`stream-muxers-${u}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout,connectionCloseTimeout:e.connectionManager?.connectionCloseTimeout}),this.configureComponent("transportManager",new jh(this.components,e.transportManager)),this.configureComponent("connectionManager",new Vh(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Kh(this.components,e.connectionMonitor)),this.configureComponent("registrar",new Wh(this.components)),this.configureComponent("addressManager",new ph(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,u)=>this.configureComponent(`peer-router-${u}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new zh(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,u)=>this.configureComponent(`content-router-${u}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new qh(this.components,{routers:c})),this.configureComponent("randomWalk",new Gh(this.components)),(e.peerDiscovery??[]).forEach((l,u)=>{this.configureComponent(`peer-discovery-${u}`,l(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((l,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let u=e.services[l],d=u(this.components);if(d==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=d,this.configureComponent(l,d),d[is]!=null&&(this.log("registering service %s for content routing",l),c.push(d[is])),d[ds]!=null&&(this.log("registering service %s for peer routing",l),a.push(d[ds])),d[us]!=null&&(this.log("registering service %s for peer discovery",l),d[us].addEventListener?.("peer",f=>{this.#e(f)}))}mb(i)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started with peer id %p",this.peerId)}catch(e){throw this.log.error("an error occurred starting libp2p - %e",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new cr;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new C("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new C("no protocols were provided to open a stream");return this.components.connectionManager.openStream(e,t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){sn(e)&&(e=Oe(e.getComponents().findLast(n=>n.code===421)?.value??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e,t);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=et([O("/pk/"),e.toMultihash().bytes]),o=await this.contentRouting.get(n,t),s=nt(o);return await this.peerStore.patch(e,{publicKey:s},t),s}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e,t){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async n=>{await this.components.registrar.unhandle(n,t)}))}async register(e,t,n){return this.components.registrar.register(e,t,n)}unregister(e){this.components.registrar.unregister(e)}use(e,t){this.components.registrar.use(e,Array.isArray(t)?t:[t])}unuse(e){this.components.registrar.unuse(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error("could not update multiaddrs of discovered peer - %e",n)})}};async function Bb(r={}){r.privateKey??=await Xd("Ed25519");let e=new Ul({...await By(r),peerId:My(r.privateKey)});return r.start!==!1&&await e.start(),e}var RP=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function b4(r){return r==null?!1:r instanceof Ul?!0:RP.every(e=>typeof r[e]=="function")}function LP(r){return r[Symbol.asyncIterator]!=null}function PP(r,e){let t=0;if(LP(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=ah(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){yield await i;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield i;for(let c of n)yield a(c,t++)})()}var Vr=PP;function w4(r){return{...r,id:r.id.toCID()}}var x4=class{name="libp2p-router";libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*Vr(this.libp2p.contentRouting.findProviders(e,t),n=>({routing:this.name,...w4(n)}))}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return w4(await this.libp2p.peerRouting.findPeer(Mt(e),t))}async*getClosestPeers(e,t){yield*Vr(this.libp2p.peerRouting.getClosestPeers(e,t),w4)}toString(){return"Libp2pRouter()"}};function Ub(r){return new x4(r)}var Fl=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),No=new Uint32Array(80),E4=class extends xs{A=Fl[0]|0;B=Fl[1]|0;C=Fl[2]|0;D=Fl[3]|0;E=Fl[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)No[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)No[c]=Rd(No[c-3]^No[c-8]^No[c-14]^No[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,u;c<20?(l=Pd(o,s,i),u=1518500249):c<40?(l=o^s^i,u=1859775393):c<60?(l=Dd(o,s,i),u=2400959708):(l=o^s^i,u=3395469782);let d=Rd(n,5)+l+a+u+No[c]|0;a=i,i=s,s=Rd(o,30),o=n,n=d}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){At(No)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),At(this.buffer)}},Fb=Rc(()=>new E4);function $b(r,e,t,n){Ln(r);let o=l7({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(Ht(s,"c"),Ht(i,"dkLen"),Ht(a,"asyncTick"),s<1)throw new Error("iterations (c) must be >= 1");if(i<1)throw new Error('"dkLen" must be >= 1');if(i>(2**32-1)*r.outputLen)throw new Error("derived key too long");let c=D2(e,"password"),l=D2(t,"salt"),u=new Uint8Array(i),d=ks.create(r,c),f=d._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:u,PRF:d,PRFSalt:f}}function Vb(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),At(o),t}function Kb(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=$b(r,e,t,n),l,u=new Uint8Array(4),d=ws(u),f=new Uint8Array(a.outputLen);for(let h=1,p=0;p<s;h++,p+=a.outputLen){let y=i.subarray(p,p+a.outputLen);d.setInt32(0,h,!1),(l=c._cloneInto(l)).update(u).digestInto(f),y.set(f.subarray(0,y.length));for(let g=1;g<o;g++){a._cloneInto(l).update(f).digestInto(f);for(let m=0;m<y.length;m++)y[m]^=f[m]}}return Vb(a,c,i,l,f)}async function Jh(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=$b(r,e,t,n),u,d=new Uint8Array(4),f=ws(d),h=new Uint8Array(c.outputLen);for(let p=1,y=0;y<s;p++,y+=c.outputLen){let g=a.subarray(y,y+c.outputLen);f.setInt32(0,p,!1),(u=l._cloneInto(u)).update(d).digestInto(h),g.set(h.subarray(0,g.length)),await c7(o-1,i,()=>{c._cloneInto(u).update(h).digestInto(h);for(let m=0;m<g.length;m++)g[m]^=h[m]})}return Vb(c,l,a,u,h)}var qb={sha1:Fb,"sha2-256":gr,"sha2-512":Jr};function $l(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(qb).join(" / ");throw new C(`Hash '${o}' is unknown or not supported. Must be ${a}`)}let s=qb[o],i=Kb(s,r,e,{c:t,dkLen:n});return _n.encode(i).substring(1)}var qw=gi(Zb(),1);var v4={keyLength:64,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"};var ha={};$(ha,{create:()=>HP,derivedEmptyPasswordKey:()=>e1});var e1={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function HP(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=Qe.get();t*=8;async function c(d,f){let h=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),y={name:e,iv:p};typeof f=="string"&&(f=O(f));let g;if(f.length===0){g=await a.subtle.importKey("jwk",e1,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",ae(f),{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",e1,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",ae(f),{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}let m=await a.subtle.encrypt(y,g,ae(d));return et([h,y.iv,new Uint8Array(m)])}async function l(d,f){let h=d.subarray(0,s),p=d.subarray(s,s+n),y=d.subarray(s+n),g={name:e,iv:p};typeof f=="string"&&(f=O(f));let m;if(f.length===0)try{let w={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",ae(f),{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(w,x,{name:e,length:t},!0,["decrypt"])}catch{m=await a.subtle.importKey("jwk",e1,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",ae(f),{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(w,x,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(g,m,ae(y));return new Uint8Array(b)}return{encrypt:c,decrypt:l}}var he=gi(Jb());function ei(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Oo(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let d=Math.pow(2,u*e);l[s-u-1]=Math.floor(o/d),o-=l[s-u-1]*d}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function n1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function A4(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=ei(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,ei(s,8)-n}function ew(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=Oo(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=Oo(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function tw(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function Qt(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var Moe=Math.log(2);function o1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function C4(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function Xn(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var ql=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return C4(this.items)}},Vl=[new Uint8Array([1])],rw="0123456789";var ma="",dn=new ArrayBuffer(0),I4=new Uint8Array(0),Hl="EndOfContent",ow="OCTET STRING",sw="BIT STRING";function Zn(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?he.BufferSourceConverter.toUint8Array(s.valueHex):I4}fromBER(n,o,s,i){let a=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Xn(this,a,o,s))return-1;let c=o+s;return this.valueHexView=a.subarray(o,c),this.valueHexView.length?(this.blockLength=s,c):(this.warnings.push("Zero buffer length"),o)}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",dn)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:he.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Wn=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=ma,warnings:n=[],valueBeforeDecode:o=I4}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=he.BufferSourceConverter.toUint8Array(o)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:he.Convert.ToHex(this.valueBeforeDecodeView)}}};Wn.NAME="baseBlock";var xt=class extends Wn{fromBER(e,t,n,o){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};xt.NAME="valueBlock";var s1=class extends Zn(Wn){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?he.BufferSourceConverter.toUint8Array(e.valueHex):I4,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",dn}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=Oo(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[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=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=0;for(;;){let u=c+1;if(u>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c++,(s[u]&128)===0)break}this.blockLength=c+1;let l=this.valueHexView=new Uint8Array(c);for(let u=0;u<c;u++)l[u]=s[u+1]&127;this.blockLength<=9?this.tagNumber=ei(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};s1.NAME="identificationBlock";var i1=class extends Wn{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=ei(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=Oo(this.length,8);if(o.byteLength>127)return this.error="Too big length",dn;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};i1.NAME="lengthBlock";var z={},ht=class extends Wn{constructor({name:e=ma,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new s1(o),this.lenBlock=new i1(o),this.valueBlock=s?new s(o):new xt(o)}fromBER(e,t,n,o){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length,o);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){let n=t||new ql;t||iw(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?dn:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():he.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=he.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return tw(t,n)}};ht.NAME="BaseBlock";function iw(r){var e;if(r instanceof z.Constructed)for(let t of r.valueBlock.value)iw(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var a1=class extends ht{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=ma,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(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),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};a1.NAME="BaseStringBlock";var c1=class extends Zn(xt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};c1.NAME="PrimitiveValueBlock";var aw,l1=class extends ht{constructor(e={}){super(e,c1),this.idBlock.isConstructed=!1}};aw=l1;z.Primitive=aw;l1.NAME="PRIMITIVE";var JP=100,eD=1e4,tD=16*1024*1024,rD="Maximum ASN.1 nesting depth exceeded",nD="Maximum ASN.1 node count exceeded",oD="Maximum ASN.1 content length exceeded";function Ql(r={}){var e,t,n;return{depth:0,maxDepth:(e=r.maxDepth)!==null&&e!==void 0?e:JP,nodesCount:0,maxNodes:(t=r.maxNodes)!==null&&t!==void 0?t:eD,maxContentLength:(n=r.maxContentLength)!==null&&n!==void 0?n:tD}}function sD(r){let e=new ht({},xt);return e.error=r,{offset:-1,result:e}}function iD(r){if(r.nodesCount+=1,r.nodesCount>r.maxNodes)return nD}function aD(r,e){if(r>e.maxContentLength)return oD}function T4(r,e,t,n){let o=n.depth+1;if(o>n.maxDepth)return sD(rD);n.depth=o;try{return cw(r,e,t,n)}finally{n.depth-=1}}function cD(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function cw(r,e=0,t=r.length,n=Ql()){let o=e,s=new ht({},xt),i=new Wn;if(!Xn(i,r,e,t))return s.error=i.error,{offset:-1,result:s};if(!r.subarray(e,e+t).length)return s.error="Zero buffer length",{offset:-1,result:s};let c=iD(n);if(c)return s.error=c,{offset:-1,result:s};let l=s.idBlock.fromBER(r,e,t);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),l===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(e=l,t-=s.idBlock.blockLength,l=s.lenBlock.fromBER(r,e,t),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),l===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};e=l,t-=s.lenBlock.blockLength;let u=s.lenBlock.isIndefiniteForm?t:s.lenBlock.length,d=aD(u,n);if(d)return s.error=d,{offset:-1,result:s};if(!s.idBlock.isConstructed&&s.lenBlock.isIndefiniteForm)return s.error="Indefinite length form used for primitive encoding form",{offset:-1,result:s};let f=ht;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};f=z.EndOfContent;break;case 1:f=z.Boolean;break;case 2:f=z.Integer;break;case 3:f=z.BitString;break;case 4:f=z.OctetString;break;case 5:f=z.Null;break;case 6:f=z.ObjectIdentifier;break;case 10:f=z.Enumerated;break;case 12:f=z.Utf8String;break;case 13:f=z.RelativeObjectIdentifier;break;case 14:f=z.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:f=z.Sequence;break;case 17:f=z.Set;break;case 18:f=z.NumericString;break;case 19:f=z.PrintableString;break;case 20:f=z.TeletexString;break;case 21:f=z.VideotexString;break;case 22:f=z.IA5String;break;case 23:f=z.UTCTime;break;case 24:f=z.GeneralizedTime;break;case 25:f=z.GraphicString;break;case 26:f=z.VisibleString;break;case 27:f=z.GeneralString;break;case 28:f=z.UniversalString;break;case 29:f=z.CharacterString;break;case 30:f=z.BmpString;break;case 31:f=z.DATE;break;case 32:f=z.TimeOfDay;break;case 33:f=z.DateTime;break;case 34:f=z.Duration;break;default:{let h=s.idBlock.isConstructed?new z.Constructed:new z.Primitive;h.idBlock=s.idBlock,h.lenBlock=s.lenBlock,h.warnings=s.warnings,s=h}}break;default:f=s.idBlock.isConstructed?z.Constructed:z.Primitive}return s=cD(s,f),l=s.fromBER(r,e,u,n),s.valueBeforeDecodeView=r.subarray(o,o+s.blockLength),{offset:l,result:s}}function q1(r,e={}){if(!r.byteLength){let t=new ht({},xt);return t.error="Input buffer has zero length",{offset:-1,result:t}}return cw(he.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength,Ql(e))}function lD(r,e){return r?1:e}var ln=class extends xt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n,o){let s=he.BufferSourceConverter.toUint8Array(e),i=o??Ql();if(!Xn(this,s,t,n))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let a=t;for(;lD(this.isIndefiniteForm,n)>0;){let c=T4(s,a,n,i);if(c.offset===-1)return this.error=c.result.error,this.warnings.concat(c.result.warnings),-1;if(a=c.offset,this.blockLength+=c.result.blockLength,n-=c.result.blockLength,this.value.push(c.result),this.isIndefiniteForm&&c.result.constructor.NAME===Hl)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Hl?this.value.pop():this.warnings.push("No EndOfContent block encoded")),a}toBER(e,t){let n=t||new ql;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?dn:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};ln.NAME="ConstructedValueBlock";var lw,Mo=class extends ht{constructor(e={}){super(e,ln),this.idBlock.isConstructed=!0}fromBER(e,t,n,o){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length,o);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
26
|
+
`),t),n('responded with "na" for "%s"',s)}}var y4=class extends se{id;remoteAddr;remotePeer;direction;timeline;direct;multiplexer;encryption;limits;log;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;closeTimeout;constructor(e,t){super(),this.components=e,this.id=t.id,this.remoteAddr=t.maConn.remoteAddr,this.remotePeer=t.remotePeer,this.direction=t.direction??"outbound",this.timeline=t.maConn.timeline,this.encryption=t.cryptoProtocol,this.limits=t.limits,this.maConn=t.maConn,this.log=t.maConn.log,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.closeTimeout=t.closeTimeout??1e3,this.direct=Y3(t.maConn.remoteAddr),this.onIncomingStream=this.onIncomingStream.bind(this),this.remoteAddr.getComponents().find(n=>n.code===421)==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),t.muxer!=null&&(this.multiplexer=t.muxer.protocol,this.muxer=t.muxer,this.muxer.addEventListener("stream",this.onIncomingStream)),this.maConn.addEventListener("close",n=>{this.dispatchEvent(new uo(n.local,n.error))})}[Symbol.toStringTag]="Connection";[x8]=!0;get streams(){return this.muxer?.streams??[]}get status(){return this.maConn.status}newStream=async(e,t={})=>{if(this.muxer==null)throw new ko("Connection is not multiplexed");if(this.muxer.status!=="open")throw new as(`The connection muxer is "${this.muxer.status}" and not "open"`);if(this.maConn.status!=="open")throw new as(`The connection is "${this.status}" and not "open"`);if(this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new yc("Cannot open protocol stream on limited connection");Array.isArray(e)||(e=[e]),t.onProgress?.(new X("connection:open-stream",{connection:this,protocols:e})),this.log.trace("starting new stream for protocols %s",e);let n=await this.muxer.createStream({...t,protocol:e.length===1?e[0]:void 0});this.log.trace("started new stream %s for protocols %s",n.id,e);try{if(t.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",e);let c=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);t={...t,signal:c}}n.protocol===""?(n.log.trace("selecting protocol from protocols %s",e),n.protocol=await da(n,e,t),n.log("negotiated protocol %s",n.protocol)):n.log("pre-negotiated protocol %s",n.protocol);let o=_P(n.protocol,this.components.registrar,t),s=Ob(n.protocol,"outbound",this);if(s>o){let c=new xi(`Too many outbound protocol streams for protocol "${n.protocol}" - ${s}/${o}`);throw n.abort(c),c}await this.components.peerStore.merge(this.remotePeer,{protocols:[n.protocol]}),this.components.metrics?.trackProtocolStream(n);let i=this.components.registrar.getMiddleware(n.protocol),a=await this.runMiddlewareChain(n,this,i);return t.onProgress?.(new X("connection:opened-stream",{connection:this,stream:a})),a}catch(o){throw n.status==="open"?n.abort(o):this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,e,o),o}};async onIncomingStream(e){let t=e.detail,n=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);t.log("start protocol negotiation, timing out after %dms",this.inboundStreamProtocolNegotiationTimeout);try{if(t.protocol===""){let l=this.components.registrar.getProtocols();t.log.trace("selecting protocol from protocols %s",l),t.protocol=await fa(t,l,{signal:n}),t.log("negotiated protocol %s",t.protocol)}else t.log("pre-negotiated protocol %s",t.protocol);let o=TP(t.protocol,this.components.registrar);if(Ob(t.protocol,"inbound",this)>o)throw new yd(`Too many inbound protocol streams for protocol "${t.protocol}" - limit ${o}`);await this.components.peerStore.merge(this.remotePeer,{protocols:[t.protocol]},{signal:n}),this.components.metrics?.trackProtocolStream(t);let{handler:i,options:a}=this.components.registrar.getHandler(t.protocol);if(this.limits!=null&&a.runOnLimitedConnection!==!0)throw new yc("Cannot open protocol stream on limited connection");let c=this.components.registrar.getMiddleware(t.protocol);c.push(async(l,u,d)=>{await i(l,u),d(l,u)}),await this.runMiddlewareChain(t,this,c)}catch(o){t.abort(o)}}async runMiddlewareChain(e,t,n){for(let o=0;o<n.length;o++){let s=n[o];e.log.trace("running middleware",o,s),await new Promise((i,a)=>{try{let c=s(e,t,(l,u)=>{e=l,t=u,i()});c instanceof Promise&&c.catch(a)}catch(c){a(c)}}),e.log.trace("ran middleware",o,s)}return e}async close(e={}){if(this.log("closing connection to %a",this.remoteAddr),e.signal==null){let t=AbortSignal.timeout(this.closeTimeout);e={...e,signal:t}}await this.muxer?.close(e),await this.maConn.close(e)}abort(e){this.muxer?.abort(e),this.maConn.abort(e)}};function Mb(r,e){return new y4(r,e)}function TP(r,e){try{let{options:t}=e.getHandler(r);if(t.maxInboundStreams!=null)return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return p4}function _P(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??m4}function Ob(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var Yh=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;connectionCloseTimeout;constructor(e,t){this.components=e,this.connectionEncrypters=ft({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=ft({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.connectionCloseTimeout=t.connectionCloseTimeout??1e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new Sh(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=me([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,o=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=this.components.connectionManager.acceptIncomingConnection(e),!n)throw new Ah("Connection denied");await De(this.shouldBlockConnection("denyInboundConnection",e),o),await this._performUpgrade(e,"inbound",{...t,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getComponents().findLast(i=>i.code===421)?.value,o;n!=null&&(o=Oe(n),await De(this.shouldBlockConnection("denyOutboundConnection",o,e),t.signal));let s="outbound";return t.initiator===!1&&(s="inbound"),await this._performUpgrade(e,s,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(e,t,n){let o=e,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;if(e.log=e.log.newScope(`${t}:${l}`),this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t),n?.skipProtection!==!0){let d=this.components.connectionProtector;d!=null&&(e.log("protecting the %s connection",t),o=await d.protect(o,n))}try{if(RP(n)){if(n.remotePeer==null)throw new Qr(`${t} connection that skipped encryption must have a peer id`);c="native",s=n.remotePeer}else{let d=e.remoteAddr.getComponents().findLast(h=>h.code===421)?.value,f;d!=null&&(f=Oe(d)),n?.onProgress?.(new X(`upgrader:encrypt-${t}-connection`)),{connection:o,remotePeer:s,protocol:c,streamMuxer:i}=await(t==="inbound"?this._encryptInbound(o,{...n,remotePeer:f}):this._encryptOutbound(o,{...n,remotePeer:f}))}if(s.equals(this.components.peerId)){let d=new wi("Can not dial self");throw e.abort(d),d}await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,e),n?.muxerFactory!=null?i=n.muxerFactory:i==null&&this.streamMuxers.size>0&&(n?.onProgress?.(new X(`upgrader:multiplex-${t}-connection`)),i=await(t==="inbound"?this._multiplexInbound(o,this.streamMuxers,n):this._multiplexOutbound(o,this.streamMuxers,n)))}catch(d){throw e.log.error("failed to upgrade %s connection %s %a - %e",t,t==="inbound"?"from":"to",e.remoteAddr,d),d}i!=null&&(e.log("create muxer %s",i.protocol),a=i.createStreamMuxer(o)),await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,e);let u=this._createConnection({id:l,cryptoProtocol:c,direction:t,maConn:e,stream:o,muxer:a,remotePeer:s,limits:n?.limits,closeTimeout:this.connectionCloseTimeout});return u.log("successfully upgraded connection"),u}_createConnection(e){let t=Mb(this.components,{...e,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout});return t.addEventListener("close",()=>{this.events.safeDispatchEvent("connection:close",{detail:t})}),this.events.safeDispatchEvent("connection:open",{detail:t}),t}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let o=await fa(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new Js(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using %s",o),{...await s.secureInbound(e,t),protocol:o}}catch(o){throw new Js(o.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let o=await da(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new Js(`no crypto module found for ${o}`);return e.log("encrypting outbound connection using %s",o),{...await s.secureOutbound(e,t),protocol:o}}catch(o){throw new Js(o.message)}}async _multiplexOutbound(e,t,n){let o=Array.from(t.keys());e.log("outbound selecting muxer %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await da(e,o,n),i=t.get(s);if(i==null)throw new ko(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing outbound connection - %e",s),new ko(String(s))}}async _multiplexInbound(e,t,n){let o=Array.from(t.keys());e.log("inbound handling muxers %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await fa(e,o,n),i=t.get(s);if(i==null)throw new ko(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing inbound connection - %e",s),s}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};function RP(r){return r.skipEncryption===!0}var Qh="3.3.4",Xh="js-libp2p";function Zh(r,e){return`${r??Xh}/${e??Qh} browser/${globalThis.navigator.userAgent}`}var Ul=class extends se{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new se,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let u=n(l),d=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return u||d},this.peerId=e.peerId,this.logger=e.logger??qi(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=e.nodeInfo?.name??Xh,s=e.nodeInfo?.version??Qh,i=this.components=mb({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:o,version:s,userAgent:e.nodeInfo?.userAgent??Zh(o,s)},logger:this.logger,events:t,datastore:e.datastore??new lh,connectionGater:yb(e.connectionGater),dns:e.dns});e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",ub(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let u={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(d=>d.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:u})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new Yh(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,u)=>this.configureComponent(`connection-encryption-${u}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,u)=>this.configureComponent(`stream-muxers-${u}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout,connectionCloseTimeout:e.connectionManager?.connectionCloseTimeout}),this.configureComponent("transportManager",new jh(this.components,e.transportManager)),this.configureComponent("connectionManager",new Vh(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Kh(this.components,e.connectionMonitor)),this.configureComponent("registrar",new Wh(this.components)),this.configureComponent("addressManager",new ph(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,u)=>this.configureComponent(`peer-router-${u}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new zh(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,u)=>this.configureComponent(`content-router-${u}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new qh(this.components,{routers:c})),this.configureComponent("randomWalk",new Gh(this.components)),(e.peerDiscovery??[]).forEach((l,u)=>{this.configureComponent(`peer-discovery-${u}`,l(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((l,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let u=e.services[l],d=u(this.components);if(d==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=d,this.configureComponent(l,d),d[is]!=null&&(this.log("registering service %s for content routing",l),c.push(d[is])),d[ds]!=null&&(this.log("registering service %s for peer routing",l),a.push(d[ds])),d[us]!=null&&(this.log("registering service %s for peer discovery",l),d[us].addEventListener?.("peer",f=>{this.#e(f)}))}gb(i)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started with peer id %p",this.peerId)}catch(e){throw this.log.error("an error occurred starting libp2p - %e",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new cr;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new C("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new C("no protocols were provided to open a stream");return this.components.connectionManager.openStream(e,t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){an(e)&&(e=Oe(e.getComponents().findLast(n=>n.code===421)?.value??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e,t);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=et([O("/pk/"),e.toMultihash().bytes]),o=await this.contentRouting.get(n,t),s=nt(o);return await this.peerStore.patch(e,{publicKey:s},t),s}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e,t){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async n=>{await this.components.registrar.unhandle(n,t)}))}async register(e,t,n){return this.components.registrar.register(e,t,n)}unregister(e){this.components.registrar.unregister(e)}use(e,t){this.components.registrar.use(e,Array.isArray(t)?t:[t])}unuse(e){this.components.registrar.unuse(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error("could not update multiaddrs of discovered peer - %e",n)})}};async function Ub(r={}){r.privateKey??=await Xd("Ed25519");let e=new Ul({...await Uy(r),peerId:By(r.privateKey)});return r.start!==!1&&await e.start(),e}var LP=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function b4(r){return r==null?!1:r instanceof Ul?!0:LP.every(e=>typeof r[e]=="function")}function PP(r){return r[Symbol.asyncIterator]!=null}function DP(r,e){let t=0;if(PP(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=ah(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){yield await i;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield i;for(let c of n)yield a(c,t++)})()}var Kr=DP;function w4(r){return{...r,id:r.id.toCID()}}var x4=class{name="libp2p-router";libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*Kr(this.libp2p.contentRouting.findProviders(e,t),n=>({routing:this.name,...w4(n)}))}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return ie(await this.libp2p.contentRouting.get(e,t))}async findPeer(e,t){return w4(await this.libp2p.peerRouting.findPeer(Mt(e),t))}async*getClosestPeers(e,t){yield*Kr(this.libp2p.peerRouting.getClosestPeers(e,t),w4)}toString(){return"Libp2pRouter()"}};function Fb(r){return new x4(r)}var Fl=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),No=new Uint32Array(80),E4=class extends xs{A=Fl[0]|0;B=Fl[1]|0;C=Fl[2]|0;D=Fl[3]|0;E=Fl[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)No[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)No[c]=Rd(No[c-3]^No[c-8]^No[c-14]^No[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,u;c<20?(l=Pd(o,s,i),u=1518500249):c<40?(l=o^s^i,u=1859775393):c<60?(l=Dd(o,s,i),u=2400959708):(l=o^s^i,u=3395469782);let d=Rd(n,5)+l+a+u+No[c]|0;a=i,i=s,s=Rd(o,30),o=n,n=d}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){At(No)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),At(this.buffer)}},$b=Rc(()=>new E4);function Vb(r,e,t,n){Ln(r);let o=u7({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(Ht(s,"c"),Ht(i,"dkLen"),Ht(a,"asyncTick"),s<1)throw new Error("iterations (c) must be >= 1");if(i<1)throw new Error('"dkLen" must be >= 1');if(i>(2**32-1)*r.outputLen)throw new Error("derived key too long");let c=D2(e,"password"),l=D2(t,"salt"),u=new Uint8Array(i),d=ks.create(r,c),f=d._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:u,PRF:d,PRFSalt:f}}function Kb(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),At(o),t}function qb(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=Vb(r,e,t,n),l,u=new Uint8Array(4),d=ws(u),f=new Uint8Array(a.outputLen);for(let h=1,p=0;p<s;h++,p+=a.outputLen){let y=i.subarray(p,p+a.outputLen);d.setInt32(0,h,!1),(l=c._cloneInto(l)).update(u).digestInto(f),y.set(f.subarray(0,y.length));for(let g=1;g<o;g++){a._cloneInto(l).update(f).digestInto(f);for(let m=0;m<y.length;m++)y[m]^=f[m]}}return Kb(a,c,i,l,f)}async function Jh(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=Vb(r,e,t,n),u,d=new Uint8Array(4),f=ws(d),h=new Uint8Array(c.outputLen);for(let p=1,y=0;y<s;p++,y+=c.outputLen){let g=a.subarray(y,y+c.outputLen);f.setInt32(0,p,!1),(u=l._cloneInto(u)).update(d).digestInto(h),g.set(h.subarray(0,g.length)),await l7(o-1,i,()=>{c._cloneInto(u).update(h).digestInto(h);for(let m=0;m<g.length;m++)g[m]^=h[m]})}return Kb(c,l,a,u,h)}var Hb={sha1:$b,"sha2-256":yr,"sha2-512":en};function $l(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(Hb).join(" / ");throw new C(`Hash '${o}' is unknown or not supported. Must be ${a}`)}let s=Hb[o],i=qb(s,r,e,{c:t,dkLen:n});return _n.encode(i).substring(1)}var Hw=gi(Jb(),1);var v4={keyLength:64,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"};var ha={};$(ha,{create:()=>zP,derivedEmptyPasswordKey:()=>e1});var e1={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function zP(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=Qe.get();t*=8;async function c(d,f){let h=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),y={name:e,iv:p};typeof f=="string"&&(f=O(f));let g;if(f.length===0){g=await a.subtle.importKey("jwk",e1,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",ie(f),{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}catch{g=await a.subtle.importKey("jwk",e1,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},w=await a.subtle.importKey("raw",ie(f),{name:"PBKDF2"},!1,["deriveKey"]);g=await a.subtle.deriveKey(b,w,{name:e,length:t},!0,["encrypt"])}let m=await a.subtle.encrypt(y,g,ie(d));return et([h,y.iv,new Uint8Array(m)])}async function l(d,f){let h=d.subarray(0,s),p=d.subarray(s,s+n),y=d.subarray(s+n),g={name:e,iv:p};typeof f=="string"&&(f=O(f));let m;if(f.length===0)try{let w={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",ie(f),{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(w,x,{name:e,length:t},!0,["decrypt"])}catch{m=await a.subtle.importKey("jwk",e1,{name:"AES-GCM"},!0,["decrypt"])}else{let w={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",ie(f),{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(w,x,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(g,m,ie(y));return new Uint8Array(b)}return{encrypt:c,decrypt:l}}var he=gi(ew());function ei(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Oo(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let d=Math.pow(2,u*e);l[s-u-1]=Math.floor(o/d),o-=l[s-u-1]*d}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function n1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function A4(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=ei(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,ei(s,8)-n}function tw(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=Oo(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=Oo(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function rw(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function Qt(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var Uoe=Math.log(2);function o1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function C4(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function Xn(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var ql=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return C4(this.items)}},Vl=[new Uint8Array([1])],nw="0123456789";var ma="",fn=new ArrayBuffer(0),I4=new Uint8Array(0),Hl="EndOfContent",sw="OCTET STRING",iw="BIT STRING";function Zn(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?he.BufferSourceConverter.toUint8Array(s.valueHex):I4}fromBER(n,o,s,i){let a=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Xn(this,a,o,s))return-1;let c=o+s;return this.valueHexView=a.subarray(o,c),this.valueHexView.length?(this.blockLength=s,c):(this.warnings.push("Zero buffer length"),o)}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",fn)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:he.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Wn=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=ma,warnings:n=[],valueBeforeDecode:o=I4}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=he.BufferSourceConverter.toUint8Array(o)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:he.Convert.ToHex(this.valueBeforeDecodeView)}}};Wn.NAME="baseBlock";var xt=class extends Wn{fromBER(e,t,n,o){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};xt.NAME="valueBlock";var s1=class extends Zn(Wn){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?he.BufferSourceConverter.toUint8Array(e.valueHex):I4,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",fn}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=Oo(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[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=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=0;for(;;){let u=c+1;if(u>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c++,(s[u]&128)===0)break}this.blockLength=c+1;let l=this.valueHexView=new Uint8Array(c);for(let u=0;u<c;u++)l[u]=s[u+1]&127;this.blockLength<=9?this.tagNumber=ei(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};s1.NAME="identificationBlock";var i1=class extends Wn{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=ei(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=Oo(this.length,8);if(o.byteLength>127)return this.error="Too big length",fn;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};i1.NAME="lengthBlock";var z={},ht=class extends Wn{constructor({name:e=ma,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new s1(o),this.lenBlock=new i1(o),this.valueBlock=s?new s(o):new xt(o)}fromBER(e,t,n,o){let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length,o);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){let n=t||new ql;t||aw(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?fn:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():he.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=he.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return rw(t,n)}};ht.NAME="BaseBlock";function aw(r){var e;if(r instanceof z.Constructed)for(let t of r.valueBlock.value)aw(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var a1=class extends ht{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=ma,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(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),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};a1.NAME="BaseStringBlock";var c1=class extends Zn(xt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};c1.NAME="PrimitiveValueBlock";var cw,l1=class extends ht{constructor(e={}){super(e,c1),this.idBlock.isConstructed=!1}};cw=l1;z.Primitive=cw;l1.NAME="PRIMITIVE";var eD=100,tD=1e4,rD=16*1024*1024,nD="Maximum ASN.1 nesting depth exceeded",oD="Maximum ASN.1 node count exceeded",sD="Maximum ASN.1 content length exceeded";function Ql(r={}){var e,t,n;return{depth:0,maxDepth:(e=r.maxDepth)!==null&&e!==void 0?e:eD,nodesCount:0,maxNodes:(t=r.maxNodes)!==null&&t!==void 0?t:tD,maxContentLength:(n=r.maxContentLength)!==null&&n!==void 0?n:rD}}function iD(r){let e=new ht({},xt);return e.error=r,{offset:-1,result:e}}function aD(r){if(r.nodesCount+=1,r.nodesCount>r.maxNodes)return oD}function cD(r,e){if(r>e.maxContentLength)return sD}function T4(r,e,t,n){let o=n.depth+1;if(o>n.maxDepth)return iD(nD);n.depth=o;try{return lw(r,e,t,n)}finally{n.depth-=1}}function lD(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function lw(r,e=0,t=r.length,n=Ql()){let o=e,s=new ht({},xt),i=new Wn;if(!Xn(i,r,e,t))return s.error=i.error,{offset:-1,result:s};if(!r.subarray(e,e+t).length)return s.error="Zero buffer length",{offset:-1,result:s};let c=aD(n);if(c)return s.error=c,{offset:-1,result:s};let l=s.idBlock.fromBER(r,e,t);if(s.idBlock.warnings.length&&s.warnings.concat(s.idBlock.warnings),l===-1)return s.error=s.idBlock.error,{offset:-1,result:s};if(e=l,t-=s.idBlock.blockLength,l=s.lenBlock.fromBER(r,e,t),s.lenBlock.warnings.length&&s.warnings.concat(s.lenBlock.warnings),l===-1)return s.error=s.lenBlock.error,{offset:-1,result:s};e=l,t-=s.lenBlock.blockLength;let u=s.lenBlock.isIndefiniteForm?t:s.lenBlock.length,d=cD(u,n);if(d)return s.error=d,{offset:-1,result:s};if(!s.idBlock.isConstructed&&s.lenBlock.isIndefiniteForm)return s.error="Indefinite length form used for primitive encoding form",{offset:-1,result:s};let f=ht;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};f=z.EndOfContent;break;case 1:f=z.Boolean;break;case 2:f=z.Integer;break;case 3:f=z.BitString;break;case 4:f=z.OctetString;break;case 5:f=z.Null;break;case 6:f=z.ObjectIdentifier;break;case 10:f=z.Enumerated;break;case 12:f=z.Utf8String;break;case 13:f=z.RelativeObjectIdentifier;break;case 14:f=z.TIME;break;case 15:return s.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:s};case 16:f=z.Sequence;break;case 17:f=z.Set;break;case 18:f=z.NumericString;break;case 19:f=z.PrintableString;break;case 20:f=z.TeletexString;break;case 21:f=z.VideotexString;break;case 22:f=z.IA5String;break;case 23:f=z.UTCTime;break;case 24:f=z.GeneralizedTime;break;case 25:f=z.GraphicString;break;case 26:f=z.VisibleString;break;case 27:f=z.GeneralString;break;case 28:f=z.UniversalString;break;case 29:f=z.CharacterString;break;case 30:f=z.BmpString;break;case 31:f=z.DATE;break;case 32:f=z.TimeOfDay;break;case 33:f=z.DateTime;break;case 34:f=z.Duration;break;default:{let h=s.idBlock.isConstructed?new z.Constructed:new z.Primitive;h.idBlock=s.idBlock,h.lenBlock=s.lenBlock,h.warnings=s.warnings,s=h}}break;default:f=s.idBlock.isConstructed?z.Constructed:z.Primitive}return s=lD(s,f),l=s.fromBER(r,e,u,n),s.valueBeforeDecodeView=r.subarray(o,o+s.blockLength),{offset:l,result:s}}function q1(r,e={}){if(!r.byteLength){let t=new ht({},xt);return t.error="Input buffer has zero length",{offset:-1,result:t}}return lw(he.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength,Ql(e))}function uD(r,e){return r?1:e}var un=class extends xt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n,o){let s=he.BufferSourceConverter.toUint8Array(e),i=o??Ql();if(!Xn(this,s,t,n))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let a=t;for(;uD(this.isIndefiniteForm,n)>0;){let c=T4(s,a,n,i);if(c.offset===-1)return this.error=c.result.error,this.warnings.concat(c.result.warnings),-1;if(a=c.offset,this.blockLength+=c.result.blockLength,n-=c.result.blockLength,this.value.push(c.result),this.isIndefiniteForm&&c.result.constructor.NAME===Hl)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Hl?this.value.pop():this.warnings.push("No EndOfContent block encoded")),a}toBER(e,t){let n=t||new ql;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?fn:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};un.NAME="ConstructedValueBlock";var uw,Mo=class extends ht{constructor(e={}){super(e,un),this.idBlock.isConstructed=!0}fromBER(e,t,n,o){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length,o);return s===-1?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
27
27
|
`).map(o=>` ${o}`).join(`
|
|
28
28
|
`));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
|
|
29
29
|
${e.join(`
|
|
30
|
-
`)}`:`${t} :`}};lw=Mo;z.Constructed=lw;Mo.NAME="CONSTRUCTED";var u1=class extends xt{fromBER(e,t,n){return t}toBER(e){return dn}};u1.override="EndOfContentValueBlock";var uw,d1=class extends ht{constructor(e={}){super(e,u1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};uw=d1;z.EndOfContent=uw;d1.NAME=Hl;var dw,ti=class extends ht{constructor(e={}){super(e,xt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};dw=ti;z.Null=dw;ti.NAME="NULL";var f1=class extends Zn(xt){get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=he.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}fromBER(e,t,n){let o=he.BufferSourceConverter.toUint8Array(e);return Xn(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,A4.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};f1.NAME="BooleanValueBlock";var fw,h1=class extends ht{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor(e={}){super(e,f1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};fw=h1;z.Boolean=fw;h1.NAME="BOOLEAN";var p1=class extends Zn(ln){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n,o){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=ln.prototype.fromBER.call(this,e,t,n,o),s===-1)return s;for(let i=0;i<this.value.length;i++){let a=this.value[i].constructor.NAME;if(a===Hl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(a!==ow)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?ln.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};p1.NAME="OctetStringValueBlock";var _4,jn=class extends ht{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},p1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n,o){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let a=o??Ql(),c=T4(i,0,i.byteLength,a);c.offset!==-1&&c.offset===n&&(this.valueBlock.value=[c.result])}}catch{}}return super.fromBER(e,t,n,o)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Mo.prototype.onAsciiEncoding.call(this);let e=this.constructor.NAME,t=he.Convert.ToHex(this.valueBlock.valueHexView);return`${e} : ${t}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof _4&&e.push(t.valueBlock.valueHexView);return he.BufferSourceConverter.concat(e)}};_4=jn;z.OctetString=_4;jn.NAME=ow;var m1=class extends Zn(ln){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n,o){if(!n)return t;let s=-1;if(this.isConstructed){if(s=ln.prototype.fromBER.call(this,e,t,n,o),s===-1)return s;for(let c of this.value){let l=c.constructor.NAME;if(l===Hl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(l!==sw)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let u=c.valueBlock;if(this.unusedBits>0&&u.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=u.unusedBits}return s}let i=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,i,t,n))return-1;let a=i.subarray(t,t+n);if(this.unusedBits=a[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let c=a.subarray(1);try{if(c.byteLength){let l=o??Ql(),u=T4(c,0,c.byteLength,l);u.offset!==-1&&u.offset===n-1&&(this.value=[u.result])}}catch{}}return this.valueHexView=a.subarray(1),this.blockLength=a.length,t+n}toBER(e,t){if(this.isConstructed)return ln.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength){let o=new Uint8Array(1);return o[0]=0,o.buffer}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}}};m1.NAME="BitStringValueBlock";var hw,g1=class extends ht{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},m1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n,o){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n,o)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Mo.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let i of t)e.push(i.toString(2).padStart(8,"0"));let n=e.join(""),o=this.constructor.NAME,s=n.substring(0,n.length-this.valueBlock.unusedBits);return`${o} : ${s}`}}};hw=g1;z.BitString=hw;g1.NAME=sw;var pw;function uD(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,u=c<i?i:c,d=0;for(let f=u;f>=0;f--,d++)!0===d<a.length?l=s[i-d]+a[c-d]+t[0]:l=s[i-d]+t[0],t[0]=l/10,!0===d>=s.length?s=n1(new Uint8Array([l%10]),s):s[i-d]=l%10;return t[0]>0&&(s=n1(t,s)),s}function nw(r){if(r>=Vl.length)for(let e=Vl.length;e<=r;e++){let t=new Uint8Array([0]),n=Vl[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=n1(t,n)),Vl.push(n)}return Vl[r]}function dD(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,u=0;for(let d=c;d>=0;d--,u++)l=s[i-u]-a[c-u]-t,!0===l<0?(t=1,s[i-u]=l+10):(t=0,s[i-u]=l);if(t>0)for(let d=i-c+1;d>=0;d--,u++)if(l=s[i-u]-t,l<0)t=1,s[i-u]=l+10;else{t=0,s[i-u]=l;break}return s.slice()}var zl=class extends Zn(xt){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=A4.call(this)))}constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(ew(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&(i[1]&128)!==0?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++)(o&1)===1&&(n===e?(t=dD(nw(n),t),i="-"):t=uD(t,nw(n))),n++,o>>=1}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=rw.charAt(t[c]));return a===!1&&(i+=rw.charAt(0)),i}};pw=zl;zl.NAME="IntegerValueBlock";Object.defineProperty(pw.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var Kl,Yn=class extends ht{constructor(e={}){super(e,zl),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return o1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){o1();let t=BigInt(e),n=new ql,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(he.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${he.Convert.ToHex(a)}`)+t,u=he.BufferSourceConverter.toUint8Array(he.Convert.FromHex(l.toString(16)));u[0]|=128,n.write(u)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new Kl({valueHex:n.final()})}convertToDER(){let e=new Kl({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new Kl({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};Kl=Yn;z.Integer=Kl;Yn.NAME="INTEGER";var mw,y1=class extends Yn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};mw=y1;z.Enumerated=mw;y1.NAME="ENUMERATED";var Gl=class extends Zn(xt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(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=ei(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){o1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=Oo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",dn;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=he.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Gl.NAME="sidBlock";var b1=class extends xt{constructor({value:e=ma,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Gl;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,dn;t.push(o)}return C4(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){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(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new Gl;if(o>Number.MAX_SAFE_INTEGER){o1();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};b1.NAME="ObjectIdentifierValueBlock";var gw,un=class extends ht{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,b1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};gw=un;z.ObjectIdentifier=gw;un.NAME="OBJECT IDENTIFIER";var Wl=class extends Zn(Wn){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(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=ei(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=Oo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",dn;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=he.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Wl.NAME="relativeSidBlock";var w1=class extends xt{constructor({value:e=ma,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Wl;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,dn;n.push(s)}return C4(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new Wl;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};w1.NAME="RelativeObjectIdentifierValueBlock";var yw,x1=class extends ht{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,w1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};yw=x1;z.RelativeObjectIdentifier=yw;x1.NAME="RelativeObjectIdentifier";var bw,Xt=class extends Mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};bw=Xt;z.Sequence=bw;Xt.NAME="SEQUENCE";var ww,E1=class extends Mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};ww=E1;z.Set=ww;E1.NAME="SET";var v1=class extends Zn(xt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=ma}toJSON(){return{...super.toJSON(),value:this.value}}};v1.NAME="StringValueBlock";var S1=class extends v1{};S1.NAME="SimpleStringValueBlock";var Vt=class extends a1{constructor({...e}={}){super(e,S1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,he.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Vt.NAME="SIMPLE STRING";var A1=class extends Vt{fromBuffer(e){this.valueBlock.valueHexView=he.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=he.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=he.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(he.Convert.FromUtf8String(e)),this.valueBlock.value=e}};A1.NAME="Utf8StringValueBlock";var xw,Qn=class extends A1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};xw=Qn;z.Utf8String=xw;Qn.NAME="UTF8String";var C1=class extends Vt{fromBuffer(e){this.valueBlock.value=he.Convert.ToUtf16String(e),this.valueBlock.valueHexView=he.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(he.Convert.FromUtf16String(e))}};C1.NAME="BmpStringValueBlock";var Ew,I1=class extends C1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};Ew=I1;z.BmpString=Ew;I1.NAME="BMPString";var T1=class extends Vt{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=Oo(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};T1.NAME="UniversalStringValueBlock";var vw,_1=class extends T1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};vw=_1;z.UniversalString=vw;_1.NAME="UniversalString";var Sw,R1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};Sw=R1;z.NumericString=Sw;R1.NAME="NumericString";var Aw,L1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};Aw=L1;z.PrintableString=Aw;L1.NAME="PrintableString";var Cw,P1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};Cw=P1;z.TeletexString=Cw;P1.NAME="TeletexString";var Iw,D1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Iw=D1;z.VideotexString=Iw;D1.NAME="VideotexString";var Tw,k1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};Tw=k1;z.IA5String=Tw;k1.NAME="IA5String";var _w,N1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};_w=N1;z.GraphicString=_w;N1.NAME="GraphicString";var Rw,jl=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};Rw=jl;z.VisibleString=Rw;jl.NAME="VisibleString";var Lw,O1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Lw=O1;z.GeneralString=Lw;O1.NAME="GeneralString";var Pw,M1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};Pw=M1;z.CharacterString=Pw;M1.NAME="CharacterString";var Dw,Yl=class extends jl{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,he.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Qt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Qt(this.month,2),t[2]=Qt(this.day,2),t[3]=Qt(this.hour,2),t[4]=Qt(this.minute,2),t[5]=Qt(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};Dw=Yl;z.UTCTime=Dw;Yl.NAME="UTCTime";var kw,B1=class extends Yl{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){let e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond);return new Date(e)}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let d=new Number(e[e.length-1]);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let d=1,f=n.indexOf("+"),h="";if(f===-1&&(f=n.indexOf("-"),d=-1),f!==-1){if(h=n.substring(f+1),n=n.substring(0,f),h.length!==2&&h.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(h.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=d*p,h.length===4){if(p=parseInt(h.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=d*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let d=new Number(`0${n.substring(l)}`);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");s=d.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let d=60*s;this.minute=Math.floor(d),d=60*(d-this.minute),this.second=Math.floor(d),d=1e3*(d-this.second),this.millisecond=Math.floor(d)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let d=60*s;this.second=Math.floor(d),d=1e3*(d-this.second),this.millisecond=Math.floor(d)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let d=1e3*s;this.millisecond=Math.floor(d)}break;default:throw new Error("Wrong input string for conversion")}let u=i.exec(o);if(u===null)throw new Error("Wrong input string for conversion");for(let d=1;d<u.length;d++)switch(d){case 1:this.year=parseInt(u[d],10);break;case 2:this.month=parseInt(u[d],10);break;case 3:this.day=parseInt(u[d],10);break;case 4:this.hour=parseInt(u[d],10)+a;break;case 5:this.minute=parseInt(u[d],10)+c;break;case 6:this.second=parseInt(u[d],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let d=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=d.getUTCFullYear(),this.month=d.getUTCMonth(),this.day=d.getUTCDay(),this.hour=d.getUTCHours(),this.minute=d.getUTCMinutes(),this.second=d.getUTCSeconds(),this.millisecond=d.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Qt(this.year,4)),t.push(Qt(this.month,2)),t.push(Qt(this.day,2)),t.push(Qt(this.hour,2)),t.push(Qt(this.minute,2)),t.push(Qt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Qt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};kw=B1;z.GeneralizedTime=kw;B1.NAME="GeneralizedTime";var Nw,U1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};Nw=U1;z.DATE=Nw;U1.NAME="DATE";var Ow,F1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};Ow=F1;z.TimeOfDay=Ow;F1.NAME="TimeOfDay";var Mw,$1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};Mw=$1;z.DateTime=Mw;$1.NAME="DateTime";var Bw,V1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};Bw=V1;z.Duration=Bw;V1.NAME="Duration";var Uw,K1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};Uw=K1;z.TIME=Uw;K1.NAME="TIME";async function H1(r,e){let n=await ha.create().encrypt(r,e);return _n.encode(n)}async function R4(r,e,t){if(r.type==="RSA")return mD(r,e,t);if(r.type==="Ed25519")return fD(r,e,t);if(r.type==="secp256k1")return hD(r,e,t);if(r.type==="ECDSA")return pD(r,e,t);throw new Cr}async function fD(r,e,t="libp2p-key"){if(t==="libp2p-key")return H1(Ns(r),e);throw new C(`export format '${t}' is not supported`)}async function hD(r,e,t="libp2p-key"){if(t==="libp2p-key")return H1(Ns(r),e);throw new C("Export format is not supported")}async function pD(r,e,t="libp2p-key"){if(t==="libp2p-key")return H1(Ns(r),e);throw new C(`export format '${t}' is not supported`)}async function mD(r,e,t="pkcs-8"){if(t==="pkcs-8")return gD(r,e);if(t==="libp2p-key")return H1(Ns(r),e);throw new C("Export format is not supported")}async function gD(r,e){let t=Qe.get(),o=new Xt({value:[new Yn({value:0}),new Xt({value:[new un({value:"1.2.840.113549.1.1.1"}),new ti]}),new jn({valueHex:r.raw})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=t.getRandomValues(new Uint8Array(16)),a=await Jh(Jr,e,i,{c:1e4,dkLen:32}),c=t.getRandomValues(new Uint8Array(16)),l=await t.subtle.importKey("raw",ae(a),"AES-CBC",!1,["encrypt"]),u=await t.subtle.encrypt({name:"AES-CBC",iv:ae(c)},l,ae(s)),d=new Xt({value:[new jn({valueHex:i}),new Yn({value:1e4}),new Yn({value:32}),new Xt({value:[new un({value:"1.2.840.113549.2.11"}),new ti]})]}),f=new Xt({value:[new un({value:"1.2.840.113549.1.5.13"}),new Xt({value:[new Xt({value:[new un({value:"1.2.840.113549.1.5.12"}),d]}),new Xt({value:[new un({value:"2.16.840.1.101.3.4.1.42"}),new jn({valueHex:c})]})]})]}),p=new Xt({value:[f,new jn({valueHex:u})]}).toBER(),y=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...B(y,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
31
|
-
`)}async function L4(r,e){try{let t=await yD(r,e);return Dy(t)}catch{}if(!r.includes("BEGIN"))throw new C("Encrypted key was not a libp2p-key or a PEM file");return bD(r,e)}async function yD(r,e){let t=_n.decode(r);return ha.create().decrypt(t,e)}async function bD(r,e){let t=Qe.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=O(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=q1(s),{iv:a,salt:c,iterations:l,keySize:u,cipherText:d}=wD(i),f=await Jh(Jr,e,c,{c:l,dkLen:u}),h=await t.subtle.importKey("raw",ae(f),"AES-CBC",!1,["decrypt"]),p=Xl(await t.subtle.decrypt({name:"AES-CBC",iv:ae(a)},h,ae(d))),{result:y}=q1(p);n=Kw(y)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=O(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=q1(s);n=Kw(i)}else throw new C("Could not parse private key from PEM data");let o=ky(n);if(o.type!=="RSA")throw new C("Could not parse RSA private key from PEM data");return o}function wD(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new C("Only pkcs5PBES2 encrypted private keys are supported");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new C("Only pkcs5PBKDF2 key derivation functions are supported");let s=n.valueBlock.value[1],i=Xl(s.valueBlock.value[0].getValue()),a=1e4,c=32;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new C("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key");let l=e.valueBlock.value[1].valueBlock.value[1],u=l.valueBlock.value[0].toString();if(u!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(u!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new C("Only AES-CBC encryption schemes are supported")}}}}let d=Xl(l.valueBlock.value[1].getValue());return{cipherText:Xl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:d}}function Kw(r){return Xl(r.valueBlock.value[2].getValue())}function Xl(r){return new Uint8Array(r,0,r.byteLength)}var xD="/pkcs8/",P4="/info/",Zl=new WeakMap,ri={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3};function ga(r){return r==null||typeof r!="string"?!1:r===(0,qw.default)(r.trim())&&r.length>0}async function Et(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function ni(r){return new Rt(xD+r)}function ya(r){return new Rt(P4+r)}async function ED(r){let e=Ns(r),t=await pt.digest(e);return Ee.encode(t.bytes).substring(1)}var z1=class{components;init;log;self;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init={...t,dek:{...v4,...t.dek}},this.self=t.selfKey??"self",this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<ri.minKeyLength)throw new Error(`dek.keyLength must be least ${ri.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<ri.minSaltLength)throw new Error(`dek.saltLength must be least ${ri.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<ri.minIterationCount)throw new Error(`dek.iterationCount must be least ${ri.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?$l(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Zl.set(this,{dek:n})}[Symbol.toStringTag]="@libp2p/keychain";[ue]=["@libp2p/keychain"];static generateOptions(){let e=Object.assign({},this.options),t=Math.ceil(ri.minSaltLength/3)*3;return e.dek!=null&&(e.dek.salt=B(crypto.getRandomValues(new Uint8Array(t)),"base64")),e}static get options(){return{dek:{...v4}}}async findKeyByName(e){if(!ga(e))throw await Et(),new C(`Invalid key name '${e}'`);let t=ya(e);try{let n=await this.components.datastore.get(t);return JSON.parse(B(n))}catch(n){throw await Et(),this.log.error("could not read key from datastore - %e",n),new Pe(`Key '${e}' does not exist.`)}}async findKeyById(e){try{let t={prefix:P4};for await(let n of this.components.datastore.query(t)){let o=JSON.parse(B(n.value));if(o.id===e)return o}throw new C(`Key with id '${e}' does not exist.`)}catch(t){throw await Et(),t}}async importKey(e,t){if(!ga(e))throw await Et(),new C(`Invalid key name '${e}'`);if(t==null)throw await Et(),new C("Key is required");let n=ni(e);if(await this.components.datastore.has(n))throw await Et(),new C(`Key '${e}' already exists`);let s,i;try{s=await ED(t);let l=Zl.get(this);if(l==null)throw new C("dek missing");let u=l.dek;i=await R4(t,u,t.type==="RSA"?"pkcs-8":"libp2p-key")}catch(l){throw await Et(),l}let a={name:e,id:s},c=this.components.datastore.batch();return c.put(n,O(i)),c.put(ya(e),O(JSON.stringify(a))),await c.commit(),a}async exportKey(e){if(!ga(e))throw await Et(),new C(`Invalid key name '${e}'`);let t=ni(e);try{let n=await this.components.datastore.get(t),o=B(n),s=Zl.get(this);if(s==null)throw new C("dek missing");let i=s.dek;return await L4(o,i)}catch(n){throw await Et(),n}}async removeKey(e){if(!ga(e)||e===this.self)throw await Et(),new C(`Invalid key name '${e}'`);let t=ni(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(ya(e)),await o.commit(),n}async listKeys(){let e={prefix:P4},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(B(n.value)));return t}async renameKey(e,t){if(!ga(e)||e===this.self)throw await Et(),new C(`Invalid old key name '${e}'`);if(!ga(t)||t===this.self)throw await Et(),new C(`Invalid new key name '${t}'`);let n=ni(e),o=ni(t),s=ya(e),i=ya(t);if(await this.components.datastore.has(o))throw await Et(),new C(`Key '${t}' already exists`);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),u=JSON.parse(B(l));u.name=t;let d=this.components.datastore.batch();return d.put(o,c),d.put(i,O(JSON.stringify(u))),d.delete(n),d.delete(s),await d.commit(),u}catch(c){throw await Et(),c}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Et(),new C(`Invalid old pass type '${typeof e}'`);if(typeof t!="string")throw await Et(),new C(`Invalid new pass type '${typeof t}'`);if(t.length<20)throw await Et(),new C(`Invalid pass length ${t.length}`);this.log("recreating keychain");let n=Zl.get(this);if(n==null)throw new C("dek missing");let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?$l(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Zl.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(ni(a.name)),l=B(c),u=await L4(l,o),d=s.toString(),f=await R4(u,d,u.type==="RSA"?"pkcs-8":"libp2p-key"),h=this.components.datastore.batch(),p={name:a.name,id:a.id};h.put(ni(a.name),O(f)),h.put(ya(a.name),O(JSON.stringify(p))),await h.commit()}this.log("keychain reconstructed")}};function Hw(r={}){return e=>new z1(e,r)}async function D4(r,e={}){let t=e.selfKey??"self",n=Hw(e)({datastore:r,logger:qi()}),o;return await r.has(new Rt(`/pkcs8/${t}`))?o=await n.exportKey(t):(o=await Xd(e.keyType??"Ed25519"),await n.importKey(t,o)),o}function ot(r=0){return new Uint8Array(r)}function Pt(r=0){return new Uint8Array(r)}var ba=!!globalThis.process?.env?.DUMP_SESSION_KEYS,k4=16;function vD(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in r&&r.BYTES_PER_ELEMENT===1}function G1(r){if(typeof r!="boolean")throw new TypeError(`boolean expected, not ${r}`)}function wa(r){if(typeof r!="number")throw new TypeError("number expected, got "+typeof r);if(!Number.isSafeInteger(r)||r<0)throw new RangeError("positive integer expected, got "+r)}function st(r,e,t=""){let n=vD(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`,l=i+"expected Uint8Array"+a+", got "+c;throw n?new RangeError(l):new TypeError(l)}return r}function N4(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function zw(r,e,t=!1){st(r,void 0,"output");let n=e.outputLen;if(r.length<n)throw new RangeError("digestInto() expects output buffer of length at least "+n);if(t&&!xa(r))throw new Error("invalid output, must be aligned")}function fn(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function Kr(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function SD(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}var oi=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,AD=r=>r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255;var CD=r=>{for(let e=0;e<r.length;e++)r[e]=AD(r[e]);return r},Jn=oi?r=>r:CD;function Gw(r,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(r,e)}function Ww(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function jw(r,e,t){let n=e,o=t||(()=>[]),s=(a,c)=>n(c,...o(a)).update(a).digest(),i=n(new Uint8Array(r),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>n(a,...c),s}var Yw=(r,e)=>{function t(n,...o){if(st(n,void 0,"key"),r.nonceLength!==void 0){let u=o[0];st(u,r.varSizeNonce?void 0:r.nonceLength,"nonce")}let s=r.tagLength;s&&o[1]!==void 0&&st(o[1],void 0,"AAD");let i=e(n,...o),a=(u,d)=>{if(d!==void 0){if(u!==2)throw new Error("cipher output not supported");st(d,void 0,"output")}},c=!1;return{encrypt(u,d){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,st(u),a(i.encrypt.length,d),i.encrypt(u,d)},decrypt(u,d){if(st(u),s&&u.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return a(i.decrypt.length,d),i.decrypt(u,d)}}}return Object.assign(t,r),t};function Jl(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(st(e,void 0,"output"),e.length!==r)throw new Error('"output" expected Uint8Array of length '+r+", got: "+e.length);if(t&&!xa(e))throw new Error("invalid output, must be aligned");return e}function Qw(r,e,t){wa(r),wa(e),G1(t);let n=new Uint8Array(16),o=SD(n);return o.setBigUint64(0,BigInt(e),t),o.setBigUint64(8,BigInt(r),t),n}function xa(r){return r.byteOffset%4===0}function Ea(r){return Uint8Array.from(st(r))}var Zw=r=>Uint8Array.from(r.split(""),e=>e.charCodeAt(0)),ID=Jn(fn(Zw("expand 16-byte k"))),TD=Jn(fn(Zw("expand 32-byte k")));function ge(r,e){return r<<e|r>>>32-e}var eu=64,_D=16,O4=2**32-1,Xw=Uint32Array.of();function RD(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(eu),u=fn(l),d=oi&&xa(o)&&xa(s),f=d?fn(o):Xw,h=d?fn(s):Xw;if(!oi){for(let p=0;p<c;i++){if(r(e,t,n,u,i,a),Jn(u),i>=O4)throw new Error("arx: counter overflow");let y=Math.min(eu,c-p);for(let g=0,m;g<y;g++)m=p+g,s[m]=o[m]^l[g];p+=y}return}for(let p=0;p<c;i++){if(r(e,t,n,u,i,a),i>=O4)throw new Error("arx: counter overflow");let y=Math.min(eu,c-p);if(d&&y===eu){let g=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let m=0,b;m<_D;m++)b=g+m,h[b]=f[b]^u[m];p+=eu;continue}for(let g=0,m;g<y;g++)m=p+g,s[m]=o[m]^l[g];p+=y}}function Jw(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=Gw({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return wa(o),wa(i),G1(s),G1(t),(a,c,l,u,d=0)=>{st(a,void 0,"key"),st(c,void 0,"nonce"),st(l,void 0,"data");let f=l.length;if(u=Jl(f,u,!1),wa(d),d<0||d>=O4)throw new Error("arx: counter overflow");let h=[],p=a.length,y,g;if(p===32)h.push(y=Ea(a)),g=TD;else if(p===16&&t)y=new Uint8Array(32),y.set(a),y.set(a,16),g=ID,h.push(y);else throw st(a,32,"arx key"),new Error("invalid key size");(!oi||!xa(c))&&h.push(c=Ea(c));let m=fn(y);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");let x=c.subarray(0,16);if(oi)n(g,m,fn(x),m);else{let v=Jn(Uint32Array.from(g));n(v,m,fn(x),m),Kr(v),Jn(m)}c=c.subarray(16)}else oi||Jn(m);let b=16-o;if(b!==c.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){let x=new Uint8Array(12);x.set(c,s?0:12-c.length),c=x,h.push(c)}let w=Jn(fn(c));try{return RD(r,g,m,w,l,u,d,i),u}finally{Kr(...h)}}}function vt(r,e){return r[e++]&255|(r[e++]&255)<<8}var M4=class{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=Ea(st(e,32,"key"));let t=vt(e,0),n=vt(e,2),o=vt(e,4),s=vt(e,6),i=vt(e,8),a=vt(e,10),c=vt(e,12),l=vt(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let u=0;u<8;u++)this.pad[u]=vt(e,16+2*u)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],u=i[3],d=i[4],f=i[5],h=i[6],p=i[7],y=i[8],g=i[9],m=vt(e,t+0),b=vt(e,t+2),w=vt(e,t+4),x=vt(e,t+6),v=vt(e,t+8),A=vt(e,t+10),S=vt(e,t+12),I=vt(e,t+14),k=s[0]+(m&8191),K=s[1]+((m>>>13|b<<3)&8191),F=s[2]+((b>>>10|w<<6)&8191),E=s[3]+((w>>>7|x<<9)&8191),P=s[4]+((x>>>4|v<<12)&8191),L=s[5]+(v>>>1&8191),_=s[6]+((v>>>14|A<<2)&8191),T=s[7]+((A>>>11|S<<5)&8191),D=s[8]+((S>>>8|I<<8)&8191),N=s[9]+(I>>>5|o),R=0,M=R+k*a+K*(5*g)+F*(5*y)+E*(5*p)+P*(5*h);R=M>>>13,M&=8191,M+=L*(5*f)+_*(5*d)+T*(5*u)+D*(5*l)+N*(5*c),R+=M>>>13,M&=8191;let U=R+k*c+K*a+F*(5*g)+E*(5*y)+P*(5*p);R=U>>>13,U&=8191,U+=L*(5*h)+_*(5*f)+T*(5*d)+D*(5*u)+N*(5*l),R+=U>>>13,U&=8191;let G=R+k*l+K*c+F*a+E*(5*g)+P*(5*y);R=G>>>13,G&=8191,G+=L*(5*p)+_*(5*h)+T*(5*f)+D*(5*d)+N*(5*u),R+=G>>>13,G&=8191;let J=R+k*u+K*l+F*c+E*a+P*(5*g);R=J>>>13,J&=8191,J+=L*(5*y)+_*(5*p)+T*(5*h)+D*(5*f)+N*(5*d),R+=J>>>13,J&=8191;let Q=R+k*d+K*u+F*l+E*c+P*a;R=Q>>>13,Q&=8191,Q+=L*(5*g)+_*(5*y)+T*(5*p)+D*(5*h)+N*(5*f),R+=Q>>>13,Q&=8191;let Ie=R+k*f+K*d+F*u+E*l+P*c;R=Ie>>>13,Ie&=8191,Ie+=L*a+_*(5*g)+T*(5*y)+D*(5*p)+N*(5*h),R+=Ie>>>13,Ie&=8191;let Te=R+k*h+K*f+F*d+E*u+P*l;R=Te>>>13,Te&=8191,Te+=L*c+_*a+T*(5*g)+D*(5*y)+N*(5*p),R+=Te>>>13,Te&=8191;let _e=R+k*p+K*h+F*f+E*d+P*u;R=_e>>>13,_e&=8191,_e+=L*l+_*c+T*a+D*(5*g)+N*(5*y),R+=_e>>>13,_e&=8191;let ye=R+k*y+K*p+F*h+E*f+P*d;R=ye>>>13,ye&=8191,ye+=L*u+_*l+T*c+D*a+N*(5*g),R+=ye>>>13,ye&=8191;let Be=R+k*g+K*y+F*p+E*h+P*f;R=Be>>>13,Be&=8191,Be+=L*d+_*u+T*l+D*c+N*a,R+=Be>>>13,Be&=8191,R=(R<<2)+R|0,R=R+M|0,M=R&8191,R=R>>>13,U+=R,s[0]=M,s[1]=U,s[2]=G,s[3]=J,s[4]=Q,s[5]=Ie,s[6]=Te,s[7]=_e,s[8]=ye,s[9]=Be}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535;Kr(n)}update(e){N4(this),st(e),e=Ea(e);let{buffer:t,blockLen:n}=this,o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,Kr(this.h,this.r,this.buffer,this.pad)}digestInto(e){N4(this),zw(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}},ex=jw(32,r=>new M4(r));function LD(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],u=e[0],d=e[1],f=e[2],h=e[3],p=e[4],y=e[5],g=e[6],m=e[7],b=o,w=t[0],x=t[1],v=t[2],A=i,S=a,I=c,k=l,K=u,F=d,E=f,P=h,L=p,_=y,T=g,D=m,N=b,R=w,M=x,U=v;for(let J=0;J<s;J+=2)A=A+K|0,N=ge(N^A,16),L=L+N|0,K=ge(K^L,12),A=A+K|0,N=ge(N^A,8),L=L+N|0,K=ge(K^L,7),S=S+F|0,R=ge(R^S,16),_=_+R|0,F=ge(F^_,12),S=S+F|0,R=ge(R^S,8),_=_+R|0,F=ge(F^_,7),I=I+E|0,M=ge(M^I,16),T=T+M|0,E=ge(E^T,12),I=I+E|0,M=ge(M^I,8),T=T+M|0,E=ge(E^T,7),k=k+P|0,U=ge(U^k,16),D=D+U|0,P=ge(P^D,12),k=k+P|0,U=ge(U^k,8),D=D+U|0,P=ge(P^D,7),A=A+F|0,U=ge(U^A,16),T=T+U|0,F=ge(F^T,12),A=A+F|0,U=ge(U^A,8),T=T+U|0,F=ge(F^T,7),S=S+E|0,N=ge(N^S,16),D=D+N|0,E=ge(E^D,12),S=S+E|0,N=ge(N^S,8),D=D+N|0,E=ge(E^D,7),I=I+P|0,R=ge(R^I,16),L=L+R|0,P=ge(P^L,12),I=I+P|0,R=ge(R^I,8),L=L+R|0,P=ge(P^L,7),k=k+K|0,M=ge(M^k,16),_=_+M|0,K=ge(K^_,12),k=k+K|0,M=ge(M^k,8),_=_+M|0,K=ge(K^_,7);let G=0;n[G++]=i+A|0,n[G++]=a+S|0,n[G++]=c+I|0,n[G++]=l+k|0,n[G++]=u+K|0,n[G++]=d+F|0,n[G++]=f+E|0,n[G++]=h+P|0,n[G++]=p+L|0,n[G++]=y+_|0,n[G++]=g+T|0,n[G++]=m+D|0,n[G++]=b+N|0,n[G++]=w+R|0,n[G++]=x+M|0,n[G++]=v+U|0}var PD=Jw(LD,{counterRight:!1,counterLength:4,allowShortKeys:!1});var DD=new Uint8Array(16),tx=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(DD.subarray(t))},kD=new Uint8Array(32);function rx(r,e,t,n,o){o!==void 0&&st(o,void 0,"AAD");let s=r(e,t,kD),i=Qw(n.length,o?o.length:0,!0),a=ex.create(s);o&&tx(a,o),tx(a,n),a.update(i);let c=a.digest();return Kr(s,i),c}var ND=r=>(e,t,n)=>({encrypt(s,i){let a=s.length;i=Jl(a+16,i,!1),i.set(s);let c=i.subarray(0,-16);r(e,t,c,c,1);let l=rx(r,e,t,c,n);return i.set(l,a),Kr(l),i},decrypt(s,i){i=Jl(s.length-16,i,!1);let a=s.subarray(0,-16),c=s.subarray(-16),l=rx(r,e,t,a,n);if(!Ww(c,l))throw Kr(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),r(e,t,i,i,1),Kr(l),i}}),B4=Yw({blockSize:64,nonceLength:12,tagLength:16},ND(PD));function ox(r,e,t){return Ln(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ks(r,t,e)}var U4=Uint8Array.of(0),nx=Uint8Array.of();function sx(r,e,t,n=32){Ln(r),Ht(n,"length"),mt(e,void 0,"prk");let o=r.outputLen;if(e.length<o)throw new Error('"prk" must be at least HashLen octets');if(n>255*o)throw new Error("Length must be <= 255*HashLen");let s=Math.ceil(n/o);t===void 0?t=nx:mt(t,void 0,"info");let i=new Uint8Array(s*o),a=ks.create(r,e),c=a._cloneInto(),l=new Uint8Array(a.outputLen);for(let u=0;u<s;u++)U4[0]=u+1,c.update(u===0?nx:l).update(t).update(U4).digestInto(l),i.set(l,o*u),a._cloneInto(c);return a.destroy(),c.destroy(),At(l,U4),i.slice(0,n)}var F4={hashSHA256(r){return gr(r.subarray())},getHKDF(r,e){let t=ox(gr,e,r),o=sx(gr,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=$c.utils.randomSecretKey();return{publicKey:$c.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:$c.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return $c.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return B4(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return B4(n,e,t).decrypt(r.subarray(),o)}};var ix=F4;function ax(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var va=r=>{let e=Pt(2);return e[0]=r>>8,e[1]=r,e};va.bytes=2;var Sa=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};Sa.bytes=2;function cx(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}var H4={};$(H4,{base10:()=>VD});var iie=new Uint8Array(0);function lx(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function eo(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 ux(r){return new TextEncoder().encode(r)}function dx(r){return new TextDecoder().decode(r)}function OD(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var MD=OD,BD=MD,hx=BD;var $4=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},V4=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return px(this,e)}},K4=class{decoders;constructor(e){this.decoders=e}or(e){return px(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function px(r,e){return new K4({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var q4=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new $4(e,t,n),this.decoder=new V4(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Aa({name:r,prefix:e,encode:t,decode:n}){return new q4(r,e,t,n)}function Bo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=hx(t,r);return Aa({prefix:e,name:r,encode:n,decode:s=>eo(o(s))})}function UD(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function FD(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function $D(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function ze({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=$D(n);return Aa({prefix:e,name:r,encode(s){return FD(s,n,t)},decode(s){return UD(s,o,t,r)}})}var VD=Bo({prefix:"9",name:"base10",alphabet:"0123456789"});var z4={};$(z4,{base16:()=>KD,base16upper:()=>qD});var KD=ze({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),qD=ze({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var G4={};$(G4,{base2:()=>HD});var HD=ze({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var W4={};$(W4,{base256emoji:()=>YD});var mx=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}"),zD=mx.reduce((r,e,t)=>(r[t]=e,r),[]),GD=mx.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function WD(r){return r.reduce((e,t)=>(e+=zD[t],e),"")}function jD(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=GD[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var YD=Aa({prefix:"\u{1F680}",name:"base256emoji",encode:WD,decode:jD});var j4={};$(j4,{base32:()=>Ca,base32hex:()=>JD,base32hexpad:()=>tk,base32hexpadupper:()=>rk,base32hexupper:()=>ek,base32pad:()=>XD,base32padupper:()=>ZD,base32upper:()=>QD,base32z:()=>nk});var Ca=ze({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),QD=ze({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),XD=ze({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),ZD=ze({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),JD=ze({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ek=ze({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),tk=ze({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),rk=ze({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),nk=ze({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Y4={};$(Y4,{base36:()=>tu,base36upper:()=>ok});var tu=Bo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),ok=Bo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Q4={};$(Q4,{base58btc:()=>hn,base58flickr:()=>sk});var hn=Bo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),sk=Bo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var X4={};$(X4,{base64:()=>ik,base64pad:()=>ak,base64url:()=>ck,base64urlpad:()=>lk});var ik=ze({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ak=ze({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),ck=ze({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),lk=ze({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Z4={};$(Z4,{base8:()=>uk});var uk=ze({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var J4={};$(J4,{identity:()=>dk});var dk=Aa({prefix:"\0",name:"identity",encode:r=>dx(r),decode:r=>ux(r)});var vie=new TextEncoder,Sie=new TextDecoder;var tg={};$(tg,{identity:()=>Nk});var pk=bx,gx=128,mk=127,gk=~mk,yk=Math.pow(2,31);function bx(r,e,t){e=e||[],t=t||0;for(var n=t;r>=yk;)e[t++]=r&255|gx,r/=128;for(;r&gk;)e[t++]=r&255|gx,r>>>=7;return e[t]=r|0,bx.bytes=t-n+1,e}var bk=eg,wk=128,yx=127;function eg(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw eg.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&yx)<<o:(i&yx)*Math.pow(2,o),o+=7}while(i>=wk);return eg.bytes=s-n,t}var xk=Math.pow(2,7),Ek=Math.pow(2,14),vk=Math.pow(2,21),Sk=Math.pow(2,28),Ak=Math.pow(2,35),Ck=Math.pow(2,42),Ik=Math.pow(2,49),Tk=Math.pow(2,56),_k=Math.pow(2,63),Rk=function(r){return r<xk?1:r<Ek?2:r<vk?3:r<Sk?4:r<Ak?5:r<Ck?6:r<Ik?7:r<Tk?8:r<_k?9:10},Lk={encode:pk,decode:bk,encodingLength:Rk},Pk=Lk,ru=Pk;function nu(r,e=0){return[ru.decode(r,e),ru.decode.bytes]}function Ia(r,e,t=0){return ru.encode(r,e,t),e}function Ta(r){return ru.encodingLength(r)}function Ra(r,e){let t=e.byteLength,n=Ta(r),o=n+Ta(t),s=new Uint8Array(o+t);return Ia(r,s,0),Ia(t,s,n),s.set(e,o),new _a(r,t,e,s)}function wx(r){let e=eo(r),[t,n]=nu(e),[o,s]=nu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new _a(t,o,i,e)}function xx(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&lx(r.bytes,t.bytes)}}var _a=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var Ex=0,Dk="identity",vx=eo;function kk(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Ra(Ex,vx(r))}var Nk={code:Ex,name:Dk,encode:vx,digest:kk};var og={};$(og,{sha256:()=>Mk,sha512:()=>Bk});var Ok=20;function ng({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new rg(r,e,t,n,o)}var rg=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??Ok,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Sx(n,this.code,t?.truncate):n.then(o=>Sx(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function Sx(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Ra(e,r)}function Cx(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Mk=ng({name:"sha2-256",code:18,encode:Cx("SHA-256")}),Bk=ng({name:"sha2-512",code:19,encode:Cx("SHA-512")});function Ix(r,e){let{bytes:t,version:n}=r;return n===0?Fk(t,sg(r),e??hn.encoder):$k(t,sg(r),e??Ca.encoder)}var Tx=new WeakMap;function sg(r){let e=Tx.get(r);if(e==null){let t=new Map;return Tx.set(r,t),t}return e}var j1=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==su)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Vk)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ra(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&xx(e.multihash,n.multihash)}toString(e){return Ix(this,e)}toJSON(){return{"/":Ix(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??_x(n,o,s.bytes))}else if(t[Kk]===!0){let{version:n,multihash:o,code:s}=t,i=wx(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==su)throw new Error(`Version 0 CID must use dag-pb (code: ${su}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=_x(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,su,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=eo(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new _a(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=nu(e.subarray(t));return t+=f,d},o=n(),s=su;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=Uk(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return sg(s).set(n,e),s}};function Uk(r,e){switch(r[0]){case"Q":{let t=e??hn;return[hn.prefix,t.decode(`${hn.prefix}${r}`)]}case hn.prefix:{let t=e??hn;return[hn.prefix,t.decode(r)]}case Ca.prefix:{let t=e??Ca;return[Ca.prefix,t.decode(r)]}case tu.prefix:{let t=e??tu;return[tu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Fk(r,e,t){let{prefix:n}=t;if(n!==hn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function $k(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var su=112,Vk=18;function _x(r,e,t){let n=Ta(r),o=n+Ta(e),s=new Uint8Array(o+t.byteLength);return Ia(r,s,0),Ia(e,s,n),s.set(t,o),s}var Kk=Symbol.for("@ipld/js-cid/CID");var ig={...J4,...G4,...Z4,...H4,...z4,...j4,...Y4,...Q4,...X4,...W4},zie={...og,...tg};function Lx(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Rx=Lx("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),ag=Lx("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Pt(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),qk={utf8:Rx,"utf-8":Rx,hex:ig.base16,latin1:ag,ascii:ag,binary:ag,...ig},Y1=qk;function pn(r,e="utf8"){let t=Y1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function cg(r,e){!e.enabled||!ba||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${pn(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${pn(r.privateKey,"hex")}`)):e("Missing local static keys."))}function lg(r,e){!e.enabled||!ba||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${pn(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${pn(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Px(r,e){!e.enabled||!ba||e(r?`REMOTE_STATIC_PUBLIC_KEY ${pn(r.subarray(),"hex")}`:"Missing remote static public key.")}function ug(r,e){!e.enabled||!ba||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${pn(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function dg(r,e,t){!t.enabled||!ba||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&pn(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&pn(e.k,"hex")}`))}function La(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=Pt(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}function fg(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var kx=Symbol.for("@achingbrain/uint8arraylist");function Dx(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function Q1(r){return!!r?.[kx]}var mn=class r{bufs;length;[kx]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Q1(n)){t+=n.byteLength;for(let o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Q1(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Dx(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Dx(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Q1(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return La(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:La(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=n,s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let d=e-a;n.push(i.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Q1(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let d=0;d<s;d++)i[d]=-1;for(let d=0;d<o;d++)i[n[d]]=d;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let f=l;f>=0;f--){let h=this.get(d+f);if(n[f]!==h){u=Math.max(1,f-a[h]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Pt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ot(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ot(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ot(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Pt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ot(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ot(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ot(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ot(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ot(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!fg(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};function si(r,e="utf8"){let t=Y1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var Pa=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var zk=0,Gk=4294967295,Wk="Cipherstate has reached maximum n, a new handshake must be performed",X1=class{n;bytes;view;constructor(e=zk){this.n=e,this.bytes=ot(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>Gk)throw new Error(Wk)}};var ii=ot(0),Da=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new X1(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},hg=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=si(t,"utf-8");this.h=jk(e,n),this.ck=this.h,this.cs=new Da(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Da(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new mn(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,ii);return[new Da(this.crypto,e),new Da(this.crypto,t)]}},pg=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new hg(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},iu=class extends pg{writeMessageA(e){return new mn(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new mn(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new mn(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Pa(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new Pa(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new Pa(`handshake stage 2 validation fail: ${t.message}`)}}};function jk(r,e){if(e.length<=32){let t=ot(32);return t.set(e),t}else return r.hash(e)}var Yk=Math.pow(2,7),Qk=Math.pow(2,14),Xk=Math.pow(2,21),Nx=Math.pow(2,28),Ox=Math.pow(2,35),Mx=Math.pow(2,42),Bx=Math.pow(2,49),Kt=128,Uo=127;function au(r){if(r<Yk)return 1;if(r<Qk)return 2;if(r<Xk)return 3;if(r<Nx)return 4;if(r<Ox)return 5;if(r<Mx)return 6;if(r<Bx)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ux(r,e,t=0){switch(au(r)){case 8:e[t++]=r&255|Kt,r/=128;case 7:e[t++]=r&255|Kt,r/=128;case 6:e[t++]=r&255|Kt,r/=128;case 5:e[t++]=r&255|Kt,r/=128;case 4:e[t++]=r&255|Kt,r>>>=7;case 3:e[t++]=r&255|Kt,r>>>=7;case 2:e[t++]=r&255|Kt,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Fx(r,e){let t=r[e],n=0;if(n+=t&Uo,t<Kt||(t=r[e+1],n+=(t&Uo)<<7,t<Kt)||(t=r[e+2],n+=(t&Uo)<<14,t<Kt)||(t=r[e+3],n+=(t&Uo)<<21,t<Kt)||(t=r[e+4],n+=(t&Uo)*Nx,t<Kt)||(t=r[e+5],n+=(t&Uo)*Ox,t<Kt)||(t=r[e+6],n+=(t&Uo)*Mx,t<Kt)||(t=r[e+7],n+=(t&Uo)*Bx,t<Kt))return n;throw new RangeError("Could not decode varint")}var mg=new Float32Array([-0]),Fo=new Uint8Array(mg.buffer);function $x(r,e,t){mg[0]=r,e[t]=Fo[0],e[t+1]=Fo[1],e[t+2]=Fo[2],e[t+3]=Fo[3]}function Vx(r,e){return Fo[0]=r[e],Fo[1]=r[e+1],Fo[2]=r[e+2],Fo[3]=r[e+3],mg[0]}var gg=new Float64Array([-0]),Dt=new Uint8Array(gg.buffer);function Kx(r,e,t){gg[0]=r,e[t]=Dt[0],e[t+1]=Dt[1],e[t+2]=Dt[2],e[t+3]=Dt[3],e[t+4]=Dt[4],e[t+5]=Dt[5],e[t+6]=Dt[6],e[t+7]=Dt[7]}function qx(r,e){return Dt[0]=r[e],Dt[1]=r[e+1],Dt[2]=r[e+2],Dt[3]=r[e+3],Dt[4]=r[e+4],Dt[5]=r[e+5],Dt[6]=r[e+6],Dt[7]=r[e+7],gg[0]}var Zk=BigInt(Number.MAX_SAFE_INTEGER),Jk=BigInt(Number.MIN_SAFE_INTEGER),fr=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ai;if(e<Zk&&e>Jk)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>Hx&&(o=0n,++n>Hx&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return ai;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):ai}},ai=new fr(0,0);ai.toBigInt=function(){return 0n};ai.zzEncode=ai.zzDecode=function(){return this};ai.length=function(){return 1};var Hx=4294967296n;function zx(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Gx(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function yg(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function qr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Z1(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var bg=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,qr(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw qr(this,4);return Z1(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw qr(this,4);return Z1(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw qr(this,4);let e=Vx(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw qr(this,4);let e=qx(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw qr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Gx(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw qr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw qr(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new fr(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw qr(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw qr(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw qr(this,8);let e=Z1(this.buf,this.pos+=4),t=Z1(this.buf,this.pos+=4);return new fr(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Fx(this.buf,this.pos);return this.pos+=au(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function wg(r){return new bg(r instanceof Uint8Array?r:r.subarray())}function J1(r,e,t){let n=wg(r);return e.decode(n,void 0,t)}function xg(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return Pt(i);o+i>e&&(n=Pt(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var ci=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Eg(){}var Sg=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},eN=xg();function tN(r){return globalThis.Buffer!=null?Pt(r):eN(r)}var lu=class{len;head;tail;states;constructor(){this.len=0,this.head=new ci(Eg,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ci(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Ag((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(e0,10,fr.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=fr.fromBigInt(e);return this._push(e0,t.length(),t)}uint64Number(e){return this._push(Ux,au(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=fr.fromBigInt(e).zzEncode();return this._push(e0,t.length(),t)}sint64Number(e){let t=fr.fromNumber(e).zzEncode();return this._push(e0,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(vg,1,e?1:0)}fixed32(e){return this._push(cu,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=fr.fromBigInt(e);return this._push(cu,4,t.lo)._push(cu,4,t.hi)}fixed64Number(e){let t=fr.fromNumber(e);return this._push(cu,4,t.lo)._push(cu,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push($x,4,e)}double(e){return this._push(Kx,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(vg,1,0):this.uint32(t)._push(nN,t,e)}string(e){let t=zx(e);return t!==0?this.uint32(t)._push(yg,t,e):this._push(vg,1,0)}fork(){return this.states=new Sg(this),this.head=this.tail=new ci(Eg,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 ci(Eg,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=tN(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function vg(r,e,t){e[t]=r&255}function rN(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Ag=class extends ci{next;constructor(e,t){super(rN,e,t),this.next=void 0}};function e0(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function cu(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function nN(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(lu.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(oN,e,r),this},lu.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(sN,e,r),this});function oN(r,e,t){e.set(r,t)}function sN(r,e,t){r.length<40?yg(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(si(r),t)}function Cg(){return new lu}function t0(r,e){let t=Cg();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var uu;(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"})(uu||(uu={}));function Ig(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function r0(r,e){return Ig("message",uu.LENGTH_DELIMITED,r,e)}var du=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var n0;(function(r){let e;r.codec=()=>(e==null&&(e=r0((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);if(t.streamMuxers!=null)for(let s of t.streamMuxers)n.uint32(18),n.string(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={webtransportCerthashes:[],streamMuxers:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new du('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(t.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new du('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(t.string());break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>t0(t,r.codec()),r.decode=(t,n)=>J1(t,r.codec(),n)})(n0||(n0={}));var fu;(function(r){let e;r.codec=()=>(e==null&&(e=r0((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),n0.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={identityKey:ot(0),identitySig:ot(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.identityKey=t.bytes();break}case 2:{s.identitySig=t.bytes();break}case 4:{s.extensions=n0.codec().decode(t,t.uint32(),{limits:o.limits?.extensions});break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>t0(t,r.codec()),r.decode=(t,n)=>J1(t,r.codec(),n)})(fu||(fu={}));async function _g(r,e,t){let n=await r.sign(Yx(e));return fu.encode({identityKey:ct(r.publicKey),identitySig:n,extensions:t})}async function Rg(r,e,t){try{let n=fu.decode(r),o=nt(n.identityKey);if(t?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${t}`);if(!e)throw new Error("Remote static does not exist");let s=Yx(e);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new fd(n.message)}}function Yx(r){let e=si("noise-libp2p-static-key:");return r instanceof Uint8Array?La([e,r],e.length+r.length):(r.prepend(e),r)}var Tg=class extends To{stream;handshake;metrics;decoder;constructor(e,t,n){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=t,this.metrics=n,this.decoder=new Pf({lengthDecoder:Sa,maxBufferSize:16*1024*1024,encodingLength:()=>2});let o=c=>{try{for(let l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);let s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);let i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);let a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){let t=new mn;for(let n=0;n<e.byteLength;n+=65519){let o=n+65519;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(n,o)):s=this.handshake.encrypt(e.sublist(n,o)),this.metrics?.encryptedPackets.increment(),t.append(va(s.byteLength)),t.append(s)}return t}decrypt(e){let t=new mn;for(let n=0;n<e.byteLength;n+=65535){let o=n+65535;if(o>e.byteLength&&(o=e.byteLength),o-k4<n)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(n,o):s=e.sublist(n,o);let i=e.subarray(n,o-k4);try{let a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),t.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return t}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}};function Lg(r,e,t){return new Tg(r,e,t)}async function Qx(r,e){let{log:t,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await _g(s,a.publicKey,l),d=new iu({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});cg(d.s,t),t.trace("Stage 0 - Initiator starting to send first message."),await n.write(d.writeMessageA(ii),e),t.trace("Stage 0 - Initiator finished sending first message."),lg(d.e,t),t.trace("Stage 1 - Initiator waiting to receive first message from responder...");let f=d.readMessageB(await n.read(e));t.trace("Stage 1 - Initiator received the message."),ug(d.re,t),Px(d.rs,t),t.trace("Initiator going to check remote's signature...");let h=await Rg(f,d.rs,c);t.trace("All good with the signature!"),t.trace("Stage 2 - Initiator sending third handshake message."),await n.write(d.writeMessageC(u),e),t.trace("Stage 2 - Initiator sent message with signed payload.");let[p,y]=d.ss.split();return dg(p,y,t),{payload:h,encrypt:g=>p.encryptWithAd(ii,g),decrypt:(g,m)=>y.decryptWithAd(ii,g,m)}}async function Xx(r,e){let{log:t,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await _g(s,a.publicKey,l),d=new iu({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});cg(d.s,t),t.trace("Stage 0 - Responder waiting to receive first message."),d.readMessageA(await n.read(e)),t.trace("Stage 0 - Responder received first message."),ug(d.re,t),t.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(d.writeMessageB(u),e),t.trace("Stage 1 - Responder sent the second handshake message with signed payload."),lg(d.e,t),t.trace("Stage 2 - Responder waiting for third handshake message...");let f=d.readMessageC(await n.read(e));t.trace("Stage 2 - Responder received the message, finished handshake.");let h=await Rg(f,d.rs,c),[p,y]=d.ss.split();return dg(p,y,t),{payload:h,encrypt:g=>y.encryptWithAd(ii,g),decrypt:(g,m)=>p.decryptWithAd(ii,g,m)}}var o0=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");let c=s??ix;this.crypto=ax(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?cx(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??ot(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[ue]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,t){let n=e.log?.newScope("noise")??this.log,o=Po(e,{lengthEncoder:va,lengthDecoder:Sa,maxDataLength:65535}),s=await this.performHandshakeInitiator(o,this.components.privateKey,n,t?.remotePeer?.publicKey,t),i=nt(s.payload.identityKey);return{connection:Lg(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:rn(i),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;let t=this.components.upgrader.getStreamMuxers();if(t!=null)for(let n of e){let o=t.get(n);if(o!=null)return o}if(e.length)throw new hd("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,t){let n=e.log?.newScope("noise")??this.log,o=Po(e,{lengthEncoder:va,lengthDecoder:Sa,maxDataLength:65535}),s=await this.performHandshakeResponder(o,this.components.privateKey,n,t?.remotePeer?.publicKey,t),i=nt(s.payload.identityKey);return{connection:Lg(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:rn(i),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,t,n,o,s){let i,a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Qx({connection:e,privateKey:t,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,t,n,o,s){let i,a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Xx({connection:e,privateKey:t,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}};function s0(r={}){return e=>new o0(e,r)}function to(r=0){return new Uint8Array(r)}function pu(r=0){return new Uint8Array(r)}function Pg(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=pu(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}function Zx(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var eE=Symbol.for("@achingbrain/uint8arraylist");function Jx(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function i0(r){return!!r?.[eE]}var ka=class r{bufs;length;[eE]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(i0(n)){t+=n.byteLength;for(let o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(i0(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Jx(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Jx(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(i0(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Pg(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Pg(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=n,s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let d=e-a;n.push(i.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!i0(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let d=0;d<s;d++)i[d]=-1;for(let d=0;d<o;d++)i[n[d]]=d;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let f=l;f>=0;f--){let h=this.get(d+f);if(n[f]!==h){u=Math.max(1,f-a[h]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=pu(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=to(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=to(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=to(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=pu(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=to(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=to(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=to(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=to(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=to(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Zx(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var $e;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})($e||($e={}));var be;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(be||(be={}));var sle=Object.values(be).filter(r=>typeof r!="string"),tE=0,it;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(it||(it={}));var gn=12;var ro=class extends Error{static name="ProtocolError";reason;constructor(e,t){super(e),this.name="ProtocolError",this.reason=t}};function rE(r){return r?.reason!==null}var hr=class extends ro{static name="InvalidFrameError";constructor(e="The frame was invalid"){super(e,it.ProtocolError),this.name="InvalidFrameError"}},Na=class extends ro{static name="UnRequestedPingError";constructor(e="Un-requested ping error"){super(e,it.ProtocolError),this.name="UnRequestedPingError"}},Oa=class extends ro{static name="NotMatchingPingError";constructor(e="Not matching ping error"){super(e,it.ProtocolError),this.name="NotMatchingPingError"}};var a0=class extends ro{static name="StreamAlreadyExistsError";constructor(e="Stream already exists"){super(e,it.ProtocolError),this.name="StreamAlreadyExistsError"}},c0=class extends ro{static name="DecodeInvalidVersionError";constructor(e="Decode invalid version"){super(e,it.ProtocolError),this.name="DecodeInvalidVersionError"}},l0=class extends ro{static name="BothClientsError";constructor(e="Both clients"){super(e,it.ProtocolError),this.name="BothClientsError"}},Ma=class extends ro{static name="ReceiveWindowExceededError";constructor(e="Receive window exceeded"){super(e,it.ProtocolError),this.name="ReceiveWindowExceededError"}};var ule=new Set([hr.name,Na.name,Oa.name,a0.name,c0.name,l0.name,Ma.name]),mu=256*1024,u0=16*1024*1024;var gu={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,maxMessageSize:64*1024,maxEarlyStreams:10,streamOptions:{initialStreamWindowSize:mu,maxStreamWindowSize:u0,inactivityTimeout:12e4,maxReadBufferLength:4194304,maxWriteBufferLength:1/0}};function nE(r){if(r.keepAliveInterval!=null&&r.keepAliveInterval<=0)throw new C("keep-alive interval must be positive");if(r.maxInboundStreams!=null&&r.maxInboundStreams<0)throw new C("max inbound streams must be larger or equal 0");if(r.maxOutboundStreams!=null&&r.maxOutboundStreams<0)throw new C("max outbound streams must be larger or equal 0");if(r.maxMessageSize!=null&&r.maxMessageSize<1024)throw new C("MaxMessageSize must be greater than a kilobyte");if(r.streamOptions?.initialStreamWindowSize!=null&&r.streamOptions?.initialStreamWindowSize<mu)throw new C("InitialStreamWindowSize must be larger or equal 256 kB");if(r.streamOptions?.maxStreamWindowSize!=null&&r.streamOptions?.initialStreamWindowSize!=null&&r.streamOptions?.maxStreamWindowSize<r.streamOptions?.initialStreamWindowSize)throw new C("MaxStreamWindowSize must be larger than the InitialStreamWindowSize");if(r.streamOptions?.maxStreamWindowSize!=null&&r.streamOptions?.maxStreamWindowSize>2**32-1)throw new C("MaxStreamWindowSize must be less than equal MAX_UINT32")}function sE(r){return r.header.type===$e.Data&&r.data!==null}var oE=2**24;function iN(r){if(r[0]!==tE)throw new hr("Invalid frame version");return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*oE+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*oE+(r[9]<<16)+(r[10]<<8)+r[11]}}var d0=class{buffer;constructor(){this.buffer=new ka}*emitFrames(e){for(this.buffer.append(e);;){let t=this.readFrame();if(t===void 0)break;yield t}}readFrame(){let e=gn;if(this.buffer.byteLength<gn)return;let t=iN(this.buffer.subarray(0,gn));if(t.type===$e.Data){if(e+=t.length,this.buffer.byteLength<e)return;let n=this.buffer.sublist(gn,e);return this.buffer.consume(e),{header:t,data:n}}return this.buffer.consume(e),{header:t}}};function Dg(r){let e=new Uint8Array(gn);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}var qt;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished",r[r.Paused=5]="Paused"})(qt||(qt={}));var f0=class extends Lo{streamId;state;sendWindowCapacity;recvWindow;recvWindowCapacity;maxStreamWindowSize;epochStart;getRTT;sendFrame;constructor(e){let t=e.initialStreamWindowSize??mu;super({...e,maxMessageSize:t-gn}),this.streamId=e.streamId,this.state=e.state,this.sendWindowCapacity=t,this.recvWindow=t,this.recvWindowCapacity=this.recvWindow,this.maxStreamWindowSize=e.maxStreamWindowSize??u0,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame;let n=()=>{this.state=qt.Finished};this.addEventListener("close",n)}sendData(e){let t=e.byteLength,n=0,o=!0;for(this.log?.trace("send window capacity is %d bytes",this.sendWindowCapacity);e.byteLength>0;){if(this.sendWindowCapacity===0){o=!1,this.log?.trace("sent %d/%d bytes, exhausted send window, waiting for window update",n,t);break}let s=Math.min(this.sendWindowCapacity,e.byteLength),i=this.getSendFlags(),a=e.sublist(0,s);e.consume(s);let c=this.sendFrame({type:$e.Data,flag:i,streamID:this.streamId,length:s},a);if(this.sendWindowCapacity-=s,n+=s,!c){o=c,this.log.trace("sent %d/%d bytes, wait for muxer to have more send capacity",n,t);break}}return{sentBytes:n,canSendMore:o}}sendReset(){this.sendFrame({type:$e.WindowUpdate,flag:be.RST,streamID:this.streamId,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|be.FIN;this.sendFrame({type:$e.WindowUpdate,flag:e,streamID:this.streamId,length:0})}async sendCloseRead(e){e?.signal?.throwIfAborted()}sendPause(){this.state=qt.Paused}sendResume(){this.state=qt.Established,this.sendWindowUpdate()}handleWindowUpdate(e){this.processFlags(e.header.flag),this.sendWindowCapacity+=e.header.length,this.maxMessageSize=this.sendWindowCapacity-gn,this.maxMessageSize<0&&(this.maxMessageSize=0),this.maxMessageSize!==0&&this.writeBuffer.byteLength>0&&(this.log?.trace("window update of %d bytes allows more data to be sent, have %d bytes queued, sending data %s",e.header.length,this.writeBuffer.byteLength,this.sendingData),this.safeDispatchEvent("drain"))}handleData(e){if(!sE(e))throw new hr("Frame was not data frame");if(this.processFlags(e.header.flag),this.recvWindowCapacity<e.header.length)throw new Ma("Receive window exceeded");this.recvWindowCapacity-=e.header.length,this.onData(e.data),this.sendWindowUpdate()}processFlags(e){(e&be.ACK)===be.ACK&&this.state===qt.SYNSent&&(this.state=qt.Established),(e&be.FIN)===be.FIN&&this.onRemoteCloseWrite(),(e&be.RST)===be.RST&&this.onRemoteReset()}getSendFlags(){switch(this.state){case qt.Init:return this.state=qt.SYNSent,be.SYN;case qt.SYNReceived:return this.state=qt.Established,be.ACK;default:return 0}}sendWindowUpdate(){if(this.state===qt.Paused){this.epochStart=Date.now();return}let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<=n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:$e.WindowUpdate,flag:e,streamID:this.streamId,length:o})}};function iE(r){return{type:$e[r.type],flags:[(r.flag&be.SYN)===be.SYN?"SYN":void 0,(r.flag&be.ACK)===be.ACK?"ACK":void 0,(r.flag&be.FIN)===be.FIN?"FIN":void 0,(r.flag&be.RST)===be.RST?"RST":void 0].filter(Boolean),streamID:r.streamID,length:r.length}}var aE="/yamux/1.0.0",h0=class{protocol=aE;_init;constructor(e={}){this._init=e}[Symbol.toStringTag]="@chainsafe/libp2p-yamux";[ue]=["@libp2p/stream-multiplexing"];createStreamMuxer(e){return new kg(e,{...this._init})}},kg=class extends Ro{nextStreamID;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;decoder;keepAlive;enableKeepAlive;keepAliveInterval;maxInboundStreams;maxOutboundStreams;constructor(e,t={}){super(e,{...t,protocol:aE,name:"yamux"}),this.client=e.direction==="outbound",nE(t),this.enableKeepAlive=t.enableKeepAlive??gu.enableKeepAlive,this.keepAliveInterval=t.keepAliveInterval??gu.keepAliveInterval,this.maxInboundStreams=t.maxInboundStreams??gu.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??gu.maxOutboundStreams,this.decoder=new d0,this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log.trace("muxer created"),this.enableKeepAlive&&(this.log.trace("muxer keepalive enabled interval=%s",this.keepAliveInterval),this.keepAlive=ia(async n=>{try{await this.ping(n)}catch(o){this.log.error("ping error: %s",o)}},this.keepAliveInterval,{runImmediately:!0}),this.keepAlive.start())}onData(e){for(let t of this.decoder.emitFrames(e))this.handleFrame(t)}onCreateStream(){if(this.remoteGoAway!==void 0)throw new Sr("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Sr("Muxer closed locally");let e=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.maxOutboundStreams)throw new xi("max outbound streams exceeded");this.log.trace("new outgoing stream id=%s",e);let t=this._newStream(e,qt.Init,"outbound");return this.numOutboundStreams++,queueMicrotask(()=>{t.sendWindowUpdate()}),t}async ping(e){if(this.remoteGoAway!==void 0)throw new Sr("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Sr("Muxer closed locally");if(this.activePing!=null)return De(this.activePing.promise,e?.signal);this.activePing=Object.assign(Promise.withResolvers(),{id:this.nextPingID++,start:Date.now()}),this.sendPing(this.activePing.id);try{this.rtt=await De(this.activePing.promise,e?.signal)}finally{this.activePing=void 0}return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.status==="open")try{let t=e?.reason??it.NormalTermination;this.log.trace("muxer close reason=%s",it[t]),await super.close(e),this.sendGoAway(t)}finally{this.keepAlive?.stop()}}abort(e){if(this.status==="open")try{super.abort(e);let t=it.InternalError;rE(e)&&(t=e.reason),this.log.error("muxer abort reason=%s error=%s",t,e),this.sendGoAway(t)}finally{this.keepAlive?.stop()}}onTransportClosed(){try{super.onTransportClosed()}finally{this.keepAlive?.stop()}}_newStream(e,t,n){if(this.streams.find(s=>s.streamId===e)!=null)throw new C("Stream already exists with that id");let o=new f0({...this.streamOptions,id:`${e}`,streamId:e,state:t,direction:n,sendFrame:this.sendFrame.bind(this),log:this.log.newScope(`${n}:${e}`),getRTT:this.getRTT.bind(this)});return o.addEventListener("close",()=>{this.closeStream(e)},{once:!0}),o}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--}handleFrame(e){let{streamID:t,type:n,length:o}=e.header;if(this.log.trace("received frame %o",iE(e.header)),t===0)switch(n){case $e.Ping:{this.handlePing(e.header);return}case $e.GoAway:{this.handleGoAway(o);return}default:throw new hr("Invalid frame type")}else switch(e.header.type){case $e.Data:case $e.WindowUpdate:{this.handleStreamMessage(e);return}default:throw new hr("Invalid frame type")}}handlePing(e){if(e.flag===be.SYN)this.log.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,be.ACK);else if(e.flag===be.ACK)this.log.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new hr("Invalid frame flag")}handlePingResponse(e){if(this.activePing===void 0)throw new Na("ping not requested");if(this.activePing.id!==e)throw new Oa("ping doesn't match our id");this.activePing.resolve(Date.now()-this.activePing.start)}handleGoAway(e){this.log.trace("received GoAway reason=%s",it[e]??"unknown"),this.remoteGoAway=e,e===it.NormalTermination?this.onTransportClosed():this.abort(new Error("Remote sent GoAway"))}handleStreamMessage(e){let{streamID:t,flag:n,type:o}=e.header;(n&be.SYN)===be.SYN&&this.incomingStream(t);let s=this.streams.find(i=>i.streamId===t);if(s===void 0){this.log.trace("frame for missing stream id=%s",t);return}switch(o){case $e.WindowUpdate:{s.handleWindowUpdate(e);return}case $e.Data:{s.handleData(e);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new C("Both endpoints are clients");if(this.streams.find(n=>n.streamId===e))return;if(this.log.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:$e.WindowUpdate,flag:be.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.maxInboundStreams){this.log("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:$e.WindowUpdate,flag:be.RST,streamID:e,length:0});return}let t=this._newStream(e,qt.SYNReceived,"inbound");this.numInboundStreams++,this.onRemoteStream(t)}sendFrame(e,t){let n;if(e.type===$e.Data){if(t==null)throw new hr("Invalid frame");n=new ka(Dg(e),t)}else n=Dg(e);return this.log.trace("sending frame %o",iE(e)),this.send(n)}sendPing(e,t=be.SYN){t===be.SYN?this.log.trace("sending ping request pingId=%s",e):this.log.trace("sending ping response pingId=%s",e),this.sendFrame({type:$e.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=it.NormalTermination){this.log("sending GoAway reason=%s",it[e]),this.localGoAway=e,this.sendFrame({type:$e.GoAway,flag:0,streamID:0,length:e})}};function cE(r={}){return()=>new h0(r)}async function*yu(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var p0=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MESSAGE_LENGTH"};async function*Ba(r,e={}){let t=/\r?\n/,n=new TextDecoder("utf8"),o="";for await(let s of r){if(typeof s=="string"&&(s=new TextEncoder().encode(s)),Ai(s)&&(s=s.subarray()),o+=n.decode(s,{stream:!0}),o.length>(e?.maxMessageLength??o.length))throw new p0("Incoming message too long");let i=o.split(t);o=i.pop()??"";for(let a=0;a<i.length;a++)yield JSON.parse(i[a])}o+=n.decode(),o!==""&&(yield JSON.parse(o))}var li=class extends Error{static name="InvalidRequestError";constructor(e="Invalid request"){super(e),this.name="InvalidRequestError"}},wr=class extends Error{static name="BadResponseError";constructor(e="Bad response"){super(e),this.name="BadResponseError"}};var m0={concurrentRequests:4,timeout:3e4,cacheTTL:300*1e3,cacheName:"delegated-routing-v1-cache"},g0=class{url;started;httpQueue;shutDownController;timeout;filterAddrs;filterProtocols;inFlightRequests;cacheName;cache;cacheTTL;log;constructor(e,t){this.log=e.logger.forComponent("delegated-routing-v1-http-api-client"),this.started=!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.httpQueue=new jt({concurrency:t.concurrentRequests??m0.concurrentRequests}),this.inFlightRequests=new Map,this.url=t.url instanceof URL?t.url:new URL(t.url),this.timeout=t.timeout??m0.timeout,this.filterAddrs=t.filterAddrs,this.filterProtocols=t.filterProtocols,this.cacheName=t.cacheName??m0.cacheName,this.cacheTTL=t.cacheTTL??m0.cacheTTL}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cacheTTL>0&&(this.cache=await globalThis.caches?.open(this.cacheName),this.cache!=null&&this.log("cache enabled with ttl %d",this.cacheTTL)))}async stop(){this.httpQueue.clear(),this.shutDownController.abort(),await globalThis.caches?.delete(this.cacheName),this.started=!1}async*getProviders(e,t={}){this.log("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=me([this.shutDownController.signal,n,t.signal]);let s=Promise.withResolvers(),i=Promise.withResolvers(),a=0;this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let c=new URL(`${this.url}routing/v1/providers/${e}`);this.#t(c,t.filterAddrs,t.filterProtocols);let l=await this.#r(c.toString(),{headers:{accept:"application/x-ndjson, application/json;q=0.8"},signal:o});if(!l.ok){if(l.status===404)return;throw l.status===422?new li("Request does not conform to schema or semantic constraints"):new wr(`Unexpected status code: ${l.status}`)}let u=l.headers.get("Content-Type");if(u==null)throw new wr("No Content-Type header received");if(l.body==null){if(u!=="application/x-ndjson")throw new wr("Routing response had no body");return}if(u.startsWith("application/json")){let f=(await l.json()).Providers??[];for(let h of f){let p=this.#e(h);p!=null&&(a++,yield p)}}else if(u.includes("application/x-ndjson"))for await(let d of Ba(yu(l.body))){let f=this.#e(d);f!=null&&(a++,yield f)}else throw new wr(`Unsupported Content-Type: ${u}`)}finally{o.clear(),i.resolve(),this.log("getProviders finished found %d providers for %c",a,e)}}async*getPeers(e,t={}){this.log("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=me([this.shutDownController.signal,n,t.signal]);let s=Promise.withResolvers(),i=Promise.withResolvers();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=new URL(`${this.url}routing/v1/peers/${e}`);this.#t(a,t.filterAddrs,t.filterProtocols);let c=await this.#r(a.toString(),{headers:{Accept:"application/x-ndjson"},signal:o});if(c.status===404)return;if(c.status===422)throw new li("Request does not conform to schema or semantic constraints");if(c.body==null)throw new wr("Routing response had no body");if(c.headers.get("Content-Type")?.startsWith("application/json")){let d=(await c.json()).Peers??[];for(let f of d){let h=this.#e(f);h!=null&&(yield h)}}else for await(let u of Ba(yu(c.body))){let d=this.#e(u);d!=null&&(yield d)}}catch(a){this.log.error("getPeers errored - %e",a)}finally{o.clear(),i.resolve(),this.log("getPeers finished: %c",e)}}async*getClosestPeers(e,t={}){let n;if(ie.asCID(e)===e||e instanceof ie)n=e.toV1().toString();else throw new C("Key must be CID");this.log("getClosestPeers starts: %s",n);let o=AbortSignal.timeout(this.timeout),s=me([this.shutDownController.signal,o,t.signal]);let i=Promise.withResolvers(),a=Promise.withResolvers();this.httpQueue.add(async()=>(i.resolve(),a.promise));try{await i.promise;let c=new URL(`${this.url}routing/v1/dht/closest/peers/${n}`);this.#t(c,t.filterAddrs,t.filterProtocols);let l=await this.#r(c.toString(),{headers:{Accept:"application/x-ndjson"},signal:s});if(l.status===404)return;if(l.status===422)throw new li("Request does not conform to schema or semantic constraints");if(l.body==null)throw new wr("Routing response had no body");if(l.headers.get("Content-Type")?.startsWith("application/json")){let f=(await l.json()).Peers??[];for(let h of f){let p=this.#e(h);p!=null&&(yield p)}}else for await(let d of Ba(yu(l.body))){let f=this.#e(d);f!=null&&(yield f)}}catch(c){this.log.error("getClosestPeers errored - %e",c)}finally{s.clear(),a.resolve(),this.log("getClosestPeers finished: %s",n)}}async getIPNS(e,t={}){this.log("getIPNS starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=me([this.shutDownController.signal,n,t.signal]);let s=Promise.withResolvers(),i=Promise.withResolvers();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.url}routing/v1/ipns/${e}`;try{await s.promise;let c=await this.#r(a,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o});if(this.log("getIPNS GET %s %d",a,c.status),c.status===404)throw new Pe("No matching records found");if(c.status===422)throw new li("Request does not conform to schema or semantic constraints");if(!c.ok)throw new wr(`Unexpected status code: ${c.status}`);let l=c.headers.get("Content-Type");if(l==null||!l.includes("application/vnd.ipfs.ipns-record"))throw new Pe("No matching records found");if(c.body==null)throw new wr("GET ipns response had no body");let u=await c.arrayBuffer();return new Uint8Array(u,0,u.byteLength)}catch(c){throw this.log.error("getIPNS GET %s error - %e",a,c),c}finally{o.clear(),i.resolve(),this.log("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){this.log("putIPNS starts: %c",e);let o=AbortSignal.timeout(this.timeout),s=me([this.shutDownController.signal,o,n.signal]);let i=Promise.withResolvers(),a=Promise.withResolvers();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.url}routing/v1/ipns/${e}`;try{await i.promise;let l=await this.#r(c,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:ae(t),signal:s});if(this.log("putIPNS PUT %s %d",c,l.status),l.status!==200)throw new wr("PUT ipns response had status other than 200")}catch(l){throw this.log.error("putIPNS PUT %s error - %e",c,l.stack),l}finally{s.clear(),a.resolve(),this.log("putIPNS finished: %c",e)}}#e(e){try{let t=[],n=e.Addrs?.map(V)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:ie.createV1(114,aN(e.ID)),Addrs:n,Protocols:t}}catch(t){this.log.error("could not conform record to peer schema - %e",t)}}#t(e,t,n){if(t!=null||this.filterAddrs!=null){let o=t?.join(",")??this.filterAddrs?.join(",")??"";o!==""&&e.searchParams.set("filter-addrs",o)}if(n!=null||this.filterProtocols!=null){let o=n?.join(",")??this.filterProtocols?.join(",")??"";o!==""&&e.searchParams.set("filter-protocols",o)}}async#r(e,t){let n=t.method??"GET",o=`${n}-${e}`;if(n==="GET"){let c=await this.cache?.match(e);if(c!=null){if(parseInt(c.headers.get("x-cache-expires")??"0",10)>Date.now())return this.log("returning cached response for %s",o),this.logResponse(c),c;this.log("evicting cached response for %s",o),await this.cache?.delete(e)}else this.cache!=null&&this.log("cache miss for %s",o)}let s=this.inFlightRequests.get(o);if(s!=null){let c=await s;return this.log("deduplicating outgoing request for %s",o),c.clone()}this.log("outgoing request:"),this.logRequest(e,t);let i=fetch(e,t).then(async c=>{if(this.log("incoming response:"),this.logResponse(c),this.cache!=null&&c.ok&&n==="GET"){let l=Date.now()+this.cacheTTL,u=new Headers(c.headers);u.set("x-cache-expires",l.toString());let d=new Response(c.clone().body,{status:c.status,statusText:c.statusText,headers:u});await this.cache.put(e,d)}return c}).finally(()=>{this.inFlightRequests.delete(o)});return this.inFlightRequests.set(o,i),await i}toString(){return`DefaultDelegatedRoutingV1HttpApiClient(${this.url})`}logRequest(e,t){let n=new Headers(t.headers);this.log("%s %s HTTP/1.1",t.method??"GET",e);for(let[o,s]of n.entries())this.log("%s: %s",o,s)}logResponse(e){this.log("HTTP/1.1 %d %s",e.status,e.statusText);for(let[t,n]of e.headers.entries())this.log("%s: %s",t,n)}};function aN(r){let e=Ee.baseDecode(r);return ve(e)}function cN(r){return r[Symbol.asyncIterator]!=null}function lN(r){if(cN(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var lE=lN;var y0=O("/ipns/");function uE(r){return Z(r.subarray(0,y0.byteLength),y0)}var b0=class{client;constructor(e){this.client=e}get[is](){return this}async start(){await this.client.start()}async stop(){await this.client.stop()}async*findProviders(e,t={}){try{yield*Vr(this.client.getProviders(e,t),n=>({id:Mt(n.ID),multiaddrs:n.Addrs??[],routing:"delegated-http-routing-v1"}))}catch(n){if(n instanceof Pe)return;throw n}}async provide(){}async cancelReprovide(){}async put(e,t,n){if(!uE(e))return;let o=ve(e.slice(y0.length)),s=ie.createV1(114,o);await this.client.putIPNS(s,t,n)}async get(e,t){if(!uE(e))throw new Pe("Not found");let n=ve(e.slice(y0.length)),o=ie.createV1(114,n);try{return await this.client.getIPNS(o,t)}catch(s){throw s.name==="BadResponseError"?new Pe("Not found"):s}}toString(){return`DelegatedRoutingV1HttpApiClientContentRouting(${this.client.url})`}},w0=class{client;constructor(e){this.client=e}get[ds](){return this}async start(){await this.client.start()}async stop(){await this.client.stop()}async findPeer(e,t={}){let n=await lE(this.client.getPeers(e.toCID(),t));if(n!=null)return{id:Mt(n.ID),multiaddrs:n.Addrs??[]};throw new Pe("Not found")}async*getClosestPeers(e,t={}){let n;try{n=ie.decode(e)}catch{try{n=ie.createV1(114,Ue.decode(e))}catch{n=ie.createV1(Cd,nr.digest(e))}}for await(let o of this.client.getClosestPeers(n,t))yield{id:Mt(o.ID),multiaddrs:o.Addrs??[]}}toString(){return`DelegatedRoutingV1HttpApiClientPeerRouting(${this.client.url})`}};function dE(r){return e=>new g0(e,r)}function fE(r){return e=>new b0(dE(r)(e))}function hE(r){return e=>new w0(dE(r)(e))}function x0(r){return{url:"https://delegated-ipfs.dev",filterProtocols:["unknown","transport-bitswap","transport-ipfs-gateway-http"],filterAddrs:["https","webtransport","webrtc","webrtc-direct","wss","tls"]}}var pE="libp2p",mE="autonat",gE="1.0.0";var Me;(function(r){let e;(function(f){f.DIAL="DIAL",f.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(f){f[f.DIAL=0]="DIAL",f[f.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),(function(f){f.codec=()=>rt(t)})(e=r.MessageType||(r.MessageType={}));let n;(function(f){f.OK="OK",f.E_DIAL_ERROR="E_DIAL_ERROR",f.E_DIAL_REFUSED="E_DIAL_REFUSED",f.E_BAD_REQUEST="E_BAD_REQUEST",f.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(f){f[f.OK=0]="OK",f[f.E_DIAL_ERROR=100]="E_DIAL_ERROR",f[f.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",f[f.E_BAD_REQUEST=200]="E_BAD_REQUEST",f[f.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),(function(f){f.codec=()=>rt(o)})(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(f){let h;f.codec=()=>(h==null&&(h=ne((m,b,w={})=>{if(w.lengthDelimited!==!1&&b.fork(),m.id!=null&&(b.uint32(10),b.bytes(m.id)),m.addrs!=null&&m.addrs.length>0)for(let x of m.addrs)b.uint32(18),b.bytes(x);w.lengthDelimited!==!1&&b.ldelim()},(m,b,w={})=>{let x={addrs:[]},v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();switch(A>>>3){case 1:{x.id=m.bytes();break}case 2:{if(w.limits?.addrs!=null&&x.addrs.length===w.limits.addrs)throw new fe('Decode error - repeated field "addrs" had too many elements');x.addrs.push(m.bytes());break}default:{m.skipType(A&7);break}}}return x},function*(m,b,w,x={}){let v={addrs:0},A=b==null?m.len:m.pos+b;for(;m.pos<A;){let S=m.uint32();switch(S>>>3){case 1:{yield{field:`${w}.id`,value:m.bytes()};break}case 2:{if(x.limits?.addrs!=null&&v.addrs===x.limits.addrs)throw new fe('Streaming decode error - repeated field "addrs" had too many elements');yield{field:`${w}.addrs[]`,index:v.addrs,value:m.bytes()},v.addrs++;break}default:{m.skipType(S&7);break}}}})),h);function p(m){return te(m,f.codec())}f.encode=p;function y(m,b){return ee(m,f.codec(),b)}f.decode=y;function g(m,b){return re(m,f.codec(),b)}f.stream=g})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(f){let h;f.codec=()=>(h==null&&(h=ne((m,b,w={})=>{w.lengthDelimited!==!1&&b.fork(),m.peer!=null&&(b.uint32(10),r.PeerInfo.codec().encode(m.peer,b)),w.lengthDelimited!==!1&&b.ldelim()},(m,b,w={})=>{let x={},v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();A>>>3===1?x.peer=r.PeerInfo.codec().decode(m,m.uint32(),{limits:w.limits?.peer}):m.skipType(A&7)}return x},function*(m,b,w,x={}){let v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();A>>>3===1?yield*r.PeerInfo.codec().stream(m,m.uint32(),`${w}.peer`,{limits:x.limits?.peer}):m.skipType(A&7)}})),h);function p(m){return te(m,f.codec())}f.encode=p;function y(m,b){return ee(m,f.codec(),b)}f.decode=y;function g(m,b){return re(m,f.codec(),b)}f.stream=g})(i=r.Dial||(r.Dial={}));let a;(function(f){let h;f.codec=()=>(h==null&&(h=ne((m,b,w={})=>{w.lengthDelimited!==!1&&b.fork(),m.status!=null&&(b.uint32(8),r.ResponseStatus.codec().encode(m.status,b)),m.statusText!=null&&(b.uint32(18),b.string(m.statusText)),m.addr!=null&&(b.uint32(26),b.bytes(m.addr)),w.lengthDelimited!==!1&&b.ldelim()},(m,b,w={})=>{let x={},v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();switch(A>>>3){case 1:{x.status=r.ResponseStatus.codec().decode(m);break}case 2:{x.statusText=m.string();break}case 3:{x.addr=m.bytes();break}default:{m.skipType(A&7);break}}}return x},function*(m,b,w,x={}){let v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();switch(A>>>3){case 1:{yield{field:`${w}.status`,value:r.ResponseStatus.codec().decode(m)};break}case 2:{yield{field:`${w}.statusText`,value:m.string()};break}case 3:{yield{field:`${w}.addr`,value:m.bytes()};break}default:{m.skipType(A&7);break}}}})),h);function p(m){return te(m,f.codec())}f.encode=p;function y(m,b){return ee(m,f.codec(),b)}f.decode=y;function g(m,b){return re(m,f.codec(),b)}f.stream=g})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=ne((f,h,p={})=>{p.lengthDelimited!==!1&&h.fork(),f.type!=null&&(h.uint32(8),r.MessageType.codec().encode(f.type,h)),f.dial!=null&&(h.uint32(18),r.Dial.codec().encode(f.dial,h)),f.dialResponse!=null&&(h.uint32(26),r.DialResponse.codec().encode(f.dialResponse,h)),p.lengthDelimited!==!1&&h.ldelim()},(f,h,p={})=>{let y={},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{y.type=r.MessageType.codec().decode(f);break}case 2:{y.dial=r.Dial.codec().decode(f,f.uint32(),{limits:p.limits?.dial});break}case 3:{y.dialResponse=r.DialResponse.codec().decode(f,f.uint32(),{limits:p.limits?.dialResponse});break}default:{f.skipType(m&7);break}}}return y},function*(f,h,p,y={}){let g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{yield{field:`${p}.type`,value:r.MessageType.codec().decode(f)};break}case 2:{yield*r.Dial.codec().stream(f,f.uint32(),`${p}.dial`,{limits:y.limits?.dial});break}case 3:{yield*r.DialResponse.codec().stream(f,f.uint32(),`${p}.dialResponse`,{limits:y.limits?.dialResponse});break}default:{f.skipType(m&7);break}}}})),c);function l(f){return te(f,r.codec())}r.encode=l;function u(f,h){return ee(f,r.codec(),h)}r.decode=u;function d(f,h){return re(f,r.codec(),h)}r.stream=d})(Me||(Me={}));var mN=4,gN=8,E0=class{components;protocol;timeout;maxInboundStreams;maxOutboundStreams;maxMessageSize;started;log;topologyId;dialResults;findPeers;addressFilter;connectionThreshold;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:auto-nat"),this.started=!1,this.protocol=`/${t.protocolPrefix??pE}/${mE}/${gE}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??20,this.connectionThreshold=t.connectionThreshold??80,this.maxMessageSize=t.maxMessageSize??8192,this.dialResults=ft({name:"libp2p_autonat_dial_results",metrics:e.metrics}),this.findPeers=ia(this.findRandomPeers.bind(this),6e4),this.addressFilter=Wt(1024)}[Symbol.toStringTag]="@libp2p/autonat";[ue]=["@libp2p/autonat"];get[rr](){return["@libp2p/identify"]}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,(e,t)=>{this.handleIncomingAutonatStream(e,t).catch(n=>{this.log.error("error handling incoming autonat stream - %e",n)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.topologyId=await this.components.registrar.register(this.protocol,{onConnect:(e,t)=>{this.verifyExternalAddresses(t).catch(n=>{this.log.error("could not verify addresses - %e",n)})}}),this.findPeers.start(),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),this.topologyId!=null&&await this.components.registrar.unhandle(this.topologyId),this.dialResults.clear(),this.findPeers.stop(),this.started=!1}allAddressesAreVerified(){return this.components.addressManager.getAddressesWithMetadata().every(e=>e.expires>Date.now()?!0:e.verified)}async findRandomPeers(e){if(this.allAddressesAreVerified())return;let t=me([AbortSignal.timeout(1e4),e?.signal]);try{this.log("starting random walk to find peers to run AutoNAT");for await(let n of this.components.randomWalk.walk({signal:t})){if(!await this.components.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable %s",n.id,n.multiaddrs.map(o=>o.toString()).join(", "));continue}try{this.log.trace("dial random peer %p",n.id),await this.components.connectionManager.openConnection(n.multiaddrs,{signal:t})}catch{}if(this.allAddressesAreVerified()){this.log("stopping random walk, all addresses are verified");return}if(!this.hasConnectionCapacity()){this.log("stopping random walk, too close to max connections");return}}}catch{}}async handleIncomingAutonatStream(e,t){let n=AbortSignal.timeout(this.timeout);try{let o=ke(e,{maxDataLength:this.maxMessageSize}).pb(Me),s=await o.read({signal:n}),i=await this.handleAutonatMessage(s,t,{signal:n});await o.write(i,{signal:n}),await e.close({signal:n})}catch(o){this.log.error("error handling incoming autonat stream - %e",o),e.abort(o)}}async handleAutonatMessage(e,t,n){let o=this.components.addressManager.getAddresses().map(d=>Y(d).host),s=e.dial;if(s==null)return this.log.error("dial was missing from message"),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}};let i,a=s.peer;if(a?.id==null)return this.log.error("peerId missing from message"),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}};try{let d=ve(a.id);i=Xe(d)}catch(d){return this.log.error("invalid PeerId - %e",d),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}}}if(this.log("incoming request from %p",i),!t.remotePeer.equals(i))return this.log("target peer %p did not equal sending peer %p",i,t.remotePeer),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}};let c=a.addrs.map(d=>V(d)).filter(d=>{try{let f=Y(d);return Ze(d)?!1:f.host!==Y(t.remoteAddr).host?(this.log.trace("not dialing %a - target host did not match remote host %a",d,t.remoteAddr),!1):o.includes(f.host)?!1:this.components.transportManager.dialTransportForMultiaddr(d)==null?(this.log.trace("not dialing %a - transport unsupported",d),!1):!0}catch{return!1}}).map(d=>(d.getComponents().find(f=>f.code===421)?.value==null&&(d=d.encapsulate(`/p2p/${i.toString()}`)),d));if(c.length===0)return this.log("refused to dial all multiaddrs for %p from message",i),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}};this.log("dial multiaddrs %s for peer %p",c.map(d=>d.toString()).join(", "),i);let l="",u=c[0];for(let d of c){let f;u=d;try{if(f=await this.components.connectionManager.openConnection(d,n),!f.remoteAddr.equals(d))throw this.log.error("tried to dial %a but dialed %a",d,f.remoteAddr),new Error("Unexpected remote address");return this.log("successfully dialed %p via %a",i,d),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.OK,addr:f.remoteAddr.decapsulateCode(421).bytes}}}catch(h){this.log.error("could not dial %p - %e",i,h),l=h.message}finally{f!=null&&await f.close()}}return{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_DIAL_ERROR,statusText:l,addr:u.bytes}}}getFirstUnverifiedMultiaddr(e,t){let n=this.components.addressManager.getAddressesWithMetadata().sort((o,s)=>o.type==="observed"&&s.type!=="observed"?1:s.type==="observed"&&o.type!=="observed"?-1:0).filter(o=>!(!(o.expires<Date.now())||Y(o.multiaddr).type==="ip6"&&(!t||!sf(o.multiaddr))||Ze(o.multiaddr)));for(let o of n){let s=o.multiaddr.toString(),i=this.dialResults.get(s);if(i!=null){if(i.networkSegments.includes(e)){this.log.trace("%a already has a network segment result from %s",i.multiaddr,e);continue}if(i.queue.size>10){this.log.trace("%a already has enough peers queued",i.multiaddr);continue}}if(i==null){let a=o.expires<Date.now();if(a&&this.addressFilter.remove?.(s),this.addressFilter.has(s))continue;this.addressFilter.add(s),this.log.trace("creating dial result %s %s",a?"to revalidate":"for",s),i={multiaddr:o.multiaddr,success:0,failure:0,networkSegments:[],verifyingPeers:Vm(),queue:new Yt({concurrency:3,maxSize:50}),type:o.type,lastVerified:o.lastVerified},this.dialResults.set(s,i)}return i}}removeOutdatedMultiaddrResults(){let e=new Set(this.components.addressManager.getAddressesWithMetadata().filter(({expires:t})=>t<Date.now()).map(({multiaddr:t})=>t.toString()));for(let t of this.dialResults.keys())e.has(t)||(this.log.trace("remove results for %a",t),this.dialResults.delete(t))}async verifyExternalAddresses(e){if(!this.isStarted())return;this.removeOutdatedMultiaddrResults();let n=(await this.components.peerStore.get(e.remotePeer)).addresses.some(({multiaddr:i})=>Y(i).type==="ip6"),o=this.getNetworkSegment(e.remoteAddr),s=this.getFirstUnverifiedMultiaddr(o,n);if(s==null){this.log.trace("no unverified public addresses found for peer %p to verify, not requesting verification",e.remotePeer);return}if(!this.hasConnectionCapacity()){s.lastVerified!=null?(this.log("automatically re-verifying %a because we are too close to the connection limit",s.multiaddr),this.confirmAddress(s)):this.log("skipping verifying %a because we are too close to the connection limit",s.multiaddr);return}s.queue.add(async i=>{await this.askPeerToVerify(e,o,i)},{peerId:e.remotePeer,multiaddr:s.multiaddr}).catch(i=>{s?.result==null&&this.log.error("error from %p verifying address %a - %e",e.remotePeer,s?.multiaddr,i)})}async askPeerToVerify(e,t,n){let o=this.dialResults.get(n.multiaddr.toString());if(o==null){this.log("%a was verified while %p was queued",n.multiaddr,e.remotePeer);return}let s=AbortSignal.timeout(this.timeout);this.log.trace("asking %a to verify multiaddr %s",e.remoteAddr,n.multiaddr);let i=await e.newStream(this.protocol,{signal:s});try{let a=ke(i).pb(Me),[,c]=await Promise.all([a.write({type:Me.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toMultihash().bytes,addrs:[n.multiaddr.bytes]}}},{signal:s}),a.read({signal:s})]);if(c.type!==Me.MessageType.DIAL_RESPONSE||c.dialResponse==null){this.log("invalid autonat response from %p - %j",e.remotePeer,c);return}let l=c.dialResponse.status;if(this.log.trace("autonat response from %p for %a is %s",e.remotePeer,n.multiaddr,l),l!==Me.ResponseStatus.OK&&l!==Me.ResponseStatus.E_DIAL_ERROR)return;if(o=this.dialResults.get(n.multiaddr.toString()),o==null){this.log.trace("peer reported %a as %s but there is no result object",n.multiaddr,c.dialResponse.status);return}if(o.networkSegments.includes(t)){this.log.trace("%a results included network segment %s",n.multiaddr,t);return}if(o.result!=null){this.log.trace("already resolved result for %a, ignoring response from",n.multiaddr,e.remotePeer);return}if(o.verifyingPeers.has(e.remotePeer)){this.log.trace("peer %p has already verified %a, ignoring response",e.remotePeer,n.multiaddr);return}if(o.verifyingPeers.add(e.remotePeer),o.networkSegments.push(t),l===Me.ResponseStatus.OK){if(o.success++,o.type!=="observed"){this.confirmAddress(o);return}}else l===Me.ResponseStatus.E_DIAL_ERROR&&o.failure++;this.log("%a success %d failure %d",o.multiaddr,o.success,o.failure),o.success===mN&&this.confirmAddress(o),o.failure===gN&&this.unconfirmAddress(o)}finally{try{await i.close({signal:s})}catch(a){i.abort(a)}}}hasConnectionCapacity(){let t=this.components.connectionManager.getConnections().length,n=this.components.connectionManager.getMaxConnections();return t/n*100<this.connectionThreshold}confirmAddress(e){this.log("%s address %a is externally dialable",e.type,e.multiaddr),this.components.addressManager.confirmObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!0,e.queue.abort()}unconfirmAddress(e){this.log("%s address %a is not externally dialable",e.type,e.multiaddr),this.components.addressManager.removeObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!1,e.queue.abort()}getNetworkSegment(e){let t=Y(e);switch(t.type){case"ip4":return t.host.split(".")[0].padStart(3,"0");case"ip6":return t.host.split(":")[0].padStart(4,"0");default:throw new C(`Remote address ${e} was not an IPv4 or Ipv6 address`)}}};function yE(r={}){return e=>new E0(e,r)}var yN="bootstrap",bN=50,wN=1e3,Ng=class extends se{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??wN,this.list=t.list.map(n=>V(n)).filter(n=>ta.matches(n)?n.getComponents().findLast(s=>s.code===421)?.value==null?(this.log.error("invalid bootstrap multiaddr without peer id"),!1):!0:(this.log.error("invalid multiaddr %a",n),!1)).map(n=>({id:Oe(n.getComponents().findLast(o=>o.code===421)?.value??""),multiaddrs:[n]})),this._init=t}[us]=this;[Symbol.toStringTag]="@libp2p/bootstrap";[ue]=["@libp2p/peer-discovery"];isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error("failed to discover bootstrap peers - %e",e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??yN]:{value:this._init.tagValue??bN,ttl:this._init.tagTTL}},multiaddrs:e.multiaddrs}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e}),this.components.connectionManager.openConnection(e.id).catch(t=>{this.log.error("could not dial bootstrap peer %p - %e",e.id,t)})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function bE(r){return e=>new Ng(e,r)}var Og=1e3,wE=60*Og;var Que=120*wE,xE=1,v0=5e3,EE=100;var bu=`${fs}-circuit-relay`,Xue=2*wE,Zue=BigInt(1<<17),ui="/libp2p/circuit/relay/0.2.0/hop",Mg="/libp2p/circuit/relay/0.2.0/stop",Jue=30*Og,ede=30*Og,Bg=300,vE=4096,SE=.001;var Ko;(function(r){let e;(function(a){a.RESERVE="RESERVE",a.CONNECT="CONNECT",a.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.RESERVE=0]="RESERVE",a[a.CONNECT=1]="CONNECT",a[a.STATUS=2]="STATUS"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.peer!=null&&(c.uint32(18),$o.codec().encode(a.peer,c)),a.reservation!=null&&(c.uint32(26),wu.codec().encode(a.reservation,c)),a.limit!=null&&(c.uint32(34),Vo.codec().encode(a.limit,c)),a.status!=null&&(c.uint32(40),at.codec().encode(a.status,c)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{u.peer=$o.codec().decode(a,a.uint32(),{limits:l.limits?.peer});break}case 3:{u.reservation=wu.codec().decode(a,a.uint32(),{limits:l.limits?.reservation});break}case 4:{u.limit=Vo.codec().decode(a,a.uint32(),{limits:l.limits?.limit});break}case 5:{u.status=at.codec().decode(a);break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{yield*$o.codec().stream(a,a.uint32(),`${l}.peer`,{limits:u.limits?.peer});break}case 3:{yield*wu.codec().stream(a,a.uint32(),`${l}.reservation`,{limits:u.limits?.reservation});break}case 4:{yield*Vo.codec().stream(a,a.uint32(),`${l}.limit`,{limits:u.limits?.limit});break}case 5:{yield{field:`${l}.status`,value:at.codec().decode(a)};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(Ko||(Ko={}));var yn;(function(r){let e;(function(a){a.CONNECT="CONNECT",a.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.CONNECT=0]="CONNECT",a[a.STATUS=1]="STATUS"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.peer!=null&&(c.uint32(18),$o.codec().encode(a.peer,c)),a.limit!=null&&(c.uint32(26),Vo.codec().encode(a.limit,c)),a.status!=null&&(c.uint32(32),at.codec().encode(a.status,c)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{u.peer=$o.codec().decode(a,a.uint32(),{limits:l.limits?.peer});break}case 3:{u.limit=Vo.codec().decode(a,a.uint32(),{limits:l.limits?.limit});break}case 4:{u.status=at.codec().decode(a);break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{yield*$o.codec().stream(a,a.uint32(),`${l}.peer`,{limits:u.limits?.peer});break}case 3:{yield*Vo.codec().stream(a,a.uint32(),`${l}.limit`,{limits:u.limits?.limit});break}case 4:{yield{field:`${l}.status`,value:at.codec().decode(a)};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(yn||(yn={}));var $o;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.id!=null&&s.id.byteLength>0&&(i.uint32(10),i.bytes(s.id)),s.addrs!=null&&s.addrs.length>0)for(let c of s.addrs)i.uint32(18),i.bytes(c);a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={id:de(0),addrs:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.id=s.bytes();break}case 2:{if(a.limits?.addrs!=null&&c.addrs.length===a.limits.addrs)throw new fe('Decode error - repeated field "addrs" had too many elements');c.addrs.push(s.bytes());break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={addrs:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.id`,value:s.bytes()};break}case 2:{if(c.limits?.addrs!=null&&l.addrs===c.limits.addrs)throw new fe('Streaming decode error - repeated field "addrs" had too many elements');yield{field:`${a}.addrs[]`,index:l.addrs,value:s.bytes()},l.addrs++;break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})($o||($o={}));var wu;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.expire!=null&&s.expire!==0n&&(i.uint32(8),i.uint64(s.expire)),s.addrs!=null&&s.addrs.length>0)for(let c of s.addrs)i.uint32(18),i.bytes(c);s.voucher!=null&&(i.uint32(26),Eu.codec().encode(s.voucher,i)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={expire:0n,addrs:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.expire=s.uint64();break}case 2:{if(a.limits?.addrs!=null&&c.addrs.length===a.limits.addrs)throw new fe('Decode error - repeated field "addrs" had too many elements');c.addrs.push(s.bytes());break}case 3:{c.voucher=Eu.codec().decode(s,s.uint32(),{limits:a.limits?.voucher});break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={addrs:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.expire`,value:s.uint64()};break}case 2:{if(c.limits?.addrs!=null&&l.addrs===c.limits.addrs)throw new fe('Streaming decode error - repeated field "addrs" had too many elements');yield{field:`${a}.addrs[]`,index:l.addrs,value:s.bytes()},l.addrs++;break}case 3:{yield*Eu.codec().stream(s,s.uint32(),`${a}.voucher`,{limits:c.limits?.voucher});break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(wu||(wu={}));var Vo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.duration!=null&&(i.uint32(8),i.uint32(s.duration)),s.data!=null&&(i.uint32(16),i.uint64(s.data)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.duration=s.uint32();break}case 2:{c.data=s.uint64();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.duration`,value:s.uint32()};break}case 2:{yield{field:`${a}.data`,value:s.uint64()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Vo||(Vo={}));var at;(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"})(at||(at={}));var Ug;(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"})(Ug||(Ug={}));(function(r){r.codec=()=>rt(Ug)})(at||(at={}));var xu;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.relay!=null&&s.relay.byteLength>0&&(i.uint32(10),i.bytes(s.relay)),s.peer!=null&&s.peer.byteLength>0&&(i.uint32(18),i.bytes(s.peer)),s.expiration!=null&&s.expiration!==0n&&(i.uint32(24),i.uint64(s.expiration)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={relay:de(0),peer:de(0),expiration:0n},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.relay=s.bytes();break}case 2:{c.peer=s.bytes();break}case 3:{c.expiration=s.uint64();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.relay`,value:s.bytes()};break}case 2:{yield{field:`${a}.peer`,value:s.bytes()};break}case 3:{yield{field:`${a}.expiration`,value:s.uint64()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(xu||(xu={}));var Eu;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.publicKey!=null&&s.publicKey.byteLength>0&&(i.uint32(10),i.bytes(s.publicKey)),s.payloadType!=null&&s.payloadType.byteLength>0&&(i.uint32(18),i.bytes(s.payloadType)),s.payload!=null&&(i.uint32(26),xu.codec().encode(s.payload,i)),s.signature!=null&&s.signature.byteLength>0&&(i.uint32(42),i.bytes(s.signature)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={publicKey:de(0),payloadType:de(0),signature:de(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.publicKey=s.bytes();break}case 2:{c.payloadType=s.bytes();break}case 3:{c.payload=xu.codec().decode(s,s.uint32(),{limits:a.limits?.payload});break}case 5:{c.signature=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.publicKey`,value:s.bytes()};break}case 2:{yield{field:`${a}.payloadType`,value:s.bytes()};break}case 3:{yield*xu.codec().stream(s,s.uint32(),`${a}.payload`,{limits:c.limits?.payload});break}case 5:{yield{field:`${a}.signature`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Eu||(Eu={}));var vu=class extends Error{static name="HadEnoughRelaysError";name="HadEnoughRelaysError"},S0=class extends Error{static name="DoubleRelayError";name="DoubleRelayError"},A0=class extends Error{static name="RelayQueueFullError";name="RelayQueueFullError"};function Fg(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var Su=class{expires;bytes;constructor(e){e?.duration!=null&&e?.duration!==0&&(this.expires=Date.now()+e.duration*1e3),this.bytes=e?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(e){this.bytes!=null&&(this.bytes-=BigInt(e.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let e={};if(this.bytes!=null){let t=this;Object.defineProperty(e,"bytes",{get(){return t.bytes}})}if(this.expires!=null){let t=this;Object.defineProperty(e,"seconds",{get(){return Math.round(((t.expires??0)-Date.now())/1e3)}})}return e}},C0=Ce(pe(ta.matchers[0],Ae(290))),I0=Ce(Ae(290));var T0=class extends se{components;started;running;topologyId;log;discoveryController;filter;queue;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.components=e,this.started=!1,this.running=!1,this.filter=t.filter,this.discoveryController=new AbortController,this.discoveryController.signal,this.dialPeer=this.dialPeer.bind(this),this.onPeer=this.onPeer.bind(this)}isStarted(){return this.started}async start(){this.topologyId=await this.components.registrar.register(ui,{filter:this.filter,onConnect:e=>{this.log.trace("discovered relay %p queue (length: %d, active %d)",e,this.queue?.size,this.queue?.running),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.components.registrar.unregister(this.topologyId),this.running&&this.stopDiscovery(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,this.discoveryController.signal,this.components.events.addEventListener("peer:discovery",this.onPeer),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.components.peerStore.all({filters:[n=>n.protocols.includes(ui)],orders:[()=>Math.random()<.5?1:-1,(n,o)=>{let s=AE(n),i=AE(o);return s>i?-1:i>s?1:0}]});for(let n of e)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",e.length);let t=this.queue=new Yt({concurrency:5});this.log("start random walk");for await(let n of this.components.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.components.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.components.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(o=>o.toString()));continue}t.queued>10&&(this.log.trace("wait for space in queue for %p",n.id),await t.onSizeLessThan(10,{signal:this.discoveryController.signal})),this.log("adding random peer %p to dial queue (length: %d, active %d)",n.id,t.size,t.running),t.add(this.dialPeer,{peerId:n.id,signal:this.discoveryController.signal}).catch(o=>{this.log.error("error opening connection to random peer %p - %e",n.id,o)})}this.log("stop random walk"),await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network - %e",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort(),this.queue?.clear(),this.components.events.removeEventListener("peer:discovery",this.onPeer)}onPeer(e){this.log.trace("maybe dialing discovered peer %p",e.detail.id),this.maybeDialPeer(e).catch(t=>{this.log.trace("error dialing discovered peer %p - %e",e.detail.id,t)})}async maybeDialPeer(e){if(this.queue==null)return;let t=e.detail.id,n=e.detail.multiaddrs;if(this.queue.has(t)){this.log.trace("random peer %p was already in queue",t);return}if(this.components.connectionManager.getConnections(t)?.length>0){this.log.trace("random peer %p was already connected",t);return}if(!await this.components.connectionManager.isDialable(n)){this.log.trace("random peer %p was not dialable",t);return}this.queue?.add(this.dialPeer,{peerId:e.detail.id,signal:this.discoveryController.signal}).catch(o=>{this.log.error("error opening connection to discovered peer %p - %e",e.detail.id,o)})}async dialPeer({peerId:e,signal:t}){let n=me([AbortSignal.timeout(5e3),t]);try{await this.components.connectionManager.openConnection(e,{signal:n})}finally{n.clear()}}};function AE(r){let e=r.metadata.get("last-dial-success");return e==null?0:new Date(B(e)).getTime()}var $g=class extends se{connectionManager;addressManager;reservationStore;listeningAddrs;log;listenTimeout;reservationId;relay;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.addressManager=e.addressManager,this.reservationStore=e.reservationStore,this.listeningAddrs=[],this.listenTimeout=t.listenTimeout??v0,this.reservationStore.addEventListener("relay:removed",this._onRemoveRelayPeer),this.reservationStore.addEventListener("relay:created-reservation",this._onAddRelayPeer)}_onRemoveRelayPeer=e=>{this.log("relay removed %p our relay %p",e.detail.relay,this.relay,this.relay?.equals(e.detail.relay)),this.relay?.equals(e.detail.relay)===!0&&(this.log("relay peer removed %p",e.detail.relay),this.listeningAddrs.forEach(t=>{this.addressManager.removeObservedAddr(t)}),this.listeningAddrs=[],this.safeDispatchEvent("listening"))};_onAddRelayPeer=e=>{let{details:t}=e.detail;t.type!=="configured"&&t.id===this.reservationId&&this.addedRelay(e.detail)};async listen(e){if(I0.exactMatch(e))this.log("searching for circuit relay servers"),this.reservationId=this.reservationStore.reserveRelay();else if(C0.exactMatch(e)){this.log("listen on specific relay server %a",e);let t=AbortSignal.timeout(this.listenTimeout);let n=e.decapsulate("/p2p-circuit"),o=await this.connectionManager.openConnection(n,{signal:t});if(!this.reservationStore.hasReservation(o.remotePeer)){this.log("making reservation on peer %p",o.remotePeer);let s=await this.reservationStore.addRelay(o.remotePeer,"configured");this.addedRelay(s)}}else throw new ls(`Could not listen on p2p-circuit address "${e}"`)}getAddrs(){return[...this.listeningAddrs.values()].flat()}updateAnnounceAddrs(){}async close(){this.reservationStore.cancelReservations(),this.listeningAddrs=[],this.reservationStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),queueMicrotask(()=>{this.safeDispatchEvent("close")})}addedRelay(e){this.log("relay peer added %p",e.relay),this.relay=e.relay,this.listeningAddrs=e.details.reservation.addrs.map(t=>V(t).encapsulate("/p2p-circuit")),this.listeningAddrs.forEach(t=>{this.addressManager.confirmObservedAddr(t,{type:"transport"})}),queueMicrotask(()=>{this.safeDispatchEvent("listening")})}};function CE(r){return new $g(r)}var IE="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var TE=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r|=0));for(;r--;)e+=IE[t[r]&63];return e};var xN=60*1e3*10,EN=60*1e3*5,vN=30*1e3,_0=class extends se{peerId;connectionManager;peerStore;events;reserveQueue;reservations;pendingReservations;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new Tt,this.pendingReservations=[],this.maxReservationQueueLength=t?.maxReservationQueueLength??EE,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??v0,this.started=!1,this.relayFilter=Wt(100),this.reserveQueue=new Yt({concurrency:t?.reservationConcurrency??xE,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("connection:close",n=>{[...this.reservations.values()].find(s=>s.connection===n.detail.id)!=null&&this.#t(n.detail.remotePeer).catch(s=>{this.log("could not remove relay %p - %e",n.detail,s)})})}isStarted(){return this.started}start(){this.started=!0}afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(bu)]});this.log("removing tag from %d old relays",e.length),await Promise.all(e.map(async t=>{await this.peerStore.merge(t.id,{tags:{[bu]:void 0}})})),this.log("redialing %d old relays",e.length),await Promise.all(e.map(async t=>this.addRelay(t.id,"discovered"))),this.#r()}).catch(e=>{this.log.error("failed to clean up and redial old relays during afterStart - %e",e)})}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}reserveRelay(){let e=TE();return this.pendingReservations.push(e),this.#r(),e}async addRelay(e,t){if(this.peerId.equals(e))throw this.log.trace("not trying to use self as relay"),new ls("Cannot use self as relay");if(this.reserveQueue.size>this.maxReservationQueueLength)throw new A0("The reservation queue is full");let n=this.reserveQueue.find(e);if(n!=null)return this.log.trace("potential relay peer %p is already in the reservation queue",e),n.join();if(this.relayFilter.has(e.toMultihash().bytes))throw new ls("The relay was previously invalid");return this.log.trace("try to reserve relay slot with %p",e),this.reserveQueue.add(async()=>{let o=Date.now();try{let s=this.reservations.get(e);if(s!=null){let p=this.connectionManager.getConnections(e),y=!1;if(p.length===0&&this.log("already have relay reservation with %p but we are no longer connected",e),p.map(g=>g.id).includes(s.connection)&&(this.log("already have relay reservation with %p and the original connection is still open",e),y=!0),y&&Fg(s.reservation.expire)>xN)return this.log("already have relay reservation with %p but we are still connected and it does not expire soon",e),{relay:e,details:s};await this.#t(e)}if(t==="discovered"&&this.pendingReservations.length===0)throw new vu("Not making reservation on discovered relay because we do not need any more relays");let i=AbortSignal.timeout(this.reservationCompletionTimeout);let a=await this.connectionManager.openConnection(e,{signal:i});if(dt.matches(a.remoteAddr))throw new S0("not creating reservation over relayed connection");let c=await this.#e(a,{signal:i}),l=Fg(c.expire);this.log("created reservation on relay peer %p, expiry date is %s",e,new Date(Date.now()+l).toString());let u=Math.min(Math.max(l-EN,vN),Math.pow(2,31)-1),d=setTimeout(()=>{this.log("refresh reservation to relay %p",e),this.addRelay(e,t).catch(async p=>{this.log.error("could not refresh reservation to relay %p - %e",e,p),await this.#t(e)}).catch(p=>{this.log.error("could not remove expired reservation to relay %p - %e",e,p)})},u),f;if(t==="discovered"){let p=this.pendingReservations.pop();if(p==null)throw new vu("Made reservation on relay but did not need any more discovered relays");f={timeout:d,reservation:c,type:t,connection:a.id,id:p}}else f={timeout:d,reservation:c,type:t,connection:a.id};this.reservations.set(e,f),await this.peerStore.merge(e,{tags:{[bu]:{value:1,ttl:l}}}),this.#r();let h={relay:e,details:f};return this.safeDispatchEvent("relay:created-reservation",{detail:h}),h}catch(s){throw t==="discovered"&&s.name==="HadEnoughRelaysError"||this.log.error("could not reserve slot on %p after %dms - %e",e,Date.now()-o,s),(s.name==="DialError"||s.name==="UnsupportedProtocolError")&&this.relayFilter.add(e.toMultihash().bytes),this.#t(e).catch(i=>{this.log.error("could not remove reservation on %p after reserving slot failed - %e",e,i)}),s}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(e){return e==null?this.reservations.size:[...this.reservations.values()].reduce((t,n)=>(n.type===e&&t++,t),0)}cancelReservations(){[...this.reservations.values()].forEach(e=>{clearTimeout(e.timeout)}),this.reservations.clear()}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(ui,t),s=ke(n).pb(Ko);this.log.trace("send RESERVE to %p",e.remotePeer),await s.write({type:Ko.Type.RESERVE},t);let i;try{this.log.trace("reading response from %p",e.remotePeer),i=await s.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(this.log.trace("read response %s",i.status),i.status===at.OK&&i.reservation!=null){let c=new Set;c.add(e.remoteAddr.toString());for(let l of i.reservation.addrs){let u=V(l);u.getComponents().find(d=>d.code===421)==null&&(u=u.encapsulate(`/p2p/${e.remotePeer}`)),u=V(u.toString().replace(`/p2p/${e.remotePeer}/p2p/${e.remotePeer}`,`/p2p/${e.remotePeer}`)),c.add(u.toString())}return i.reservation.addrs=[...c].map(l=>V(l).bytes),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}async#t(e){let t=this.reservations.get(e);t!=null&&(this.log("removing relay reservation with %p from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),t.type==="discovered"&&this.pendingReservations.push(t.id),await this.peerStore.merge(e,{tags:{[bu]:void 0}}),this.safeDispatchEvent("relay:removed",{detail:{relay:e,details:t}}),this.#r())}#r(){if(this.pendingReservations.length===0){this.log.trace("have discovered enough relays"),this.reserveQueue.clear(),this.safeDispatchEvent("relay:found-enough-relays");return}this.relayFilter=Wt(100),this.log("not discovered enough relays %d/%d",this.reservations.size,this.pendingReservations.length),this.safeDispatchEvent("relay:not-enough-relays")}};var Vg=class extends _o{stream;init;constructor(e){super({...e,direction:e.stream.direction}),this.init=e,this.stream=e.stream,this.stream.addEventListener("close",t=>{this.onTransportClosed(t.error)}),this.stream.addEventListener("remoteCloseWrite",t=>{this.onRemoteCloseWrite(),this.close().catch(n=>{this.abort(n)})}),this.stream.addEventListener("message",t=>{e.onDataRead?.(t.data),this.onData(t.data)}),this.stream.addEventListener("drain",()=>{this.safeDispatchEvent("drain")})}sendData(e){return this.init.onDataWrite?.(e),{sentBytes:e.byteLength,canSendMore:this.stream.send(e)}}async sendClose(e){await this.stream.close(e)}sendReset(){this.stream.abort(new Error("An error occurred"))}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}};function Kg(r){return new Vg(r)}var SN=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(V)}catch{return!1}return!0},_E={maxInboundStopStreams:Bg,maxOutboundStopStreams:Bg,stopTimeout:3e4},R0=class{components;discovery;reservationStore;maxInboundStopStreams;maxOutboundStopStreams;started;log;shutdownController;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.maxInboundStopStreams=t.maxInboundStopStreams??_E.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??_E.maxOutboundStopStreams,this.shutdownController=new AbortController,this.discovery=new T0(e,{filter:t.discoveryFilter??O3(vE,SE)}),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{o.name!=="HadEnoughRelaysError"&&o.name!=="RelayQueueFullError"&&this.log.error("could not add discovered relay %p - %e",n.detail,o)})}),this.reservationStore=new _0(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:found-enough-relays",()=>{this.discovery?.stopDiscovery()}),this.started=!1,this.onStop=this.onStop.bind(this)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[ue]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[rr](){return this.discovery!=null?["@libp2p/identify"]:[]}[fo]=!0;isStarted(){return this.started}async start(){this.shutdownController=new AbortController,this.shutdownController.signal,await this.components.registrar.handle(Mg,this.onStop,{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await Ir(this.discovery,this.reservationStore),this.started=!0}async stop(){this.shutdownController.abort(),await Xr(this.discovery,this.reservationStore),await this.components.registrar.unhandle(Mg),this.started=!1}async dial(e,t){let n=e.toString().split("/p2p-circuit"),o=V(n[0]),s=V(n[n.length-1]),i=o.getComponents().find(h=>h.code===421)?.value,a=s.getComponents().find(h=>h.code===421)?.value;if(i==null||a==null){let h=`ircuit relay dial to ${e.toString()} failed as address did not have both relay and destination PeerIDs`;throw this.log.error(`c${h}`),new lo(`C${h}`)}let c=Oe(i),l=Oe(a),d=this.components.connectionManager.getConnections(c)[0];d==null?(await this.components.peerStore.merge(c,{multiaddrs:[o]}),t.onProgress?.(new X("circuit-relay:open-connection")),d=await this.components.connectionManager.openConnection(c,t)):t.onProgress?.(new X("circuit-relay:reuse-connection"));let f;try{t.onProgress?.(new X("circuit-relay:open-hop-stream")),f=await d.newStream(ui,t);let h=ke(f).pb(Ko);t.onProgress?.(new X("circuit-relay:write-connect-message")),await h.write({type:Ko.Type.CONNECT,peer:{id:l.toMultihash().bytes,addrs:[V(s).bytes]}},t),t.onProgress?.(new X("circuit-relay:read-connect-response"));let p=await h.read(t);if(p.status!==at.OK)throw new oe(`failed to connect via relay with status ${p?.status?.toString()??"undefined"}`);let y=new Su(p.limit),g=Kg({stream:h.unwrap().unwrap(),remoteAddr:e,localAddr:o.encapsulate(`/p2p-circuit/p2p/${this.components.peerId.toString()}`),onDataRead:y.onData,onDataWrite:y.onData,log:f.log.newScope("circuit-relay:connection")}),m=await this.components.upgrader.upgradeOutbound(g,{...t,limits:y.getLimits()});return m.log("outbound relayed connection established to %p with limits %o, over connection %s",m.remotePeer,p.limit??"none",d.id),m}catch(h){throw this.log.error("circuit relay dial to destination %p via relay %p failed - %e",l,c,h),f?.abort(h),h}}createListener(e){return CE({peerId:this.components.peerId,connectionManager:this.components.connectionManager,addressManager:this.components.addressManager,reservationStore:this.reservationStore,logger:this.components.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>C0.exactMatch(t)||I0.exactMatch(t))}dialFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>dt.exactMatch(t))}async onStop(e,t){let n=this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);try{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.components.transportManager.listen([t.remoteAddr.encapsulate("/p2p-circuit")])}catch(d){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on - %e",d)}let o=ke(e).pb(yn),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",t.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",t.remotePeer),await o.write({type:yn.Type.STATUS,status:at.MALFORMED_MESSAGE},{signal:n}),await e.close({signal:n});return}if(s.type!==yn.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await o.write({type:yn.Type.STATUS,status:at.UNEXPECTED_MESSAGE},{signal:n}),await e.close({signal:n});return}if(!SN(s)){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await o.write({type:yn.Type.STATUS,status:at.MALFORMED_MESSAGE},{signal:n}),await e.close({signal:n});return}let i=Xe(ve(s.peer.id));if(await this.components.connectionGater.denyInboundRelayedConnection?.(t.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",t.remotePeer),await o.write({type:yn.Type.STATUS,status:at.PERMISSION_DENIED},{signal:n}),await e.close({signal:n});return}this.log.trace("sending success response to %p",t.remotePeer),await o.write({type:yn.Type.STATUS,status:at.OK},{signal:n});let a=new Su(s.limit),c=t.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),l=this.components.addressManager.getAddresses()[0],u=Kg({stream:o.unwrap().unwrap(),remoteAddr:c,localAddr:l,onDataRead:a.onData,onDataWrite:a.onData,log:e.log.newScope("circuit-relay:connection")});await this.components.upgrader.upgradeInbound(u,{limits:a.getLimits(),signal:n}),u.log("inbound relayed connection established to %p with limits %o, over connection %s",i,s.limit??"none",t.id)}finally{n?.clear()}}};function RE(r={}){return e=>new R0(e,r)}var Hr;(function(r){let e;(function(a){a.UNUSED="UNUSED",a.CONNECT="CONNECT",a.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.UNUSED=0]="UNUSED",a[a.CONNECT=100]="CONNECT",a[a.SYNC=300]="SYNC"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.observedAddresses!=null&&a.observedAddresses.length>0)for(let u of a.observedAddresses)c.uint32(18),c.bytes(u);l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={observedAddresses:[]},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{if(l.limits?.observedAddresses!=null&&u.observedAddresses.length===l.limits.observedAddresses)throw new fe('Decode error - repeated field "observedAddresses" had too many elements');u.observedAddresses.push(a.bytes());break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d={observedAddresses:0},f=c==null?a.len:a.pos+c;for(;a.pos<f;){let h=a.uint32();switch(h>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{if(u.limits?.observedAddresses!=null&&d.observedAddresses===u.limits.observedAddresses)throw new fe('Streaming decode error - repeated field "observedAddresses" had too many elements');yield{field:`${l}.observedAddresses[]`,index:d.observedAddresses,value:a.bytes()},d.observedAddresses++;break}default:{a.skipType(h&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(Hr||(Hr={}));function qg(r,e){return dt.matches(r)||e.dialTransportForMultiaddr(r)==null?!1:w9.matches(r)?!0:S9.matches(r)?!Ze(r):!1}var LE=1024*4,PE=100,L0={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},P0=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??L0.timeout,this.retries=t.retries??L0.retries,this.maxInboundStreams=t.maxInboundStreams??L0.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??L0.maxOutboundStreams,this.handleIncomingUpgrade=this.handleIncomingUpgrade.bind(this)}[Symbol.toStringTag]="@libp2p/dcutr";[rr]=["@libp2p/identify"];isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(Au,{notifyOnLimitedConnection:!0,onConnect:(e,t)=>{dt.exactMatch(t.remoteAddr)&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt - %e",n)})}}),await this.registrar.handle(Au,this.handleIncomingUpgrade,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(Au),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([Au],{signal:o.signal,runOnLimitedConnection:!0});let s=ke(t,{maxDataLength:LE}).pb(Hr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:Hr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(d=>d.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==Hr.Type.CONNECT)throw this.log("A sent wrong message type"),new oe("DCUtR message type was incorrect");let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new oe("DCUtR connect message had no multiaddrs");let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:Hr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await V9(l/2),this.log("B dialing",c);let u=await this.connectionManager.openConnection(c,{signal:o.signal,priority:PE,force:!0,initiator:!1});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,u.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d - %e",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getComponents().find(i=>i.code===421)?.value==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>qg(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(dt.exactMatch(s.remoteAddr))throw new Error("Could not open a new, non-limited, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed - %e",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)},o=ke(e,{maxDataLength:LE}).pb(Hr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==Hr.Type.CONNECT)throw this.log("B sent wrong message type"),new oe("DCUtR message type was incorrect");if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new oe("DCUtR connect message had no multiaddrs");let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs in %o",s.observedAddresses.map(l=>V(l))),new oe("DCUtR connect message had no dialable multiaddrs");if(this.log("A sending connect"),await o.write({type:Hr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==Hr.Type.SYNC)throw new oe("DCUtR message type was incorrect");this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:PE,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n),await e.close(n)}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=V(n);if(!qg(o,this.transportManager))continue;t.push(o)}catch{}return t}};var Au="/libp2p/dcutr";function DE(r={}){return e=>new P0(e,r)}var jg={};$(jg,{base10:()=>LN});var Sfe=new Uint8Array(0);function kE(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function no(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 NE(r){return new TextEncoder().encode(r)}function OE(r){return new TextDecoder().decode(r)}function AN(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var CN=AN,IN=CN,BE=IN;var Hg=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},zg=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return UE(this,e)}},Gg=class{decoders;constructor(e){this.decoders=e}or(e){return UE(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function UE(r,e){return new Gg({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Wg=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Hg(e,t,n),this.decoder=new zg(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ua({name:r,prefix:e,encode:t,decode:n}){return new Wg(r,e,t,n)}function qo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=BE(t,r);return Ua({prefix:e,name:r,encode:n,decode:s=>no(o(s))})}function TN(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function _N(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function RN(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function Ge({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=RN(n);return Ua({prefix:e,name:r,encode(s){return _N(s,n,t)},decode(s){return TN(s,o,t,r)}})}var LN=qo({prefix:"9",name:"base10",alphabet:"0123456789"});var Yg={};$(Yg,{base16:()=>PN,base16upper:()=>DN});var PN=Ge({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),DN=Ge({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Qg={};$(Qg,{base2:()=>kN});var kN=Ge({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Xg={};$(Xg,{base256emoji:()=>UN});var FE=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}"),NN=FE.reduce((r,e,t)=>(r[t]=e,r),[]),ON=FE.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function MN(r){return r.reduce((e,t)=>(e+=NN[t],e),"")}function BN(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=ON[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var UN=Ua({prefix:"\u{1F680}",name:"base256emoji",encode:MN,decode:BN});var Zg={};$(Zg,{base32:()=>Fa,base32hex:()=>KN,base32hexpad:()=>HN,base32hexpadupper:()=>zN,base32hexupper:()=>qN,base32pad:()=>$N,base32padupper:()=>VN,base32upper:()=>FN,base32z:()=>GN});var Fa=Ge({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),FN=Ge({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),$N=Ge({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),VN=Ge({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),KN=Ge({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),qN=Ge({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),HN=Ge({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),zN=Ge({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),GN=Ge({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Jg={};$(Jg,{base36:()=>Cu,base36upper:()=>WN});var Cu=qo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),WN=qo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var e6={};$(e6,{base58btc:()=>bn,base58flickr:()=>jN});var bn=qo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),jN=qo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var t6={};$(t6,{base64:()=>YN,base64pad:()=>QN,base64url:()=>XN,base64urlpad:()=>ZN});var YN=Ge({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),QN=Ge({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),XN=Ge({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ZN=Ge({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var r6={};$(r6,{base8:()=>JN});var JN=Ge({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var n6={};$(n6,{identity:()=>eO});var eO=Ua({prefix:"\0",name:"identity",encode:r=>OE(r),decode:r=>NE(r)});var Ffe=new TextEncoder,$fe=new TextDecoder;var s6={};$(s6,{identity:()=>SO});var nO=KE,$E=128,oO=127,sO=~oO,iO=Math.pow(2,31);function KE(r,e,t){e=e||[],t=t||0;for(var n=t;r>=iO;)e[t++]=r&255|$E,r/=128;for(;r&sO;)e[t++]=r&255|$E,r>>>=7;return e[t]=r|0,KE.bytes=t-n+1,e}var aO=o6,cO=128,VE=127;function o6(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw o6.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&VE)<<o:(i&VE)*Math.pow(2,o),o+=7}while(i>=cO);return o6.bytes=s-n,t}var lO=Math.pow(2,7),uO=Math.pow(2,14),dO=Math.pow(2,21),fO=Math.pow(2,28),hO=Math.pow(2,35),pO=Math.pow(2,42),mO=Math.pow(2,49),gO=Math.pow(2,56),yO=Math.pow(2,63),bO=function(r){return r<lO?1:r<uO?2:r<dO?3:r<fO?4:r<hO?5:r<pO?6:r<mO?7:r<gO?8:r<yO?9:10},wO={encode:nO,decode:aO,encodingLength:bO},xO=wO,Iu=xO;function Tu(r,e=0){return[Iu.decode(r,e),Iu.decode.bytes]}function $a(r,e,t=0){return Iu.encode(r,e,t),e}function Va(r){return Iu.encodingLength(r)}function qa(r,e){let t=e.byteLength,n=Va(r),o=n+Va(t),s=new Uint8Array(o+t);return $a(r,s,0),$a(t,s,n),s.set(e,o),new Ka(r,t,e,s)}function qE(r){let e=no(r),[t,n]=Tu(e),[o,s]=Tu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ka(t,o,i,e)}function HE(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&kE(r.bytes,t.bytes)}}var Ka=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var zE=0,EO="identity",GE=no;function vO(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return qa(zE,GE(r))}var SO={code:zE,name:EO,encode:GE,digest:vO};var c6={};$(c6,{sha256:()=>CO,sha512:()=>IO});var AO=20;function a6({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new i6(r,e,t,n,o)}var i6=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??AO,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?WE(n,this.code,t?.truncate):n.then(o=>WE(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function WE(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return qa(e,r)}function YE(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var CO=a6({name:"sha2-256",code:18,encode:YE("SHA-256")}),IO=a6({name:"sha2-512",code:19,encode:YE("SHA-512")});function QE(r,e){let{bytes:t,version:n}=r;return n===0?_O(t,l6(r),e??bn.encoder):RO(t,l6(r),e??Fa.encoder)}var XE=new WeakMap;function l6(r){let e=XE.get(r);if(e==null){let t=new Map;return XE.set(r,t),t}return e}var k0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ru)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==LO)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=qa(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&HE(e.multihash,n.multihash)}toString(e){return QE(this,e)}toJSON(){return{"/":QE(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??ZE(n,o,s.bytes))}else if(t[PO]===!0){let{version:n,multihash:o,code:s}=t,i=qE(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ru)throw new Error(`Version 0 CID must use dag-pb (code: ${Ru}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=ZE(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ru,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=no(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new Ka(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=Tu(e.subarray(t));return t+=f,d},o=n(),s=Ru;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=TO(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return l6(s).set(n,e),s}};function TO(r,e){switch(r[0]){case"Q":{let t=e??bn;return[bn.prefix,t.decode(`${bn.prefix}${r}`)]}case bn.prefix:{let t=e??bn;return[bn.prefix,t.decode(r)]}case Fa.prefix:{let t=e??Fa;return[Fa.prefix,t.decode(r)]}case Cu.prefix:{let t=e??Cu;return[Cu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function _O(r,e,t){let{prefix:n}=t;if(n!==bn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function RO(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ru=112,LO=18;function ZE(r,e,t){let n=Va(r),o=n+Va(e),s=new Uint8Array(o+t.byteLength);return $a(r,s,0),$a(e,s,n),s.set(t,o),s}var PO=Symbol.for("@ipld/js-cid/CID");var u6={...n6,...Qg,...r6,...jg,...Yg,...Zg,...Jg,...e6,...t6,...Xg},che={...c6,...s6};function JE(r=0){return new Uint8Array(r)}function tv(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var ev=tv("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),d6=tv("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=JE(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),DO={utf8:ev,"utf-8":ev,hex:u6.base16,latin1:d6,ascii:d6,binary:d6,...u6},rv=DO;function f6(r,e="utf8"){let t=rv[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function H(r){if(r!==void 0&&r!==H.REQUEST&&r!==H.RESPONSE)throw new Error("type must be REQUEST or RESPONSE");r===void 0||this.initialize(r),this.maxHeaderSize=H.maxHeaderSize}H.prototype.initialize=function(r,e){if(r!==H.REQUEST&&r!==H.RESPONSE)throw new Error("type must be REQUEST or RESPONSE");this.type=r,this.state=r+"_LINE",this.info={headers:[],upgrade:!1},this.trailers=[],this.line="",this.isChunked=!1,this.connection="",this.headerSize=0,this.body_bytes=null,this.isUserCall=!1,this.hadError=!1};H.encoding="ascii";H.maxHeaderSize=80*1024;H.REQUEST="REQUEST";H.RESPONSE="RESPONSE";var nv=H.kOnHeaders=1,h6=H.kOnHeadersComplete=2,N0=H.kOnBody=3,p6=H.kOnMessageComplete=4;H.prototype[nv]=H.prototype[h6]=H.prototype[N0]=H.prototype[p6]=function(){};var ov=!0;Object.defineProperty(H,"kOnExecute",{get:function(){return ov=!1,99}});var sv=H.methods=["DELETE","GET","HEAD","POST","PUT","CONNECT","OPTIONS","TRACE","COPY","LOCK","MKCOL","MOVE","PROPFIND","PROPPATCH","SEARCH","UNLOCK","BIND","REBIND","UNBIND","ACL","REPORT","MKACTIVITY","CHECKOUT","MERGE","M-SEARCH","NOTIFY","SUBSCRIBE","UNSUBSCRIBE","PATCH","PURGE","MKCALENDAR","LINK","UNLINK","SOURCE"],iv=sv.indexOf("CONNECT");H.prototype.reinitialize=H;H.prototype.close=H.prototype.pause=H.prototype.resume=H.prototype.remove=H.prototype.free=function(){};H.prototype._compatMode0_11=!1;H.prototype.getAsyncId=function(){return 0};var kO={REQUEST_LINE:!0,RESPONSE_LINE:!0,HEADER:!0};H.prototype.execute=function(r,e,t){if(!(this instanceof H))throw new TypeError("not a HTTPParser");e=e||0,t=typeof t=="number"?t:r.length,this.chunk=r,this.offset=e;var n=this.end=e+t;try{for(;this.offset<n&&!this[this.state](););}catch(o){if(this.isUserCall)throw o;return this.hadError=!0,o}return this.chunk=null,t=this.offset-e,kO[this.state]&&(this.headerSize+=t,this.headerSize>(this.maxHeaderSize||H.maxHeaderSize))?new Error("max header size exceeded"):t};var NO={REQUEST_LINE:!0,RESPONSE_LINE:!0,BODY_RAW:!0};H.prototype.finish=function(){if(!this.hadError){if(!NO[this.state])return new Error("invalid state for EOF");this.state==="BODY_RAW"&&this.userCall()(this[p6]())}};H.prototype.consume=H.prototype.unconsume=H.prototype.getCurrentBuffer=function(){};H.prototype.userCall=function(){this.isUserCall=!0;var r=this;return function(e){return r.isUserCall=!1,e}};H.prototype.nextRequest=function(){this.userCall()(this[p6]()),this.reinitialize(this.type)};H.prototype.consumeLine=function(){for(var r=this.end,e=this.chunk,t=this.offset;t<r;t++)if(e[t]===10){var n=this.line+f6(e.subarray(this.offset,t),H.encoding);return n.charAt(n.length-1)==="\r"&&(n=n.substr(0,n.length-1)),this.line="",this.offset=t+1,n}this.line+=f6(e.subarray(this.offset,this.end),H.encoding),this.offset=this.end};var OO=/^([^: \t]+):[ \t]*((?:.*[^ \t])|)/,MO=/^[ \t]+(.*[^ \t])/;H.prototype.parseHeader=function(r,e){if(r.indexOf("\r")!==-1)throw O0("HPE_LF_EXPECTED");var t=OO.exec(r),n=t&&t[1];if(n)e.push(n),e.push(t[2]);else{var o=MO.exec(r);o&&e.length&&(e[e.length-1]&&(e[e.length-1]+=" "),e[e.length-1]+=o[1])}};var BO=/^([A-Z-]+) ([^ ]+) HTTP\/(\d)\.(\d)$/;H.prototype.REQUEST_LINE=function(){var r=this.consumeLine();if(r){var e=BO.exec(r);if(e===null)throw O0("HPE_INVALID_CONSTANT");if(this.info.method=this._compatMode0_11?e[1]:sv.indexOf(e[1]),this.info.method===-1)throw new Error("invalid request method");this.info.url=e[2],this.info.versionMajor=+e[3],this.info.versionMinor=+e[4],this.body_bytes=0,this.state="HEADER"}};var UO=/^HTTP\/(\d)\.(\d) (\d{3}) ?(.*)$/;H.prototype.RESPONSE_LINE=function(){var r=this.consumeLine();if(r){var e=UO.exec(r);if(e===null)throw O0("HPE_INVALID_CONSTANT");this.info.versionMajor=+e[1],this.info.versionMinor=+e[2];var t=this.info.statusCode=+e[3];this.info.statusMessage=e[4],((t/100|0)===1||t===204||t===304)&&(this.body_bytes=0),this.state="HEADER"}};H.prototype.shouldKeepAlive=function(){if(this.info.versionMajor>0&&this.info.versionMinor>0){if(this.connection.indexOf("close")!==-1)return!1}else if(this.connection.indexOf("keep-alive")===-1)return!1;return!!(this.body_bytes!==null||this.isChunked)};H.prototype.HEADER=function(){var r=this.consumeLine();if(r!==void 0){var e=this.info;if(r)this.parseHeader(r,e.headers);else{for(var t=e.headers,n=!1,o,s=!1,i=0;i<t.length;i+=2)switch(t[i].toLowerCase()){case"transfer-encoding":this.isChunked=t[i+1].toLowerCase()==="chunked";break;case"content-length":if(o=+t[i+1],n){if(o!==this.body_bytes)throw O0("HPE_UNEXPECTED_CONTENT_LENGTH")}else n=!0,this.body_bytes=o;break;case"connection":this.connection+=t[i+1].toLowerCase();break;case"upgrade":s=!0;break}this.isChunked&&n&&(n=!1,this.body_bytes=null),s&&this.connection.indexOf("upgrade")!=-1?e.upgrade=this.type===H.REQUEST||e.statusCode===101:e.upgrade=e.method===iv,this.isChunked&&e.upgrade&&(this.isChunked=!1),e.shouldKeepAlive=this.shouldKeepAlive();var a;if(ov?a=this.userCall()(this[h6](e)):a=this.userCall()(this[h6](e.versionMajor,e.versionMinor,e.headers,e.method,e.url,e.statusCode,e.statusMessage,e.upgrade,e.shouldKeepAlive)),a===2)return this.nextRequest(),!0;if(this.isChunked&&!a)this.state="BODY_CHUNKHEAD";else{if(a||this.body_bytes===0)return this.nextRequest(),e.upgrade;this.body_bytes===null?this.state="BODY_RAW":this.state="BODY_SIZED"}}}};H.prototype.BODY_CHUNKHEAD=function(){var r=this.consumeLine();r!==void 0&&(this.body_bytes=parseInt(r,16),this.body_bytes?this.state="BODY_CHUNK":this.state="BODY_CHUNKTRAILERS")};H.prototype.BODY_CHUNK=function(){var r=Math.min(this.end-this.offset,this.body_bytes);this.userCall()(this[N0](this.chunk.slice(this.offset,this.offset+r),0,r)),this.offset+=r,this.body_bytes-=r,this.body_bytes||(this.state="BODY_CHUNKEMPTYLINE")};H.prototype.BODY_CHUNKEMPTYLINE=function(){var r=this.consumeLine();if(r!==void 0){if(r!=="")throw new Error("Expected empty line");this.state="BODY_CHUNKHEAD"}};H.prototype.BODY_CHUNKTRAILERS=function(){var r=this.consumeLine();r!==void 0&&(r?this.parseHeader(r,this.trailers):(this.trailers.length&&this.userCall()(this[nv](this.trailers,"")),this.nextRequest()))};H.prototype.BODY_RAW=function(){this.userCall()(this[N0](this.chunk.slice(this.offset,this.end),0,this.end-this.offset)),this.offset=this.end};H.prototype.BODY_SIZED=function(){var r=Math.min(this.end-this.offset,this.body_bytes);this.userCall()(this[N0](this.chunk.slice(this.offset,this.offset+r),0,r)),this.offset+=r,this.body_bytes-=r,this.body_bytes||this.nextRequest()};["Headers","HeadersComplete","Body","MessageComplete"].forEach(function(r){var e=H["kOn"+r];Object.defineProperty(H.prototype,"on"+r,{get:function(){return this[e]},set:function(t){return this._compatMode0_11=!0,iv="CONNECT",this[e]=t}})});function O0(r){var e=new Error("Parse Error");return e.code=r,e}var FO=[6,53,56,54,55];function av(r){return uv("sni",r)?.value}function cv(r){let e=uv("tcp",r)?.value;return e==null?"":`:${e}`}function uv(r,e){return e.find(t=>t.name===r)}function lv(r){return r.some(({code:e})=>e===448)}function zr(r,e){let t=dv[r.name];if(t==null)throw new Error(`Can't interpret protocol ${r.name}`);let n=t(r,e);return r.code===41?`[${n}]`:n}var dv={ip4:(r,e)=>r.value,ip6:(r,e)=>e.length===0?r.value:`[${r.value}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${zr(t,e)}:${r.value}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${zr(t,e)}:${r.value}`},dnsaddr:(r,e)=>r.value,dns4:(r,e)=>r.value,dns6:(r,e)=>r.value,dns:(r,e)=>r.value,ipfs:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${zr(t,e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${zr(t,e)}`},http:(r,e)=>{let t=lv(e),n=av(e),o=cv(e);if(t&&n!=null)return`https://${n}${o}`;let s=t?"https://":"http://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=zr(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=zr(t,e),o=decodeURIComponent(r.value??"");return`${n}${o}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return zr(t,e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return zr(t,e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=zr(t,e);return n=n?.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=lv(e),n=av(e),o=cv(e);if(t&&n!=null)return`wss://${n}${o}`;let s=t?"wss://":"ws://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=zr(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=zr(t,e);return n=n?.replace("tcp://",""),`wss://${n}`}};function M0(r,e){let n=V(r).getComponents(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=dv[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let i=s(o,n)??"";return e?.assumeHttp!==!1&&FO.includes(o.code)&&(i=i.replace(/^.*:\/\//,""),o.value==="443"?i=`https://${i}`:i=`http://${i}`),(i.startsWith("http://")||i.startsWith("https://")||i.startsWith("ws://")||i.startsWith("wss://"))&&(i=new URL(i).toString(),i.endsWith("/")&&(i=i.substring(0,i.length-1))),i}var fv="[a-fA-F\\d:]",Ho=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${fv})|(?<=${fv})(?=\\s|$))`:"",Gr="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Je="[a-fA-F\\d]{1,4}",B0=`
|
|
30
|
+
`)}`:`${t} :`}};uw=Mo;z.Constructed=uw;Mo.NAME="CONSTRUCTED";var u1=class extends xt{fromBER(e,t,n){return t}toBER(e){return fn}};u1.override="EndOfContentValueBlock";var dw,d1=class extends ht{constructor(e={}){super(e,u1),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};dw=d1;z.EndOfContent=dw;d1.NAME=Hl;var fw,ti=class extends ht{constructor(e={}){super(e,xt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};fw=ti;z.Null=fw;ti.NAME="NULL";var f1=class extends Zn(xt){get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=he.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}fromBER(e,t,n){let o=he.BufferSourceConverter.toUint8Array(e);return Xn(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,A4.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};f1.NAME="BooleanValueBlock";var hw,h1=class extends ht{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor(e={}){super(e,f1),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};hw=h1;z.Boolean=hw;h1.NAME="BOOLEAN";var p1=class extends Zn(un){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n,o){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=un.prototype.fromBER.call(this,e,t,n,o),s===-1)return s;for(let i=0;i<this.value.length;i++){let a=this.value[i].constructor.NAME;if(a===Hl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(a!==sw)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?un.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};p1.NAME="OctetStringValueBlock";var _4,jn=class extends ht{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},p1),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n,o){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let a=o??Ql(),c=T4(i,0,i.byteLength,a);c.offset!==-1&&c.offset===n&&(this.valueBlock.value=[c.result])}}catch{}}return super.fromBER(e,t,n,o)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Mo.prototype.onAsciiEncoding.call(this);let e=this.constructor.NAME,t=he.Convert.ToHex(this.valueBlock.valueHexView);return`${e} : ${t}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof _4&&e.push(t.valueBlock.valueHexView);return he.BufferSourceConverter.concat(e)}};_4=jn;z.OctetString=_4;jn.NAME=sw;var m1=class extends Zn(un){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n,o){if(!n)return t;let s=-1;if(this.isConstructed){if(s=un.prototype.fromBER.call(this,e,t,n,o),s===-1)return s;for(let c of this.value){let l=c.constructor.NAME;if(l===Hl){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(l!==iw)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let u=c.valueBlock;if(this.unusedBits>0&&u.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=u.unusedBits}return s}let i=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,i,t,n))return-1;let a=i.subarray(t,t+n);if(this.unusedBits=a[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let c=a.subarray(1);try{if(c.byteLength){let l=o??Ql(),u=T4(c,0,c.byteLength,l);u.offset!==-1&&u.offset===n-1&&(this.value=[u.result])}}catch{}}return this.valueHexView=a.subarray(1),this.blockLength=a.length,t+n}toBER(e,t){if(this.isConstructed)return un.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength){let o=new Uint8Array(1);return o[0]=0,o.buffer}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}}};m1.NAME="BitStringValueBlock";var pw,g1=class extends ht{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},m1),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n,o){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n,o)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Mo.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let i of t)e.push(i.toString(2).padStart(8,"0"));let n=e.join(""),o=this.constructor.NAME,s=n.substring(0,n.length-this.valueBlock.unusedBits);return`${o} : ${s}`}}};pw=g1;z.BitString=pw;g1.NAME=iw;var mw;function dD(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,u=c<i?i:c,d=0;for(let f=u;f>=0;f--,d++)!0===d<a.length?l=s[i-d]+a[c-d]+t[0]:l=s[i-d]+t[0],t[0]=l/10,!0===d>=s.length?s=n1(new Uint8Array([l%10]),s):s[i-d]=l%10;return t[0]>0&&(s=n1(t,s)),s}function ow(r){if(r>=Vl.length)for(let e=Vl.length;e<=r;e++){let t=new Uint8Array([0]),n=Vl[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=n1(t,n)),Vl.push(n)}return Vl[r]}function fD(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,u=0;for(let d=c;d>=0;d--,u++)l=s[i-u]-a[c-u]-t,!0===l<0?(t=1,s[i-u]=l+10):(t=0,s[i-u]=l);if(t>0)for(let d=i-c+1;d>=0;d--,u++)if(l=s[i-u]-t,l<0)t=1,s[i-u]=l+10;else{t=0,s[i-u]=l;break}return s.slice()}var zl=class extends Zn(xt){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=A4.call(this)))}constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(tw(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&(i[1]&128)!==0?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++)(o&1)===1&&(n===e?(t=fD(ow(n),t),i="-"):t=dD(t,ow(n))),n++,o>>=1}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=nw.charAt(t[c]));return a===!1&&(i+=nw.charAt(0)),i}};mw=zl;zl.NAME="IntegerValueBlock";Object.defineProperty(mw.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var Kl,Yn=class extends ht{constructor(e={}){super(e,zl),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return o1(),BigInt(this.valueBlock.toString())}static fromBigInt(e){o1();let t=BigInt(e),n=new ql,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(he.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${he.Convert.ToHex(a)}`)+t,u=he.BufferSourceConverter.toUint8Array(he.Convert.FromHex(l.toString(16)));u[0]|=128,n.write(u)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new Kl({valueHex:n.final()})}convertToDER(){let e=new Kl({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new Kl({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};Kl=Yn;z.Integer=Kl;Yn.NAME="INTEGER";var gw,y1=class extends Yn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};gw=y1;z.Enumerated=gw;y1.NAME="ENUMERATED";var Gl=class extends Zn(xt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(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=ei(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){o1();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=Oo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",fn;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=he.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Gl.NAME="sidBlock";var b1=class extends xt{constructor({value:e=ma,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Gl;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,fn;t.push(o)}return C4(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){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(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new Gl;if(o>Number.MAX_SAFE_INTEGER){o1();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};b1.NAME="ObjectIdentifierValueBlock";var yw,dn=class extends ht{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,b1),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};yw=dn;z.ObjectIdentifier=yw;dn.NAME="OBJECT IDENTIFIER";var Wl=class extends Zn(Wn){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=he.BufferSourceConverter.toUint8Array(e);if(!Xn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,(s[a]&128)!==0);a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,(s[this.blockLength-1]&128)!==0?(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=ei(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=Oo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",fn;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=he.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Wl.NAME="relativeSidBlock";var w1=class extends xt{constructor({value:e=ma,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Wl;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,fn;n.push(s)}return C4(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new Wl;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};w1.NAME="RelativeObjectIdentifierValueBlock";var bw,x1=class extends ht{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,w1),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};bw=x1;z.RelativeObjectIdentifier=bw;x1.NAME="RelativeObjectIdentifier";var ww,Xt=class extends Mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};ww=Xt;z.Sequence=ww;Xt.NAME="SEQUENCE";var xw,E1=class extends Mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};xw=E1;z.Set=xw;E1.NAME="SET";var v1=class extends Zn(xt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=ma}toJSON(){return{...super.toJSON(),value:this.value}}};v1.NAME="StringValueBlock";var S1=class extends v1{};S1.NAME="SimpleStringValueBlock";var Vt=class extends a1{constructor({...e}={}){super(e,S1)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,he.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Vt.NAME="SIMPLE STRING";var A1=class extends Vt{fromBuffer(e){this.valueBlock.valueHexView=he.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=he.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=he.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(he.Convert.FromUtf8String(e)),this.valueBlock.value=e}};A1.NAME="Utf8StringValueBlock";var Ew,Qn=class extends A1{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};Ew=Qn;z.Utf8String=Ew;Qn.NAME="UTF8String";var C1=class extends Vt{fromBuffer(e){this.valueBlock.value=he.Convert.ToUtf16String(e),this.valueBlock.valueHexView=he.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(he.Convert.FromUtf16String(e))}};C1.NAME="BmpStringValueBlock";var vw,I1=class extends C1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};vw=I1;z.BmpString=vw;I1.NAME="BMPString";var T1=class extends Vt{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=Oo(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};T1.NAME="UniversalStringValueBlock";var Sw,_1=class extends T1{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};Sw=_1;z.UniversalString=Sw;_1.NAME="UniversalString";var Aw,R1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};Aw=R1;z.NumericString=Aw;R1.NAME="NumericString";var Cw,L1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};Cw=L1;z.PrintableString=Cw;L1.NAME="PrintableString";var Iw,P1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};Iw=P1;z.TeletexString=Iw;P1.NAME="TeletexString";var Tw,D1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Tw=D1;z.VideotexString=Tw;D1.NAME="VideotexString";var _w,k1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};_w=k1;z.IA5String=_w;k1.NAME="IA5String";var Rw,N1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};Rw=N1;z.GraphicString=Rw;N1.NAME="GraphicString";var Lw,jl=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};Lw=jl;z.VisibleString=Lw;jl.NAME="VisibleString";var Pw,O1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Pw=O1;z.GeneralString=Pw;O1.NAME="GeneralString";var Dw,M1=class extends Vt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};Dw=M1;z.CharacterString=Dw;M1.NAME="CharacterString";var kw,Yl=class extends jl{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,he.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Qt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Qt(this.month,2),t[2]=Qt(this.day,2),t[3]=Qt(this.hour,2),t[4]=Qt(this.minute,2),t[5]=Qt(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};kw=Yl;z.UTCTime=kw;Yl.NAME="UTCTime";var Nw,B1=class extends Yl{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){let e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond);return new Date(e)}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let d=new Number(e[e.length-1]);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let d=1,f=n.indexOf("+"),h="";if(f===-1&&(f=n.indexOf("-"),d=-1),f!==-1){if(h=n.substring(f+1),n=n.substring(0,f),h.length!==2&&h.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(h.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=d*p,h.length===4){if(p=parseInt(h.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=d*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let d=new Number(`0${n.substring(l)}`);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");s=d.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let d=60*s;this.minute=Math.floor(d),d=60*(d-this.minute),this.second=Math.floor(d),d=1e3*(d-this.second),this.millisecond=Math.floor(d)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let d=60*s;this.second=Math.floor(d),d=1e3*(d-this.second),this.millisecond=Math.floor(d)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let d=1e3*s;this.millisecond=Math.floor(d)}break;default:throw new Error("Wrong input string for conversion")}let u=i.exec(o);if(u===null)throw new Error("Wrong input string for conversion");for(let d=1;d<u.length;d++)switch(d){case 1:this.year=parseInt(u[d],10);break;case 2:this.month=parseInt(u[d],10);break;case 3:this.day=parseInt(u[d],10);break;case 4:this.hour=parseInt(u[d],10)+a;break;case 5:this.minute=parseInt(u[d],10)+c;break;case 6:this.second=parseInt(u[d],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let d=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=d.getUTCFullYear(),this.month=d.getUTCMonth(),this.day=d.getUTCDay(),this.hour=d.getUTCHours(),this.minute=d.getUTCMinutes(),this.second=d.getUTCSeconds(),this.millisecond=d.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Qt(this.year,4)),t.push(Qt(this.month,2)),t.push(Qt(this.day,2)),t.push(Qt(this.hour,2)),t.push(Qt(this.minute,2)),t.push(Qt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Qt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Nw=B1;z.GeneralizedTime=Nw;B1.NAME="GeneralizedTime";var Ow,U1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};Ow=U1;z.DATE=Ow;U1.NAME="DATE";var Mw,F1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};Mw=F1;z.TimeOfDay=Mw;F1.NAME="TimeOfDay";var Bw,$1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};Bw=$1;z.DateTime=Bw;$1.NAME="DateTime";var Uw,V1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};Uw=V1;z.Duration=Uw;V1.NAME="Duration";var Fw,K1=class extends Qn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};Fw=K1;z.TIME=Fw;K1.NAME="TIME";async function H1(r,e){let n=await ha.create().encrypt(r,e);return _n.encode(n)}async function R4(r,e,t){if(r.type==="RSA")return gD(r,e,t);if(r.type==="Ed25519")return hD(r,e,t);if(r.type==="secp256k1")return pD(r,e,t);if(r.type==="ECDSA")return mD(r,e,t);throw new Ir}async function hD(r,e,t="libp2p-key"){if(t==="libp2p-key")return H1(Ns(r),e);throw new C(`export format '${t}' is not supported`)}async function pD(r,e,t="libp2p-key"){if(t==="libp2p-key")return H1(Ns(r),e);throw new C("Export format is not supported")}async function mD(r,e,t="libp2p-key"){if(t==="libp2p-key")return H1(Ns(r),e);throw new C(`export format '${t}' is not supported`)}async function gD(r,e,t="pkcs-8"){if(t==="pkcs-8")return yD(r,e);if(t==="libp2p-key")return H1(Ns(r),e);throw new C("Export format is not supported")}async function yD(r,e){let t=Qe.get(),o=new Xt({value:[new Yn({value:0}),new Xt({value:[new dn({value:"1.2.840.113549.1.1.1"}),new ti]}),new jn({valueHex:r.raw})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=t.getRandomValues(new Uint8Array(16)),a=await Jh(en,e,i,{c:1e4,dkLen:32}),c=t.getRandomValues(new Uint8Array(16)),l=await t.subtle.importKey("raw",ie(a),"AES-CBC",!1,["encrypt"]),u=await t.subtle.encrypt({name:"AES-CBC",iv:ie(c)},l,ie(s)),d=new Xt({value:[new jn({valueHex:i}),new Yn({value:1e4}),new Yn({value:32}),new Xt({value:[new dn({value:"1.2.840.113549.2.11"}),new ti]})]}),f=new Xt({value:[new dn({value:"1.2.840.113549.1.5.13"}),new Xt({value:[new Xt({value:[new dn({value:"1.2.840.113549.1.5.12"}),d]}),new Xt({value:[new dn({value:"2.16.840.1.101.3.4.1.42"}),new jn({valueHex:c})]})]})]}),p=new Xt({value:[f,new jn({valueHex:u})]}).toBER(),y=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...B(y,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
31
|
+
`)}async function L4(r,e){try{let t=await bD(r,e);return ky(t)}catch{}if(!r.includes("BEGIN"))throw new C("Encrypted key was not a libp2p-key or a PEM file");return wD(r,e)}async function bD(r,e){let t=_n.decode(r);return ha.create().decrypt(t,e)}async function wD(r,e){let t=Qe.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=O(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=q1(s),{iv:a,salt:c,iterations:l,keySize:u,cipherText:d}=xD(i),f=await Jh(en,e,c,{c:l,dkLen:u}),h=await t.subtle.importKey("raw",ie(f),"AES-CBC",!1,["decrypt"]),p=Xl(await t.subtle.decrypt({name:"AES-CBC",iv:ie(a)},h,ie(d))),{result:y}=q1(p);n=qw(y)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=O(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=q1(s);n=qw(i)}else throw new C("Could not parse private key from PEM data");let o=Ny(n);if(o.type!=="RSA")throw new C("Could not parse RSA private key from PEM data");return o}function xD(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new C("Only pkcs5PBES2 encrypted private keys are supported");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new C("Only pkcs5PBKDF2 key derivation functions are supported");let s=n.valueBlock.value[1],i=Xl(s.valueBlock.value[0].getValue()),a=1e4,c=32;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new C("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key");let l=e.valueBlock.value[1].valueBlock.value[1],u=l.valueBlock.value[0].toString();if(u!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(u!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(u!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new C("Only AES-CBC encryption schemes are supported")}}}}let d=Xl(l.valueBlock.value[1].getValue());return{cipherText:Xl(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:d}}function qw(r){return Xl(r.valueBlock.value[2].getValue())}function Xl(r){return new Uint8Array(r,0,r.byteLength)}var ED="/pkcs8/",P4="/info/",Zl=new WeakMap,ri={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3};function ga(r){return r==null||typeof r!="string"?!1:r===(0,Hw.default)(r.trim())&&r.length>0}async function Et(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function ni(r){return new Rt(ED+r)}function ya(r){return new Rt(P4+r)}async function vD(r){let e=Ns(r),t=await pt.digest(e);return Ee.encode(t.bytes).substring(1)}var z1=class{components;init;log;self;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init={...t,dek:{...v4,...t.dek}},this.self=t.selfKey??"self",this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<ri.minKeyLength)throw new Error(`dek.keyLength must be least ${ri.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<ri.minSaltLength)throw new Error(`dek.saltLength must be least ${ri.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<ri.minIterationCount)throw new Error(`dek.iterationCount must be least ${ri.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?$l(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Zl.set(this,{dek:n})}[Symbol.toStringTag]="@libp2p/keychain";[ue]=["@libp2p/keychain"];static generateOptions(){let e=Object.assign({},this.options),t=Math.ceil(ri.minSaltLength/3)*3;return e.dek!=null&&(e.dek.salt=B(crypto.getRandomValues(new Uint8Array(t)),"base64")),e}static get options(){return{dek:{...v4}}}async findKeyByName(e){if(!ga(e))throw await Et(),new C(`Invalid key name '${e}'`);let t=ya(e);try{let n=await this.components.datastore.get(t);return JSON.parse(B(n))}catch(n){throw await Et(),this.log.error("could not read key from datastore - %e",n),new Pe(`Key '${e}' does not exist.`)}}async findKeyById(e){try{let t={prefix:P4};for await(let n of this.components.datastore.query(t)){let o=JSON.parse(B(n.value));if(o.id===e)return o}throw new C(`Key with id '${e}' does not exist.`)}catch(t){throw await Et(),t}}async importKey(e,t){if(!ga(e))throw await Et(),new C(`Invalid key name '${e}'`);if(t==null)throw await Et(),new C("Key is required");let n=ni(e);if(await this.components.datastore.has(n))throw await Et(),new C(`Key '${e}' already exists`);let s,i;try{s=await vD(t);let l=Zl.get(this);if(l==null)throw new C("dek missing");let u=l.dek;i=await R4(t,u,t.type==="RSA"?"pkcs-8":"libp2p-key")}catch(l){throw await Et(),l}let a={name:e,id:s},c=this.components.datastore.batch();return c.put(n,O(i)),c.put(ya(e),O(JSON.stringify(a))),await c.commit(),a}async exportKey(e){if(!ga(e))throw await Et(),new C(`Invalid key name '${e}'`);let t=ni(e);try{let n=await this.components.datastore.get(t),o=B(n),s=Zl.get(this);if(s==null)throw new C("dek missing");let i=s.dek;return await L4(o,i)}catch(n){throw await Et(),n}}async removeKey(e){if(!ga(e)||e===this.self)throw await Et(),new C(`Invalid key name '${e}'`);let t=ni(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(ya(e)),await o.commit(),n}async listKeys(){let e={prefix:P4},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(B(n.value)));return t}async renameKey(e,t){if(!ga(e)||e===this.self)throw await Et(),new C(`Invalid old key name '${e}'`);if(!ga(t)||t===this.self)throw await Et(),new C(`Invalid new key name '${t}'`);let n=ni(e),o=ni(t),s=ya(e),i=ya(t);if(await this.components.datastore.has(o))throw await Et(),new C(`Key '${t}' already exists`);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),u=JSON.parse(B(l));u.name=t;let d=this.components.datastore.batch();return d.put(o,c),d.put(i,O(JSON.stringify(u))),d.delete(n),d.delete(s),await d.commit(),u}catch(c){throw await Et(),c}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Et(),new C(`Invalid old pass type '${typeof e}'`);if(typeof t!="string")throw await Et(),new C(`Invalid new pass type '${typeof t}'`);if(t.length<20)throw await Et(),new C(`Invalid pass length ${t.length}`);this.log("recreating keychain");let n=Zl.get(this);if(n==null)throw new C("dek missing");let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?$l(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Zl.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(ni(a.name)),l=B(c),u=await L4(l,o),d=s.toString(),f=await R4(u,d,u.type==="RSA"?"pkcs-8":"libp2p-key"),h=this.components.datastore.batch(),p={name:a.name,id:a.id};h.put(ni(a.name),O(f)),h.put(ya(a.name),O(JSON.stringify(p))),await h.commit()}this.log("keychain reconstructed")}};function zw(r={}){return e=>new z1(e,r)}async function D4(r,e={}){let t=e.selfKey??"self",n=zw(e)({datastore:r,logger:qi()}),o;return await r.has(new Rt(`/pkcs8/${t}`))?o=await n.exportKey(t):(o=await Xd(e.keyType??"Ed25519"),await n.importKey(t,o)),o}function ot(r=0){return new Uint8Array(r)}function Pt(r=0){return new Uint8Array(r)}var ba=!!globalThis.process?.env?.DUMP_SESSION_KEYS,k4=16;function SD(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in r&&r.BYTES_PER_ELEMENT===1}function G1(r){if(typeof r!="boolean")throw new TypeError(`boolean expected, not ${r}`)}function wa(r){if(typeof r!="number")throw new TypeError("number expected, got "+typeof r);if(!Number.isSafeInteger(r)||r<0)throw new RangeError("positive integer expected, got "+r)}function st(r,e,t=""){let n=SD(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`,l=i+"expected Uint8Array"+a+", got "+c;throw n?new RangeError(l):new TypeError(l)}return r}function N4(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Gw(r,e,t=!1){st(r,void 0,"output");let n=e.outputLen;if(r.length<n)throw new RangeError("digestInto() expects output buffer of length at least "+n);if(t&&!xa(r))throw new Error("invalid output, must be aligned")}function hn(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function qr(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function AD(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}var oi=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,CD=r=>r<<24&4278190080|r<<8&16711680|r>>>8&65280|r>>>24&255;var ID=r=>{for(let e=0;e<r.length;e++)r[e]=CD(r[e]);return r},Jn=oi?r=>r:ID;function Ww(r,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(r,e)}function jw(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function Yw(r,e,t){let n=e,o=t||(()=>[]),s=(a,c)=>n(c,...o(a)).update(a).digest(),i=n(new Uint8Array(r),...o(new Uint8Array(0)));return s.outputLen=i.outputLen,s.blockLen=i.blockLen,s.create=(a,...c)=>n(a,...c),s}var Qw=(r,e)=>{function t(n,...o){if(st(n,void 0,"key"),r.nonceLength!==void 0){let u=o[0];st(u,r.varSizeNonce?void 0:r.nonceLength,"nonce")}let s=r.tagLength;s&&o[1]!==void 0&&st(o[1],void 0,"AAD");let i=e(n,...o),a=(u,d)=>{if(d!==void 0){if(u!==2)throw new Error("cipher output not supported");st(d,void 0,"output")}},c=!1;return{encrypt(u,d){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,st(u),a(i.encrypt.length,d),i.encrypt(u,d)},decrypt(u,d){if(st(u),s&&u.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return a(i.decrypt.length,d),i.decrypt(u,d)}}}return Object.assign(t,r),t};function Jl(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(st(e,void 0,"output"),e.length!==r)throw new Error('"output" expected Uint8Array of length '+r+", got: "+e.length);if(t&&!xa(e))throw new Error("invalid output, must be aligned");return e}function Xw(r,e,t){wa(r),wa(e),G1(t);let n=new Uint8Array(16),o=AD(n);return o.setBigUint64(0,BigInt(e),t),o.setBigUint64(8,BigInt(r),t),n}function xa(r){return r.byteOffset%4===0}function Ea(r){return Uint8Array.from(st(r))}var Jw=r=>Uint8Array.from(r.split(""),e=>e.charCodeAt(0)),TD=Jn(hn(Jw("expand 16-byte k"))),_D=Jn(hn(Jw("expand 32-byte k")));function ge(r,e){return r<<e|r>>>32-e}var eu=64,RD=16,O4=2**32-1,Zw=Uint32Array.of();function LD(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(eu),u=hn(l),d=oi&&xa(o)&&xa(s),f=d?hn(o):Zw,h=d?hn(s):Zw;if(!oi){for(let p=0;p<c;i++){if(r(e,t,n,u,i,a),Jn(u),i>=O4)throw new Error("arx: counter overflow");let y=Math.min(eu,c-p);for(let g=0,m;g<y;g++)m=p+g,s[m]=o[m]^l[g];p+=y}return}for(let p=0;p<c;i++){if(r(e,t,n,u,i,a),i>=O4)throw new Error("arx: counter overflow");let y=Math.min(eu,c-p);if(d&&y===eu){let g=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let m=0,b;m<RD;m++)b=g+m,h[b]=f[b]^u[m];p+=eu;continue}for(let g=0,m;g<y;g++)m=p+g,s[m]=o[m]^l[g];p+=y}}function ex(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=Ww({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return wa(o),wa(i),G1(s),G1(t),(a,c,l,u,d=0)=>{st(a,void 0,"key"),st(c,void 0,"nonce"),st(l,void 0,"data");let f=l.length;if(u=Jl(f,u,!1),wa(d),d<0||d>=O4)throw new Error("arx: counter overflow");let h=[],p=a.length,y,g;if(p===32)h.push(y=Ea(a)),g=_D;else if(p===16&&t)y=new Uint8Array(32),y.set(a),y.set(a,16),g=TD,h.push(y);else throw st(a,32,"arx key"),new Error("invalid key size");(!oi||!xa(c))&&h.push(c=Ea(c));let m=hn(y);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");let x=c.subarray(0,16);if(oi)n(g,m,hn(x),m);else{let v=Jn(Uint32Array.from(g));n(v,m,hn(x),m),qr(v),Jn(m)}c=c.subarray(16)}else oi||Jn(m);let b=16-o;if(b!==c.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){let x=new Uint8Array(12);x.set(c,s?0:12-c.length),c=x,h.push(c)}let w=Jn(hn(c));try{return LD(r,g,m,w,l,u,d,i),u}finally{qr(...h)}}}function vt(r,e){return r[e++]&255|(r[e++]&255)<<8}var M4=class{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;destroyed=!1;constructor(e){e=Ea(st(e,32,"key"));let t=vt(e,0),n=vt(e,2),o=vt(e,4),s=vt(e,6),i=vt(e,8),a=vt(e,10),c=vt(e,12),l=vt(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let u=0;u<8;u++)this.pad[u]=vt(e,16+2*u)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],u=i[3],d=i[4],f=i[5],h=i[6],p=i[7],y=i[8],g=i[9],m=vt(e,t+0),b=vt(e,t+2),w=vt(e,t+4),x=vt(e,t+6),v=vt(e,t+8),A=vt(e,t+10),S=vt(e,t+12),I=vt(e,t+14),k=s[0]+(m&8191),K=s[1]+((m>>>13|b<<3)&8191),F=s[2]+((b>>>10|w<<6)&8191),E=s[3]+((w>>>7|x<<9)&8191),P=s[4]+((x>>>4|v<<12)&8191),L=s[5]+(v>>>1&8191),_=s[6]+((v>>>14|A<<2)&8191),T=s[7]+((A>>>11|S<<5)&8191),D=s[8]+((S>>>8|I<<8)&8191),N=s[9]+(I>>>5|o),R=0,M=R+k*a+K*(5*g)+F*(5*y)+E*(5*p)+P*(5*h);R=M>>>13,M&=8191,M+=L*(5*f)+_*(5*d)+T*(5*u)+D*(5*l)+N*(5*c),R+=M>>>13,M&=8191;let U=R+k*c+K*a+F*(5*g)+E*(5*y)+P*(5*p);R=U>>>13,U&=8191,U+=L*(5*h)+_*(5*f)+T*(5*d)+D*(5*u)+N*(5*l),R+=U>>>13,U&=8191;let G=R+k*l+K*c+F*a+E*(5*g)+P*(5*y);R=G>>>13,G&=8191,G+=L*(5*p)+_*(5*h)+T*(5*f)+D*(5*d)+N*(5*u),R+=G>>>13,G&=8191;let J=R+k*u+K*l+F*c+E*a+P*(5*g);R=J>>>13,J&=8191,J+=L*(5*y)+_*(5*p)+T*(5*h)+D*(5*f)+N*(5*d),R+=J>>>13,J&=8191;let Q=R+k*d+K*u+F*l+E*c+P*a;R=Q>>>13,Q&=8191,Q+=L*(5*g)+_*(5*y)+T*(5*p)+D*(5*h)+N*(5*f),R+=Q>>>13,Q&=8191;let Ie=R+k*f+K*d+F*u+E*l+P*c;R=Ie>>>13,Ie&=8191,Ie+=L*a+_*(5*g)+T*(5*y)+D*(5*p)+N*(5*h),R+=Ie>>>13,Ie&=8191;let Te=R+k*h+K*f+F*d+E*u+P*l;R=Te>>>13,Te&=8191,Te+=L*c+_*a+T*(5*g)+D*(5*y)+N*(5*p),R+=Te>>>13,Te&=8191;let _e=R+k*p+K*h+F*f+E*d+P*u;R=_e>>>13,_e&=8191,_e+=L*l+_*c+T*a+D*(5*g)+N*(5*y),R+=_e>>>13,_e&=8191;let ye=R+k*y+K*p+F*h+E*f+P*d;R=ye>>>13,ye&=8191,ye+=L*u+_*l+T*c+D*a+N*(5*g),R+=ye>>>13,ye&=8191;let Be=R+k*g+K*y+F*p+E*h+P*f;R=Be>>>13,Be&=8191,Be+=L*d+_*u+T*l+D*c+N*a,R+=Be>>>13,Be&=8191,R=(R<<2)+R|0,R=R+M|0,M=R&8191,R=R>>>13,U+=R,s[0]=M,s[1]=U,s[2]=G,s[3]=J,s[4]=Q,s[5]=Ie,s[6]=Te,s[7]=_e,s[8]=ye,s[9]=Be}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535;qr(n)}update(e){N4(this),st(e),e=Ea(e);let{buffer:t,blockLen:n}=this,o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.destroyed=!0,qr(this.h,this.r,this.buffer,this.pad)}digestInto(e){N4(this),Gw(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}},tx=Yw(32,r=>new M4(r));function PD(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],u=e[0],d=e[1],f=e[2],h=e[3],p=e[4],y=e[5],g=e[6],m=e[7],b=o,w=t[0],x=t[1],v=t[2],A=i,S=a,I=c,k=l,K=u,F=d,E=f,P=h,L=p,_=y,T=g,D=m,N=b,R=w,M=x,U=v;for(let J=0;J<s;J+=2)A=A+K|0,N=ge(N^A,16),L=L+N|0,K=ge(K^L,12),A=A+K|0,N=ge(N^A,8),L=L+N|0,K=ge(K^L,7),S=S+F|0,R=ge(R^S,16),_=_+R|0,F=ge(F^_,12),S=S+F|0,R=ge(R^S,8),_=_+R|0,F=ge(F^_,7),I=I+E|0,M=ge(M^I,16),T=T+M|0,E=ge(E^T,12),I=I+E|0,M=ge(M^I,8),T=T+M|0,E=ge(E^T,7),k=k+P|0,U=ge(U^k,16),D=D+U|0,P=ge(P^D,12),k=k+P|0,U=ge(U^k,8),D=D+U|0,P=ge(P^D,7),A=A+F|0,U=ge(U^A,16),T=T+U|0,F=ge(F^T,12),A=A+F|0,U=ge(U^A,8),T=T+U|0,F=ge(F^T,7),S=S+E|0,N=ge(N^S,16),D=D+N|0,E=ge(E^D,12),S=S+E|0,N=ge(N^S,8),D=D+N|0,E=ge(E^D,7),I=I+P|0,R=ge(R^I,16),L=L+R|0,P=ge(P^L,12),I=I+P|0,R=ge(R^I,8),L=L+R|0,P=ge(P^L,7),k=k+K|0,M=ge(M^k,16),_=_+M|0,K=ge(K^_,12),k=k+K|0,M=ge(M^k,8),_=_+M|0,K=ge(K^_,7);let G=0;n[G++]=i+A|0,n[G++]=a+S|0,n[G++]=c+I|0,n[G++]=l+k|0,n[G++]=u+K|0,n[G++]=d+F|0,n[G++]=f+E|0,n[G++]=h+P|0,n[G++]=p+L|0,n[G++]=y+_|0,n[G++]=g+T|0,n[G++]=m+D|0,n[G++]=b+N|0,n[G++]=w+R|0,n[G++]=x+M|0,n[G++]=v+U|0}var DD=ex(PD,{counterRight:!1,counterLength:4,allowShortKeys:!1});var kD=new Uint8Array(16),rx=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(kD.subarray(t))},ND=new Uint8Array(32);function nx(r,e,t,n,o){o!==void 0&&st(o,void 0,"AAD");let s=r(e,t,ND),i=Xw(n.length,o?o.length:0,!0),a=tx.create(s);o&&rx(a,o),rx(a,n),a.update(i);let c=a.digest();return qr(s,i),c}var OD=r=>(e,t,n)=>({encrypt(s,i){let a=s.length;i=Jl(a+16,i,!1),i.set(s);let c=i.subarray(0,-16);r(e,t,c,c,1);let l=nx(r,e,t,c,n);return i.set(l,a),qr(l),i},decrypt(s,i){i=Jl(s.length-16,i,!1);let a=s.subarray(0,-16),c=s.subarray(-16),l=nx(r,e,t,a,n);if(!jw(c,l))throw qr(l),new Error("invalid tag");return i.set(s.subarray(0,-16)),r(e,t,i,i,1),qr(l),i}}),B4=Qw({blockSize:64,nonceLength:12,tagLength:16},OD(DD));function sx(r,e,t){return Ln(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ks(r,t,e)}var U4=Uint8Array.of(0),ox=Uint8Array.of();function ix(r,e,t,n=32){Ln(r),Ht(n,"length"),mt(e,void 0,"prk");let o=r.outputLen;if(e.length<o)throw new Error('"prk" must be at least HashLen octets');if(n>255*o)throw new Error("Length must be <= 255*HashLen");let s=Math.ceil(n/o);t===void 0?t=ox:mt(t,void 0,"info");let i=new Uint8Array(s*o),a=ks.create(r,e),c=a._cloneInto(),l=new Uint8Array(a.outputLen);for(let u=0;u<s;u++)U4[0]=u+1,c.update(u===0?ox:l).update(t).update(U4).digestInto(l),i.set(l,o*u),a._cloneInto(c);return a.destroy(),c.destroy(),At(l,U4),i.slice(0,n)}var F4={hashSHA256(r){return yr(r.subarray())},getHKDF(r,e){let t=sx(yr,e,r),o=ix(yr,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=$c.utils.randomSecretKey();return{publicKey:$c.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:$c.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return $c.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return B4(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return B4(n,e,t).decrypt(r.subarray(),o)}};var ax=F4;function cx(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var va=r=>{let e=Pt(2);return e[0]=r>>8,e[1]=r,e};va.bytes=2;var Sa=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};Sa.bytes=2;function lx(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}var H4={};$(H4,{base10:()=>KD});var cie=new Uint8Array(0);function ux(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function eo(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 dx(r){return new TextEncoder().encode(r)}function fx(r){return new TextDecoder().decode(r)}function MD(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var BD=MD,UD=BD,px=UD;var $4=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},V4=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return mx(this,e)}},K4=class{decoders;constructor(e){this.decoders=e}or(e){return mx(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function mx(r,e){return new K4({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var q4=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new $4(e,t,n),this.decoder=new V4(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Aa({name:r,prefix:e,encode:t,decode:n}){return new q4(r,e,t,n)}function Bo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=px(t,r);return Aa({prefix:e,name:r,encode:n,decode:s=>eo(o(s))})}function FD(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function $D(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function VD(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function ze({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=VD(n);return Aa({prefix:e,name:r,encode(s){return $D(s,n,t)},decode(s){return FD(s,o,t,r)}})}var KD=Bo({prefix:"9",name:"base10",alphabet:"0123456789"});var z4={};$(z4,{base16:()=>qD,base16upper:()=>HD});var qD=ze({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),HD=ze({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var G4={};$(G4,{base2:()=>zD});var zD=ze({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var W4={};$(W4,{base256emoji:()=>QD});var gx=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}"),GD=gx.reduce((r,e,t)=>(r[t]=e,r),[]),WD=gx.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function jD(r){return r.reduce((e,t)=>(e+=GD[t],e),"")}function YD(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=WD[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var QD=Aa({prefix:"\u{1F680}",name:"base256emoji",encode:jD,decode:YD});var j4={};$(j4,{base32:()=>Ca,base32hex:()=>ek,base32hexpad:()=>rk,base32hexpadupper:()=>nk,base32hexupper:()=>tk,base32pad:()=>ZD,base32padupper:()=>JD,base32upper:()=>XD,base32z:()=>ok});var Ca=ze({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),XD=ze({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),ZD=ze({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),JD=ze({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),ek=ze({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),tk=ze({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),rk=ze({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nk=ze({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ok=ze({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Y4={};$(Y4,{base36:()=>tu,base36upper:()=>sk});var tu=Bo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),sk=Bo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Q4={};$(Q4,{base58btc:()=>pn,base58flickr:()=>ik});var pn=Bo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),ik=Bo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var X4={};$(X4,{base64:()=>ak,base64pad:()=>ck,base64url:()=>lk,base64urlpad:()=>uk});var ak=ze({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ck=ze({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),lk=ze({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),uk=ze({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Z4={};$(Z4,{base8:()=>dk});var dk=ze({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var J4={};$(J4,{identity:()=>fk});var fk=Aa({prefix:"\0",name:"identity",encode:r=>fx(r),decode:r=>dx(r)});var Aie=new TextEncoder,Cie=new TextDecoder;var tg={};$(tg,{identity:()=>Ok});var mk=wx,yx=128,gk=127,yk=~gk,bk=Math.pow(2,31);function wx(r,e,t){e=e||[],t=t||0;for(var n=t;r>=bk;)e[t++]=r&255|yx,r/=128;for(;r&yk;)e[t++]=r&255|yx,r>>>=7;return e[t]=r|0,wx.bytes=t-n+1,e}var wk=eg,xk=128,bx=127;function eg(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw eg.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&bx)<<o:(i&bx)*Math.pow(2,o),o+=7}while(i>=xk);return eg.bytes=s-n,t}var Ek=Math.pow(2,7),vk=Math.pow(2,14),Sk=Math.pow(2,21),Ak=Math.pow(2,28),Ck=Math.pow(2,35),Ik=Math.pow(2,42),Tk=Math.pow(2,49),_k=Math.pow(2,56),Rk=Math.pow(2,63),Lk=function(r){return r<Ek?1:r<vk?2:r<Sk?3:r<Ak?4:r<Ck?5:r<Ik?6:r<Tk?7:r<_k?8:r<Rk?9:10},Pk={encode:mk,decode:wk,encodingLength:Lk},Dk=Pk,ru=Dk;function nu(r,e=0){return[ru.decode(r,e),ru.decode.bytes]}function Ia(r,e,t=0){return ru.encode(r,e,t),e}function Ta(r){return ru.encodingLength(r)}function Ra(r,e){let t=e.byteLength,n=Ta(r),o=n+Ta(t),s=new Uint8Array(o+t);return Ia(r,s,0),Ia(t,s,n),s.set(e,o),new _a(r,t,e,s)}function xx(r){let e=eo(r),[t,n]=nu(e),[o,s]=nu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new _a(t,o,i,e)}function Ex(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&ux(r.bytes,t.bytes)}}var _a=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var vx=0,kk="identity",Sx=eo;function Nk(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Ra(vx,Sx(r))}var Ok={code:vx,name:kk,encode:Sx,digest:Nk};var og={};$(og,{sha256:()=>Bk,sha512:()=>Uk});var Mk=20;function ng({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new rg(r,e,t,n,o)}var rg=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??Mk,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Ax(n,this.code,t?.truncate):n.then(o=>Ax(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function Ax(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Ra(e,r)}function Ix(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Bk=ng({name:"sha2-256",code:18,encode:Ix("SHA-256")}),Uk=ng({name:"sha2-512",code:19,encode:Ix("SHA-512")});function Tx(r,e){let{bytes:t,version:n}=r;return n===0?$k(t,sg(r),e??pn.encoder):Vk(t,sg(r),e??Ca.encoder)}var _x=new WeakMap;function sg(r){let e=_x.get(r);if(e==null){let t=new Map;return _x.set(r,t),t}return e}var j1=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==su)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Kk)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ra(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Ex(e.multihash,n.multihash)}toString(e){return Tx(this,e)}toJSON(){return{"/":Tx(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??Rx(n,o,s.bytes))}else if(t[qk]===!0){let{version:n,multihash:o,code:s}=t,i=xx(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==su)throw new Error(`Version 0 CID must use dag-pb (code: ${su}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=Rx(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,su,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=eo(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new _a(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=nu(e.subarray(t));return t+=f,d},o=n(),s=su;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=Fk(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return sg(s).set(n,e),s}};function Fk(r,e){switch(r[0]){case"Q":{let t=e??pn;return[pn.prefix,t.decode(`${pn.prefix}${r}`)]}case pn.prefix:{let t=e??pn;return[pn.prefix,t.decode(r)]}case Ca.prefix:{let t=e??Ca;return[Ca.prefix,t.decode(r)]}case tu.prefix:{let t=e??tu;return[tu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function $k(r,e,t){let{prefix:n}=t;if(n!==pn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function Vk(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var su=112,Kk=18;function Rx(r,e,t){let n=Ta(r),o=n+Ta(e),s=new Uint8Array(o+t.byteLength);return Ia(r,s,0),Ia(e,s,n),s.set(t,o),s}var qk=Symbol.for("@ipld/js-cid/CID");var ig={...J4,...G4,...Z4,...H4,...z4,...j4,...Y4,...Q4,...X4,...W4},Wie={...og,...tg};function Px(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Lx=Px("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),ag=Px("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Pt(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Hk={utf8:Lx,"utf-8":Lx,hex:ig.base16,latin1:ag,ascii:ag,binary:ag,...ig},Y1=Hk;function mn(r,e="utf8"){let t=Y1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function cg(r,e){!e.enabled||!ba||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${mn(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${mn(r.privateKey,"hex")}`)):e("Missing local static keys."))}function lg(r,e){!e.enabled||!ba||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${mn(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${mn(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Dx(r,e){!e.enabled||!ba||e(r?`REMOTE_STATIC_PUBLIC_KEY ${mn(r.subarray(),"hex")}`:"Missing remote static public key.")}function ug(r,e){!e.enabled||!ba||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${mn(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function dg(r,e,t){!t.enabled||!ba||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&mn(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&mn(e.k,"hex")}`))}function La(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=Pt(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}function fg(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var Nx=Symbol.for("@achingbrain/uint8arraylist");function kx(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function Q1(r){return!!r?.[Nx]}var gn=class r{bufs;length;[Nx]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Q1(n)){t+=n.byteLength;for(let o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Q1(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=kx(this.bufs,e);return t.buf[t.index]}set(e,t){let n=kx(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Q1(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return La(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:La(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=n,s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let d=e-a;n.push(i.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Q1(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let d=0;d<s;d++)i[d]=-1;for(let d=0;d<o;d++)i[n[d]]=d;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let f=l;f>=0;f--){let h=this.get(d+f);if(n[f]!==h){u=Math.max(1,f-a[h]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Pt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ot(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ot(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ot(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Pt(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ot(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ot(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ot(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ot(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ot(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!fg(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};function si(r,e="utf8"){let t=Y1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var Pa=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var Gk=0,Wk=4294967295,jk="Cipherstate has reached maximum n, a new handshake must be performed",X1=class{n;bytes;view;constructor(e=Gk){this.n=e,this.bytes=ot(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>Wk)throw new Error(jk)}};var ii=ot(0),Da=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new X1(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},hg=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=si(t,"utf-8");this.h=Yk(e,n),this.ck=this.h,this.cs=new Da(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Da(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new gn(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,ii);return[new Da(this.crypto,e),new Da(this.crypto,t)]}},pg=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new hg(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},iu=class extends pg{writeMessageA(e){return new gn(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new gn(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new gn(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Pa(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new Pa(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new Pa(`handshake stage 2 validation fail: ${t.message}`)}}};function Yk(r,e){if(e.length<=32){let t=ot(32);return t.set(e),t}else return r.hash(e)}var Qk=Math.pow(2,7),Xk=Math.pow(2,14),Zk=Math.pow(2,21),Ox=Math.pow(2,28),Mx=Math.pow(2,35),Bx=Math.pow(2,42),Ux=Math.pow(2,49),Kt=128,Uo=127;function au(r){if(r<Qk)return 1;if(r<Xk)return 2;if(r<Zk)return 3;if(r<Ox)return 4;if(r<Mx)return 5;if(r<Bx)return 6;if(r<Ux)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Fx(r,e,t=0){switch(au(r)){case 8:e[t++]=r&255|Kt,r/=128;case 7:e[t++]=r&255|Kt,r/=128;case 6:e[t++]=r&255|Kt,r/=128;case 5:e[t++]=r&255|Kt,r/=128;case 4:e[t++]=r&255|Kt,r>>>=7;case 3:e[t++]=r&255|Kt,r>>>=7;case 2:e[t++]=r&255|Kt,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function $x(r,e){let t=r[e],n=0;if(n+=t&Uo,t<Kt||(t=r[e+1],n+=(t&Uo)<<7,t<Kt)||(t=r[e+2],n+=(t&Uo)<<14,t<Kt)||(t=r[e+3],n+=(t&Uo)<<21,t<Kt)||(t=r[e+4],n+=(t&Uo)*Ox,t<Kt)||(t=r[e+5],n+=(t&Uo)*Mx,t<Kt)||(t=r[e+6],n+=(t&Uo)*Bx,t<Kt)||(t=r[e+7],n+=(t&Uo)*Ux,t<Kt))return n;throw new RangeError("Could not decode varint")}var mg=new Float32Array([-0]),Fo=new Uint8Array(mg.buffer);function Vx(r,e,t){mg[0]=r,e[t]=Fo[0],e[t+1]=Fo[1],e[t+2]=Fo[2],e[t+3]=Fo[3]}function Kx(r,e){return Fo[0]=r[e],Fo[1]=r[e+1],Fo[2]=r[e+2],Fo[3]=r[e+3],mg[0]}var gg=new Float64Array([-0]),Dt=new Uint8Array(gg.buffer);function qx(r,e,t){gg[0]=r,e[t]=Dt[0],e[t+1]=Dt[1],e[t+2]=Dt[2],e[t+3]=Dt[3],e[t+4]=Dt[4],e[t+5]=Dt[5],e[t+6]=Dt[6],e[t+7]=Dt[7]}function Hx(r,e){return Dt[0]=r[e],Dt[1]=r[e+1],Dt[2]=r[e+2],Dt[3]=r[e+3],Dt[4]=r[e+4],Dt[5]=r[e+5],Dt[6]=r[e+6],Dt[7]=r[e+7],gg[0]}var Jk=BigInt(Number.MAX_SAFE_INTEGER),eN=BigInt(Number.MIN_SAFE_INTEGER),fr=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return ai;if(e<Jk&&e>eN)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>zx&&(o=0n,++n>zx&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return ai;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):ai}},ai=new fr(0,0);ai.toBigInt=function(){return 0n};ai.zzEncode=ai.zzDecode=function(){return this};ai.length=function(){return 1};var zx=4294967296n;function Gx(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function Wx(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function yg(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function Hr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Z1(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var bg=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Hr(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Hr(this,4);return Z1(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Hr(this,4);return Z1(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Hr(this,4);let e=Kx(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Hr(this,4);let e=Hx(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Hr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Wx(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Hr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Hr(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new fr(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Hr(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Hr(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Hr(this,8);let e=Z1(this.buf,this.pos+=4),t=Z1(this.buf,this.pos+=4);return new fr(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=$x(this.buf,this.pos);return this.pos+=au(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function wg(r){return new bg(r instanceof Uint8Array?r:r.subarray())}function J1(r,e,t){let n=wg(r);return e.decode(n,void 0,t)}function xg(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return Pt(i);o+i>e&&(n=Pt(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var ci=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Eg(){}var Sg=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},tN=xg();function rN(r){return globalThis.Buffer!=null?Pt(r):tN(r)}var lu=class{len;head;tail;states;constructor(){this.len=0,this.head=new ci(Eg,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ci(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Ag((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(e0,10,fr.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=fr.fromBigInt(e);return this._push(e0,t.length(),t)}uint64Number(e){return this._push(Fx,au(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=fr.fromBigInt(e).zzEncode();return this._push(e0,t.length(),t)}sint64Number(e){let t=fr.fromNumber(e).zzEncode();return this._push(e0,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(vg,1,e?1:0)}fixed32(e){return this._push(cu,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=fr.fromBigInt(e);return this._push(cu,4,t.lo)._push(cu,4,t.hi)}fixed64Number(e){let t=fr.fromNumber(e);return this._push(cu,4,t.lo)._push(cu,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(Vx,4,e)}double(e){return this._push(qx,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(vg,1,0):this.uint32(t)._push(oN,t,e)}string(e){let t=Gx(e);return t!==0?this.uint32(t)._push(yg,t,e):this._push(vg,1,0)}fork(){return this.states=new Sg(this),this.head=this.tail=new ci(Eg,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 ci(Eg,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=rN(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function vg(r,e,t){e[t]=r&255}function nN(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Ag=class extends ci{next;constructor(e,t){super(nN,e,t),this.next=void 0}};function e0(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function cu(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function oN(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(lu.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(sN,e,r),this},lu.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(iN,e,r),this});function sN(r,e,t){e.set(r,t)}function iN(r,e,t){r.length<40?yg(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(si(r),t)}function Cg(){return new lu}function t0(r,e){let t=Cg();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var uu;(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"})(uu||(uu={}));function Ig(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function r0(r,e){return Ig("message",uu.LENGTH_DELIMITED,r,e)}var du=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var n0;(function(r){let e;r.codec=()=>(e==null&&(e=r0((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);if(t.streamMuxers!=null)for(let s of t.streamMuxers)n.uint32(18),n.string(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={webtransportCerthashes:[],streamMuxers:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(o.limits?.webtransportCerthashes!=null&&s.webtransportCerthashes.length===o.limits.webtransportCerthashes)throw new du('Decode error - map field "webtransportCerthashes" had too many elements');s.webtransportCerthashes.push(t.bytes());break}case 2:{if(o.limits?.streamMuxers!=null&&s.streamMuxers.length===o.limits.streamMuxers)throw new du('Decode error - map field "streamMuxers" had too many elements');s.streamMuxers.push(t.string());break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>t0(t,r.codec()),r.decode=(t,n)=>J1(t,r.codec(),n)})(n0||(n0={}));var fu;(function(r){let e;r.codec=()=>(e==null&&(e=r0((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),n0.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={identityKey:ot(0),identitySig:ot(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.identityKey=t.bytes();break}case 2:{s.identitySig=t.bytes();break}case 4:{s.extensions=n0.codec().decode(t,t.uint32(),{limits:o.limits?.extensions});break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>t0(t,r.codec()),r.decode=(t,n)=>J1(t,r.codec(),n)})(fu||(fu={}));async function _g(r,e,t){let n=await r.sign(Qx(e));return fu.encode({identityKey:ct(r.publicKey),identitySig:n,extensions:t})}async function Rg(r,e,t){try{let n=fu.decode(r),o=nt(n.identityKey);if(t?.equals(o)===!1)throw new Error(`Payload identity key ${o} does not match expected remote identity key ${t}`);if(!e)throw new Error("Remote static does not exist");let s=Qx(e);if(!await o.verify(s,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new fd(n.message)}}function Qx(r){let e=si("noise-libp2p-static-key:");return r instanceof Uint8Array?La([e,r],e.length+r.length):(r.prepend(e),r)}var Tg=class extends To{stream;handshake;metrics;decoder;constructor(e,t,n){super({log:e.log,inactivityTimeout:e.inactivityTimeout,maxReadBufferLength:e.maxReadBufferLength,direction:e.direction}),this.stream=e,this.handshake=t,this.metrics=n,this.decoder=new Pf({lengthDecoder:Sa,maxBufferSize:16*1024*1024,encodingLength:()=>2});let o=c=>{try{for(let l of this.decoder.decode(c.data))this.onData(this.decrypt(l))}catch(l){this.abort(l)}};this.stream.addEventListener("message",o);let s=c=>{c.error!=null?c.local===!0?this.abort(c.error):this.onRemoteReset():this.onTransportClosed()};this.stream.addEventListener("close",s);let i=()=>{this.safeDispatchEvent("drain")};this.stream.addEventListener("drain",i);let a=()=>{this.onRemoteCloseWrite()};this.stream.addEventListener("remoteCloseWrite",a)}encrypt(e){let t=new gn;for(let n=0;n<e.byteLength;n+=65519){let o=n+65519;o>e.byteLength&&(o=e.byteLength);let s;e instanceof Uint8Array?s=this.handshake.encrypt(e.subarray(n,o)):s=this.handshake.encrypt(e.sublist(n,o)),this.metrics?.encryptedPackets.increment(),t.append(va(s.byteLength)),t.append(s)}return t}decrypt(e){let t=new gn;for(let n=0;n<e.byteLength;n+=65535){let o=n+65535;if(o>e.byteLength&&(o=e.byteLength),o-k4<n)throw new Error("Invalid chunk");let s;e instanceof Uint8Array?s=e.subarray(n,o):s=e.sublist(n,o);let i=e.subarray(n,o-k4);try{let a=this.handshake.decrypt(s,i);this.metrics?.decryptedPackets.increment(),t.append(a)}catch(a){throw this.metrics?.decryptErrors.increment(),a}}return t}close(e){return this.stream.close(e)}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}sendReset(e){this.stream.abort(e)}sendData(e){return{sentBytes:e.byteLength,canSendMore:this.stream.send(this.encrypt(e))}}};function Lg(r,e,t){return new Tg(r,e,t)}async function Xx(r,e){let{log:t,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await _g(s,a.publicKey,l),d=new iu({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:i,s:a});cg(d.s,t),t.trace("Stage 0 - Initiator starting to send first message."),await n.write(d.writeMessageA(ii),e),t.trace("Stage 0 - Initiator finished sending first message."),lg(d.e,t),t.trace("Stage 1 - Initiator waiting to receive first message from responder...");let f=d.readMessageB(await n.read(e));t.trace("Stage 1 - Initiator received the message."),ug(d.re,t),Dx(d.rs,t),t.trace("Initiator going to check remote's signature...");let h=await Rg(f,d.rs,c);t.trace("All good with the signature!"),t.trace("Stage 2 - Initiator sending third handshake message."),await n.write(d.writeMessageC(u),e),t.trace("Stage 2 - Initiator sent message with signed payload.");let[p,y]=d.ss.split();return dg(p,y,t),{payload:h,encrypt:g=>p.encryptWithAd(ii,g),decrypt:(g,m)=>y.decryptWithAd(ii,g,m)}}async function Zx(r,e){let{log:t,connection:n,crypto:o,privateKey:s,prologue:i,s:a,remoteIdentityKey:c,extensions:l}=r,u=await _g(s,a.publicKey,l),d=new iu({crypto:o,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:i,s:a});cg(d.s,t),t.trace("Stage 0 - Responder waiting to receive first message."),d.readMessageA(await n.read(e)),t.trace("Stage 0 - Responder received first message."),ug(d.re,t),t.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(d.writeMessageB(u),e),t.trace("Stage 1 - Responder sent the second handshake message with signed payload."),lg(d.e,t),t.trace("Stage 2 - Responder waiting for third handshake message...");let f=d.readMessageC(await n.read(e));t.trace("Stage 2 - Responder received the message, finished handshake.");let h=await Rg(f,d.rs,c),[p,y]=d.ss.split();return dg(p,y,t),{payload:h,encrypt:g=>y.encryptWithAd(ii,g),decrypt:(g,m)=>p.decryptWithAd(ii,g,m)}}var o0=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;log;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e,this.log=e.logger.forComponent("libp2p:noise");let c=s??ax;this.crypto=cx(c),this.extensions={webtransportCerthashes:[],...o},this.metrics=a?lx(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??ot(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[ue]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,t){let n=e.log?.newScope("noise")??this.log,o=Po(e,{lengthEncoder:va,lengthDecoder:Sa,maxDataLength:65535}),s=await this.performHandshakeInitiator(o,this.components.privateKey,n,t?.remotePeer?.publicKey,t),i=nt(s.payload.identityKey);return{connection:Lg(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:nn(i),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;let t=this.components.upgrader.getStreamMuxers();if(t!=null)for(let n of e){let o=t.get(n);if(o!=null)return o}if(e.length)throw new hd("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,t){let n=e.log?.newScope("noise")??this.log,o=Po(e,{lengthEncoder:va,lengthDecoder:Sa,maxDataLength:65535}),s=await this.performHandshakeResponder(o,this.components.privateKey,n,t?.remotePeer?.publicKey,t),i=nt(s.payload.identityKey);return{connection:Lg(o.unwrap(),s,this.metrics),remoteExtensions:s.payload.extensions,remotePeer:nn(i),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(s.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,t,n,o,s){let i,a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Xx({connection:e,privateKey:t,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}async performHandshakeResponder(e,t,n,o,s){let i,a=s?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{i=await Zx({connection:e,privateKey:t,remoteIdentityKey:o,log:n.newScope("xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:a,webtransportCerthashes:[],...this.extensions}},s),this.metrics?.xxHandshakeSuccesses.increment()}catch(c){throw this.metrics?.xxHandshakeErrors.increment(),c}return i}};function s0(r={}){return e=>new o0(e,r)}function to(r=0){return new Uint8Array(r)}function pu(r=0){return new Uint8Array(r)}function Pg(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=pu(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}function Jx(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}var tE=Symbol.for("@achingbrain/uint8arraylist");function eE(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function i0(r){return!!r?.[tE]}var ka=class r{bufs;length;[tE]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(i0(n)){t+=n.byteLength;for(let o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(i0(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=eE(this.bufs,e);return t.buf[t.index]}set(e,t){let n=eE(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(i0(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Pg(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Pg(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=n,s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(i);break}let d=e-a;n.push(i.subarray(d,d+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(u){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!i0(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let d=0;d<s;d++)i[d]=-1;for(let d=0;d<o;d++)i[n[d]]=d;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let d=t;d<=c;d+=u){u=0;for(let f=l;f>=0;f--){let h=this.get(d+f);if(n[f]!==h){u=Math.max(1,f-a[h]);break}}if(u===0)return d}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=pu(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=to(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=to(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=to(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=pu(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=to(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=to(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=to(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=to(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=to(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Jx(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};var $e;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})($e||($e={}));var be;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(be||(be={}));var ale=Object.values(be).filter(r=>typeof r!="string"),rE=0,it;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(it||(it={}));var yn=12;var ro=class extends Error{static name="ProtocolError";reason;constructor(e,t){super(e),this.name="ProtocolError",this.reason=t}};function nE(r){return r?.reason!==null}var hr=class extends ro{static name="InvalidFrameError";constructor(e="The frame was invalid"){super(e,it.ProtocolError),this.name="InvalidFrameError"}},Na=class extends ro{static name="UnRequestedPingError";constructor(e="Un-requested ping error"){super(e,it.ProtocolError),this.name="UnRequestedPingError"}},Oa=class extends ro{static name="NotMatchingPingError";constructor(e="Not matching ping error"){super(e,it.ProtocolError),this.name="NotMatchingPingError"}};var a0=class extends ro{static name="StreamAlreadyExistsError";constructor(e="Stream already exists"){super(e,it.ProtocolError),this.name="StreamAlreadyExistsError"}},c0=class extends ro{static name="DecodeInvalidVersionError";constructor(e="Decode invalid version"){super(e,it.ProtocolError),this.name="DecodeInvalidVersionError"}},l0=class extends ro{static name="BothClientsError";constructor(e="Both clients"){super(e,it.ProtocolError),this.name="BothClientsError"}},Ma=class extends ro{static name="ReceiveWindowExceededError";constructor(e="Receive window exceeded"){super(e,it.ProtocolError),this.name="ReceiveWindowExceededError"}};var fle=new Set([hr.name,Na.name,Oa.name,a0.name,c0.name,l0.name,Ma.name]),mu=256*1024,u0=16*1024*1024;var gu={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,maxMessageSize:64*1024,maxEarlyStreams:10,streamOptions:{initialStreamWindowSize:mu,maxStreamWindowSize:u0,inactivityTimeout:12e4,maxReadBufferLength:4194304,maxWriteBufferLength:1/0}};function oE(r){if(r.keepAliveInterval!=null&&r.keepAliveInterval<=0)throw new C("keep-alive interval must be positive");if(r.maxInboundStreams!=null&&r.maxInboundStreams<0)throw new C("max inbound streams must be larger or equal 0");if(r.maxOutboundStreams!=null&&r.maxOutboundStreams<0)throw new C("max outbound streams must be larger or equal 0");if(r.maxMessageSize!=null&&r.maxMessageSize<1024)throw new C("MaxMessageSize must be greater than a kilobyte");if(r.streamOptions?.initialStreamWindowSize!=null&&r.streamOptions?.initialStreamWindowSize<mu)throw new C("InitialStreamWindowSize must be larger or equal 256 kB");if(r.streamOptions?.maxStreamWindowSize!=null&&r.streamOptions?.initialStreamWindowSize!=null&&r.streamOptions?.maxStreamWindowSize<r.streamOptions?.initialStreamWindowSize)throw new C("MaxStreamWindowSize must be larger than the InitialStreamWindowSize");if(r.streamOptions?.maxStreamWindowSize!=null&&r.streamOptions?.maxStreamWindowSize>2**32-1)throw new C("MaxStreamWindowSize must be less than equal MAX_UINT32")}function iE(r){return r.header.type===$e.Data&&r.data!==null}var sE=2**24;function aN(r){if(r[0]!==rE)throw new hr("Invalid frame version");return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*sE+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*sE+(r[9]<<16)+(r[10]<<8)+r[11]}}var d0=class{buffer;constructor(){this.buffer=new ka}*emitFrames(e){for(this.buffer.append(e);;){let t=this.readFrame();if(t===void 0)break;yield t}}readFrame(){let e=yn;if(this.buffer.byteLength<yn)return;let t=aN(this.buffer.subarray(0,yn));if(t.type===$e.Data){if(e+=t.length,this.buffer.byteLength<e)return;let n=this.buffer.sublist(yn,e);return this.buffer.consume(e),{header:t,data:n}}return this.buffer.consume(e),{header:t}}};function Dg(r){let e=new Uint8Array(yn);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}var qt;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished",r[r.Paused=5]="Paused"})(qt||(qt={}));var f0=class extends Lo{streamId;state;sendWindowCapacity;recvWindow;recvWindowCapacity;maxStreamWindowSize;epochStart;getRTT;sendFrame;constructor(e){let t=e.initialStreamWindowSize??mu;super({...e,maxMessageSize:t-yn}),this.streamId=e.streamId,this.state=e.state,this.sendWindowCapacity=t,this.recvWindow=t,this.recvWindowCapacity=this.recvWindow,this.maxStreamWindowSize=e.maxStreamWindowSize??u0,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame;let n=()=>{this.state=qt.Finished};this.addEventListener("close",n)}sendData(e){let t=e.byteLength,n=0,o=!0;for(this.log?.trace("send window capacity is %d bytes",this.sendWindowCapacity);e.byteLength>0;){if(this.sendWindowCapacity===0){o=!1,this.log?.trace("sent %d/%d bytes, exhausted send window, waiting for window update",n,t);break}let s=Math.min(this.sendWindowCapacity,e.byteLength),i=this.getSendFlags(),a=e.sublist(0,s);e.consume(s);let c=this.sendFrame({type:$e.Data,flag:i,streamID:this.streamId,length:s},a);if(this.sendWindowCapacity-=s,n+=s,!c){o=c,this.log.trace("sent %d/%d bytes, wait for muxer to have more send capacity",n,t);break}}return{sentBytes:n,canSendMore:o}}sendReset(){this.sendFrame({type:$e.WindowUpdate,flag:be.RST,streamID:this.streamId,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|be.FIN;this.sendFrame({type:$e.WindowUpdate,flag:e,streamID:this.streamId,length:0})}async sendCloseRead(e){e?.signal?.throwIfAborted()}sendPause(){this.state=qt.Paused}sendResume(){this.state=qt.Established,this.sendWindowUpdate()}handleWindowUpdate(e){this.processFlags(e.header.flag),this.sendWindowCapacity+=e.header.length,this.maxMessageSize=this.sendWindowCapacity-yn,this.maxMessageSize<0&&(this.maxMessageSize=0),this.maxMessageSize!==0&&this.writeBuffer.byteLength>0&&(this.log?.trace("window update of %d bytes allows more data to be sent, have %d bytes queued, sending data %s",e.header.length,this.writeBuffer.byteLength,this.sendingData),this.safeDispatchEvent("drain"))}handleData(e){if(!iE(e))throw new hr("Frame was not data frame");if(this.processFlags(e.header.flag),this.recvWindowCapacity<e.header.length)throw new Ma("Receive window exceeded");this.recvWindowCapacity-=e.header.length,this.onData(e.data),this.sendWindowUpdate()}processFlags(e){(e&be.ACK)===be.ACK&&this.state===qt.SYNSent&&(this.state=qt.Established),(e&be.FIN)===be.FIN&&this.onRemoteCloseWrite(),(e&be.RST)===be.RST&&this.onRemoteReset()}getSendFlags(){switch(this.state){case qt.Init:return this.state=qt.SYNSent,be.SYN;case qt.SYNReceived:return this.state=qt.Established,be.ACK;default:return 0}}sendWindowUpdate(){if(this.state===qt.Paused){this.epochStart=Date.now();return}let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<=n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:$e.WindowUpdate,flag:e,streamID:this.streamId,length:o})}};function aE(r){return{type:$e[r.type],flags:[(r.flag&be.SYN)===be.SYN?"SYN":void 0,(r.flag&be.ACK)===be.ACK?"ACK":void 0,(r.flag&be.FIN)===be.FIN?"FIN":void 0,(r.flag&be.RST)===be.RST?"RST":void 0].filter(Boolean),streamID:r.streamID,length:r.length}}var cE="/yamux/1.0.0",h0=class{protocol=cE;_init;constructor(e={}){this._init=e}[Symbol.toStringTag]="@chainsafe/libp2p-yamux";[ue]=["@libp2p/stream-multiplexing"];createStreamMuxer(e){return new kg(e,{...this._init})}},kg=class extends Ro{nextStreamID;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;decoder;keepAlive;enableKeepAlive;keepAliveInterval;maxInboundStreams;maxOutboundStreams;constructor(e,t={}){super(e,{...t,protocol:cE,name:"yamux"}),this.client=e.direction==="outbound",oE(t),this.enableKeepAlive=t.enableKeepAlive??gu.enableKeepAlive,this.keepAliveInterval=t.keepAliveInterval??gu.keepAliveInterval,this.maxInboundStreams=t.maxInboundStreams??gu.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??gu.maxOutboundStreams,this.decoder=new d0,this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log.trace("muxer created"),this.enableKeepAlive&&(this.log.trace("muxer keepalive enabled interval=%s",this.keepAliveInterval),this.keepAlive=ia(async n=>{try{await this.ping(n)}catch(o){this.log.error("ping error: %s",o)}},this.keepAliveInterval,{runImmediately:!0}),this.keepAlive.start())}onData(e){for(let t of this.decoder.emitFrames(e))this.handleFrame(t)}onCreateStream(){if(this.remoteGoAway!==void 0)throw new Ar("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Ar("Muxer closed locally");let e=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.maxOutboundStreams)throw new xi("max outbound streams exceeded");this.log.trace("new outgoing stream id=%s",e);let t=this._newStream(e,qt.Init,"outbound");return this.numOutboundStreams++,queueMicrotask(()=>{t.sendWindowUpdate()}),t}async ping(e){if(this.remoteGoAway!==void 0)throw new Ar("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Ar("Muxer closed locally");if(this.activePing!=null)return De(this.activePing.promise,e?.signal);this.activePing=Object.assign(Promise.withResolvers(),{id:this.nextPingID++,start:Date.now()}),this.sendPing(this.activePing.id);try{this.rtt=await De(this.activePing.promise,e?.signal)}finally{this.activePing=void 0}return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.status==="open")try{let t=e?.reason??it.NormalTermination;this.log.trace("muxer close reason=%s",it[t]),await super.close(e),this.sendGoAway(t)}finally{this.keepAlive?.stop()}}abort(e){if(this.status==="open")try{super.abort(e);let t=it.InternalError;nE(e)&&(t=e.reason),this.log.error("muxer abort reason=%s error=%s",t,e),this.sendGoAway(t)}finally{this.keepAlive?.stop()}}onTransportClosed(){try{super.onTransportClosed()}finally{this.keepAlive?.stop()}}_newStream(e,t,n){if(this.streams.find(s=>s.streamId===e)!=null)throw new C("Stream already exists with that id");let o=new f0({...this.streamOptions,id:`${e}`,streamId:e,state:t,direction:n,sendFrame:this.sendFrame.bind(this),log:this.log.newScope(`${n}:${e}`),getRTT:this.getRTT.bind(this)});return o.addEventListener("close",()=>{this.closeStream(e)},{once:!0}),o}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--}handleFrame(e){let{streamID:t,type:n,length:o}=e.header;if(this.log.trace("received frame %o",aE(e.header)),t===0)switch(n){case $e.Ping:{this.handlePing(e.header);return}case $e.GoAway:{this.handleGoAway(o);return}default:throw new hr("Invalid frame type")}else switch(e.header.type){case $e.Data:case $e.WindowUpdate:{this.handleStreamMessage(e);return}default:throw new hr("Invalid frame type")}}handlePing(e){if(e.flag===be.SYN)this.log.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,be.ACK);else if(e.flag===be.ACK)this.log.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new hr("Invalid frame flag")}handlePingResponse(e){if(this.activePing===void 0)throw new Na("ping not requested");if(this.activePing.id!==e)throw new Oa("ping doesn't match our id");this.activePing.resolve(Date.now()-this.activePing.start)}handleGoAway(e){this.log.trace("received GoAway reason=%s",it[e]??"unknown"),this.remoteGoAway=e,e===it.NormalTermination?this.onTransportClosed():this.abort(new Error("Remote sent GoAway"))}handleStreamMessage(e){let{streamID:t,flag:n,type:o}=e.header;(n&be.SYN)===be.SYN&&this.incomingStream(t);let s=this.streams.find(i=>i.streamId===t);if(s===void 0){this.log.trace("frame for missing stream id=%s",t);return}switch(o){case $e.WindowUpdate:{s.handleWindowUpdate(e);return}case $e.Data:{s.handleData(e);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new C("Both endpoints are clients");if(this.streams.find(n=>n.streamId===e))return;if(this.log.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:$e.WindowUpdate,flag:be.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.maxInboundStreams){this.log("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:$e.WindowUpdate,flag:be.RST,streamID:e,length:0});return}let t=this._newStream(e,qt.SYNReceived,"inbound");this.numInboundStreams++,this.onRemoteStream(t)}sendFrame(e,t){let n;if(e.type===$e.Data){if(t==null)throw new hr("Invalid frame");n=new ka(Dg(e),t)}else n=Dg(e);return this.log.trace("sending frame %o",aE(e)),this.send(n)}sendPing(e,t=be.SYN){t===be.SYN?this.log.trace("sending ping request pingId=%s",e):this.log.trace("sending ping response pingId=%s",e),this.sendFrame({type:$e.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=it.NormalTermination){this.log("sending GoAway reason=%s",it[e]),this.localGoAway=e,this.sendFrame({type:$e.GoAway,flag:0,streamID:0,length:e})}};function lE(r={}){return()=>new h0(r)}async function*yu(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var p0=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MESSAGE_LENGTH"};async function*Ba(r,e={}){let t=/\r?\n/,n=new TextDecoder("utf8"),o="";for await(let s of r){if(typeof s=="string"&&(s=new TextEncoder().encode(s)),Ai(s)&&(s=s.subarray()),o+=n.decode(s,{stream:!0}),o.length>(e?.maxMessageLength??o.length))throw new p0("Incoming message too long");let i=o.split(t);o=i.pop()??"";for(let a=0;a<i.length;a++)yield JSON.parse(i[a])}o+=n.decode(),o!==""&&(yield JSON.parse(o))}var li=class extends Error{static name="InvalidRequestError";constructor(e="Invalid request"){super(e),this.name="InvalidRequestError"}},xr=class extends Error{static name="BadResponseError";constructor(e="Bad response"){super(e),this.name="BadResponseError"}};var m0={concurrentRequests:4,timeout:3e4,cacheTTL:300*1e3,cacheName:"delegated-routing-v1-cache"},g0=class{url;started;httpQueue;shutDownController;timeout;filterAddrs;filterProtocols;inFlightRequests;cacheName;cache;cacheTTL;log;constructor(e,t){this.log=e.logger.forComponent("delegated-routing-v1-http-api-client"),this.started=!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.httpQueue=new jt({concurrency:t.concurrentRequests??m0.concurrentRequests}),this.inFlightRequests=new Map,this.url=t.url instanceof URL?t.url:new URL(t.url),this.timeout=t.timeout??m0.timeout,this.filterAddrs=t.filterAddrs,this.filterProtocols=t.filterProtocols,this.cacheName=t.cacheName??m0.cacheName,this.cacheTTL=t.cacheTTL??m0.cacheTTL}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cacheTTL>0&&(this.cache=await globalThis.caches?.open(this.cacheName),this.cache!=null&&this.log("cache enabled with ttl %d",this.cacheTTL)))}async stop(){this.httpQueue.clear(),this.shutDownController.abort(),await globalThis.caches?.delete(this.cacheName),this.started=!1}async*getProviders(e,t={}){this.log("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=me([this.shutDownController.signal,n,t.signal]);let s=Promise.withResolvers(),i=Promise.withResolvers(),a=0;this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let c=new URL(`${this.url}routing/v1/providers/${e}`);this.#t(c,t.filterAddrs,t.filterProtocols);let l=await this.#r(c.toString(),{headers:{accept:"application/x-ndjson, application/json;q=0.8"},signal:o});if(!l.ok){if(l.status===404)return;throw l.status===422?new li("Request does not conform to schema or semantic constraints"):new xr(`Unexpected status code: ${l.status}`)}let u=l.headers.get("Content-Type");if(u==null)throw new xr("No Content-Type header received");if(l.body==null){if(u!=="application/x-ndjson")throw new xr("Routing response had no body");return}if(u.startsWith("application/json")){let f=(await l.json()).Providers??[];for(let h of f){let p=this.#e(h);p!=null&&(a++,yield p)}}else if(u.includes("application/x-ndjson"))for await(let d of Ba(yu(l.body))){let f=this.#e(d);f!=null&&(a++,yield f)}else throw new xr(`Unsupported Content-Type: ${u}`)}finally{o.clear(),i.resolve(),this.log("getProviders finished found %d providers for %c",a,e)}}async*getPeers(e,t={}){this.log("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=me([this.shutDownController.signal,n,t.signal]);let s=Promise.withResolvers(),i=Promise.withResolvers();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=new URL(`${this.url}routing/v1/peers/${e}`);this.#t(a,t.filterAddrs,t.filterProtocols);let c=await this.#r(a.toString(),{headers:{Accept:"application/x-ndjson"},signal:o});if(c.status===404)return;if(c.status===422)throw new li("Request does not conform to schema or semantic constraints");if(c.body==null)throw new xr("Routing response had no body");if(c.headers.get("Content-Type")?.startsWith("application/json")){let d=(await c.json()).Peers??[];for(let f of d){let h=this.#e(f);h!=null&&(yield h)}}else for await(let u of Ba(yu(c.body))){let d=this.#e(u);d!=null&&(yield d)}}catch(a){this.log.error("getPeers errored - %e",a)}finally{o.clear(),i.resolve(),this.log("getPeers finished: %c",e)}}async*getClosestPeers(e,t={}){let n;if(ae.asCID(e)===e||e instanceof ae)n=e.toV1().toString();else throw new C("Key must be CID");this.log("getClosestPeers starts: %s",n);let o=AbortSignal.timeout(this.timeout),s=me([this.shutDownController.signal,o,t.signal]);let i=Promise.withResolvers(),a=Promise.withResolvers();this.httpQueue.add(async()=>(i.resolve(),a.promise));try{await i.promise;let c=new URL(`${this.url}routing/v1/dht/closest/peers/${n}`);this.#t(c,t.filterAddrs,t.filterProtocols);let l=await this.#r(c.toString(),{headers:{Accept:"application/x-ndjson"},signal:s});if(l.status===404)return;if(l.status===422)throw new li("Request does not conform to schema or semantic constraints");if(l.body==null)throw new xr("Routing response had no body");if(l.headers.get("Content-Type")?.startsWith("application/json")){let f=(await l.json()).Peers??[];for(let h of f){let p=this.#e(h);p!=null&&(yield p)}}else for await(let d of Ba(yu(l.body))){let f=this.#e(d);f!=null&&(yield f)}}catch(c){this.log.error("getClosestPeers errored - %e",c)}finally{s.clear(),a.resolve(),this.log("getClosestPeers finished: %s",n)}}async getIPNS(e,t={}){this.log("getIPNS starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=me([this.shutDownController.signal,n,t.signal]);let s=Promise.withResolvers(),i=Promise.withResolvers();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.url}routing/v1/ipns/${e}`;try{await s.promise;let c=await this.#r(a,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o});if(this.log("getIPNS GET %s %d",a,c.status),c.status===404)throw new Pe("No matching records found");if(c.status===422)throw new li("Request does not conform to schema or semantic constraints");if(!c.ok)throw new xr(`Unexpected status code: ${c.status}`);let l=c.headers.get("Content-Type");if(l==null||!l.includes("application/vnd.ipfs.ipns-record"))throw new Pe("No matching records found");if(c.body==null)throw new xr("GET ipns response had no body");let u=await c.arrayBuffer();return new Uint8Array(u,0,u.byteLength)}catch(c){throw this.log.error("getIPNS GET %s error - %e",a,c),c}finally{o.clear(),i.resolve(),this.log("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){this.log("putIPNS starts: %c",e);let o=AbortSignal.timeout(this.timeout),s=me([this.shutDownController.signal,o,n.signal]);let i=Promise.withResolvers(),a=Promise.withResolvers();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.url}routing/v1/ipns/${e}`;try{await i.promise;let l=await this.#r(c,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:ie(t),signal:s});if(this.log("putIPNS PUT %s %d",c,l.status),l.status!==200)throw new xr("PUT ipns response had status other than 200")}catch(l){throw this.log.error("putIPNS PUT %s error - %e",c,l.stack),l}finally{s.clear(),a.resolve(),this.log("putIPNS finished: %c",e)}}#e(e){try{let t=[],n=e.Addrs?.map(V)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:ae.createV1(114,cN(e.ID)),Addrs:n,Protocols:t}}catch(t){this.log.error("could not conform record to peer schema - %e",t)}}#t(e,t,n){if(t!=null||this.filterAddrs!=null){let o=t?.join(",")??this.filterAddrs?.join(",")??"";o!==""&&e.searchParams.set("filter-addrs",o)}if(n!=null||this.filterProtocols!=null){let o=n?.join(",")??this.filterProtocols?.join(",")??"";o!==""&&e.searchParams.set("filter-protocols",o)}}async#r(e,t){let n=t.method??"GET",o=`${n}-${e}`;if(n==="GET"){let c=await this.cache?.match(e);if(c!=null){if(parseInt(c.headers.get("x-cache-expires")??"0",10)>Date.now())return this.log("returning cached response for %s",o),this.logResponse(c),c;this.log("evicting cached response for %s",o),await this.cache?.delete(e)}else this.cache!=null&&this.log("cache miss for %s",o)}let s=this.inFlightRequests.get(o);if(s!=null){let c=await s;return this.log("deduplicating outgoing request for %s",o),c.clone()}this.log("outgoing request:"),this.logRequest(e,t);let i=fetch(e,t).then(async c=>{if(this.log("incoming response:"),this.logResponse(c),this.cache!=null&&c.ok&&n==="GET"){let l=Date.now()+this.cacheTTL,u=new Headers(c.headers);u.set("x-cache-expires",l.toString());let d=new Response(c.clone().body,{status:c.status,statusText:c.statusText,headers:u});await this.cache.put(e,d)}return c}).finally(()=>{this.inFlightRequests.delete(o)});return this.inFlightRequests.set(o,i),await i}toString(){return`DefaultDelegatedRoutingV1HttpApiClient(${this.url})`}logRequest(e,t){let n=new Headers(t.headers);this.log("%s %s HTTP/1.1",t.method??"GET",e);for(let[o,s]of n.entries())this.log("%s: %s",o,s)}logResponse(e){this.log("HTTP/1.1 %d %s",e.status,e.statusText);for(let[t,n]of e.headers.entries())this.log("%s: %s",t,n)}};function cN(r){let e=Ee.baseDecode(r);return ve(e)}function lN(r){return r[Symbol.asyncIterator]!=null}function uN(r){if(lN(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var uE=uN;var y0=O("/ipns/");function dE(r){return Z(r.subarray(0,y0.byteLength),y0)}var b0=class{client;constructor(e){this.client=e}get[is](){return this}async start(){await this.client.start()}async stop(){await this.client.stop()}async*findProviders(e,t={}){try{yield*Kr(this.client.getProviders(e,t),n=>({id:Mt(n.ID),multiaddrs:n.Addrs??[],routing:"delegated-http-routing-v1"}))}catch(n){if(n instanceof Pe)return;throw n}}async provide(){}async cancelReprovide(){}async put(e,t,n){if(!dE(e))return;let o=ve(e.slice(y0.length)),s=ae.createV1(114,o);await this.client.putIPNS(s,t,n)}async get(e,t){if(!dE(e))throw new Pe("Not found");let n=ve(e.slice(y0.length)),o=ae.createV1(114,n);try{return await this.client.getIPNS(o,t)}catch(s){throw s.name==="BadResponseError"?new Pe("Not found"):s}}toString(){return`DelegatedRoutingV1HttpApiClientContentRouting(${this.client.url})`}},w0=class{client;constructor(e){this.client=e}get[ds](){return this}async start(){await this.client.start()}async stop(){await this.client.stop()}async findPeer(e,t={}){let n=await uE(this.client.getPeers(e.toCID(),t));if(n!=null)return{id:Mt(n.ID),multiaddrs:n.Addrs??[]};throw new Pe("Not found")}async*getClosestPeers(e,t={}){let n;try{n=ae.decode(e)}catch{try{n=ae.createV1(114,Ue.decode(e))}catch{n=ae.createV1(Cd,nr.digest(e))}}for await(let o of this.client.getClosestPeers(n,t))yield{id:Mt(o.ID),multiaddrs:o.Addrs??[]}}toString(){return`DelegatedRoutingV1HttpApiClientPeerRouting(${this.client.url})`}};function fE(r){return e=>new g0(e,r)}function hE(r){return e=>new b0(fE(r)(e))}function pE(r){return e=>new w0(fE(r)(e))}function x0(r){return{url:"https://delegated-ipfs.dev",filterProtocols:["unknown","transport-bitswap","transport-ipfs-gateway-http"],filterAddrs:["https","webtransport","webrtc","webrtc-direct","wss","tls"]}}var mE="libp2p",gE="autonat",yE="1.0.0";var Me;(function(r){let e;(function(f){f.DIAL="DIAL",f.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(f){f[f.DIAL=0]="DIAL",f[f.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),(function(f){f.codec=()=>rt(t)})(e=r.MessageType||(r.MessageType={}));let n;(function(f){f.OK="OK",f.E_DIAL_ERROR="E_DIAL_ERROR",f.E_DIAL_REFUSED="E_DIAL_REFUSED",f.E_BAD_REQUEST="E_BAD_REQUEST",f.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(f){f[f.OK=0]="OK",f[f.E_DIAL_ERROR=100]="E_DIAL_ERROR",f[f.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",f[f.E_BAD_REQUEST=200]="E_BAD_REQUEST",f[f.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),(function(f){f.codec=()=>rt(o)})(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(f){let h;f.codec=()=>(h==null&&(h=ne((m,b,w={})=>{if(w.lengthDelimited!==!1&&b.fork(),m.id!=null&&(b.uint32(10),b.bytes(m.id)),m.addrs!=null&&m.addrs.length>0)for(let x of m.addrs)b.uint32(18),b.bytes(x);w.lengthDelimited!==!1&&b.ldelim()},(m,b,w={})=>{let x={addrs:[]},v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();switch(A>>>3){case 1:{x.id=m.bytes();break}case 2:{if(w.limits?.addrs!=null&&x.addrs.length===w.limits.addrs)throw new fe('Decode error - repeated field "addrs" had too many elements');x.addrs.push(m.bytes());break}default:{m.skipType(A&7);break}}}return x},function*(m,b,w,x={}){let v={addrs:0},A=b==null?m.len:m.pos+b;for(;m.pos<A;){let S=m.uint32();switch(S>>>3){case 1:{yield{field:`${w}.id`,value:m.bytes()};break}case 2:{if(x.limits?.addrs!=null&&v.addrs===x.limits.addrs)throw new fe('Streaming decode error - repeated field "addrs" had too many elements');yield{field:`${w}.addrs[]`,index:v.addrs,value:m.bytes()},v.addrs++;break}default:{m.skipType(S&7);break}}}})),h);function p(m){return te(m,f.codec())}f.encode=p;function y(m,b){return ee(m,f.codec(),b)}f.decode=y;function g(m,b){return re(m,f.codec(),b)}f.stream=g})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(f){let h;f.codec=()=>(h==null&&(h=ne((m,b,w={})=>{w.lengthDelimited!==!1&&b.fork(),m.peer!=null&&(b.uint32(10),r.PeerInfo.codec().encode(m.peer,b)),w.lengthDelimited!==!1&&b.ldelim()},(m,b,w={})=>{let x={},v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();A>>>3===1?x.peer=r.PeerInfo.codec().decode(m,m.uint32(),{limits:w.limits?.peer}):m.skipType(A&7)}return x},function*(m,b,w,x={}){let v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();A>>>3===1?yield*r.PeerInfo.codec().stream(m,m.uint32(),`${w}.peer`,{limits:x.limits?.peer}):m.skipType(A&7)}})),h);function p(m){return te(m,f.codec())}f.encode=p;function y(m,b){return ee(m,f.codec(),b)}f.decode=y;function g(m,b){return re(m,f.codec(),b)}f.stream=g})(i=r.Dial||(r.Dial={}));let a;(function(f){let h;f.codec=()=>(h==null&&(h=ne((m,b,w={})=>{w.lengthDelimited!==!1&&b.fork(),m.status!=null&&(b.uint32(8),r.ResponseStatus.codec().encode(m.status,b)),m.statusText!=null&&(b.uint32(18),b.string(m.statusText)),m.addr!=null&&(b.uint32(26),b.bytes(m.addr)),w.lengthDelimited!==!1&&b.ldelim()},(m,b,w={})=>{let x={},v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();switch(A>>>3){case 1:{x.status=r.ResponseStatus.codec().decode(m);break}case 2:{x.statusText=m.string();break}case 3:{x.addr=m.bytes();break}default:{m.skipType(A&7);break}}}return x},function*(m,b,w,x={}){let v=b==null?m.len:m.pos+b;for(;m.pos<v;){let A=m.uint32();switch(A>>>3){case 1:{yield{field:`${w}.status`,value:r.ResponseStatus.codec().decode(m)};break}case 2:{yield{field:`${w}.statusText`,value:m.string()};break}case 3:{yield{field:`${w}.addr`,value:m.bytes()};break}default:{m.skipType(A&7);break}}}})),h);function p(m){return te(m,f.codec())}f.encode=p;function y(m,b){return ee(m,f.codec(),b)}f.decode=y;function g(m,b){return re(m,f.codec(),b)}f.stream=g})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=ne((f,h,p={})=>{p.lengthDelimited!==!1&&h.fork(),f.type!=null&&(h.uint32(8),r.MessageType.codec().encode(f.type,h)),f.dial!=null&&(h.uint32(18),r.Dial.codec().encode(f.dial,h)),f.dialResponse!=null&&(h.uint32(26),r.DialResponse.codec().encode(f.dialResponse,h)),p.lengthDelimited!==!1&&h.ldelim()},(f,h,p={})=>{let y={},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{y.type=r.MessageType.codec().decode(f);break}case 2:{y.dial=r.Dial.codec().decode(f,f.uint32(),{limits:p.limits?.dial});break}case 3:{y.dialResponse=r.DialResponse.codec().decode(f,f.uint32(),{limits:p.limits?.dialResponse});break}default:{f.skipType(m&7);break}}}return y},function*(f,h,p,y={}){let g=h==null?f.len:f.pos+h;for(;f.pos<g;){let m=f.uint32();switch(m>>>3){case 1:{yield{field:`${p}.type`,value:r.MessageType.codec().decode(f)};break}case 2:{yield*r.Dial.codec().stream(f,f.uint32(),`${p}.dial`,{limits:y.limits?.dial});break}case 3:{yield*r.DialResponse.codec().stream(f,f.uint32(),`${p}.dialResponse`,{limits:y.limits?.dialResponse});break}default:{f.skipType(m&7);break}}}})),c);function l(f){return te(f,r.codec())}r.encode=l;function u(f,h){return ee(f,r.codec(),h)}r.decode=u;function d(f,h){return re(f,r.codec(),h)}r.stream=d})(Me||(Me={}));var gN=4,yN=8,E0=class{components;protocol;timeout;maxInboundStreams;maxOutboundStreams;maxMessageSize;started;log;topologyId;dialResults;findPeers;addressFilter;connectionThreshold;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:auto-nat"),this.started=!1,this.protocol=`/${t.protocolPrefix??mE}/${gE}/${yE}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??20,this.connectionThreshold=t.connectionThreshold??80,this.maxMessageSize=t.maxMessageSize??8192,this.dialResults=ft({name:"libp2p_autonat_dial_results",metrics:e.metrics}),this.findPeers=ia(this.findRandomPeers.bind(this),6e4),this.addressFilter=Wt(1024)}[Symbol.toStringTag]="@libp2p/autonat";[ue]=["@libp2p/autonat"];get[rr](){return["@libp2p/identify"]}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,(e,t)=>{this.handleIncomingAutonatStream(e,t).catch(n=>{this.log.error("error handling incoming autonat stream - %e",n)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.topologyId=await this.components.registrar.register(this.protocol,{onConnect:(e,t)=>{this.verifyExternalAddresses(t).catch(n=>{this.log.error("could not verify addresses - %e",n)})}}),this.findPeers.start(),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),this.topologyId!=null&&await this.components.registrar.unhandle(this.topologyId),this.dialResults.clear(),this.findPeers.stop(),this.started=!1}allAddressesAreVerified(){return this.components.addressManager.getAddressesWithMetadata().every(e=>e.expires>Date.now()?!0:e.verified)}async findRandomPeers(e){if(this.allAddressesAreVerified())return;let t=me([AbortSignal.timeout(1e4),e?.signal]);try{this.log("starting random walk to find peers to run AutoNAT");for await(let n of this.components.randomWalk.walk({signal:t})){if(!await this.components.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable %s",n.id,n.multiaddrs.map(o=>o.toString()).join(", "));continue}try{this.log.trace("dial random peer %p",n.id),await this.components.connectionManager.openConnection(n.multiaddrs,{signal:t})}catch{}if(this.allAddressesAreVerified()){this.log("stopping random walk, all addresses are verified");return}if(!this.hasConnectionCapacity()){this.log("stopping random walk, too close to max connections");return}}}catch{}}async handleIncomingAutonatStream(e,t){let n=AbortSignal.timeout(this.timeout);try{let o=ke(e,{maxDataLength:this.maxMessageSize}).pb(Me),s=await o.read({signal:n}),i=await this.handleAutonatMessage(s,t,{signal:n});await o.write(i,{signal:n}),await e.close({signal:n})}catch(o){this.log.error("error handling incoming autonat stream - %e",o),e.abort(o)}}async handleAutonatMessage(e,t,n){let o=this.components.addressManager.getAddresses().map(d=>Y(d).host),s=e.dial;if(s==null)return this.log.error("dial was missing from message"),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}};let i,a=s.peer;if(a?.id==null)return this.log.error("peerId missing from message"),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}};try{let d=ve(a.id);i=Xe(d)}catch(d){return this.log.error("invalid PeerId - %e",d),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}}}if(this.log("incoming request from %p",i),!t.remotePeer.equals(i))return this.log("target peer %p did not equal sending peer %p",i,t.remotePeer),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}};let c=a.addrs.map(d=>V(d)).filter(d=>{try{let f=Y(d);return Ze(d)?!1:f.host!==Y(t.remoteAddr).host?(this.log.trace("not dialing %a - target host did not match remote host %a",d,t.remoteAddr),!1):o.includes(f.host)?!1:this.components.transportManager.dialTransportForMultiaddr(d)==null?(this.log.trace("not dialing %a - transport unsupported",d),!1):!0}catch{return!1}}).map(d=>(d.getComponents().find(f=>f.code===421)?.value==null&&(d=d.encapsulate(`/p2p/${i.toString()}`)),d));if(c.length===0)return this.log("refused to dial all multiaddrs for %p from message",i),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}};this.log("dial multiaddrs %s for peer %p",c.map(d=>d.toString()).join(", "),i);let l="",u=c[0];for(let d of c){let f;u=d;try{if(f=await this.components.connectionManager.openConnection(d,n),!f.remoteAddr.equals(d))throw this.log.error("tried to dial %a but dialed %a",d,f.remoteAddr),new Error("Unexpected remote address");return this.log("successfully dialed %p via %a",i,d),{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.OK,addr:f.remoteAddr.decapsulateCode(421).bytes}}}catch(h){this.log.error("could not dial %p - %e",i,h),l=h.message}finally{f!=null&&await f.close()}}return{type:Me.MessageType.DIAL_RESPONSE,dialResponse:{status:Me.ResponseStatus.E_DIAL_ERROR,statusText:l,addr:u.bytes}}}getFirstUnverifiedMultiaddr(e,t){let n=this.components.addressManager.getAddressesWithMetadata().sort((o,s)=>o.type==="observed"&&s.type!=="observed"?1:s.type==="observed"&&o.type!=="observed"?-1:0).filter(o=>!(!(o.expires<Date.now())||Y(o.multiaddr).type==="ip6"&&(!t||!sf(o.multiaddr))||Ze(o.multiaddr)));for(let o of n){let s=o.multiaddr.toString(),i=this.dialResults.get(s);if(i!=null){if(i.networkSegments.includes(e)){this.log.trace("%a already has a network segment result from %s",i.multiaddr,e);continue}if(i.queue.size>10){this.log.trace("%a already has enough peers queued",i.multiaddr);continue}}if(i==null){let a=o.expires<Date.now();if(a&&this.addressFilter.remove?.(s),this.addressFilter.has(s))continue;this.addressFilter.add(s),this.log.trace("creating dial result %s %s",a?"to revalidate":"for",s),i={multiaddr:o.multiaddr,success:0,failure:0,networkSegments:[],verifyingPeers:Vm(),queue:new Yt({concurrency:3,maxSize:50}),type:o.type,lastVerified:o.lastVerified},this.dialResults.set(s,i)}return i}}removeOutdatedMultiaddrResults(){let e=new Set(this.components.addressManager.getAddressesWithMetadata().filter(({expires:t})=>t<Date.now()).map(({multiaddr:t})=>t.toString()));for(let t of this.dialResults.keys())e.has(t)||(this.log.trace("remove results for %a",t),this.dialResults.delete(t))}async verifyExternalAddresses(e){if(!this.isStarted())return;this.removeOutdatedMultiaddrResults();let n=(await this.components.peerStore.get(e.remotePeer)).addresses.some(({multiaddr:i})=>Y(i).type==="ip6"),o=this.getNetworkSegment(e.remoteAddr),s=this.getFirstUnverifiedMultiaddr(o,n);if(s==null){this.log.trace("no unverified public addresses found for peer %p to verify, not requesting verification",e.remotePeer);return}if(!this.hasConnectionCapacity()){s.lastVerified!=null?(this.log("automatically re-verifying %a because we are too close to the connection limit",s.multiaddr),this.confirmAddress(s)):this.log("skipping verifying %a because we are too close to the connection limit",s.multiaddr);return}s.queue.add(async i=>{await this.askPeerToVerify(e,o,i)},{peerId:e.remotePeer,multiaddr:s.multiaddr}).catch(i=>{s?.result==null&&this.log.error("error from %p verifying address %a - %e",e.remotePeer,s?.multiaddr,i)})}async askPeerToVerify(e,t,n){let o=this.dialResults.get(n.multiaddr.toString());if(o==null){this.log("%a was verified while %p was queued",n.multiaddr,e.remotePeer);return}let s=AbortSignal.timeout(this.timeout);this.log.trace("asking %a to verify multiaddr %s",e.remoteAddr,n.multiaddr);let i=await e.newStream(this.protocol,{signal:s});try{let a=ke(i).pb(Me),[,c]=await Promise.all([a.write({type:Me.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toMultihash().bytes,addrs:[n.multiaddr.bytes]}}},{signal:s}),a.read({signal:s})]);if(c.type!==Me.MessageType.DIAL_RESPONSE||c.dialResponse==null){this.log("invalid autonat response from %p - %j",e.remotePeer,c);return}let l=c.dialResponse.status;if(this.log.trace("autonat response from %p for %a is %s",e.remotePeer,n.multiaddr,l),l!==Me.ResponseStatus.OK&&l!==Me.ResponseStatus.E_DIAL_ERROR)return;if(o=this.dialResults.get(n.multiaddr.toString()),o==null){this.log.trace("peer reported %a as %s but there is no result object",n.multiaddr,c.dialResponse.status);return}if(o.networkSegments.includes(t)){this.log.trace("%a results included network segment %s",n.multiaddr,t);return}if(o.result!=null){this.log.trace("already resolved result for %a, ignoring response from",n.multiaddr,e.remotePeer);return}if(o.verifyingPeers.has(e.remotePeer)){this.log.trace("peer %p has already verified %a, ignoring response",e.remotePeer,n.multiaddr);return}if(o.verifyingPeers.add(e.remotePeer),o.networkSegments.push(t),l===Me.ResponseStatus.OK){if(o.success++,o.type!=="observed"){this.confirmAddress(o);return}}else l===Me.ResponseStatus.E_DIAL_ERROR&&o.failure++;this.log("%a success %d failure %d",o.multiaddr,o.success,o.failure),o.success===gN&&this.confirmAddress(o),o.failure===yN&&this.unconfirmAddress(o)}finally{try{await i.close({signal:s})}catch(a){i.abort(a)}}}hasConnectionCapacity(){let t=this.components.connectionManager.getConnections().length,n=this.components.connectionManager.getMaxConnections();return t/n*100<this.connectionThreshold}confirmAddress(e){this.log("%s address %a is externally dialable",e.type,e.multiaddr),this.components.addressManager.confirmObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!0,e.queue.abort()}unconfirmAddress(e){this.log("%s address %a is not externally dialable",e.type,e.multiaddr),this.components.addressManager.removeObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!1,e.queue.abort()}getNetworkSegment(e){let t=Y(e);switch(t.type){case"ip4":return t.host.split(".")[0].padStart(3,"0");case"ip6":return t.host.split(":")[0].padStart(4,"0");default:throw new C(`Remote address ${e} was not an IPv4 or Ipv6 address`)}}};function bE(r={}){return e=>new E0(e,r)}var bN="bootstrap",wN=50,xN=1e3,Ng=class extends se{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??xN,this.list=t.list.map(n=>V(n)).filter(n=>ta.matches(n)?n.getComponents().findLast(s=>s.code===421)?.value==null?(this.log.error("invalid bootstrap multiaddr without peer id"),!1):!0:(this.log.error("invalid multiaddr %a",n),!1)).map(n=>({id:Oe(n.getComponents().findLast(o=>o.code===421)?.value??""),multiaddrs:[n]})),this._init=t}[us]=this;[Symbol.toStringTag]="@libp2p/bootstrap";[ue]=["@libp2p/peer-discovery"];isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error("failed to discover bootstrap peers - %e",e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??bN]:{value:this._init.tagValue??wN,ttl:this._init.tagTTL}},multiaddrs:e.multiaddrs}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e}),this.components.connectionManager.openConnection(e.id).catch(t=>{this.log.error("could not dial bootstrap peer %p - %e",e.id,t)})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function wE(r){return e=>new Ng(e,r)}var Og=1e3,xE=60*Og;var Zue=120*xE,EE=1,v0=5e3,vE=100;var bu=`${fs}-circuit-relay`,Jue=2*xE,ede=BigInt(1<<17),ui="/libp2p/circuit/relay/0.2.0/hop",Mg="/libp2p/circuit/relay/0.2.0/stop",tde=30*Og,rde=30*Og,Bg=300,SE=4096,AE=.001;var Ko;(function(r){let e;(function(a){a.RESERVE="RESERVE",a.CONNECT="CONNECT",a.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.RESERVE=0]="RESERVE",a[a.CONNECT=1]="CONNECT",a[a.STATUS=2]="STATUS"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.peer!=null&&(c.uint32(18),$o.codec().encode(a.peer,c)),a.reservation!=null&&(c.uint32(26),wu.codec().encode(a.reservation,c)),a.limit!=null&&(c.uint32(34),Vo.codec().encode(a.limit,c)),a.status!=null&&(c.uint32(40),at.codec().encode(a.status,c)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{u.peer=$o.codec().decode(a,a.uint32(),{limits:l.limits?.peer});break}case 3:{u.reservation=wu.codec().decode(a,a.uint32(),{limits:l.limits?.reservation});break}case 4:{u.limit=Vo.codec().decode(a,a.uint32(),{limits:l.limits?.limit});break}case 5:{u.status=at.codec().decode(a);break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{yield*$o.codec().stream(a,a.uint32(),`${l}.peer`,{limits:u.limits?.peer});break}case 3:{yield*wu.codec().stream(a,a.uint32(),`${l}.reservation`,{limits:u.limits?.reservation});break}case 4:{yield*Vo.codec().stream(a,a.uint32(),`${l}.limit`,{limits:u.limits?.limit});break}case 5:{yield{field:`${l}.status`,value:at.codec().decode(a)};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(Ko||(Ko={}));var bn;(function(r){let e;(function(a){a.CONNECT="CONNECT",a.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.CONNECT=0]="CONNECT",a[a.STATUS=1]="STATUS"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.peer!=null&&(c.uint32(18),$o.codec().encode(a.peer,c)),a.limit!=null&&(c.uint32(26),Vo.codec().encode(a.limit,c)),a.status!=null&&(c.uint32(32),at.codec().encode(a.status,c)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{u.peer=$o.codec().decode(a,a.uint32(),{limits:l.limits?.peer});break}case 3:{u.limit=Vo.codec().decode(a,a.uint32(),{limits:l.limits?.limit});break}case 4:{u.status=at.codec().decode(a);break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{yield*$o.codec().stream(a,a.uint32(),`${l}.peer`,{limits:u.limits?.peer});break}case 3:{yield*Vo.codec().stream(a,a.uint32(),`${l}.limit`,{limits:u.limits?.limit});break}case 4:{yield{field:`${l}.status`,value:at.codec().decode(a)};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(bn||(bn={}));var $o;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.id!=null&&s.id.byteLength>0&&(i.uint32(10),i.bytes(s.id)),s.addrs!=null&&s.addrs.length>0)for(let c of s.addrs)i.uint32(18),i.bytes(c);a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={id:de(0),addrs:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.id=s.bytes();break}case 2:{if(a.limits?.addrs!=null&&c.addrs.length===a.limits.addrs)throw new fe('Decode error - repeated field "addrs" had too many elements');c.addrs.push(s.bytes());break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={addrs:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.id`,value:s.bytes()};break}case 2:{if(c.limits?.addrs!=null&&l.addrs===c.limits.addrs)throw new fe('Streaming decode error - repeated field "addrs" had too many elements');yield{field:`${a}.addrs[]`,index:l.addrs,value:s.bytes()},l.addrs++;break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})($o||($o={}));var wu;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.expire!=null&&s.expire!==0n&&(i.uint32(8),i.uint64(s.expire)),s.addrs!=null&&s.addrs.length>0)for(let c of s.addrs)i.uint32(18),i.bytes(c);s.voucher!=null&&(i.uint32(26),Eu.codec().encode(s.voucher,i)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={expire:0n,addrs:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.expire=s.uint64();break}case 2:{if(a.limits?.addrs!=null&&c.addrs.length===a.limits.addrs)throw new fe('Decode error - repeated field "addrs" had too many elements');c.addrs.push(s.bytes());break}case 3:{c.voucher=Eu.codec().decode(s,s.uint32(),{limits:a.limits?.voucher});break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={addrs:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.expire`,value:s.uint64()};break}case 2:{if(c.limits?.addrs!=null&&l.addrs===c.limits.addrs)throw new fe('Streaming decode error - repeated field "addrs" had too many elements');yield{field:`${a}.addrs[]`,index:l.addrs,value:s.bytes()},l.addrs++;break}case 3:{yield*Eu.codec().stream(s,s.uint32(),`${a}.voucher`,{limits:c.limits?.voucher});break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(wu||(wu={}));var Vo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.duration!=null&&(i.uint32(8),i.uint32(s.duration)),s.data!=null&&(i.uint32(16),i.uint64(s.data)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.duration=s.uint32();break}case 2:{c.data=s.uint64();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.duration`,value:s.uint32()};break}case 2:{yield{field:`${a}.data`,value:s.uint64()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Vo||(Vo={}));var at;(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"})(at||(at={}));var Ug;(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"})(Ug||(Ug={}));(function(r){r.codec=()=>rt(Ug)})(at||(at={}));var xu;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.relay!=null&&s.relay.byteLength>0&&(i.uint32(10),i.bytes(s.relay)),s.peer!=null&&s.peer.byteLength>0&&(i.uint32(18),i.bytes(s.peer)),s.expiration!=null&&s.expiration!==0n&&(i.uint32(24),i.uint64(s.expiration)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={relay:de(0),peer:de(0),expiration:0n},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.relay=s.bytes();break}case 2:{c.peer=s.bytes();break}case 3:{c.expiration=s.uint64();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.relay`,value:s.bytes()};break}case 2:{yield{field:`${a}.peer`,value:s.bytes()};break}case 3:{yield{field:`${a}.expiration`,value:s.uint64()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(xu||(xu={}));var Eu;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.publicKey!=null&&s.publicKey.byteLength>0&&(i.uint32(10),i.bytes(s.publicKey)),s.payloadType!=null&&s.payloadType.byteLength>0&&(i.uint32(18),i.bytes(s.payloadType)),s.payload!=null&&(i.uint32(26),xu.codec().encode(s.payload,i)),s.signature!=null&&s.signature.byteLength>0&&(i.uint32(42),i.bytes(s.signature)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={publicKey:de(0),payloadType:de(0),signature:de(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.publicKey=s.bytes();break}case 2:{c.payloadType=s.bytes();break}case 3:{c.payload=xu.codec().decode(s,s.uint32(),{limits:a.limits?.payload});break}case 5:{c.signature=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.publicKey`,value:s.bytes()};break}case 2:{yield{field:`${a}.payloadType`,value:s.bytes()};break}case 3:{yield*xu.codec().stream(s,s.uint32(),`${a}.payload`,{limits:c.limits?.payload});break}case 5:{yield{field:`${a}.signature`,value:s.bytes()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Eu||(Eu={}));var vu=class extends Error{static name="HadEnoughRelaysError";name="HadEnoughRelaysError"},S0=class extends Error{static name="DoubleRelayError";name="DoubleRelayError"},A0=class extends Error{static name="RelayQueueFullError";name="RelayQueueFullError"};function Fg(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var Su=class{expires;bytes;constructor(e){e?.duration!=null&&e?.duration!==0&&(this.expires=Date.now()+e.duration*1e3),this.bytes=e?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(e){this.bytes!=null&&(this.bytes-=BigInt(e.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let e={};if(this.bytes!=null){let t=this;Object.defineProperty(e,"bytes",{get(){return t.bytes}})}if(this.expires!=null){let t=this;Object.defineProperty(e,"seconds",{get(){return Math.round(((t.expires??0)-Date.now())/1e3)}})}return e}},C0=Ce(pe(ta.matchers[0],Ae(290))),I0=Ce(Ae(290));var T0=class extends se{components;started;running;topologyId;log;discoveryController;filter;queue;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.components=e,this.started=!1,this.running=!1,this.filter=t.filter,this.discoveryController=new AbortController,this.discoveryController.signal,this.dialPeer=this.dialPeer.bind(this),this.onPeer=this.onPeer.bind(this)}isStarted(){return this.started}async start(){this.topologyId=await this.components.registrar.register(ui,{filter:this.filter,onConnect:e=>{this.log.trace("discovered relay %p queue (length: %d, active %d)",e,this.queue?.size,this.queue?.running),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.components.registrar.unregister(this.topologyId),this.running&&this.stopDiscovery(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,this.discoveryController.signal,this.components.events.addEventListener("peer:discovery",this.onPeer),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.components.peerStore.all({filters:[n=>n.protocols.includes(ui)],orders:[()=>Math.random()<.5?1:-1,(n,o)=>{let s=CE(n),i=CE(o);return s>i?-1:i>s?1:0}]});for(let n of e)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",e.length);let t=this.queue=new Yt({concurrency:5});this.log("start random walk");for await(let n of this.components.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.components.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.components.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(o=>o.toString()));continue}t.queued>10&&(this.log.trace("wait for space in queue for %p",n.id),await t.onSizeLessThan(10,{signal:this.discoveryController.signal})),this.log("adding random peer %p to dial queue (length: %d, active %d)",n.id,t.size,t.running),t.add(this.dialPeer,{peerId:n.id,signal:this.discoveryController.signal}).catch(o=>{this.log.error("error opening connection to random peer %p - %e",n.id,o)})}this.log("stop random walk"),await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network - %e",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort(),this.queue?.clear(),this.components.events.removeEventListener("peer:discovery",this.onPeer)}onPeer(e){this.log.trace("maybe dialing discovered peer %p",e.detail.id),this.maybeDialPeer(e).catch(t=>{this.log.trace("error dialing discovered peer %p - %e",e.detail.id,t)})}async maybeDialPeer(e){if(this.queue==null)return;let t=e.detail.id,n=e.detail.multiaddrs;if(this.queue.has(t)){this.log.trace("random peer %p was already in queue",t);return}if(this.components.connectionManager.getConnections(t)?.length>0){this.log.trace("random peer %p was already connected",t);return}if(!await this.components.connectionManager.isDialable(n)){this.log.trace("random peer %p was not dialable",t);return}this.queue?.add(this.dialPeer,{peerId:e.detail.id,signal:this.discoveryController.signal}).catch(o=>{this.log.error("error opening connection to discovered peer %p - %e",e.detail.id,o)})}async dialPeer({peerId:e,signal:t}){let n=me([AbortSignal.timeout(5e3),t]);try{await this.components.connectionManager.openConnection(e,{signal:n})}finally{n.clear()}}};function CE(r){let e=r.metadata.get("last-dial-success");return e==null?0:new Date(B(e)).getTime()}var $g=class extends se{connectionManager;addressManager;reservationStore;listeningAddrs;log;listenTimeout;reservationId;relay;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.addressManager=e.addressManager,this.reservationStore=e.reservationStore,this.listeningAddrs=[],this.listenTimeout=t.listenTimeout??v0,this.reservationStore.addEventListener("relay:removed",this._onRemoveRelayPeer),this.reservationStore.addEventListener("relay:created-reservation",this._onAddRelayPeer)}_onRemoveRelayPeer=e=>{this.log("relay removed %p our relay %p",e.detail.relay,this.relay,this.relay?.equals(e.detail.relay)),this.relay?.equals(e.detail.relay)===!0&&(this.log("relay peer removed %p",e.detail.relay),this.listeningAddrs.forEach(t=>{this.addressManager.removeObservedAddr(t)}),this.listeningAddrs=[],this.safeDispatchEvent("listening"))};_onAddRelayPeer=e=>{let{details:t}=e.detail;t.type!=="configured"&&t.id===this.reservationId&&this.addedRelay(e.detail)};async listen(e){if(I0.exactMatch(e))this.log("searching for circuit relay servers"),this.reservationId=this.reservationStore.reserveRelay();else if(C0.exactMatch(e)){this.log("listen on specific relay server %a",e);let t=AbortSignal.timeout(this.listenTimeout);let n=e.decapsulate("/p2p-circuit"),o=await this.connectionManager.openConnection(n,{signal:t});if(!this.reservationStore.hasReservation(o.remotePeer)){this.log("making reservation on peer %p",o.remotePeer);let s=await this.reservationStore.addRelay(o.remotePeer,"configured");this.addedRelay(s)}}else throw new ls(`Could not listen on p2p-circuit address "${e}"`)}getAddrs(){return[...this.listeningAddrs.values()].flat()}updateAnnounceAddrs(){}async close(){this.reservationStore.cancelReservations(),this.listeningAddrs=[],this.reservationStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),queueMicrotask(()=>{this.safeDispatchEvent("close")})}addedRelay(e){this.log("relay peer added %p",e.relay),this.relay=e.relay,this.listeningAddrs=e.details.reservation.addrs.map(t=>V(t).encapsulate("/p2p-circuit")),this.listeningAddrs.forEach(t=>{this.addressManager.confirmObservedAddr(t,{type:"transport"})}),queueMicrotask(()=>{this.safeDispatchEvent("listening")})}};function IE(r){return new $g(r)}var TE="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var _E=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r|=0));for(;r--;)e+=TE[t[r]&63];return e};var EN=60*1e3*10,vN=60*1e3*5,SN=30*1e3,_0=class extends se{peerId;connectionManager;peerStore;events;reserveQueue;reservations;pendingReservations;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new Tt,this.pendingReservations=[],this.maxReservationQueueLength=t?.maxReservationQueueLength??vE,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??v0,this.started=!1,this.relayFilter=Wt(100),this.reserveQueue=new Yt({concurrency:t?.reservationConcurrency??EE,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("connection:close",n=>{[...this.reservations.values()].find(s=>s.connection===n.detail.id)!=null&&this.#t(n.detail.remotePeer).catch(s=>{this.log("could not remove relay %p - %e",n.detail,s)})})}isStarted(){return this.started}start(){this.started=!0}afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(bu)]});this.log("removing tag from %d old relays",e.length),await Promise.all(e.map(async t=>{await this.peerStore.merge(t.id,{tags:{[bu]:void 0}})})),this.log("redialing %d old relays",e.length),await Promise.all(e.map(async t=>this.addRelay(t.id,"discovered"))),this.#r()}).catch(e=>{this.log.error("failed to clean up and redial old relays during afterStart - %e",e)})}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}reserveRelay(){let e=_E();return this.pendingReservations.push(e),this.#r(),e}async addRelay(e,t){if(this.peerId.equals(e))throw this.log.trace("not trying to use self as relay"),new ls("Cannot use self as relay");if(this.reserveQueue.size>this.maxReservationQueueLength)throw new A0("The reservation queue is full");let n=this.reserveQueue.find(e);if(n!=null)return this.log.trace("potential relay peer %p is already in the reservation queue",e),n.join();if(this.relayFilter.has(e.toMultihash().bytes))throw new ls("The relay was previously invalid");return this.log.trace("try to reserve relay slot with %p",e),this.reserveQueue.add(async()=>{let o=Date.now();try{let s=this.reservations.get(e);if(s!=null){let p=this.connectionManager.getConnections(e),y=!1;if(p.length===0&&this.log("already have relay reservation with %p but we are no longer connected",e),p.map(g=>g.id).includes(s.connection)&&(this.log("already have relay reservation with %p and the original connection is still open",e),y=!0),y&&Fg(s.reservation.expire)>EN)return this.log("already have relay reservation with %p but we are still connected and it does not expire soon",e),{relay:e,details:s};await this.#t(e)}if(t==="discovered"&&this.pendingReservations.length===0)throw new vu("Not making reservation on discovered relay because we do not need any more relays");let i=AbortSignal.timeout(this.reservationCompletionTimeout);let a=await this.connectionManager.openConnection(e,{signal:i});if(dt.matches(a.remoteAddr))throw new S0("not creating reservation over relayed connection");let c=await this.#e(a,{signal:i}),l=Fg(c.expire);this.log("created reservation on relay peer %p, expiry date is %s",e,new Date(Date.now()+l).toString());let u=Math.min(Math.max(l-vN,SN),Math.pow(2,31)-1),d=setTimeout(()=>{this.log("refresh reservation to relay %p",e),this.addRelay(e,t).catch(async p=>{this.log.error("could not refresh reservation to relay %p - %e",e,p),await this.#t(e)}).catch(p=>{this.log.error("could not remove expired reservation to relay %p - %e",e,p)})},u),f;if(t==="discovered"){let p=this.pendingReservations.pop();if(p==null)throw new vu("Made reservation on relay but did not need any more discovered relays");f={timeout:d,reservation:c,type:t,connection:a.id,id:p}}else f={timeout:d,reservation:c,type:t,connection:a.id};this.reservations.set(e,f),await this.peerStore.merge(e,{tags:{[bu]:{value:1,ttl:l}}}),this.#r();let h={relay:e,details:f};return this.safeDispatchEvent("relay:created-reservation",{detail:h}),h}catch(s){throw t==="discovered"&&s.name==="HadEnoughRelaysError"||this.log.error("could not reserve slot on %p after %dms - %e",e,Date.now()-o,s),(s.name==="DialError"||s.name==="UnsupportedProtocolError")&&this.relayFilter.add(e.toMultihash().bytes),this.#t(e).catch(i=>{this.log.error("could not remove reservation on %p after reserving slot failed - %e",e,i)}),s}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(e){return e==null?this.reservations.size:[...this.reservations.values()].reduce((t,n)=>(n.type===e&&t++,t),0)}cancelReservations(){[...this.reservations.values()].forEach(e=>{clearTimeout(e.timeout)}),this.reservations.clear()}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(ui,t),s=ke(n).pb(Ko);this.log.trace("send RESERVE to %p",e.remotePeer),await s.write({type:Ko.Type.RESERVE},t);let i;try{this.log.trace("reading response from %p",e.remotePeer),i=await s.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(this.log.trace("read response %s",i.status),i.status===at.OK&&i.reservation!=null){let c=new Set;c.add(e.remoteAddr.toString());for(let l of i.reservation.addrs){let u=V(l);u.getComponents().find(d=>d.code===421)==null&&(u=u.encapsulate(`/p2p/${e.remotePeer}`)),u=V(u.toString().replace(`/p2p/${e.remotePeer}/p2p/${e.remotePeer}`,`/p2p/${e.remotePeer}`)),c.add(u.toString())}return i.reservation.addrs=[...c].map(l=>V(l).bytes),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}async#t(e){let t=this.reservations.get(e);t!=null&&(this.log("removing relay reservation with %p from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),t.type==="discovered"&&this.pendingReservations.push(t.id),await this.peerStore.merge(e,{tags:{[bu]:void 0}}),this.safeDispatchEvent("relay:removed",{detail:{relay:e,details:t}}),this.#r())}#r(){if(this.pendingReservations.length===0){this.log.trace("have discovered enough relays"),this.reserveQueue.clear(),this.safeDispatchEvent("relay:found-enough-relays");return}this.relayFilter=Wt(100),this.log("not discovered enough relays %d/%d",this.reservations.size,this.pendingReservations.length),this.safeDispatchEvent("relay:not-enough-relays")}};var Vg=class extends _o{stream;init;constructor(e){super({...e,direction:e.stream.direction}),this.init=e,this.stream=e.stream,this.stream.addEventListener("close",t=>{this.onTransportClosed(t.error)}),this.stream.addEventListener("remoteCloseWrite",t=>{this.onRemoteCloseWrite(),this.close().catch(n=>{this.abort(n)})}),this.stream.addEventListener("message",t=>{e.onDataRead?.(t.data),this.onData(t.data)}),this.stream.addEventListener("drain",()=>{this.safeDispatchEvent("drain")})}sendData(e){return this.init.onDataWrite?.(e),{sentBytes:e.byteLength,canSendMore:this.stream.send(e)}}async sendClose(e){await this.stream.close(e)}sendReset(){this.stream.abort(new Error("An error occurred"))}sendPause(){this.stream.pause()}sendResume(){this.stream.resume()}};function Kg(r){return new Vg(r)}var AN=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(V)}catch{return!1}return!0},RE={maxInboundStopStreams:Bg,maxOutboundStopStreams:Bg,stopTimeout:3e4},R0=class{components;discovery;reservationStore;maxInboundStopStreams;maxOutboundStopStreams;started;log;shutdownController;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.maxInboundStopStreams=t.maxInboundStopStreams??RE.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??RE.maxOutboundStopStreams,this.shutdownController=new AbortController,this.discovery=new T0(e,{filter:t.discoveryFilter??O3(SE,AE)}),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{o.name!=="HadEnoughRelaysError"&&o.name!=="RelayQueueFullError"&&this.log.error("could not add discovered relay %p - %e",n.detail,o)})}),this.reservationStore=new _0(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:found-enough-relays",()=>{this.discovery?.stopDiscovery()}),this.started=!1,this.onStop=this.onStop.bind(this)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[ue]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[rr](){return this.discovery!=null?["@libp2p/identify"]:[]}[fo]=!0;isStarted(){return this.started}async start(){this.shutdownController=new AbortController,this.shutdownController.signal,await this.components.registrar.handle(Mg,this.onStop,{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await Tr(this.discovery,this.reservationStore),this.started=!0}async stop(){this.shutdownController.abort(),await Zr(this.discovery,this.reservationStore),await this.components.registrar.unhandle(Mg),this.started=!1}async dial(e,t){let n=e.toString().split("/p2p-circuit"),o=V(n[0]),s=V(n[n.length-1]),i=o.getComponents().find(h=>h.code===421)?.value,a=s.getComponents().find(h=>h.code===421)?.value;if(i==null||a==null){let h=`ircuit relay dial to ${e.toString()} failed as address did not have both relay and destination PeerIDs`;throw this.log.error(`c${h}`),new lo(`C${h}`)}let c=Oe(i),l=Oe(a),d=this.components.connectionManager.getConnections(c)[0];d==null?(await this.components.peerStore.merge(c,{multiaddrs:[o]}),t.onProgress?.(new X("circuit-relay:open-connection")),d=await this.components.connectionManager.openConnection(c,t)):t.onProgress?.(new X("circuit-relay:reuse-connection"));let f;try{t.onProgress?.(new X("circuit-relay:open-hop-stream")),f=await d.newStream(ui,t);let h=ke(f).pb(Ko);t.onProgress?.(new X("circuit-relay:write-connect-message")),await h.write({type:Ko.Type.CONNECT,peer:{id:l.toMultihash().bytes,addrs:[V(s).bytes]}},t),t.onProgress?.(new X("circuit-relay:read-connect-response"));let p=await h.read(t);if(p.status!==at.OK)throw new oe(`failed to connect via relay with status ${p?.status?.toString()??"undefined"}`);let y=new Su(p.limit),g=Kg({stream:h.unwrap().unwrap(),remoteAddr:e,localAddr:o.encapsulate(`/p2p-circuit/p2p/${this.components.peerId.toString()}`),onDataRead:y.onData,onDataWrite:y.onData,log:f.log.newScope("circuit-relay:connection")}),m=await this.components.upgrader.upgradeOutbound(g,{...t,limits:y.getLimits()});return m.log("outbound relayed connection established to %p with limits %o, over connection %s",m.remotePeer,p.limit??"none",d.id),m}catch(h){throw this.log.error("circuit relay dial to destination %p via relay %p failed - %e",l,c,h),f?.abort(h),h}}createListener(e){return IE({peerId:this.components.peerId,connectionManager:this.components.connectionManager,addressManager:this.components.addressManager,reservationStore:this.reservationStore,logger:this.components.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>C0.exactMatch(t)||I0.exactMatch(t))}dialFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>dt.exactMatch(t))}async onStop(e,t){let n=this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);try{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.components.transportManager.listen([t.remoteAddr.encapsulate("/p2p-circuit")])}catch(d){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on - %e",d)}let o=ke(e).pb(bn),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",t.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",t.remotePeer),await o.write({type:bn.Type.STATUS,status:at.MALFORMED_MESSAGE},{signal:n}),await e.close({signal:n});return}if(s.type!==bn.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await o.write({type:bn.Type.STATUS,status:at.UNEXPECTED_MESSAGE},{signal:n}),await e.close({signal:n});return}if(!AN(s)){this.log.error("invalid stop connect request via peer %p",t.remotePeer),await o.write({type:bn.Type.STATUS,status:at.MALFORMED_MESSAGE},{signal:n}),await e.close({signal:n});return}let i=Xe(ve(s.peer.id));if(await this.components.connectionGater.denyInboundRelayedConnection?.(t.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",t.remotePeer),await o.write({type:bn.Type.STATUS,status:at.PERMISSION_DENIED},{signal:n}),await e.close({signal:n});return}this.log.trace("sending success response to %p",t.remotePeer),await o.write({type:bn.Type.STATUS,status:at.OK},{signal:n});let a=new Su(s.limit),c=t.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),l=this.components.addressManager.getAddresses()[0],u=Kg({stream:o.unwrap().unwrap(),remoteAddr:c,localAddr:l,onDataRead:a.onData,onDataWrite:a.onData,log:e.log.newScope("circuit-relay:connection")});await this.components.upgrader.upgradeInbound(u,{limits:a.getLimits(),signal:n}),u.log("inbound relayed connection established to %p with limits %o, over connection %s",i,s.limit??"none",t.id)}finally{n?.clear()}}};function LE(r={}){return e=>new R0(e,r)}var zr;(function(r){let e;(function(a){a.UNUSED="UNUSED",a.CONNECT="CONNECT",a.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.UNUSED=0]="UNUSED",a[a.CONNECT=100]="CONNECT",a[a.SYNC=300]="SYNC"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.observedAddresses!=null&&a.observedAddresses.length>0)for(let u of a.observedAddresses)c.uint32(18),c.bytes(u);l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={observedAddresses:[]},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{if(l.limits?.observedAddresses!=null&&u.observedAddresses.length===l.limits.observedAddresses)throw new fe('Decode error - repeated field "observedAddresses" had too many elements');u.observedAddresses.push(a.bytes());break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d={observedAddresses:0},f=c==null?a.len:a.pos+c;for(;a.pos<f;){let h=a.uint32();switch(h>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{if(u.limits?.observedAddresses!=null&&d.observedAddresses===u.limits.observedAddresses)throw new fe('Streaming decode error - repeated field "observedAddresses" had too many elements');yield{field:`${l}.observedAddresses[]`,index:d.observedAddresses,value:a.bytes()},d.observedAddresses++;break}default:{a.skipType(h&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(zr||(zr={}));function qg(r,e){return dt.matches(r)||e.dialTransportForMultiaddr(r)==null?!1:x9.matches(r)?!0:A9.matches(r)?!Ze(r):!1}var PE=1024*4,DE=100,L0={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},P0=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??L0.timeout,this.retries=t.retries??L0.retries,this.maxInboundStreams=t.maxInboundStreams??L0.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??L0.maxOutboundStreams,this.handleIncomingUpgrade=this.handleIncomingUpgrade.bind(this)}[Symbol.toStringTag]="@libp2p/dcutr";[rr]=["@libp2p/identify"];isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(Au,{notifyOnLimitedConnection:!0,onConnect:(e,t)=>{dt.exactMatch(t.remoteAddr)&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt - %e",n)})}}),await this.registrar.handle(Au,this.handleIncomingUpgrade,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(Au),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([Au],{signal:o.signal,runOnLimitedConnection:!0});let s=ke(t,{maxDataLength:PE}).pb(zr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:zr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(d=>d.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==zr.Type.CONNECT)throw this.log("A sent wrong message type"),new oe("DCUtR message type was incorrect");let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new oe("DCUtR connect message had no multiaddrs");let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:zr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await K9(l/2),this.log("B dialing",c);let u=await this.connectionManager.openConnection(c,{signal:o.signal,priority:DE,force:!0,initiator:!1});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,u.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d - %e",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getComponents().find(i=>i.code===421)?.value==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>qg(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(dt.exactMatch(s.remoteAddr))throw new Error("Could not open a new, non-limited, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed - %e",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)},o=ke(e,{maxDataLength:PE}).pb(zr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==zr.Type.CONNECT)throw this.log("B sent wrong message type"),new oe("DCUtR message type was incorrect");if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new oe("DCUtR connect message had no multiaddrs");let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs in %o",s.observedAddresses.map(l=>V(l))),new oe("DCUtR connect message had no dialable multiaddrs");if(this.log("A sending connect"),await o.write({type:zr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==zr.Type.SYNC)throw new oe("DCUtR message type was incorrect");this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:DE,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n),await e.close(n)}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=V(n);if(!qg(o,this.transportManager))continue;t.push(o)}catch{}return t}};var Au="/libp2p/dcutr";function kE(r={}){return e=>new P0(e,r)}var jg={};$(jg,{base10:()=>PN});var Cfe=new Uint8Array(0);function NE(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function no(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 OE(r){return new TextEncoder().encode(r)}function ME(r){return new TextDecoder().decode(r)}function CN(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var IN=CN,TN=IN,UE=TN;var Hg=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},zg=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return FE(this,e)}},Gg=class{decoders;constructor(e){this.decoders=e}or(e){return FE(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function FE(r,e){return new Gg({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Wg=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Hg(e,t,n),this.decoder=new zg(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ua({name:r,prefix:e,encode:t,decode:n}){return new Wg(r,e,t,n)}function qo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=UE(t,r);return Ua({prefix:e,name:r,encode:n,decode:s=>no(o(s))})}function _N(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function RN(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function LN(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function Ge({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=LN(n);return Ua({prefix:e,name:r,encode(s){return RN(s,n,t)},decode(s){return _N(s,o,t,r)}})}var PN=qo({prefix:"9",name:"base10",alphabet:"0123456789"});var Yg={};$(Yg,{base16:()=>DN,base16upper:()=>kN});var DN=Ge({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),kN=Ge({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Qg={};$(Qg,{base2:()=>NN});var NN=Ge({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Xg={};$(Xg,{base256emoji:()=>FN});var $E=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}"),ON=$E.reduce((r,e,t)=>(r[t]=e,r),[]),MN=$E.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function BN(r){return r.reduce((e,t)=>(e+=ON[t],e),"")}function UN(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=MN[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var FN=Ua({prefix:"\u{1F680}",name:"base256emoji",encode:BN,decode:UN});var Zg={};$(Zg,{base32:()=>Fa,base32hex:()=>qN,base32hexpad:()=>zN,base32hexpadupper:()=>GN,base32hexupper:()=>HN,base32pad:()=>VN,base32padupper:()=>KN,base32upper:()=>$N,base32z:()=>WN});var Fa=Ge({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),$N=Ge({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),VN=Ge({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),KN=Ge({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),qN=Ge({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),HN=Ge({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),zN=Ge({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),GN=Ge({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),WN=Ge({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Jg={};$(Jg,{base36:()=>Cu,base36upper:()=>jN});var Cu=qo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),jN=qo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var e6={};$(e6,{base58btc:()=>wn,base58flickr:()=>YN});var wn=qo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),YN=qo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var t6={};$(t6,{base64:()=>QN,base64pad:()=>XN,base64url:()=>ZN,base64urlpad:()=>JN});var QN=Ge({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),XN=Ge({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),ZN=Ge({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),JN=Ge({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var r6={};$(r6,{base8:()=>eO});var eO=Ge({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var n6={};$(n6,{identity:()=>tO});var tO=Ua({prefix:"\0",name:"identity",encode:r=>ME(r),decode:r=>OE(r)});var Vfe=new TextEncoder,Kfe=new TextDecoder;var s6={};$(s6,{identity:()=>AO});var oO=qE,VE=128,sO=127,iO=~sO,aO=Math.pow(2,31);function qE(r,e,t){e=e||[],t=t||0;for(var n=t;r>=aO;)e[t++]=r&255|VE,r/=128;for(;r&iO;)e[t++]=r&255|VE,r>>>=7;return e[t]=r|0,qE.bytes=t-n+1,e}var cO=o6,lO=128,KE=127;function o6(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw o6.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&KE)<<o:(i&KE)*Math.pow(2,o),o+=7}while(i>=lO);return o6.bytes=s-n,t}var uO=Math.pow(2,7),dO=Math.pow(2,14),fO=Math.pow(2,21),hO=Math.pow(2,28),pO=Math.pow(2,35),mO=Math.pow(2,42),gO=Math.pow(2,49),yO=Math.pow(2,56),bO=Math.pow(2,63),wO=function(r){return r<uO?1:r<dO?2:r<fO?3:r<hO?4:r<pO?5:r<mO?6:r<gO?7:r<yO?8:r<bO?9:10},xO={encode:oO,decode:cO,encodingLength:wO},EO=xO,Iu=EO;function Tu(r,e=0){return[Iu.decode(r,e),Iu.decode.bytes]}function $a(r,e,t=0){return Iu.encode(r,e,t),e}function Va(r){return Iu.encodingLength(r)}function qa(r,e){let t=e.byteLength,n=Va(r),o=n+Va(t),s=new Uint8Array(o+t);return $a(r,s,0),$a(t,s,n),s.set(e,o),new Ka(r,t,e,s)}function HE(r){let e=no(r),[t,n]=Tu(e),[o,s]=Tu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Ka(t,o,i,e)}function zE(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&NE(r.bytes,t.bytes)}}var Ka=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var GE=0,vO="identity",WE=no;function SO(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return qa(GE,WE(r))}var AO={code:GE,name:vO,encode:WE,digest:SO};var c6={};$(c6,{sha256:()=>IO,sha512:()=>TO});var CO=20;function a6({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new i6(r,e,t,n,o)}var i6=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??CO,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?jE(n,this.code,t?.truncate):n.then(o=>jE(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function jE(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return qa(e,r)}function QE(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var IO=a6({name:"sha2-256",code:18,encode:QE("SHA-256")}),TO=a6({name:"sha2-512",code:19,encode:QE("SHA-512")});function XE(r,e){let{bytes:t,version:n}=r;return n===0?RO(t,l6(r),e??wn.encoder):LO(t,l6(r),e??Fa.encoder)}var ZE=new WeakMap;function l6(r){let e=ZE.get(r);if(e==null){let t=new Map;return ZE.set(r,t),t}return e}var k0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ru)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==PO)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=qa(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&zE(e.multihash,n.multihash)}toString(e){return XE(this,e)}toJSON(){return{"/":XE(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??JE(n,o,s.bytes))}else if(t[DO]===!0){let{version:n,multihash:o,code:s}=t,i=HE(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ru)throw new Error(`Version 0 CID must use dag-pb (code: ${Ru}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=JE(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ru,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=no(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new Ka(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=Tu(e.subarray(t));return t+=f,d},o=n(),s=Ru;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=_O(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return l6(s).set(n,e),s}};function _O(r,e){switch(r[0]){case"Q":{let t=e??wn;return[wn.prefix,t.decode(`${wn.prefix}${r}`)]}case wn.prefix:{let t=e??wn;return[wn.prefix,t.decode(r)]}case Fa.prefix:{let t=e??Fa;return[Fa.prefix,t.decode(r)]}case Cu.prefix:{let t=e??Cu;return[Cu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function RO(r,e,t){let{prefix:n}=t;if(n!==wn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function LO(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ru=112,PO=18;function JE(r,e,t){let n=Va(r),o=n+Va(e),s=new Uint8Array(o+t.byteLength);return $a(r,s,0),$a(e,s,n),s.set(t,o),s}var DO=Symbol.for("@ipld/js-cid/CID");var u6={...n6,...Qg,...r6,...jg,...Yg,...Zg,...Jg,...e6,...t6,...Xg},uhe={...c6,...s6};function ev(r=0){return new Uint8Array(r)}function rv(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var tv=rv("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),d6=rv("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=ev(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),kO={utf8:tv,"utf-8":tv,hex:u6.base16,latin1:d6,ascii:d6,binary:d6,...u6},nv=kO;function f6(r,e="utf8"){let t=nv[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}function H(r){if(r!==void 0&&r!==H.REQUEST&&r!==H.RESPONSE)throw new Error("type must be REQUEST or RESPONSE");r===void 0||this.initialize(r),this.maxHeaderSize=H.maxHeaderSize}H.prototype.initialize=function(r,e){if(r!==H.REQUEST&&r!==H.RESPONSE)throw new Error("type must be REQUEST or RESPONSE");this.type=r,this.state=r+"_LINE",this.info={headers:[],upgrade:!1},this.trailers=[],this.line="",this.isChunked=!1,this.connection="",this.headerSize=0,this.body_bytes=null,this.isUserCall=!1,this.hadError=!1};H.encoding="ascii";H.maxHeaderSize=80*1024;H.REQUEST="REQUEST";H.RESPONSE="RESPONSE";var ov=H.kOnHeaders=1,h6=H.kOnHeadersComplete=2,N0=H.kOnBody=3,p6=H.kOnMessageComplete=4;H.prototype[ov]=H.prototype[h6]=H.prototype[N0]=H.prototype[p6]=function(){};var sv=!0;Object.defineProperty(H,"kOnExecute",{get:function(){return sv=!1,99}});var iv=H.methods=["DELETE","GET","HEAD","POST","PUT","CONNECT","OPTIONS","TRACE","COPY","LOCK","MKCOL","MOVE","PROPFIND","PROPPATCH","SEARCH","UNLOCK","BIND","REBIND","UNBIND","ACL","REPORT","MKACTIVITY","CHECKOUT","MERGE","M-SEARCH","NOTIFY","SUBSCRIBE","UNSUBSCRIBE","PATCH","PURGE","MKCALENDAR","LINK","UNLINK","SOURCE"],av=iv.indexOf("CONNECT");H.prototype.reinitialize=H;H.prototype.close=H.prototype.pause=H.prototype.resume=H.prototype.remove=H.prototype.free=function(){};H.prototype._compatMode0_11=!1;H.prototype.getAsyncId=function(){return 0};var NO={REQUEST_LINE:!0,RESPONSE_LINE:!0,HEADER:!0};H.prototype.execute=function(r,e,t){if(!(this instanceof H))throw new TypeError("not a HTTPParser");e=e||0,t=typeof t=="number"?t:r.length,this.chunk=r,this.offset=e;var n=this.end=e+t;try{for(;this.offset<n&&!this[this.state](););}catch(o){if(this.isUserCall)throw o;return this.hadError=!0,o}return this.chunk=null,t=this.offset-e,NO[this.state]&&(this.headerSize+=t,this.headerSize>(this.maxHeaderSize||H.maxHeaderSize))?new Error("max header size exceeded"):t};var OO={REQUEST_LINE:!0,RESPONSE_LINE:!0,BODY_RAW:!0};H.prototype.finish=function(){if(!this.hadError){if(!OO[this.state])return new Error("invalid state for EOF");this.state==="BODY_RAW"&&this.userCall()(this[p6]())}};H.prototype.consume=H.prototype.unconsume=H.prototype.getCurrentBuffer=function(){};H.prototype.userCall=function(){this.isUserCall=!0;var r=this;return function(e){return r.isUserCall=!1,e}};H.prototype.nextRequest=function(){this.userCall()(this[p6]()),this.reinitialize(this.type)};H.prototype.consumeLine=function(){for(var r=this.end,e=this.chunk,t=this.offset;t<r;t++)if(e[t]===10){var n=this.line+f6(e.subarray(this.offset,t),H.encoding);return n.charAt(n.length-1)==="\r"&&(n=n.substr(0,n.length-1)),this.line="",this.offset=t+1,n}this.line+=f6(e.subarray(this.offset,this.end),H.encoding),this.offset=this.end};var MO=/^([^: \t]+):[ \t]*((?:.*[^ \t])|)/,BO=/^[ \t]+(.*[^ \t])/;H.prototype.parseHeader=function(r,e){if(r.indexOf("\r")!==-1)throw O0("HPE_LF_EXPECTED");var t=MO.exec(r),n=t&&t[1];if(n)e.push(n),e.push(t[2]);else{var o=BO.exec(r);o&&e.length&&(e[e.length-1]&&(e[e.length-1]+=" "),e[e.length-1]+=o[1])}};var UO=/^([A-Z-]+) ([^ ]+) HTTP\/(\d)\.(\d)$/;H.prototype.REQUEST_LINE=function(){var r=this.consumeLine();if(r){var e=UO.exec(r);if(e===null)throw O0("HPE_INVALID_CONSTANT");if(this.info.method=this._compatMode0_11?e[1]:iv.indexOf(e[1]),this.info.method===-1)throw new Error("invalid request method");this.info.url=e[2],this.info.versionMajor=+e[3],this.info.versionMinor=+e[4],this.body_bytes=0,this.state="HEADER"}};var FO=/^HTTP\/(\d)\.(\d) (\d{3}) ?(.*)$/;H.prototype.RESPONSE_LINE=function(){var r=this.consumeLine();if(r){var e=FO.exec(r);if(e===null)throw O0("HPE_INVALID_CONSTANT");this.info.versionMajor=+e[1],this.info.versionMinor=+e[2];var t=this.info.statusCode=+e[3];this.info.statusMessage=e[4],((t/100|0)===1||t===204||t===304)&&(this.body_bytes=0),this.state="HEADER"}};H.prototype.shouldKeepAlive=function(){if(this.info.versionMajor>0&&this.info.versionMinor>0){if(this.connection.indexOf("close")!==-1)return!1}else if(this.connection.indexOf("keep-alive")===-1)return!1;return!!(this.body_bytes!==null||this.isChunked)};H.prototype.HEADER=function(){var r=this.consumeLine();if(r!==void 0){var e=this.info;if(r)this.parseHeader(r,e.headers);else{for(var t=e.headers,n=!1,o,s=!1,i=0;i<t.length;i+=2)switch(t[i].toLowerCase()){case"transfer-encoding":this.isChunked=t[i+1].toLowerCase()==="chunked";break;case"content-length":if(o=+t[i+1],n){if(o!==this.body_bytes)throw O0("HPE_UNEXPECTED_CONTENT_LENGTH")}else n=!0,this.body_bytes=o;break;case"connection":this.connection+=t[i+1].toLowerCase();break;case"upgrade":s=!0;break}this.isChunked&&n&&(n=!1,this.body_bytes=null),s&&this.connection.indexOf("upgrade")!=-1?e.upgrade=this.type===H.REQUEST||e.statusCode===101:e.upgrade=e.method===av,this.isChunked&&e.upgrade&&(this.isChunked=!1),e.shouldKeepAlive=this.shouldKeepAlive();var a;if(sv?a=this.userCall()(this[h6](e)):a=this.userCall()(this[h6](e.versionMajor,e.versionMinor,e.headers,e.method,e.url,e.statusCode,e.statusMessage,e.upgrade,e.shouldKeepAlive)),a===2)return this.nextRequest(),!0;if(this.isChunked&&!a)this.state="BODY_CHUNKHEAD";else{if(a||this.body_bytes===0)return this.nextRequest(),e.upgrade;this.body_bytes===null?this.state="BODY_RAW":this.state="BODY_SIZED"}}}};H.prototype.BODY_CHUNKHEAD=function(){var r=this.consumeLine();r!==void 0&&(this.body_bytes=parseInt(r,16),this.body_bytes?this.state="BODY_CHUNK":this.state="BODY_CHUNKTRAILERS")};H.prototype.BODY_CHUNK=function(){var r=Math.min(this.end-this.offset,this.body_bytes);this.userCall()(this[N0](this.chunk.slice(this.offset,this.offset+r),0,r)),this.offset+=r,this.body_bytes-=r,this.body_bytes||(this.state="BODY_CHUNKEMPTYLINE")};H.prototype.BODY_CHUNKEMPTYLINE=function(){var r=this.consumeLine();if(r!==void 0){if(r!=="")throw new Error("Expected empty line");this.state="BODY_CHUNKHEAD"}};H.prototype.BODY_CHUNKTRAILERS=function(){var r=this.consumeLine();r!==void 0&&(r?this.parseHeader(r,this.trailers):(this.trailers.length&&this.userCall()(this[ov](this.trailers,"")),this.nextRequest()))};H.prototype.BODY_RAW=function(){this.userCall()(this[N0](this.chunk.slice(this.offset,this.end),0,this.end-this.offset)),this.offset=this.end};H.prototype.BODY_SIZED=function(){var r=Math.min(this.end-this.offset,this.body_bytes);this.userCall()(this[N0](this.chunk.slice(this.offset,this.offset+r),0,r)),this.offset+=r,this.body_bytes-=r,this.body_bytes||this.nextRequest()};["Headers","HeadersComplete","Body","MessageComplete"].forEach(function(r){var e=H["kOn"+r];Object.defineProperty(H.prototype,"on"+r,{get:function(){return this[e]},set:function(t){return this._compatMode0_11=!0,av="CONNECT",this[e]=t}})});function O0(r){var e=new Error("Parse Error");return e.code=r,e}var $O=[6,53,56,54,55];function cv(r){return dv("sni",r)?.value}function lv(r){let e=dv("tcp",r)?.value;return e==null?"":`:${e}`}function dv(r,e){return e.find(t=>t.name===r)}function uv(r){return r.some(({code:e})=>e===448)}function Gr(r,e){let t=fv[r.name];if(t==null)throw new Error(`Can't interpret protocol ${r.name}`);let n=t(r,e);return r.code===41?`[${n}]`:n}var fv={ip4:(r,e)=>r.value,ip6:(r,e)=>e.length===0?r.value:`[${r.value}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${Gr(t,e)}:${r.value}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${Gr(t,e)}:${r.value}`},dnsaddr:(r,e)=>r.value,dns4:(r,e)=>r.value,dns6:(r,e)=>r.value,dns:(r,e)=>r.value,ipfs:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${Gr(t,e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${Gr(t,e)}`},http:(r,e)=>{let t=uv(e),n=cv(e),o=lv(e);if(t&&n!=null)return`https://${n}${o}`;let s=t?"https://":"http://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=Gr(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Gr(t,e),o=decodeURIComponent(r.value??"");return`${n}${o}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return Gr(t,e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return Gr(t,e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Gr(t,e);return n=n?.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=uv(e),n=cv(e),o=lv(e);if(t&&n!=null)return`wss://${n}${o}`;let s=t?"wss://":"ws://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=Gr(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=Gr(t,e);return n=n?.replace("tcp://",""),`wss://${n}`}};function M0(r,e){let n=V(r).getComponents(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=fv[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let i=s(o,n)??"";return e?.assumeHttp!==!1&&$O.includes(o.code)&&(i=i.replace(/^.*:\/\//,""),o.value==="443"?i=`https://${i}`:i=`http://${i}`),(i.startsWith("http://")||i.startsWith("https://")||i.startsWith("ws://")||i.startsWith("wss://"))&&(i=new URL(i).toString(),i.endsWith("/")&&(i=i.substring(0,i.length-1))),i}var hv="[a-fA-F\\d:]",Ho=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${hv})|(?<=${hv})(?=\\s|$))`:"",Wr="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Je="[a-fA-F\\d]{1,4}",B0=`
|
|
32
32
|
(?:
|
|
33
33
|
(?:${Je}:){7}(?:${Je}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
|
|
34
|
-
(?:${Je}:){6}(?:${
|
|
35
|
-
(?:${Je}:){5}(?::${
|
|
36
|
-
(?:${Je}:){4}(?:(?::${Je}){0,1}:${
|
|
37
|
-
(?:${Je}:){3}(?:(?::${Je}){0,2}:${
|
|
38
|
-
(?:${Je}:){2}(?:(?::${Je}){0,3}:${
|
|
39
|
-
(?:${Je}:){1}(?:(?::${Je}){0,4}:${
|
|
40
|
-
(?::(?:(?::${Je}){0,5}:${
|
|
34
|
+
(?:${Je}:){6}(?:${Wr}|:${Je}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
|
|
35
|
+
(?:${Je}:){5}(?::${Wr}|(?::${Je}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
|
|
36
|
+
(?:${Je}:){4}(?:(?::${Je}){0,1}:${Wr}|(?::${Je}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
|
|
37
|
+
(?:${Je}:){3}(?:(?::${Je}){0,2}:${Wr}|(?::${Je}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
|
|
38
|
+
(?:${Je}:){2}(?:(?::${Je}){0,3}:${Wr}|(?::${Je}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
|
|
39
|
+
(?:${Je}:){1}(?:(?::${Je}){0,4}:${Wr}|(?::${Je}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
|
|
40
|
+
(?::(?:(?::${Je}){0,5}:${Wr}|(?::${Je}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
|
|
41
41
|
)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
|
|
42
|
-
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),$O=new RegExp(`(?:^${Gr}$)|(?:^${B0}$)`),VO=new RegExp(`^${Gr}$`),KO=new RegExp(`^${B0}$`),m6=r=>r&&r.exact?$O:new RegExp(`(?:${Ho(r)}${Gr}${Ho(r)})|(?:${Ho(r)}${B0}${Ho(r)})`,"g");m6.v4=r=>r&&r.exact?VO:new RegExp(`${Ho(r)}${Gr}${Ho(r)}`,"g");m6.v6=r=>r&&r.exact?KO:new RegExp(`${Ho(r)}${B0}${Ho(r)}`,"g");var g6=m6;function y6(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function hv(){return!1}var{toString:qO}=Object.prototype;function b6(r){return qO.call(r)==="[object RegExp]"}var pv={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function w6(r,e={}){if(!b6(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(pv).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?pv[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function x6(r,e,{timeout:t}={}){try{return y6(()=>w6(r).test(e),{timeout:t})()}catch(n){if(hv(n))return!1;throw n}}var HO=15,zO=45,mv={timeout:400};function E6(r){return r.length>zO?!1:x6(g6.v6({exact:!0}),r,mv)}function gv(r){return r.length>HO?!1:x6(g6.v4({exact:!0}),r,mv)}var yv={http:"80",https:"443",ws:"80",wss:"443"},GO=["http","https","ws","wss"];function bv(r,e){e=e??{};let t=e.defaultDnsType??"dns",{scheme:n,hostname:o,port:s,path:i}=WO(r),a=[jO(o,t),YO(s,n),QO(n)];i!=null&&a.push(XO(i));let c="/"+a.filter(l=>!!l).reduce((l,u)=>l.concat(u),[]).join("/");return V(c)}function WO(r){let[e]=r.split(":");GO.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o,pathname:s,search:i}=new URL(r);if(o==null||o===""){let c=ZO(e);c!=null&&(o=c),c==null&&t==="http:"&&(o="80")}let a;return s!=null&&s!==""&&s!=="/"&&(s.startsWith("/")&&(s=s.substring(1)),a=s),i!=null&&i!==""&&(a=a??"",a+=i),{scheme:e,hostname:n,port:o,path:a}}function jO(r,e){if(!(r==null||r==="")){if(gv(r))return["ip4",r];if(E6(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(E6(t))return["ip6",t]}return[e,r]}}function YO(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function QO(r){if(r.match(/^tcp$|^udp$/)==null)return r==="https"?["/tls/http"]:r==="wss"?["/tls/ws"]:[r]}function XO(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function ZO(r){if(!(r==null||r===""||yv[r]==null))return yv[r]}function wv(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}function v6(r,e={}){let t=wv(r),n={_cancelled:!1,async start(){this._cancelled=!1},async pull(o){try{let{value:s,done:i}=await t.next();if(this._cancelled)return;if(i===!0){o.close();return}o.enqueue(s)}catch(s){o.error(s)}},cancel(){this._cancelled=!0}};return new globalThis.ReadableStream(n,e)}var JO=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),xv=Ac({name:"sha-1",code:17,encode:JO("SHA-1")});var T6={};$(T6,{base10:()=>iM});var Khe=new Uint8Array(0);function Ev(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function oo(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 vv(r){return new TextEncoder().encode(r)}function Sv(r){return new TextDecoder().decode(r)}function eM(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var tM=eM,rM=tM,Cv=rM;var S6=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},A6=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Iv(this,e)}},C6=class{decoders;constructor(e){this.decoders=e}or(e){return Iv(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Iv(r,e){return new C6({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var I6=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new S6(e,t,n),this.decoder=new A6(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ha({name:r,prefix:e,encode:t,decode:n}){return new I6(r,e,t,n)}function zo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=Cv(t,r);return Ha({prefix:e,name:r,encode:n,decode:s=>oo(o(s))})}function nM(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function oM(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function sM(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function We({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=sM(n);return Ha({prefix:e,name:r,encode(s){return oM(s,n,t)},decode(s){return nM(s,o,t,r)}})}var iM=zo({prefix:"9",name:"base10",alphabet:"0123456789"});var _6={};$(_6,{base16:()=>aM,base16upper:()=>cM});var aM=We({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),cM=We({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var R6={};$(R6,{base2:()=>lM});var lM=We({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var L6={};$(L6,{base256emoji:()=>pM});var Tv=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}"),uM=Tv.reduce((r,e,t)=>(r[t]=e,r),[]),dM=Tv.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function fM(r){return r.reduce((e,t)=>(e+=uM[t],e),"")}function hM(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=dM[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var pM=Ha({prefix:"\u{1F680}",name:"base256emoji",encode:fM,decode:hM});var P6={};$(P6,{base32:()=>za,base32hex:()=>bM,base32hexpad:()=>xM,base32hexpadupper:()=>EM,base32hexupper:()=>wM,base32pad:()=>gM,base32padupper:()=>yM,base32upper:()=>mM,base32z:()=>vM});var za=We({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),mM=We({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),gM=We({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),yM=We({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),bM=We({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),wM=We({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),xM=We({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),EM=We({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),vM=We({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var D6={};$(D6,{base36:()=>Lu,base36upper:()=>SM});var Lu=zo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),SM=zo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var k6={};$(k6,{base58btc:()=>wn,base58flickr:()=>AM});var wn=zo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),AM=zo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var N6={};$(N6,{base64:()=>CM,base64pad:()=>IM,base64url:()=>TM,base64urlpad:()=>_M});var CM=We({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),IM=We({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),TM=We({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),_M=We({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var O6={};$(O6,{base8:()=>RM});var RM=We({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var M6={};$(M6,{identity:()=>LM});var LM=Ha({prefix:"\0",name:"identity",encode:r=>Sv(r),decode:r=>vv(r)});var o1e=new TextEncoder,s1e=new TextDecoder;var U6={};$(U6,{identity:()=>JM});var kM=Lv,_v=128,NM=127,OM=~NM,MM=Math.pow(2,31);function Lv(r,e,t){e=e||[],t=t||0;for(var n=t;r>=MM;)e[t++]=r&255|_v,r/=128;for(;r&OM;)e[t++]=r&255|_v,r>>>=7;return e[t]=r|0,Lv.bytes=t-n+1,e}var BM=B6,UM=128,Rv=127;function B6(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw B6.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Rv)<<o:(i&Rv)*Math.pow(2,o),o+=7}while(i>=UM);return B6.bytes=s-n,t}var FM=Math.pow(2,7),$M=Math.pow(2,14),VM=Math.pow(2,21),KM=Math.pow(2,28),qM=Math.pow(2,35),HM=Math.pow(2,42),zM=Math.pow(2,49),GM=Math.pow(2,56),WM=Math.pow(2,63),jM=function(r){return r<FM?1:r<$M?2:r<VM?3:r<KM?4:r<qM?5:r<HM?6:r<zM?7:r<GM?8:r<WM?9:10},YM={encode:kM,decode:BM,encodingLength:jM},QM=YM,Pu=QM;function Du(r,e=0){return[Pu.decode(r,e),Pu.decode.bytes]}function Ga(r,e,t=0){return Pu.encode(r,e,t),e}function Wa(r){return Pu.encodingLength(r)}function Ya(r,e){let t=e.byteLength,n=Wa(r),o=n+Wa(t),s=new Uint8Array(o+t);return Ga(r,s,0),Ga(t,s,n),s.set(e,o),new ja(r,t,e,s)}function Pv(r){let e=oo(r),[t,n]=Du(e),[o,s]=Du(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ja(t,o,i,e)}function Dv(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Ev(r.bytes,t.bytes)}}var ja=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var kv=0,XM="identity",Nv=oo;function ZM(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Ya(kv,Nv(r))}var JM={code:kv,name:XM,encode:Nv,digest:ZM};var V6={};$(V6,{sha256:()=>tB,sha512:()=>rB});var eB=20;function $6({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new F6(r,e,t,n,o)}var F6=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??eB,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Ov(n,this.code,t?.truncate):n.then(o=>Ov(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function Ov(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Ya(e,r)}function Bv(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var tB=$6({name:"sha2-256",code:18,encode:Bv("SHA-256")}),rB=$6({name:"sha2-512",code:19,encode:Bv("SHA-512")});function Uv(r,e){let{bytes:t,version:n}=r;return n===0?oB(t,K6(r),e??wn.encoder):sB(t,K6(r),e??za.encoder)}var Fv=new WeakMap;function K6(r){let e=Fv.get(r);if(e==null){let t=new Map;return Fv.set(r,t),t}return e}var F0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Nu)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==iB)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ya(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&Dv(e.multihash,n.multihash)}toString(e){return Uv(this,e)}toJSON(){return{"/":Uv(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??$v(n,o,s.bytes))}else if(t[aB]===!0){let{version:n,multihash:o,code:s}=t,i=Pv(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Nu)throw new Error(`Version 0 CID must use dag-pb (code: ${Nu}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=$v(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Nu,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=oo(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new ja(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=Du(e.subarray(t));return t+=f,d},o=n(),s=Nu;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=nB(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return K6(s).set(n,e),s}};function nB(r,e){switch(r[0]){case"Q":{let t=e??wn;return[wn.prefix,t.decode(`${wn.prefix}${r}`)]}case wn.prefix:{let t=e??wn;return[wn.prefix,t.decode(r)]}case za.prefix:{let t=e??za;return[za.prefix,t.decode(r)]}case Lu.prefix:{let t=e??Lu;return[Lu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function oB(r,e,t){let{prefix:n}=t;if(n!==wn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function sB(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Nu=112,iB=18;function $v(r,e,t){let n=Wa(r),o=n+Wa(e),s=new Uint8Array(o+t.byteLength);return Ga(r,s,0),Ga(e,s,n),s.set(t,o),s}var aB=Symbol.for("@ipld/js-cid/CID");var q6={...M6,...R6,...O6,...T6,..._6,...P6,...D6,...k6,...N6,...L6},T1e={...V6,...U6};function Vv(r=0){return new Uint8Array(r)}function qv(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Kv=qv("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),H6=qv("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Vv(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),cB={utf8:Kv,"utf-8":Kv,hex:q6.base16,latin1:H6,ascii:H6,binary:H6,...q6},Hv=cB;function di(r,e="utf8"){let t=Hv[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var $0=class extends globalThis.Request{constructor(e,t={}){let n=t.method??"GET",o=xn(t),s=t.body;V0(n,o)&&(t.method="UPGRADE"),super(e,t),Object.defineProperties(this,{body:{value:s,writable:!1},method:{value:n,writable:!1},headers:{value:o,writable:!1}})}};var zv={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a Teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"};var En=class extends globalThis.Response{constructor(e,t={}){let n=xn(t),o=t.status??200;(o<200||o>599)&&(t.status=200),super(e,t),Object.defineProperties(this,{status:{value:o,writable:!1},statusText:{value:zv[o],writable:!1},headers:{value:n,writable:!1}})}};var lB=["dns","dns4","dns6","dnsaddr"];function Mu(r,e){if(r instanceof URL)return r;let t=q0(r,e),{httpPath:n}=H0(r);return new URL(`http://${t}${n}`)}function Bu(r){return r instanceof Uint8Array?r:r instanceof DataView?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):new Uint8Array(r,0,r.byteLength)}function jv(r,e){let t={method:r.method,headers:r.headers};if((t.method!=="GET"||r.upgrade)&&t.method!=="HEAD"){let n=e;r.upgrade||(n=dB(e,r.headers.get("content-length"))),t.body=v6(n),t.duplex="half"}return new $0(z6(r).toString(),t)}async function Yv(r,e){if(e.send(di([`HTTP/1.1 ${r.status} ${r.statusText}`,...K0(r.headers),"",""].join(`\r
|
|
43
|
-
`))),r.body==null){await e.close().catch(n=>{e.abort(n)});return}let t=r.body.getReader();for(;;){let n=await t.read();if(n.value!=null&&(e.send(n.value)||await e.onDrain()),n.done)break}await e.close().catch(n=>{e.abort(n)})}var
|
|
44
|
-
`)),
|
|
45
|
-
`)),
|
|
46
|
-
`)),
|
|
47
|
-
`));function K0(r){let e=[];r.get("Connection")==null&&r.set("Connection","close");for(let[t,n]of r.entries())e.push(`${t}: ${n}`);return e}async function*dB(r,e){if(e=parseInt(`${e??""}`),e==null||isNaN(e))return r;let t=0;for await(let n of r){if(t+=n.byteLength,t>e){yield n.subarray(0,t-e);return}if(yield n.subarray(),t===e)return}}function Qa(r,e){if(typeof r=="string"&&(r.startsWith("/")?r=V(r):r=new URL(r)),Qr(r)&&(r=V(`/p2p/${r}`)),r instanceof URL&&r.protocol==="multiaddr:"&&(r=bv(r.toString())),sn(r)&&(r=[r]),Array.isArray(r)){for(let t of r)if(t.getComponents().some(({name:o})=>o==="http")){let o=M0(t);return new URL(`${o}${e??""}`)}}return e==null?r:r instanceof URL?new URL(`${r}${e.substring(1)}`):r.map(t=>t.encapsulate(`/http-path/${encodeURIComponent(e.substring(1))}`))}function xn(r={}){return r.headers instanceof Headers||(r.headers=new Headers(r.headers)),r.headers}function Ou(r){return r!=null&&r!==""}function Gv(r){switch(r){case"https:":return 443;case"wss:":return 443;case"http:":return 80;case"ws:":return 80;default:return 80}}function q0(r,e){let t,n=80,o="http:";if(r instanceof URL&&(n=r.port===""?Gv(r.protocol):parseInt(r.port,10),t=r.hostname,o=r.protocol),Ou(t)||(t=e.get("host")??void 0),!Ou(t)&&Array.isArray(r))for(let s of r){let a=s.getComponents().filter(({name:c})=>lB.includes(c))?.[0]?.value;if(a!=null){t=a;break}}if(!Ou(t)&&Array.isArray(r))for(let s of r){let i=s.getComponents().findLast(a=>a.code===421)?.value;try{let a=Y(s);a.port!=null&&(n=a.port)}catch{}if(i!=null){t=Oe(i).toCID().toString(ps);break}}if(!Ou(t)&&Array.isArray(r))for(let s of r)try{let i=Y(s);i.host!=null&&(t=i.host);break}catch{}if(Ou(t))return n!==Gv(o)&&(t=`${t}:${n}`),t;throw new C("Could not determine request host name - a request must have a host header, be made to a DNS or IP-based multiaddr or an http(s) URL")}function H0(r){let e="/";return r=r.map(t=>V(t.getComponents().filter(n=>n.name==="http-path"?(e=n.value??"/",!1):!0))),{httpPath:e,addresses:r}}function z0(r,e=["GET"]){return r==null?e:(typeof r=="string"&&(r=[r]),r.map(t=>t.toUpperCase()))}function z6(r){let e=r.url??"/";if(e.startsWith("http"))return new URL(e);let t=fB(r);return new URL(`http://${t}${e}`)}function fB(r){let e=r.headers?.host;if(e==null&&(e=r.headers?.Host),e==null&&typeof r.headers.get=="function"&&(e=r.headers.get("host")),e==null)throw new C("Could not read host");return e}function V0(r,e){return r==="GET"&&e.get("connection")?.toLowerCase()==="upgrade"&&e.get("upgrade")?.toLowerCase()==="websocket"}function Wv(r,e){if(r instanceof Headers)return r.get(e)??void 0;let t=r[e];return Array.isArray(t)?t.join(","):t}async function G6(r){if(Wv(r,"sec-websocket-version")!=="13")throw new cs("Invalid version");let e=Wv(r,"sec-websocket-key");if(e==null)throw new cs("Missing sec-websocket-key");let t=`${e}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,n=await xv.digest(di(t)),o=vc.encode(n.digest).substring(1);return new Headers({Upgrade:"websocket",Connection:"upgrade","Sec-WebSocket-Accept":o})}async function Xv(r,e){let t=new H("REQUEST"),n=new W,o;t[H.kOnHeadersComplete]=s=>{let i=new Headers;for(let a=0;a<s.headers.length;a+=2)i.set(s.headers[a].toLowerCase(),s.headers[a+1]);o={...s,headers:i,raw:n,method:H.methods[s.method]}};try{for(;;){let{data:s}=await Do(r,"message",e?.signal),i=s.subarray(),a=t.execute(i,0,i.byteLength);if(a instanceof Error)throw a;if(n.append(i.subarray(0,a)),a<i.byteLength&&r.push(i.subarray(a)),o!=null)return o}}catch(s){r.abort(s)}finally{t.finish()}throw new Error("Failed to read header info from request")}var G0=class extends Error{static name="InvalidResponseError";name="InvalidResponseError"};var hB=[101,204,205,304];async function Zv(r,e,t){let n=Promise.withResolvers(),o=new TransformStream,s=o.writable.getWriter(),i=!1,a=new H("RESPONSE");a.maxHeaderSize=t.maxHeaderSize??H.maxHeaderSize,a[H.kOnHeadersComplete]=l=>{t.log("response headers complete"),i=!0;let u=new Headers;for(let h=0;h<l.headers.length;h+=2)u.append(l.headers[h],l.headers[h+1]);let d=o.readable;hB.includes(l.statusCode)&&(o.writable.close().catch(()=>{}),o.readable.cancel().catch(()=>{}),d=null);let f=new En(d,{status:l.statusCode,statusText:l.statusMessage,headers:u});n.resolve(f)},a[H.kOnBody]=l=>{t.log("response read body %d bytes",l.byteLength),s.write(l).catch(u=>{n.reject(u)})},a[H.kOnMessageComplete]=()=>{t.log("response message complete"),s.close().catch(l=>{n.reject(l)})};let c=0;return r.addEventListener("message",({data:l})=>{t.log("response stream read %d bytes",l.byteLength),c+=l.byteLength;let u=a.execute(l.subarray(),0,l.byteLength);u instanceof Error&&(r.abort(u),a.finish())}),r.addEventListener("remoteCloseWrite",()=>{i||n.reject(new G0(`Response ended before headers were received, read ${c} bytes`)),a.finish()}),n.promise}var X6={};$(X6,{base10:()=>xB});var p0e=new Uint8Array(0);function Jv(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function so(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 eS(r){return new TextEncoder().encode(r)}function tS(r){return new TextDecoder().decode(r)}function pB(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var mB=pB,gB=mB,nS=gB;var W6=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},j6=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return oS(this,e)}},Y6=class{decoders;constructor(e){this.decoders=e}or(e){return oS(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function oS(r,e){return new Y6({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Q6=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new W6(e,t,n),this.decoder=new j6(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Xa({name:r,prefix:e,encode:t,decode:n}){return new Q6(r,e,t,n)}function Go({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=nS(t,r);return Xa({prefix:e,name:r,encode:n,decode:s=>so(o(s))})}function yB(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function bB(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function wB(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function je({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=wB(n);return Xa({prefix:e,name:r,encode(s){return bB(s,n,t)},decode(s){return yB(s,o,t,r)}})}var xB=Go({prefix:"9",name:"base10",alphabet:"0123456789"});var Z6={};$(Z6,{base16:()=>EB,base16upper:()=>vB});var EB=je({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),vB=je({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var J6={};$(J6,{base2:()=>SB});var SB=je({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var e5={};$(e5,{base256emoji:()=>_B});var sS=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}"),AB=sS.reduce((r,e,t)=>(r[t]=e,r),[]),CB=sS.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function IB(r){return r.reduce((e,t)=>(e+=AB[t],e),"")}function TB(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=CB[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var _B=Xa({prefix:"\u{1F680}",name:"base256emoji",encode:IB,decode:TB});var t5={};$(t5,{base32:()=>Za,base32hex:()=>DB,base32hexpad:()=>NB,base32hexpadupper:()=>OB,base32hexupper:()=>kB,base32pad:()=>LB,base32padupper:()=>PB,base32upper:()=>RB,base32z:()=>MB});var Za=je({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),RB=je({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),LB=je({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),PB=je({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),DB=je({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),kB=je({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),NB=je({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),OB=je({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),MB=je({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var r5={};$(r5,{base36:()=>Uu,base36upper:()=>BB});var Uu=Go({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),BB=Go({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var n5={};$(n5,{base58btc:()=>vn,base58flickr:()=>UB});var vn=Go({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),UB=Go({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var o5={};$(o5,{base64:()=>FB,base64pad:()=>$B,base64url:()=>VB,base64urlpad:()=>KB});var FB=je({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),$B=je({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),VB=je({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),KB=je({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var s5={};$(s5,{base8:()=>qB});var qB=je({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var i5={};$(i5,{identity:()=>HB});var HB=Xa({prefix:"\0",name:"identity",encode:r=>tS(r),decode:r=>eS(r)});var L0e=new TextEncoder,P0e=new TextDecoder;var c5={};$(c5,{identity:()=>hU});var WB=cS,iS=128,jB=127,YB=~jB,QB=Math.pow(2,31);function cS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=QB;)e[t++]=r&255|iS,r/=128;for(;r&YB;)e[t++]=r&255|iS,r>>>=7;return e[t]=r|0,cS.bytes=t-n+1,e}var XB=a5,ZB=128,aS=127;function a5(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw a5.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&aS)<<o:(i&aS)*Math.pow(2,o),o+=7}while(i>=ZB);return a5.bytes=s-n,t}var JB=Math.pow(2,7),eU=Math.pow(2,14),tU=Math.pow(2,21),rU=Math.pow(2,28),nU=Math.pow(2,35),oU=Math.pow(2,42),sU=Math.pow(2,49),iU=Math.pow(2,56),aU=Math.pow(2,63),cU=function(r){return r<JB?1:r<eU?2:r<tU?3:r<rU?4:r<nU?5:r<oU?6:r<sU?7:r<iU?8:r<aU?9:10},lU={encode:WB,decode:XB,encodingLength:cU},uU=lU,Fu=uU;function $u(r,e=0){return[Fu.decode(r,e),Fu.decode.bytes]}function Ja(r,e,t=0){return Fu.encode(r,e,t),e}function ec(r){return Fu.encodingLength(r)}function rc(r,e){let t=e.byteLength,n=ec(r),o=n+ec(t),s=new Uint8Array(o+t);return Ja(r,s,0),Ja(t,s,n),s.set(e,o),new tc(r,t,e,s)}function lS(r){let e=so(r),[t,n]=$u(e),[o,s]=$u(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new tc(t,o,i,e)}function uS(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Jv(r.bytes,t.bytes)}}var tc=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var dS=0,dU="identity",fS=so;function fU(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return rc(dS,fS(r))}var hU={code:dS,name:dU,encode:fS,digest:fU};var d5={};$(d5,{sha256:()=>mU,sha512:()=>gU});var pU=20;function u5({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new l5(r,e,t,n,o)}var l5=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??pU,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?hS(n,this.code,t?.truncate):n.then(o=>hS(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function hS(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return rc(e,r)}function mS(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var mU=u5({name:"sha2-256",code:18,encode:mS("SHA-256")}),gU=u5({name:"sha2-512",code:19,encode:mS("SHA-512")});function gS(r,e){let{bytes:t,version:n}=r;return n===0?bU(t,f5(r),e??vn.encoder):wU(t,f5(r),e??Za.encoder)}var yS=new WeakMap;function f5(r){let e=yS.get(r);if(e==null){let t=new Map;return yS.set(r,t),t}return e}var j0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ku)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==xU)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=rc(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&uS(e.multihash,n.multihash)}toString(e){return gS(this,e)}toJSON(){return{"/":gS(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??bS(n,o,s.bytes))}else if(t[EU]===!0){let{version:n,multihash:o,code:s}=t,i=lS(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ku)throw new Error(`Version 0 CID must use dag-pb (code: ${Ku}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=bS(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ku,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=so(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new tc(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=$u(e.subarray(t));return t+=f,d},o=n(),s=Ku;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=yU(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return f5(s).set(n,e),s}};function yU(r,e){switch(r[0]){case"Q":{let t=e??vn;return[vn.prefix,t.decode(`${vn.prefix}${r}`)]}case vn.prefix:{let t=e??vn;return[vn.prefix,t.decode(r)]}case Za.prefix:{let t=e??Za;return[Za.prefix,t.decode(r)]}case Uu.prefix:{let t=e??Uu;return[Uu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function bU(r,e,t){let{prefix:n}=t;if(n!==vn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function wU(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ku=112,xU=18;function bS(r,e,t){let n=ec(r),o=n+ec(e),s=new Uint8Array(o+t.byteLength);return Ja(r,s,0),Ja(e,s,n),s.set(t,o),s}var EU=Symbol.for("@ipld/js-cid/CID");var h5={...i5,...J6,...s5,...X6,...Z6,...t5,...r5,...n5,...o5,...e5},J0e={...d5,...c5};function wS(r=0){return new Uint8Array(r)}function ES(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var xS=ES("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),p5=ES("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=wS(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),vU={utf8:xS,"utf-8":xS,hex:h5.base16,latin1:p5,ascii:p5,binary:p5,...h5},vS=vU;function xr(r,e="utf8"){let t=vS[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function SS(r,e){return e.set("Content-Length",`${r.size}`),e.set("Content-Type",r.type!=null&&r.type!==""?r.type:"application/octet-stream"),r.stream()}function AS(r,e){return e.set("Content-Length",`${r.byteLength}`),e.set("Content-Type","application/octet-stream"),new ReadableStream({start(t){t.enqueue(Bu(r)),t.close()}})}function SU(r,e,t){let n=[`--${t}`],o=0,s=2;return typeof e=="string"?(n.push(`Content-Disposition: form-data; name="${r}"`,'Content-Type: text/plain; charset="UTF-8"',`Content-Length: ${e.length}`,""),o=e.length+s):(n.push(`Content-Disposition: form-data; name="${r}"; filename="${encodeURIComponent(e.name)}"`,"Content-Type: application/octet-stream",`Content-Length: ${e.size}`,""),o=e.size+s),xr(n.join(`\r
|
|
48
|
-
`)).byteLength+o}function
|
|
49
|
-
`)))}async function a(c,l){if(s!=null){let f=await s.read();f.value!=null&&c.enqueue(f.value),f.done&&(c.enqueue(
|
|
50
|
-
`)),s=void 0);return}let{done:u,value:d}=o.next();if(d!=null){let[f,h]=d;i(c,f,h,l)}u===!0&&c.close()}return new ReadableStream({async pull(c){await a(c,t)}})}function
|
|
51
|
-
`)),n.enqueue(s),n.enqueue(
|
|
52
|
-
`))),o&&(n.enqueue(
|
|
42
|
+
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),VO=new RegExp(`(?:^${Wr}$)|(?:^${B0}$)`),KO=new RegExp(`^${Wr}$`),qO=new RegExp(`^${B0}$`),m6=r=>r&&r.exact?VO:new RegExp(`(?:${Ho(r)}${Wr}${Ho(r)})|(?:${Ho(r)}${B0}${Ho(r)})`,"g");m6.v4=r=>r&&r.exact?KO:new RegExp(`${Ho(r)}${Wr}${Ho(r)}`,"g");m6.v6=r=>r&&r.exact?qO:new RegExp(`${Ho(r)}${B0}${Ho(r)}`,"g");var g6=m6;function y6(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function pv(){return!1}var{toString:HO}=Object.prototype;function b6(r){return HO.call(r)==="[object RegExp]"}var mv={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function w6(r,e={}){if(!b6(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(mv).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?mv[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function x6(r,e,{timeout:t}={}){try{return y6(()=>w6(r).test(e),{timeout:t})()}catch(n){if(pv(n))return!1;throw n}}var zO=15,GO=45,gv={timeout:400};function E6(r){return r.length>GO?!1:x6(g6.v6({exact:!0}),r,gv)}function yv(r){return r.length>zO?!1:x6(g6.v4({exact:!0}),r,gv)}var bv={http:"80",https:"443",ws:"80",wss:"443"},WO=["http","https","ws","wss"];function wv(r,e){e=e??{};let t=e.defaultDnsType??"dns",{scheme:n,hostname:o,port:s,path:i}=jO(r),a=[YO(o,t),QO(s,n),XO(n)];i!=null&&a.push(ZO(i));let c="/"+a.filter(l=>!!l).reduce((l,u)=>l.concat(u),[]).join("/");return V(c)}function jO(r){let[e]=r.split(":");WO.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o,pathname:s,search:i}=new URL(r);if(o==null||o===""){let c=JO(e);c!=null&&(o=c),c==null&&t==="http:"&&(o="80")}let a;return s!=null&&s!==""&&s!=="/"&&(s.startsWith("/")&&(s=s.substring(1)),a=s),i!=null&&i!==""&&(a=a??"",a+=i),{scheme:e,hostname:n,port:o,path:a}}function YO(r,e){if(!(r==null||r==="")){if(yv(r))return["ip4",r];if(E6(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(E6(t))return["ip6",t]}return[e,r]}}function QO(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function XO(r){if(r.match(/^tcp$|^udp$/)==null)return r==="https"?["/tls/http"]:r==="wss"?["/tls/ws"]:[r]}function ZO(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function JO(r){if(!(r==null||r===""||bv[r]==null))return bv[r]}function xv(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}function v6(r,e={}){let t=xv(r),n={_cancelled:!1,async start(){this._cancelled=!1},async pull(o){try{let{value:s,done:i}=await t.next();if(this._cancelled)return;if(i===!0){o.close();return}o.enqueue(s)}catch(s){o.error(s)}},cancel(){this._cancelled=!0}};return new globalThis.ReadableStream(n,e)}var eM=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Ev=Ac({name:"sha-1",code:17,encode:eM("SHA-1")});var T6={};$(T6,{base10:()=>aM});var Hhe=new Uint8Array(0);function vv(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function oo(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 Sv(r){return new TextEncoder().encode(r)}function Av(r){return new TextDecoder().decode(r)}function tM(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var rM=tM,nM=rM,Iv=nM;var S6=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},A6=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Tv(this,e)}},C6=class{decoders;constructor(e){this.decoders=e}or(e){return Tv(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Tv(r,e){return new C6({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var I6=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new S6(e,t,n),this.decoder=new A6(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ha({name:r,prefix:e,encode:t,decode:n}){return new I6(r,e,t,n)}function zo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=Iv(t,r);return Ha({prefix:e,name:r,encode:n,decode:s=>oo(o(s))})}function oM(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function sM(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function iM(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function We({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=iM(n);return Ha({prefix:e,name:r,encode(s){return sM(s,n,t)},decode(s){return oM(s,o,t,r)}})}var aM=zo({prefix:"9",name:"base10",alphabet:"0123456789"});var _6={};$(_6,{base16:()=>cM,base16upper:()=>lM});var cM=We({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),lM=We({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var R6={};$(R6,{base2:()=>uM});var uM=We({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var L6={};$(L6,{base256emoji:()=>mM});var _v=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}"),dM=_v.reduce((r,e,t)=>(r[t]=e,r),[]),fM=_v.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function hM(r){return r.reduce((e,t)=>(e+=dM[t],e),"")}function pM(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=fM[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var mM=Ha({prefix:"\u{1F680}",name:"base256emoji",encode:hM,decode:pM});var P6={};$(P6,{base32:()=>za,base32hex:()=>wM,base32hexpad:()=>EM,base32hexpadupper:()=>vM,base32hexupper:()=>xM,base32pad:()=>yM,base32padupper:()=>bM,base32upper:()=>gM,base32z:()=>SM});var za=We({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),gM=We({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),yM=We({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bM=We({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),wM=We({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),xM=We({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),EM=We({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),vM=We({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),SM=We({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var D6={};$(D6,{base36:()=>Lu,base36upper:()=>AM});var Lu=zo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),AM=zo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var k6={};$(k6,{base58btc:()=>xn,base58flickr:()=>CM});var xn=zo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),CM=zo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var N6={};$(N6,{base64:()=>IM,base64pad:()=>TM,base64url:()=>_M,base64urlpad:()=>RM});var IM=We({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),TM=We({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),_M=We({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),RM=We({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var O6={};$(O6,{base8:()=>LM});var LM=We({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var M6={};$(M6,{identity:()=>PM});var PM=Ha({prefix:"\0",name:"identity",encode:r=>Av(r),decode:r=>Sv(r)});var i1e=new TextEncoder,a1e=new TextDecoder;var U6={};$(U6,{identity:()=>eB});var NM=Pv,Rv=128,OM=127,MM=~OM,BM=Math.pow(2,31);function Pv(r,e,t){e=e||[],t=t||0;for(var n=t;r>=BM;)e[t++]=r&255|Rv,r/=128;for(;r&MM;)e[t++]=r&255|Rv,r>>>=7;return e[t]=r|0,Pv.bytes=t-n+1,e}var UM=B6,FM=128,Lv=127;function B6(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw B6.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Lv)<<o:(i&Lv)*Math.pow(2,o),o+=7}while(i>=FM);return B6.bytes=s-n,t}var $M=Math.pow(2,7),VM=Math.pow(2,14),KM=Math.pow(2,21),qM=Math.pow(2,28),HM=Math.pow(2,35),zM=Math.pow(2,42),GM=Math.pow(2,49),WM=Math.pow(2,56),jM=Math.pow(2,63),YM=function(r){return r<$M?1:r<VM?2:r<KM?3:r<qM?4:r<HM?5:r<zM?6:r<GM?7:r<WM?8:r<jM?9:10},QM={encode:NM,decode:UM,encodingLength:YM},XM=QM,Pu=XM;function Du(r,e=0){return[Pu.decode(r,e),Pu.decode.bytes]}function Ga(r,e,t=0){return Pu.encode(r,e,t),e}function Wa(r){return Pu.encodingLength(r)}function Ya(r,e){let t=e.byteLength,n=Wa(r),o=n+Wa(t),s=new Uint8Array(o+t);return Ga(r,s,0),Ga(t,s,n),s.set(e,o),new ja(r,t,e,s)}function Dv(r){let e=oo(r),[t,n]=Du(e),[o,s]=Du(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ja(t,o,i,e)}function kv(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&vv(r.bytes,t.bytes)}}var ja=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var Nv=0,ZM="identity",Ov=oo;function JM(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Ya(Nv,Ov(r))}var eB={code:Nv,name:ZM,encode:Ov,digest:JM};var V6={};$(V6,{sha256:()=>rB,sha512:()=>nB});var tB=20;function $6({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new F6(r,e,t,n,o)}var F6=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??tB,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?Mv(n,this.code,t?.truncate):n.then(o=>Mv(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function Mv(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Ya(e,r)}function Uv(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var rB=$6({name:"sha2-256",code:18,encode:Uv("SHA-256")}),nB=$6({name:"sha2-512",code:19,encode:Uv("SHA-512")});function Fv(r,e){let{bytes:t,version:n}=r;return n===0?sB(t,K6(r),e??xn.encoder):iB(t,K6(r),e??za.encoder)}var $v=new WeakMap;function K6(r){let e=$v.get(r);if(e==null){let t=new Map;return $v.set(r,t),t}return e}var F0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Nu)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==aB)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ya(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&kv(e.multihash,n.multihash)}toString(e){return Fv(this,e)}toJSON(){return{"/":Fv(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??Vv(n,o,s.bytes))}else if(t[cB]===!0){let{version:n,multihash:o,code:s}=t,i=Dv(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Nu)throw new Error(`Version 0 CID must use dag-pb (code: ${Nu}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=Vv(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Nu,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=oo(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new ja(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=Du(e.subarray(t));return t+=f,d},o=n(),s=Nu;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=oB(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return K6(s).set(n,e),s}};function oB(r,e){switch(r[0]){case"Q":{let t=e??xn;return[xn.prefix,t.decode(`${xn.prefix}${r}`)]}case xn.prefix:{let t=e??xn;return[xn.prefix,t.decode(r)]}case za.prefix:{let t=e??za;return[za.prefix,t.decode(r)]}case Lu.prefix:{let t=e??Lu;return[Lu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function sB(r,e,t){let{prefix:n}=t;if(n!==xn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function iB(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Nu=112,aB=18;function Vv(r,e,t){let n=Wa(r),o=n+Wa(e),s=new Uint8Array(o+t.byteLength);return Ga(r,s,0),Ga(e,s,n),s.set(t,o),s}var cB=Symbol.for("@ipld/js-cid/CID");var q6={...M6,...R6,...O6,...T6,..._6,...P6,...D6,...k6,...N6,...L6},R1e={...V6,...U6};function Kv(r=0){return new Uint8Array(r)}function Hv(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var qv=Hv("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),H6=Hv("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Kv(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),lB={utf8:qv,"utf-8":qv,hex:q6.base16,latin1:H6,ascii:H6,binary:H6,...q6},zv=lB;function di(r,e="utf8"){let t=zv[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var $0=class extends globalThis.Request{constructor(e,t={}){let n=t.method??"GET",o=En(t),s=t.body;V0(n,o)&&(t.method="UPGRADE"),super(e,t),Object.defineProperties(this,{body:{value:s,writable:!1},method:{value:n,writable:!1},headers:{value:o,writable:!1}})}};var Gv={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a Teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"};var vn=class extends globalThis.Response{constructor(e,t={}){let n=En(t),o=t.status??200;(o<200||o>599)&&(t.status=200),super(e,t),Object.defineProperties(this,{status:{value:o,writable:!1},statusText:{value:Gv[o],writable:!1},headers:{value:n,writable:!1}})}};var uB=["dns","dns4","dns6","dnsaddr"];function Mu(r,e){if(r instanceof URL)return r;let t=q0(r,e),{httpPath:n}=H0(r);return new URL(`http://${t}${n}`)}function Bu(r){return r instanceof Uint8Array?r:r instanceof DataView?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):new Uint8Array(r,0,r.byteLength)}function Yv(r,e){let t={method:r.method,headers:r.headers};if((t.method!=="GET"||r.upgrade)&&t.method!=="HEAD"){let n=e;r.upgrade||(n=fB(e,r.headers.get("content-length"))),t.body=v6(n),t.duplex="half"}return new $0(z6(r).toString(),t)}async function Qv(r,e){if(e.send(di([`HTTP/1.1 ${r.status} ${r.statusText}`,...K0(r.headers),"",""].join(`\r
|
|
43
|
+
`))),r.body==null){await e.close().catch(n=>{e.abort(n)});return}let t=r.body.getReader();for(;;){let n=await t.read();if(n.value!=null&&(e.send(n.value)||await e.onDrain()),n.done)break}await e.close().catch(n=>{e.abort(n)})}var Xv=di(["HTTP/1.1 404 Not Found","Connection: close","",""].join(`\r
|
|
44
|
+
`)),dB=di(["HTTP/1.1 400 Bad Request","Connection: close","",""].join(`\r
|
|
45
|
+
`)),o0e=di(["HTTP/1.1 500 Internal Server Error","Connection: close","",""].join(`\r
|
|
46
|
+
`)),s0e=di(["HTTP/1.1 501 Not Implemented","Connection: close","",""].join(`\r
|
|
47
|
+
`));function K0(r){let e=[];r.get("Connection")==null&&r.set("Connection","close");for(let[t,n]of r.entries())e.push(`${t}: ${n}`);return e}async function*fB(r,e){if(e=parseInt(`${e??""}`),e==null||isNaN(e))return r;let t=0;for await(let n of r){if(t+=n.byteLength,t>e){yield n.subarray(0,t-e);return}if(yield n.subarray(),t===e)return}}function Qa(r,e){if(typeof r=="string"&&(r.startsWith("/")?r=V(r):r=new URL(r)),Xr(r)&&(r=V(`/p2p/${r}`)),r instanceof URL&&r.protocol==="multiaddr:"&&(r=wv(r.toString())),an(r)&&(r=[r]),Array.isArray(r)){for(let t of r)if(t.getComponents().some(({name:o})=>o==="http")){let o=M0(t);return new URL(`${o}${e??""}`)}}return e==null?r:r instanceof URL?new URL(`${r}${e.substring(1)}`):r.map(t=>t.encapsulate(`/http-path/${encodeURIComponent(e.substring(1))}`))}function En(r={}){return r.headers instanceof Headers||(r.headers=new Headers(r.headers)),r.headers}function Ou(r){return r!=null&&r!==""}function Wv(r){switch(r){case"https:":return 443;case"wss:":return 443;case"http:":return 80;case"ws:":return 80;default:return 80}}function q0(r,e){let t,n=80,o="http:";if(r instanceof URL&&(n=r.port===""?Wv(r.protocol):parseInt(r.port,10),t=r.hostname,o=r.protocol),Ou(t)||(t=e.get("host")??void 0),!Ou(t)&&Array.isArray(r))for(let s of r){let a=s.getComponents().filter(({name:c})=>uB.includes(c))?.[0]?.value;if(a!=null){t=a;break}}if(!Ou(t)&&Array.isArray(r))for(let s of r){let i=s.getComponents().findLast(a=>a.code===421)?.value;try{let a=Y(s);a.port!=null&&(n=a.port)}catch{}if(i!=null){t=Oe(i).toCID().toString(ps);break}}if(!Ou(t)&&Array.isArray(r))for(let s of r)try{let i=Y(s);i.host!=null&&(t=i.host);break}catch{}if(Ou(t))return n!==Wv(o)&&(t=`${t}:${n}`),t;throw new C("Could not determine request host name - a request must have a host header, be made to a DNS or IP-based multiaddr or an http(s) URL")}function H0(r){let e="/";return r=r.map(t=>V(t.getComponents().filter(n=>n.name==="http-path"?(e=n.value??"/",!1):!0))),{httpPath:e,addresses:r}}function z0(r,e=["GET"]){return r==null?e:(typeof r=="string"&&(r=[r]),r.map(t=>t.toUpperCase()))}function z6(r){let e=r.url??"/";if(e.startsWith("http"))return new URL(e);let t=hB(r);return new URL(`http://${t}${e}`)}function hB(r){let e=r.headers?.host;if(e==null&&(e=r.headers?.Host),e==null&&typeof r.headers.get=="function"&&(e=r.headers.get("host")),e==null)throw new C("Could not read host");return e}function V0(r,e){return r==="GET"&&e.get("connection")?.toLowerCase()==="upgrade"&&e.get("upgrade")?.toLowerCase()==="websocket"}function jv(r,e){if(r instanceof Headers)return r.get(e)??void 0;let t=r[e];return Array.isArray(t)?t.join(","):t}async function G6(r){if(jv(r,"sec-websocket-version")!=="13")throw new cs("Invalid version");let e=jv(r,"sec-websocket-key");if(e==null)throw new cs("Missing sec-websocket-key");let t=`${e}258EAFA5-E914-47DA-95CA-C5AB0DC85B11`,n=await Ev.digest(di(t)),o=vc.encode(n.digest).substring(1);return new Headers({Upgrade:"websocket",Connection:"upgrade","Sec-WebSocket-Accept":o})}async function Zv(r,e){let t=new H("REQUEST"),n=new W,o;t[H.kOnHeadersComplete]=s=>{let i=new Headers;for(let a=0;a<s.headers.length;a+=2)i.set(s.headers[a].toLowerCase(),s.headers[a+1]);o={...s,headers:i,raw:n,method:H.methods[s.method]}};try{for(;;){let{data:s}=await Do(r,"message",e?.signal),i=s.subarray(),a=t.execute(i,0,i.byteLength);if(a instanceof Error)throw a;if(n.append(i.subarray(0,a)),a<i.byteLength&&r.push(i.subarray(a)),o!=null)return o}}catch(s){r.abort(s)}finally{t.finish()}throw new Error("Failed to read header info from request")}var G0=class extends Error{static name="InvalidResponseError";name="InvalidResponseError"};var pB=[101,204,205,304];async function Jv(r,e,t){let n=Promise.withResolvers(),o=new TransformStream,s=o.writable.getWriter(),i=!1,a=new H("RESPONSE");a.maxHeaderSize=t.maxHeaderSize??H.maxHeaderSize,a[H.kOnHeadersComplete]=l=>{t.log("response headers complete"),i=!0;let u=new Headers;for(let h=0;h<l.headers.length;h+=2)u.append(l.headers[h],l.headers[h+1]);let d=o.readable;pB.includes(l.statusCode)&&(o.writable.close().catch(()=>{}),o.readable.cancel().catch(()=>{}),d=null);let f=new vn(d,{status:l.statusCode,statusText:l.statusMessage,headers:u});n.resolve(f)},a[H.kOnBody]=l=>{t.log("response read body %d bytes",l.byteLength),s.write(l).catch(u=>{n.reject(u)})},a[H.kOnMessageComplete]=()=>{t.log("response message complete"),s.close().catch(l=>{n.reject(l)})};let c=0;return r.addEventListener("message",({data:l})=>{t.log("response stream read %d bytes",l.byteLength),c+=l.byteLength;let u=a.execute(l.subarray(),0,l.byteLength);u instanceof Error&&(r.abort(u),a.finish())}),r.addEventListener("remoteCloseWrite",()=>{i||n.reject(new G0(`Response ended before headers were received, read ${c} bytes`)),a.finish()}),n.promise}var X6={};$(X6,{base10:()=>EB});var g0e=new Uint8Array(0);function eS(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function so(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 tS(r){return new TextEncoder().encode(r)}function rS(r){return new TextDecoder().decode(r)}function mB(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var gB=mB,yB=gB,oS=yB;var W6=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},j6=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return sS(this,e)}},Y6=class{decoders;constructor(e){this.decoders=e}or(e){return sS(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function sS(r,e){return new Y6({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Q6=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new W6(e,t,n),this.decoder=new j6(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Xa({name:r,prefix:e,encode:t,decode:n}){return new Q6(r,e,t,n)}function Go({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=oS(t,r);return Xa({prefix:e,name:r,encode:n,decode:s=>so(o(s))})}function bB(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function wB(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function xB(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function je({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=xB(n);return Xa({prefix:e,name:r,encode(s){return wB(s,n,t)},decode(s){return bB(s,o,t,r)}})}var EB=Go({prefix:"9",name:"base10",alphabet:"0123456789"});var Z6={};$(Z6,{base16:()=>vB,base16upper:()=>SB});var vB=je({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),SB=je({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var J6={};$(J6,{base2:()=>AB});var AB=je({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var e5={};$(e5,{base256emoji:()=>RB});var iS=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}"),CB=iS.reduce((r,e,t)=>(r[t]=e,r),[]),IB=iS.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function TB(r){return r.reduce((e,t)=>(e+=CB[t],e),"")}function _B(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=IB[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var RB=Xa({prefix:"\u{1F680}",name:"base256emoji",encode:TB,decode:_B});var t5={};$(t5,{base32:()=>Za,base32hex:()=>kB,base32hexpad:()=>OB,base32hexpadupper:()=>MB,base32hexupper:()=>NB,base32pad:()=>PB,base32padupper:()=>DB,base32upper:()=>LB,base32z:()=>BB});var Za=je({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),LB=je({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),PB=je({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),DB=je({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),kB=je({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),NB=je({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),OB=je({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),MB=je({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),BB=je({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var r5={};$(r5,{base36:()=>Uu,base36upper:()=>UB});var Uu=Go({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),UB=Go({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var n5={};$(n5,{base58btc:()=>Sn,base58flickr:()=>FB});var Sn=Go({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),FB=Go({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var o5={};$(o5,{base64:()=>$B,base64pad:()=>VB,base64url:()=>KB,base64urlpad:()=>qB});var $B=je({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),VB=je({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),KB=je({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),qB=je({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var s5={};$(s5,{base8:()=>HB});var HB=je({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var i5={};$(i5,{identity:()=>zB});var zB=Xa({prefix:"\0",name:"identity",encode:r=>rS(r),decode:r=>tS(r)});var D0e=new TextEncoder,k0e=new TextDecoder;var c5={};$(c5,{identity:()=>pU});var jB=lS,aS=128,YB=127,QB=~YB,XB=Math.pow(2,31);function lS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=XB;)e[t++]=r&255|aS,r/=128;for(;r&QB;)e[t++]=r&255|aS,r>>>=7;return e[t]=r|0,lS.bytes=t-n+1,e}var ZB=a5,JB=128,cS=127;function a5(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw a5.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&cS)<<o:(i&cS)*Math.pow(2,o),o+=7}while(i>=JB);return a5.bytes=s-n,t}var eU=Math.pow(2,7),tU=Math.pow(2,14),rU=Math.pow(2,21),nU=Math.pow(2,28),oU=Math.pow(2,35),sU=Math.pow(2,42),iU=Math.pow(2,49),aU=Math.pow(2,56),cU=Math.pow(2,63),lU=function(r){return r<eU?1:r<tU?2:r<rU?3:r<nU?4:r<oU?5:r<sU?6:r<iU?7:r<aU?8:r<cU?9:10},uU={encode:jB,decode:ZB,encodingLength:lU},dU=uU,Fu=dU;function $u(r,e=0){return[Fu.decode(r,e),Fu.decode.bytes]}function Ja(r,e,t=0){return Fu.encode(r,e,t),e}function ec(r){return Fu.encodingLength(r)}function rc(r,e){let t=e.byteLength,n=ec(r),o=n+ec(t),s=new Uint8Array(o+t);return Ja(r,s,0),Ja(t,s,n),s.set(e,o),new tc(r,t,e,s)}function uS(r){let e=so(r),[t,n]=$u(e),[o,s]=$u(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new tc(t,o,i,e)}function dS(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&eS(r.bytes,t.bytes)}}var tc=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var fS=0,fU="identity",hS=so;function hU(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return rc(fS,hS(r))}var pU={code:fS,name:fU,encode:hS,digest:hU};var d5={};$(d5,{sha256:()=>gU,sha512:()=>yU});var mU=20;function u5({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new l5(r,e,t,n,o)}var l5=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??mU,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?pS(n,this.code,t?.truncate):n.then(o=>pS(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function pS(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return rc(e,r)}function gS(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var gU=u5({name:"sha2-256",code:18,encode:gS("SHA-256")}),yU=u5({name:"sha2-512",code:19,encode:gS("SHA-512")});function yS(r,e){let{bytes:t,version:n}=r;return n===0?wU(t,f5(r),e??Sn.encoder):xU(t,f5(r),e??Za.encoder)}var bS=new WeakMap;function f5(r){let e=bS.get(r);if(e==null){let t=new Map;return bS.set(r,t),t}return e}var j0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Ku)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==EU)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=rc(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&dS(e.multihash,n.multihash)}toString(e){return yS(this,e)}toJSON(){return{"/":yS(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??wS(n,o,s.bytes))}else if(t[vU]===!0){let{version:n,multihash:o,code:s}=t,i=uS(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Ku)throw new Error(`Version 0 CID must use dag-pb (code: ${Ku}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=wS(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Ku,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=so(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new tc(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=$u(e.subarray(t));return t+=f,d},o=n(),s=Ku;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=bU(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return f5(s).set(n,e),s}};function bU(r,e){switch(r[0]){case"Q":{let t=e??Sn;return[Sn.prefix,t.decode(`${Sn.prefix}${r}`)]}case Sn.prefix:{let t=e??Sn;return[Sn.prefix,t.decode(r)]}case Za.prefix:{let t=e??Za;return[Za.prefix,t.decode(r)]}case Uu.prefix:{let t=e??Uu;return[Uu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function wU(r,e,t){let{prefix:n}=t;if(n!==Sn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function xU(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Ku=112,EU=18;function wS(r,e,t){let n=ec(r),o=n+ec(e),s=new Uint8Array(o+t.byteLength);return Ja(r,s,0),Ja(e,s,n),s.set(t,o),s}var vU=Symbol.for("@ipld/js-cid/CID");var h5={...i5,...J6,...s5,...X6,...Z6,...t5,...r5,...n5,...o5,...e5},tpe={...d5,...c5};function xS(r=0){return new Uint8Array(r)}function vS(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var ES=vS("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),p5=vS("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=xS(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),SU={utf8:ES,"utf-8":ES,hex:h5.base16,latin1:p5,ascii:p5,binary:p5,...h5},SS=SU;function Er(r,e="utf8"){let t=SS[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function AS(r,e){return e.set("Content-Length",`${r.size}`),e.set("Content-Type",r.type!=null&&r.type!==""?r.type:"application/octet-stream"),r.stream()}function CS(r,e){return e.set("Content-Length",`${r.byteLength}`),e.set("Content-Type","application/octet-stream"),new ReadableStream({start(t){t.enqueue(Bu(r)),t.close()}})}function AU(r,e,t){let n=[`--${t}`],o=0,s=2;return typeof e=="string"?(n.push(`Content-Disposition: form-data; name="${r}"`,'Content-Type: text/plain; charset="UTF-8"',`Content-Length: ${e.length}`,""),o=e.length+s):(n.push(`Content-Disposition: form-data; name="${r}"; filename="${encodeURIComponent(e.name)}"`,"Content-Type: application/octet-stream",`Content-Length: ${e.size}`,""),o=e.size+s),Er(n.join(`\r
|
|
48
|
+
`)).byteLength+o}function IS(r,e){let t=`-----------------------------${crypto.randomUUID()}`;e.set("Content-Type",`multipart/form-data; boundary=${t}`);let n=0;for(let[c,l]of r.entries())n+=AU(c,l,t);e.set("Content-Length",`${n}`);let o=r.entries(),s;function i(c,l,u,d){let f=[`--${d}`];typeof u=="string"?f.push(`Content-Disposition: form-data; name="${l}"`,'Content-Type: text/plain; charset="UTF-8"',`Content-Length: ${u.length}`,"",u,""):(f.push(`Content-Disposition: form-data; name="${l}"; filename="${encodeURIComponent(u.name)}"`,"Content-Type: application/octet-stream",`Content-Length: ${u.size}`,""),s=u.stream().getReader()),c.enqueue(Er(f.join(`\r
|
|
49
|
+
`)))}async function a(c,l){if(s!=null){let f=await s.read();f.value!=null&&c.enqueue(f.value),f.done&&(c.enqueue(Er(`\r
|
|
50
|
+
`)),s=void 0);return}let{done:u,value:d}=o.next();if(d!=null){let[f,h]=d;i(c,f,h,l)}u===!0&&c.close()}return new ReadableStream({async pull(c){await a(c,t)}})}function TS(r,e){e.set("Content-Type","application/octet-stream"),e.set("Transfer-Encoding","chunked");let t=r.getReader();return new ReadableStream({async pull(n){let{done:o,value:s}=await t.read();s!=null&&(n.enqueue(Er(`${s.byteLength}\r
|
|
51
|
+
`)),n.enqueue(s),n.enqueue(Er(`\r
|
|
52
|
+
`))),o&&(n.enqueue(Er(`0\r
|
|
53
53
|
\r
|
|
54
|
-
`)),n.close())}})}function m5(r,e){return e.set("Content-Length",`${r.length}`),e.set("Content-Type",'text/plain; charset="UTF-8"'),new ReadableStream({start(t){t.enqueue(
|
|
55
|
-
`)))||await r.onDrain({signal:t.signal??void 0}),s!=null&&(t.log("request sending body"),await CU(r,s,t))}async function CU(r,e,t){let n=e.getReader();for(;;){let{done:o,value:s}=await n.read();if(s!=null&&(t.log("request send %d bytes",s.byteLength),r.send(s)||await r.onDrain({signal:t.signal??void 0})),o){t.log("request finished sending body");break}}}async function RS(r,e,t={}){let n=r.log.newScope("http-fetch");e=typeof e=="string"?new URL(e):e;let[o]=await Promise.all([Zv(r,e,{...t,log:n}),_S(r,e,{...t,log:n})]);return await r.close({signal:t.signal??void 0}),o}var Y0=class extends Event{message;error;filename="";lineno=0;colno=0;constructor(e){super("error"),this.error=e,this.message=e.message}},qu=class extends Event{code;reason;wasClean;constructor(e,t){super(e),this.code=t?.code??0,this.reason=t?.reason??"",this.wasClean=t?.wasClean??!0}};var IU={CONTINUATION:0,TEXT:1,BINARY:2,CONNECTION_CLOSE:8,PING:9,PONG:10},g5={0:"CONTINUATION",1:"TEXT",2:"BINARY",8:"CONNECTION_CLOSE",9:"PING",10:"PONG"};var Hu={NORMAL_CLOSURE:1e3,GOING_AWAY:1001,PROTOCOL_ERROR:1002,UNSUPPORTED_DATA:1003,RESERVED:1004,NO_STATUS_RECEIVED:1005,ABNORMAL_CLOSURE:1006,INVALID_FRAME_PAYLOAD_DATA:1007,POLICY_VIOLATION:1008,MESSAGE_TOO_BIG:1009,MANDATORY_EXT:1010,INTERNAL_SERVER_ERROR:1011,TLS_HANDSHAKE:1015};function LS(r){let e=0;if(r.byteLength<e+1)return;let n=r.get(e)&15;if(e++,g5[n]==null)throw new Error(`Unknown opcode: ${n}`);if(r.byteLength<e+1)return;let o=r.get(e),s=(o&128)===128,i=o&127;if(e++,i===126){if(r.byteLength<e+2)return;i=r.getUint16(e),e+=2}else if(i===127){if(r.byteLength<e+8)return;i=r.getUint32(e),e+=8}if(i===0)return r.consume(e),{type:g5[n]};let a;if(s){if(r.byteLength<e+4)return;a=r.subarray(e,e+4),e+=4}if(r.byteLength<e+i)return;let c=r.subarray(e,e+i);return e+=i,a!=null&&(c=PS(c,a)),r.consume(e),{type:g5[n],data:c}}function PS(r,e){let t=0;for(let n=0;n<r.byteLength;n++)r[n]=r[n]^e[t],t++,t===e.byteLength&&(t=0);return r}function DS(r,e,t){let o=new W(Uint8Array.from([128|IU[r]])),s=e?.byteLength??0;if(s<126)o.append(Uint8Array.from([s|(t===!0?128:0)]));else if(s<65535){let i=new W(new Uint8Array(3));i.set(0,126|(t===!0?128:0)),i.setUint16(1,s),o.append(i)}else if(s<18446744073709552e3){let i=new W(new Uint8Array(9));i.set(0,127|(t===!0?128:0)),i.setUint32(1,s),o.append(i)}else throw new Error("Payload too large");if(t===!0&&e!=null){let i=Uint8Array.from([0,0,0,0]);o.append(i),e=PS(e,i)}return e!=null&&o.append(e),o}var E5={};$(E5,{base10:()=>kU});var Dpe=new Uint8Array(0);function kS(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function io(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 NS(r){return new TextEncoder().encode(r)}function OS(r){return new TextDecoder().decode(r)}function TU(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var _U=TU,RU=_U,BS=RU;var y5=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},b5=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return US(this,e)}},w5=class{decoders;constructor(e){this.decoders=e}or(e){return US(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function US(r,e){return new w5({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var x5=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new y5(e,t,n),this.decoder=new b5(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function nc({name:r,prefix:e,encode:t,decode:n}){return new x5(r,e,t,n)}function Wo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=BS(t,r);return nc({prefix:e,name:r,encode:n,decode:s=>io(o(s))})}function LU(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function PU(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function DU(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function Ye({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=DU(n);return nc({prefix:e,name:r,encode(s){return PU(s,n,t)},decode(s){return LU(s,o,t,r)}})}var kU=Wo({prefix:"9",name:"base10",alphabet:"0123456789"});var v5={};$(v5,{base16:()=>NU,base16upper:()=>OU});var NU=Ye({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),OU=Ye({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var S5={};$(S5,{base2:()=>MU});var MU=Ye({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var A5={};$(A5,{base256emoji:()=>VU});var FS=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}"),BU=FS.reduce((r,e,t)=>(r[t]=e,r),[]),UU=FS.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function FU(r){return r.reduce((e,t)=>(e+=BU[t],e),"")}function $U(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=UU[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var VU=nc({prefix:"\u{1F680}",name:"base256emoji",encode:FU,decode:$U});var C5={};$(C5,{base32:()=>oc,base32hex:()=>zU,base32hexpad:()=>WU,base32hexpadupper:()=>jU,base32hexupper:()=>GU,base32pad:()=>qU,base32padupper:()=>HU,base32upper:()=>KU,base32z:()=>YU});var oc=Ye({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),KU=Ye({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),qU=Ye({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),HU=Ye({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),zU=Ye({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),GU=Ye({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),WU=Ye({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),jU=Ye({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),YU=Ye({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var I5={};$(I5,{base36:()=>zu,base36upper:()=>QU});var zu=Wo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),QU=Wo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var T5={};$(T5,{base58btc:()=>Sn,base58flickr:()=>XU});var Sn=Wo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),XU=Wo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var _5={};$(_5,{base64:()=>ZU,base64pad:()=>JU,base64url:()=>eF,base64urlpad:()=>tF});var ZU=Ye({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),JU=Ye({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),eF=Ye({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),tF=Ye({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var R5={};$(R5,{base8:()=>rF});var rF=Ye({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var L5={};$(L5,{identity:()=>nF});var nF=nc({prefix:"\0",name:"identity",encode:r=>OS(r),decode:r=>NS(r)});var jpe=new TextEncoder,Ype=new TextDecoder;var D5={};$(D5,{identity:()=>IF});var iF=KS,$S=128,aF=127,cF=~aF,lF=Math.pow(2,31);function KS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=lF;)e[t++]=r&255|$S,r/=128;for(;r&cF;)e[t++]=r&255|$S,r>>>=7;return e[t]=r|0,KS.bytes=t-n+1,e}var uF=P5,dF=128,VS=127;function P5(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw P5.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&VS)<<o:(i&VS)*Math.pow(2,o),o+=7}while(i>=dF);return P5.bytes=s-n,t}var fF=Math.pow(2,7),hF=Math.pow(2,14),pF=Math.pow(2,21),mF=Math.pow(2,28),gF=Math.pow(2,35),yF=Math.pow(2,42),bF=Math.pow(2,49),wF=Math.pow(2,56),xF=Math.pow(2,63),EF=function(r){return r<fF?1:r<hF?2:r<pF?3:r<mF?4:r<gF?5:r<yF?6:r<bF?7:r<wF?8:r<xF?9:10},vF={encode:iF,decode:uF,encodingLength:EF},SF=vF,Gu=SF;function Wu(r,e=0){return[Gu.decode(r,e),Gu.decode.bytes]}function sc(r,e,t=0){return Gu.encode(r,e,t),e}function ic(r){return Gu.encodingLength(r)}function cc(r,e){let t=e.byteLength,n=ic(r),o=n+ic(t),s=new Uint8Array(o+t);return sc(r,s,0),sc(t,s,n),s.set(e,o),new ac(r,t,e,s)}function qS(r){let e=io(r),[t,n]=Wu(e),[o,s]=Wu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ac(t,o,i,e)}function HS(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&kS(r.bytes,t.bytes)}}var ac=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var zS=0,AF="identity",GS=io;function CF(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return cc(zS,GS(r))}var IF={code:zS,name:AF,encode:GS,digest:CF};var O5={};$(O5,{sha256:()=>_F,sha512:()=>RF});var TF=20;function N5({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new k5(r,e,t,n,o)}var k5=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??TF,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?WS(n,this.code,t?.truncate):n.then(o=>WS(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function WS(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return cc(e,r)}function YS(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var _F=N5({name:"sha2-256",code:18,encode:YS("SHA-256")}),RF=N5({name:"sha2-512",code:19,encode:YS("SHA-512")});function QS(r,e){let{bytes:t,version:n}=r;return n===0?PF(t,M5(r),e??Sn.encoder):DF(t,M5(r),e??oc.encoder)}var XS=new WeakMap;function M5(r){let e=XS.get(r);if(e==null){let t=new Map;return XS.set(r,t),t}return e}var X0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Yu)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==kF)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=cc(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&HS(e.multihash,n.multihash)}toString(e){return QS(this,e)}toJSON(){return{"/":QS(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??ZS(n,o,s.bytes))}else if(t[NF]===!0){let{version:n,multihash:o,code:s}=t,i=qS(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Yu)throw new Error(`Version 0 CID must use dag-pb (code: ${Yu}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=ZS(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Yu,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=io(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new ac(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=Wu(e.subarray(t));return t+=f,d},o=n(),s=Yu;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=LF(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return M5(s).set(n,e),s}};function LF(r,e){switch(r[0]){case"Q":{let t=e??Sn;return[Sn.prefix,t.decode(`${Sn.prefix}${r}`)]}case Sn.prefix:{let t=e??Sn;return[Sn.prefix,t.decode(r)]}case oc.prefix:{let t=e??oc;return[oc.prefix,t.decode(r)]}case zu.prefix:{let t=e??zu;return[zu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function PF(r,e,t){let{prefix:n}=t;if(n!==Sn.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function DF(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Yu=112,kF=18;function ZS(r,e,t){let n=ic(r),o=n+ic(e),s=new Uint8Array(o+t.byteLength);return sc(r,s,0),sc(e,s,n),s.set(t,o),s}var NF=Symbol.for("@ipld/js-cid/CID");var B5={...L5,...S5,...R5,...E5,...v5,...C5,...I5,...T5,..._5,...A5},y2e={...O5,...D5};function JS(r=0){return new Uint8Array(r)}function tA(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var eA=tA("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),U5=tA("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=JS(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),OF={utf8:eA,"utf-8":eA,hex:B5.base16,latin1:U5,ascii:U5,binary:U5,...B5},rA=OF;function F5(r,e="utf8"){let t=rA[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function nA(r){if(r instanceof ArrayBuffer)return Bu(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);if(typeof r=="string")return F5(r);if(r instanceof Blob)return r.arrayBuffer().then(e=>Bu(e));throw new C("Unsupported data type")}async function oA(r,e){return new Promise((t,n)=>{let o=!1,s=new H("RESPONSE");s[H.kOnHeadersComplete]=i=>{o=!0;let a=[];for(let c=0;c<i.headers.length;c+=2)a.push([i.headers[c],i.headers[c+1]]);t(new En(null,{status:i.statusCode,statusText:i.statusMessage,headers:new Headers(a)}))},Promise.resolve().then(async()=>{for(;;){let{data:i}=await Do(r,"message",e.signal),a=i.subarray(),c=s.execute(a,0,a.byteLength);if(c instanceof Error)throw c;if(c<a.byteLength&&r.push(a.subarray(c)),o)break}}).catch(i=>{n(i)})})}async function*sA(r,e=[],t){let n=vc.encode(crypto.getRandomValues(new Uint8Array(16))).substring(1);t.set("host",r.hostname),t.set("connection","upgrade"),t.set("upgrade","websocket"),t.set("pragma","no-cache"),t.set("cache-control","no-cache"),t.set("sec-websocket-version","13"),t.set("sec-websocket-key",n),e.length>0&&t.set("sec-websocket-protocol",e.join(", ")),yield F5([`GET ${r.pathname??"/"} HTTP/1.1`,...[...t.entries()].map(([o,s])=>`${o}: ${s}`),"",""].join(`\r
|
|
56
|
-
`))}var MF=["BINARY","TEXT","CONTINUATION"],BF=10485760;var UF="/http/1.1",Z0=class extends se{binaryType="arraybuffer";bufferedAmount=0;extensions="";protocol="";readyState;url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;_onclose;_onerror;_onmessage;_onopen;sentClose;isClient;buffer;maxMessageSize;_url;closeController;constructor(e,t={}){super(),this.readyState=this.CONNECTING,this.url=e.pathname,this.sentClose=!1,this.isClient=t.isClient??!0,this.buffer=new W,this.closeController=new AbortController,this.maxMessageSize=t.maxMessageSize??BF}send(e){if(this.readyState!==this.OPEN)throw new Error("WebSocket was not open");let t=nA(e);_f(t)?t.then(n=>{this._send("BINARY",n)}).catch(n=>{this._errored(n)}):this._send("BINARY",t)}_send(e,t){if(this.readyState!==this.OPEN)return;let n=DS(e,t,this.isClient),o=n.byteLength;this.bufferedAmount+=o,this._write(n,s=>{this.bufferedAmount-=o,s!=null&&this._errored(s)})}close(e,t){if(this.readyState!==this.OPEN)throw new Error("WebSocket was not open");this.readyState=this.CLOSING,this.sentClose=!0,this._send("CONNECTION_CLOSE")}_errored(e){this.readyState=this.CLOSED,this.dispatchEvent(new Y0(e))}set onclose(e){this._onclose=e,this.addEventListener("close",e)}get onclose(){return this._onclose??null}set onerror(e){this._onerror=e,this.addEventListener("error",e)}get onerror(){return this._onerror??null}set onmessage(e){this._onmessage=e,this.addEventListener("message",e)}get onmessage(){return this._onmessage??null}set onopen(e){this._onopen=e,this.addEventListener("open",e)}get onopen(){return this._onopen??null}_push(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxMessageSize){this.close(Hu.MESSAGE_TOO_BIG,"Max message size exceeded");return}for(;;){let t=LS(this.buffer);if(t==null)break;if(MF.includes(t.type)&&t.data!=null){let n;this.binaryType==="blob"?n=new Blob([Uint8Array.from(t.data)]):t.data.byteOffset===0&&t.data.byteLength===t.data.buffer.byteLength?n=t.data.buffer:(n=new ArrayBuffer(t.data.byteLength),new Uint8Array(n,0,n.byteLength).set(t.data)),this.dispatchEvent(new MessageEvent("message",{data:n,origin:this._url?.hostname}))}t.type==="PING"&&this._send("PONG",t.data),t.type==="CONNECTION_CLOSE"&&(this.sentClose||this.close(),this.closeController.abort(),this._close(void 0,()=>{this.readyState=this.CLOSED,this.dispatchEvent(new qu("close"))}))}}_remoteClosed(e){this.readyState=this.CLOSING,this._close(e,()=>{this.readyState=this.CLOSED,this.dispatchEvent(new qu("close"))})}};var Qu=class extends Z0{writer;writable;constructor(e,t,n={}){if(super(new URL(e.url),{...n,isClient:!1}),e.body==null)throw new C("Request body cannot be null");this.readyState=this.OPEN,this.writable=t,this.writer=t.getWriter();let o=e.body.getReader();Promise.resolve().then(async()=>{for(this.dispatchEvent(new Event("open"));;){let{value:s,done:i}=await o.read();if(s!=null&&this._push(s),i){this._remoteClosed();break}}}).catch(s=>{this._errored(s)})}_write(e,t){this.writer?.write(e).then(()=>{t()},n=>{t(n)})}_close(e,t){e!=null?this.writable.abort(e).then(()=>{t()},()=>{t()}):this.writable.close().then(()=>{t()},()=>{t()})}},Xu=class extends Z0{stream;handshakeTimeout;drainTimeout;constructor(e,t,n,o){super(t,{...o,isClient:!0}),this.handshakeTimeout=o.handshakeTimeout??1e4,this.drainTimeout=o.drainTimeout??1e4,Promise.resolve().then(async()=>{let s=AbortSignal.timeout(this.handshakeTimeout);this.stream=await n.openStream(e,UF,{...o,signal:s});for await(let a of sA(t,o.protocols,xn(o)))this.stream.send(a)||await this.stream.onDrain({signal:s});let i=await oA(this.stream,{signal:s});if(i.status!==101)throw new Error("Invalid WebSocket handshake - response status "+i.status);await o.onHandshakeResponse?.(i,{signal:s}),this.protocol=i.headers.get("Sec-WebSocket-Protocol")??"",this.readyState=this.OPEN,this.dispatchEvent(new Event("open"));for await(let a of this.stream)this._push(a)}).catch(s=>{this._errored(s)})}_write(e,t){if(this.stream==null){t(new Error("WebSocket was not open"));return}this.stream.send(e)?t():this.stream.onDrain({signal:AbortSignal.timeout(this.drainTimeout)}).then(()=>{t()},n=>{t(n)})}_close(e,t){if(this.stream==null){t();return}if(e!=null){this.stream.abort(e),t();return}this.stream.close().catch(n=>{this.stream?.abort(n)}).finally(()=>{t()})}};var Zu="/http/1.1";var J0=Symbol.for("@libp2p/http/websocket-handler");var fA=gi(uA(),1),tp=class{log;cookies;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:http:cookies"),this.cookies=new Map}async prepareRequest(e,t){if((t.credentials??"same-origin")==="omit")return;let o=t.headers.get("origin");if(o==null||o==="null")return;let s=Mu(e,t.headers),i=(this.cookies.get(s.hostname)??[]).filter(a=>!(a.expires!=null&&a.expires<Date.now()||a.path!=null&&!s.pathname.startsWith(a.path))).map(a=>`${a.name}=${a.value}`).join("; ");i.length>0&&t.headers.set("cookie",i)}async processResponse(e,t,n){if((t.credentials??"same-origin")==="omit"){dA(n);return}let s=t.headers.get("origin");if(s==null||s==="null")return;let i=Mu(e,t.headers);for(let a of n.headers.getSetCookie()){let c=[...this.cookies.get(i.hostname)??[],...WF(fA.default.parse(a))];this.cookies.set(i.hostname,c)}dA(n)}};function dA(r){return r.headers.has("set-cookie")&&r.headers.delete("set-cookie"),r}function WF(r){let e={},t=[];return Object.entries(r).forEach(([n,o])=>{n.toLowerCase()==="domain"&&o!=null&&(e.domain=o),n.toLowerCase()==="max-age"&&o!=null&&(e.expires=Date.now()+parseInt(o,10)*1e3),!jF.includes(n.toLowerCase())&&o!=null&&t.push({name:n,value:o})}),t.map(n=>({...n,...e}))}var jF=["domain","expires","httponly","max-age","partitioned","path","samesite","secure"];var rp=class{async prepareRequest(e,t){if(t.headers.get("origin")!=null||t.mode==="no-cors")return;let n=Mu(e,t.headers);t.headers.set("origin",`${n.protocol}//${n.host}`)}};function YF(r){return typeof r.init=="function"}function np(r,e){if(YF(r)){let t=r;return t.handler=r.init(e),delete t.init,t}return r}function hA(r){let e=z0(r.method,["GET"]);if(r.fallback==null&&e.filter(n=>n!=="GET").length>0)throw new C("WebSocket handlers only support the GET HTTP method");let t={...r,init:n=>{let o=np(r,n);return t[J0]=o.handler,async s=>{if(!V0(s.method,s.headers))return r?.fallback!=null?r.fallback(s):new En(null,{status:400});let i=new TransformStream;try{let a=new En(i.readable,{status:101,headers:await G6(s.headers)}),c=new Qu(s,i.writable,r);return o.handler(c),a}catch{return new En(null,{status:500})}}}};return t}var op="/.well-known/libp2p/protocols";function pA(r){return hA({path:op,method:["GET"],cors:!0,handler:e=>{let t=JSON.stringify(r.getProtocolMap());e.send(t),e.close()},fallback:async e=>{let t=JSON.stringify(r.getProtocolMap());return new Response(t,{headers:{"Content-Type":"application/json","Content-Length":`${t.length}`}})}})}var sp=class{log;components;protocols;endpoint;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:http:registrar"),this.protocols=[],this.onStream=this.onStream.bind(this),this.endpoint=t.server,this.handle("",pA(this))}async start(){await this.components.registrar.handle(Zu,this.onStream.bind(this))}async stop(){await this.components.registrar.unhandle(Zu)}async onStream(e,t){let n=await Xv(e);if(this.canHandle(n)){this.log("handling incoming request %s %s",n.method,n.url);let o=await this.onRequest(jv(n,e));await Yv(o,e),await e.close();return}if(this.endpoint==null){this.log("cannot handle incoming request %s %s and no endpoint configured",n.method,n.url),e.send(Qv),await e.close();return}this.log("passing incoming request %s %s to endpoint",n.method,n.url),this.endpoint.inject(n,e,t).catch(o=>{this.log.error("error injecting request to endpoint - %e",o),e.abort(o)})}canHandle(e){let t=z6(e).pathname;return this.protocols.find(n=>n.route.path===t)!=null?(this.log.trace("can handle %s",t),!0):(this.log.trace("cannot handle %s",t),!1)}async onRequest(e){this.log("incoming request %s %s",e.method,e.url);let t=this.findHandler(e.url);if(t==null)return new Response(null,{status:404});let n;return t.route.method.includes(e.method)?n=await t.route.handler(e):e.method==="OPTIONS"?n=new Response(null,{status:204}):n=new Response(null,{status:405}),QF(n,e,t),this.log("%s %s %d %s",e.method,e.url,n.status,n.statusText),n}onWebSocket(e){let t=this.findHandler(e.url);if(t!=null){let n=t.route[J0];if(n!=null){n(e);return}}e.close(Hu.NORMAL_CLOSURE)}findHandler(e){let t=e.startsWith("/")?e:new URL(e).pathname;this.log("search for handler on path %s",t);let n=this.protocols.find(o=>o.route.path===t);return n!=null&&this.log("found handler for HTTP protocol %s on path %s",n.protocol,e),n}handle(e,t){if(t.path=t.path??e,this.protocols.find(n=>n.protocol===e)!=null)throw new C(`HTTP protocol handler for ${e} already registered`);(t.path===""||!t.path.startsWith("/"))&&(t.path=`/${t.path}`),t.cors=t.cors??!0,t.method=z0(t.method),t=np(t,this.components),this.protocols.push({protocol:e,route:t}),this.protocols.sort(({route:{path:n}},{route:{path:o}})=>o.length-n.length)}unhandle(e){this.protocols=this.protocols.filter(t=>t.protocol===e)}getProtocolMap(){let e={};for(let t of this.protocols)t.protocol!==""&&(e[t.protocol]={path:t.route.path});return e}};function QF(r,e,t){let n=[...new Set(["OPTIONS",...t.route.method])].join(", ");t.route.cors&&(e.headers.get("Access-Control-Request-Method")!=null&&r.headers.set("access-control-allow-methods",n),e.headers.get("Access-Control-Request-Headers")!=null&&r.headers.set("access-control-allow-headers",e.headers.get("Access-Control-Request-Headers")??""),e.headers.get("Origin")!=null&&(r.headers.set("access-control-allow-origin",e.headers.get("Origin")??""),r.headers.set("vary","Origin"))),e.method==="OPTIONS"&&r.headers.set("allow",n)}async function mA(r,e,t){for(let n of e.middleware)await n.prepareRequest?.(r,e);return t()}async function gA(r,e,t){for(let n of e.middleware)await n.prepareRequest?.(r,e);return t()}async function yA(r,e,t){for(let n of e.middleware)t=await n.processResponse?.(r,e,t)??t;return t}var ip=class{log;components;httpRegistrar;origin;cookies;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:http"),this.httpRegistrar=new sp(e,t),this.origin=new rp,this.cookies=new tp(e,t)}[Symbol.toStringTag]="@libp2p/http";[ue]=["@libp2p/http"];async start(){await Ir(this.httpRegistrar)}async stop(){await Xr(this.httpRegistrar)}agent(...e){throw new mc("This method is not supported in browsers")}dispatcher(...e){throw new mc("This method is not supported in browsers")}async connect(e,t={}){let n=Qa(e),o=xn(t),s={...t,headers:o,method:"GET",middleware:t.middleware?.map(i=>i(this.components))??[]};return o.set("connection","upgrade"),o.set("upgrade","websocket"),gA(n,s,async()=>{if(n instanceof URL){let c=new globalThis.WebSocket(n,t.protocols);return c.binaryType="arraybuffer",c}let{addresses:i,httpPath:a}=H0(n);return new Xu(i,new URL(`http://${q0(n,s.headers)}${decodeURIComponent(a)}`),this.components.connectionManager,s)})}async fetch(e,t={}){let n=Qa(e),o={...t,headers:xn(t),method:"GET",middleware:[this.origin,this.cookies,...t.middleware?.map(i=>i(this.components))??[]]},s=await mA(n,o,async()=>this.sendRequest(n,t));return yA(n,o,s)}async connectProtocol(e,t,n){let o=await this.getProtocolPath(e,t,n),s=Qa(e,o);return this.connect(s,n)}async fetchProtocol(e,t,n={}){let o=await this.getProtocolPath(e,t,n),s=Qa(e,o);return this.fetch(s,n)}async getSupportedProtocols(e,t={}){let n=Qa(e,op),o=await this.fetch(n,{method:"GET",headers:{Accept:"application/json"},signal:t.signal});if(o.status!==200)throw new Error(`Unexpected status code: ${o.status}`);return o.json()}async getProtocolPath(e,t,n={}){let o=await this.getSupportedProtocols(e,n);if(o[t]==null)throw new Error(`Peer does not serve protocol: ${t}`);return o[t].path}canHandle(e){return this.httpRegistrar.canHandle(e)}async onRequest(e){return this.httpRegistrar.onRequest(e)}onWebSocket(e){this.httpRegistrar.onWebSocket(e)}handle(e,t){this.httpRegistrar.handle(e,t)}unhandle(e){this.httpRegistrar.unhandle(e)}getProtocolMap(){return this.httpRegistrar.getProtocolMap()}async sendRequest(e,t){if(e instanceof URL)return this.log("making request to %s with global fetch"),globalThis.fetch(e,t);this.log("making request to %s with libp2p fetch",e);let n=q0(e,xn(t)),{addresses:o,httpPath:s}=H0(e),a=await(await this.components.connectionManager.openConnection(o,{signal:t.signal??void 0})).newStream(Zu,{signal:t.signal??void 0});return RS(a,new URL(`http://${n}${decodeURIComponent(s)}`),t)}};function bA(r={}){return e=>new ip(e,r)}var wA="0.1.0";var xA="id/push",EA="1.0.0",vA="1.0.0";var Yo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.protocolVersion!=null&&(i.uint32(42),i.string(s.protocolVersion)),s.agentVersion!=null&&(i.uint32(50),i.string(s.agentVersion)),s.publicKey!=null&&(i.uint32(10),i.bytes(s.publicKey)),s.listenAddrs!=null&&s.listenAddrs.length>0)for(let c of s.listenAddrs)i.uint32(18),i.bytes(c);if(s.observedAddr!=null&&(i.uint32(34),i.bytes(s.observedAddr)),s.protocols!=null&&s.protocols.length>0)for(let c of s.protocols)i.uint32(26),i.string(c);s.signedPeerRecord!=null&&(i.uint32(66),i.bytes(s.signedPeerRecord)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={listenAddrs:[],protocols:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 5:{c.protocolVersion=s.string();break}case 6:{c.agentVersion=s.string();break}case 1:{c.publicKey=s.bytes();break}case 2:{if(a.limits?.listenAddrs!=null&&c.listenAddrs.length===a.limits.listenAddrs)throw new fe('Decode error - repeated field "listenAddrs" had too many elements');c.listenAddrs.push(s.bytes());break}case 4:{c.observedAddr=s.bytes();break}case 3:{if(a.limits?.protocols!=null&&c.protocols.length===a.limits.protocols)throw new fe('Decode error - repeated field "protocols" had too many elements');c.protocols.push(s.string());break}case 8:{c.signedPeerRecord=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={listenAddrs:0,protocols:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 5:{yield{field:`${a}.protocolVersion`,value:s.string()};break}case 6:{yield{field:`${a}.agentVersion`,value:s.string()};break}case 1:{yield{field:`${a}.publicKey`,value:s.bytes()};break}case 2:{if(c.limits?.listenAddrs!=null&&l.listenAddrs===c.limits.listenAddrs)throw new fe('Streaming decode error - repeated field "listenAddrs" had too many elements');yield{field:`${a}.listenAddrs[]`,index:l.listenAddrs,value:s.bytes()},l.listenAddrs++;break}case 4:{yield{field:`${a}.observedAddr`,value:s.bytes()};break}case 3:{if(c.limits?.protocols!=null&&l.protocols===c.limits.protocols)throw new fe('Streaming decode error - repeated field "protocols" had too many elements');yield{field:`${a}.protocols[]`,index:l.protocols,value:s.string()},l.protocols++;break}case 8:{yield{field:`${a}.signedPeerRecord`,value:s.bytes()};break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Yo||(Yo={}));var Zt={protocolPrefix:"ipfs",timeout:5e3,maxInboundStreams:1,maxOutboundStreams:1,maxObservedAddresses:10,maxMessageSize:8192,runOnConnectionOpen:!0,runOnSelfUpdate:!0,runOnLimitedConnection:!0,concurrency:32};function AA(r){return r.bytes.length===0}function K5(r){if(r!=null&&r.length>0)try{let e=V(r);if(!AA(e))return e}catch{}}async function ap(r,e,t,n,o){if(t("received identify from %p",n.remotePeer),o==null)throw new oe("message was null or undefined");let s={},i=o.listenAddrs.map(K5).filter(l=>l!=null);if(o.listenAddrs.length>0&&(s.addresses=i.map(l=>({isCertified:!1,multiaddr:l}))),o.protocols.length>0&&(s.protocols=o.protocols),o.publicKey!=null){let l=nt(o.publicKey);if(!rn(l).equals(n.remotePeer))throw new oe("public key did not match remote PeerId");s.publicKey=l}let a;if(o.signedPeerRecord!=null){t.trace("received signedPeerRecord from %p",n.remotePeer);let l=o.signedPeerRecord,u=await lr.openAndCertify(l,Ft.DOMAIN),d=Ft.createFromProtobuf(u.payload),f=Mt(u.publicKey.toCID());if(!d.peerId.equals(f))throw new oe("signing key does not match PeerId in the PeerRecord");if(!n.remotePeer.equals(d.peerId))throw new oe("signing key does not match remote PeerId");let h;try{h=await r.get(d.peerId)}catch(y){if(y.name!=="NotFoundError")throw y}if(h!=null&&(s.metadata=h.metadata,h.peerRecordEnvelope!=null)){let y=lr.createFromProtobuf(h.peerRecordEnvelope),g=Ft.createFromProtobuf(y.payload);g.seqNumber>=d.seqNumber&&(t("sequence number was lower or equal to existing sequence number - stored: %d received: %d",g.seqNumber,d.seqNumber),d=g,l=h.peerRecordEnvelope)}s.peerRecordEnvelope=l;let p=d.multiaddrs.filter(y=>!AA(y));s.addresses=p.map(y=>({isCertified:!0,multiaddr:y})),a={seq:d.seqNumber,addresses:p}}else t("%p did not send a signed peer record",n.remotePeer);if(t.trace("patching %p with",n.remotePeer,s),await r.patch(n.remotePeer,s),o.agentVersion!=null||o.protocolVersion!=null){let l={};o.agentVersion!=null&&(l.AgentVersion=O(o.agentVersion)),o.protocolVersion!=null&&(l.ProtocolVersion=O(o.protocolVersion)),t.trace("merging %p metadata",n.remotePeer,l),await r.merge(n.remotePeer,{metadata:l})}let c={peerId:n.remotePeer,protocolVersion:o.protocolVersion,agentVersion:o.agentVersion,publicKey:o.publicKey,listenAddrs:i,observedAddr:o.observedAddr==null?void 0:V(o.observedAddr),protocols:o.protocols,signedPeerRecord:a,connection:n};return e.safeDispatchEvent("peer:identify",{detail:c}),c}function cp(r){let e={...r[0]};for(let t of r.slice(1))t.protocolVersion!=null&&(e.protocolVersion=t.protocolVersion),t.agentVersion!=null&&(e.agentVersion=t.agentVersion),t.publicKey!=null&&(e.publicKey=t.publicKey),t.observedAddr!=null&&(e.observedAddr=t.observedAddr),t.signedPeerRecord!=null&&(e.signedPeerRecord=t.signedPeerRecord),e.listenAddrs=[...e.listenAddrs,...t.listenAddrs],e.protocols=[...new Set([...e.protocols,...t.protocols])];return e}async function lp(r,e,t,n){let o=ke(r,{maxDataLength:e}).pb(Yo),s=[];for(let i=0;i<10;i++)try{s.push(await o.read(t))}catch(a){if(s.length===0)throw a;n.trace("stopped reading identify - %e",a);break}s.length>=10&&n("reached MAX_IDENTIFY_MESSAGES, returning truncated identify");try{await r.close(t)}catch(i){n.trace("error closing identify stream after read - %e",i),r.abort(i)}return s}var lc=class{host;components;protocol;started;timeout;maxInboundStreams;maxOutboundStreams;maxMessageSize;maxObservedAddresses;runOnLimitedConnection;log;constructor(e,t){this.protocol=t.protocol,this.started=!1,this.components=e,this.log=t.log,this.timeout=t.timeout??Zt.timeout,this.maxInboundStreams=t.maxInboundStreams??Zt.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Zt.maxOutboundStreams,this.maxMessageSize=t.maxMessageSize??Zt.maxMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Zt.maxObservedAddresses,this.runOnLimitedConnection=t.runOnLimitedConnection??Zt.runOnLimitedConnection,this.host={protocolVersion:`${t.protocolPrefix??Zt.protocolPrefix}/${wA}`,agentVersion:e.nodeInfo.userAgent},this.handleProtocol=this.handleProtocol.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.peerStore.merge(this.components.peerId,{metadata:{AgentVersion:O(this.host.agentVersion),ProtocolVersion:O(this.host.protocolVersion)}}),await this.components.registrar.handle(this.protocol,this.handleProtocol,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnection}),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}};var up=class extends lc{connectionManager;concurrency;_push;constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??Zt.protocolPrefix}/${xA}/${vA}`,log:e.logger.forComponent("libp2p:identify-push")}),this.connectionManager=e.connectionManager,this.concurrency=t.concurrency??Zt.concurrency,this._push=$n(this.sendPushMessage.bind(this),t.debounce??1e3),(t.runOnSelfUpdate??Zt.runOnSelfUpdate)&&e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error("error pushing updates to peers - %e",o)})})}[ue]=["@libp2p/identify-push"];async push(){this._push()}async sendPushMessage(){if(this.isStarted())try{let e=this.components.addressManager.getAddresses().map(u=>u.decapsulateCode(421)),t=new Ft({peerId:this.components.peerId,multiaddrs:e}),n=await lr.seal(t,this.components.privateKey),o=this.components.registrar.getProtocols(),s=await this.components.peerStore.get(this.components.peerId),i=B(s.metadata.get("AgentVersion")??O(this.host.agentVersion)),a=B(s.metadata.get("ProtocolVersion")??O(this.host.protocolVersion)),c=this;async function*l(){for(let u of c.connectionManager.getConnections())(await c.components.peerStore.get(u.remotePeer)).protocols.includes(c.protocol)&&(yield async()=>{let f,h=AbortSignal.timeout(c.timeout);try{f=await u.newStream(c.protocol,{signal:h,runOnLimitedConnection:c.runOnLimitedConnection}),await ke(f,{maxDataLength:c.maxMessageSize}).pb(Yo).write({listenAddrs:e.map(y=>y.bytes),signedPeerRecord:n.marshal(),protocols:o,agentVersion:i,protocolVersion:a},{signal:h}),await f.close({signal:h})}catch(p){f?.log.newScope("identify-push")?.error("could not push identify update to peer",p),f?.abort(p)}})}await an(Hn(l(),{concurrency:this.concurrency}))}catch(e){this.log.error("error pushing updates to peers - %e",e)}}async handleProtocol(e,t){let n=e.log.newScope("identify-push");if(this.components.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},s=await lp(e,this.maxMessageSize,o,n);await ap(this.components.peerStore,this.components.events,n,t,cp(s)),n.trace("handled push from %p",t.remotePeer)}};var dp=class extends lc{constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??Zt.protocolPrefix}/${"id"}/${EA}`,log:e.logger.forComponent("libp2p:identify")}),(t.runOnConnectionOpen??Zt.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(()=>{})})}[ue]=["@libp2p/identify"];async _identify(e,t={}){let n,o;if(t.signal==null){let s=AbortSignal.timeout(this.timeout);t={...t,signal:s}}this.log("run identify on new connection %a",e.remoteAddr);try{n=await e.newStream(this.protocol,{...t,runOnLimitedConnection:this.runOnLimitedConnection}),o=n.log.newScope("identify");let s=await lp(n,this.maxMessageSize,t,o);return cp(s)}catch(s){throw o?.error("identify failed - %e",s),n?.abort(s),s}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new oe("Public key was missing from identify message");let a=nt(o),c=Mt(a.toCID());if(!e.remotePeer.equals(c))throw new oe("Identified peer does not match the expected peer");if(this.components.peerId.equals(c))throw new oe("Identified peer is our own peer id?");return this.maybeAddObservedAddress(i),this.log("completed for peer %p and protocols %o",c,s),ap(this.components.peerStore,this.components.events,this.log,e,n)}maybeAddObservedAddress(e){let t=K5(e);if(t==null||(this.log.trace("our observed address was %a",t),Ze(t)))return;let n=t.getComponents();if((n[0].code===41||n[0].code===42&&n[1].code===41)&&!sf(t)){this.log.trace("our observed address was IPv6 but not a global unicast address");return}zs.exactMatch(t)||(this.log.trace("storing the observed address"),this.components.addressManager.addObservedAddr(t))}async handleProtocol(e,t){let n=e.log.newScope("identify");n("responding to identify");let o=AbortSignal.timeout(this.timeout);let s=await this.components.peerStore.get(this.components.peerId,{signal:o}),i=this.components.addressManager.getAddresses().map(u=>u.decapsulateCode(421)),a=s.peerRecordEnvelope;if(i.length>0&&a==null){let u=new Ft({peerId:this.components.peerId,multiaddrs:i});a=(await lr.seal(u,this.components.privateKey,{signal:o})).marshal().subarray()}let c=t.remoteAddr.bytes;v9.matches(t.remoteAddr)||(c=void 0);let l=ke(e).pb(Yo);n("send response"),await l.write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:ct(this.components.privateKey.publicKey),listenAddrs:i.map(u=>u.bytes),signedPeerRecord:a,observedAddr:c,protocols:s.protocols},{signal:o}),n("close write"),await l.unwrap().unwrap().close({signal:o})}};function CA(r={}){return e=>new dp(e,r)}function IA(r={}){return e=>new up(e,r)}var fi=1e3,q5=60*fi,fp=60*q5,TA="/ipfs/kad/1.0.0",hp=48*fp;var _A=24*fp,RA=10,LA=16384,PA=fp,H5=fp,y3e=10*fi,DA=10*fi;var pp=20,Qo=10,kA=5*q5,NA=fi,OA=5*fi,MA=5*q5,BA=30*fi,UA=180*fi,z5=`${fs}-kad-dht`;var Ju;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.key!=null&&s.key.byteLength>0&&(i.uint32(10),i.bytes(s.key)),s.value!=null&&s.value.byteLength>0&&(i.uint32(18),i.bytes(s.value)),s.timeReceived!=null&&s.timeReceived!==""&&(i.uint32(42),i.string(s.timeReceived)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={key:de(0),value:de(0),timeReceived:""},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.key=s.bytes();break}case 2:{c.value=s.bytes();break}case 5:{c.timeReceived=s.string();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.key`,value:s.bytes()};break}case 2:{yield{field:`${a}.value`,value:s.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:s.string()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Ju||(Ju={}));function FA(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function $A(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var St=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return Ju.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:FA(this.timeReceived)}}static deserialize(e){let t=Ju.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=$A(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};var Xo=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},mp=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},gp=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var VA;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.key!=null&&(i.uint32(10),i.bytes(s.key)),s.value!=null&&(i.uint32(18),i.bytes(s.value)),s.author!=null&&(i.uint32(26),i.bytes(s.author)),s.signature!=null&&(i.uint32(34),i.bytes(s.signature)),s.timeReceived!=null&&(i.uint32(42),i.string(s.timeReceived)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.key=s.bytes();break}case 2:{c.value=s.bytes();break}case 3:{c.author=s.bytes();break}case 4:{c.signature=s.bytes();break}case 5:{c.timeReceived=s.string();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.key`,value:s.bytes()};break}case 2:{yield{field:`${a}.value`,value:s.bytes()};break}case 3:{yield{field:`${a}.author`,value:s.bytes()};break}case 4:{yield{field:`${a}.signature`,value:s.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:s.string()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(VA||(VA={}));var we;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(we||(we={}));var yp;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(yp||(yp={}));(function(r){r.codec=()=>rt(yp)})(we||(we={}));var hi;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(hi||(hi={}));var G5;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(G5||(G5={}));(function(r){r.codec=()=>rt(G5)})(hi||(hi={}));var Zo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.id!=null&&s.id.byteLength>0&&(i.uint32(10),i.bytes(s.id)),s.multiaddrs!=null&&s.multiaddrs.length>0)for(let c of s.multiaddrs)i.uint32(18),i.bytes(c);s.connection!=null&&(i.uint32(24),hi.codec().encode(s.connection,i)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={id:de(0),multiaddrs:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.id=s.bytes();break}case 2:{if(a.limits?.multiaddrs!=null&&c.multiaddrs.length===a.limits.multiaddrs)throw new fe('Decode error - repeated field "multiaddrs" had too many elements');c.multiaddrs.push(s.bytes());break}case 3:{c.connection=hi.codec().decode(s);break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={multiaddrs:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.id`,value:s.bytes()};break}case 2:{if(c.limits?.multiaddrs!=null&&l.multiaddrs===c.limits.multiaddrs)throw new fe('Streaming decode error - repeated field "multiaddrs" had too many elements');yield{field:`${a}.multiaddrs[]`,index:l.multiaddrs,value:s.bytes()},l.multiaddrs++;break}case 3:{yield{field:`${a}.connection`,value:hi.codec().decode(s)};break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Zo||(Zo={}));var Jo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.type!=null&&yp[s.type]!==0&&(i.uint32(8),we.codec().encode(s.type,i)),s.clusterLevel!=null&&(i.uint32(80),i.int32(s.clusterLevel)),s.key!=null&&(i.uint32(18),i.bytes(s.key)),s.record!=null&&(i.uint32(26),i.bytes(s.record)),s.closer!=null&&s.closer.length>0)for(let c of s.closer)i.uint32(66),Zo.codec().encode(c,i);if(s.providers!=null&&s.providers.length>0)for(let c of s.providers)i.uint32(74),Zo.codec().encode(c,i);a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={type:we.PUT_VALUE,closer:[],providers:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.type=we.codec().decode(s);break}case 10:{c.clusterLevel=s.int32();break}case 2:{c.key=s.bytes();break}case 3:{c.record=s.bytes();break}case 8:{if(a.limits?.closer!=null&&c.closer.length===a.limits.closer)throw new fe('Decode error - repeated field "closer" had too many elements');c.closer.push(Zo.codec().decode(s,s.uint32(),{limits:a.limits?.closer$}));break}case 9:{if(a.limits?.providers!=null&&c.providers.length===a.limits.providers)throw new fe('Decode error - repeated field "providers" had too many elements');c.providers.push(Zo.codec().decode(s,s.uint32(),{limits:a.limits?.providers$}));break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={closer:0,providers:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.type`,value:we.codec().decode(s)};break}case 10:{yield{field:`${a}.clusterLevel`,value:s.int32()};break}case 2:{yield{field:`${a}.key`,value:s.bytes()};break}case 3:{yield{field:`${a}.record`,value:s.bytes()};break}case 8:{if(c.limits?.closer!=null&&l.closer===c.limits.closer)throw new fe('Streaming decode error - repeated field "closer" had too many elements');for(let f of Zo.codec().stream(s,s.uint32(),`${a}.closer[]`,{limits:c.limits?.closer$}))yield{...f,index:l.closer};l.closer++;break}case 9:{if(c.limits?.providers!=null&&l.providers===c.limits.providers)throw new fe('Streaming decode error - repeated field "providers" had too many elements');for(let f of Zo.codec().stream(s,s.uint32(),`${a}.providers[]`,{limits:c.limits?.providers$}))yield{...f,index:l.providers};l.providers++;break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Jo||(Jo={}));function W5(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function ed(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function bp(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function Wr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function j5(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function td(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function Y5(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function KA(r,e={}){let t={...r,name:"PATH_ENDED",type:8};return e.onProgress?.(new CustomEvent("kad-dht:query:path-ended",{detail:t})),t}async function qA(r,e,t){if(t.length===0)throw new C("No records given");let o=B(e).split("/");if(o.length<3)throw new C("Record key does not have a selector function");let s=r[o[1].toString()];if(s==null)throw new gp(`No selector function configured for key type "${o[1]}"`);return t.length===1?0:s(e,t)}function r$(r,e){return 0}var HA={pk:r$};async function uc(r,e,t){let n=e.key,s=B(n).split("/");if(s.length<3)throw new C("Record key is missing a namespace");let i=r[s[1].toString()];if(i==null)throw new C(`No validator available for key type "${s[1]}"`);await i(n,e.value,t)}var n$=async(r,e,t)=>{if(!(r instanceof Uint8Array))throw new C('"key" must be a Uint8Array');if(r.byteLength<5)throw new C("Invalid public key record");if(B(r.subarray(0,4))!=="/pk/")throw new C("key was not prefixed with /pk/");let o=nt(e),s=r.slice(4);if(!Z(s,o.toMultihash().bytes))throw new C("public key does not match passed in key")},zA={pk:n$};var o$=O("/pk/");function GA(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>!Ze(e))}}async function es(r,e){let t=await pt.digest(r);return e?.signal?.throwIfAborted(),t.digest}async function Jt(r,e){return es(r.toMultihash().bytes,e)}function ts(r,e){return new Rt(`${r}/${B(e,"base32")}`,!1)}function WA(r){return et([o$,r.toMultihash().bytes])}function jA(r){return B(r.subarray(0,4))==="/pk/"}function YA(r){let e=ve(r.subarray(4));return Xe(e)}function Q5(r,e){let t=new Date;return new St(r,e,t).serialize()}function wp(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:ie.createV1(Cd,ve(O(n,"base32"))),peerId:Oe(t)}}function xp(r,e,t){let n=typeof e=="string"?e:B(e.multihash.bytes,"base32"),o=[r,n];return t!=null&&o.push(t.toString()),new Rt(o.join("/"))}function Ep(r){return new Date(Pr(r))}function pi(r,e,t){return async function*(...n){let o=e.queryTime?.timer(t),s=e.errorTime?.timer(t),i=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw i=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),i||o?.()}}}function vp(r,e,t){return async function(...n){let o=e?.queryTime?.timer(t),s=e?.errorTime?.timer(t),i=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw i=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),i||o?.()}}}var Sp=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a,this.get=e.metrics?.traceFunction("libp2p.kadDHT.get",this.get.bind(this),{optionsIndex:1})??this.get,this.put=e.metrics?.traceFunction("libp2p.kadDHT.put",this.put.bind(this),{optionsIndex:2})??this.put}async getLocal(e,t){this.log("getLocal %b",e);let n=ts(this.datastorePrefix,e);this.log("fetching record for key %k",n);let o=await this.components.datastore.get(n,t);this.log("found %k in local datastore",n);let s=St.deserialize(o);return await uc(this.validators,s,t),s}async*sendCorrectionRecord(e,t,n,o){this.log("sendCorrection for %b",e);let s=Q5(e,n);for(let{value:i,from:a}of t){if(Z(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=ts(this.datastorePrefix,e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,s.subarray(),o)}catch(u){this.log.error("failed error correcting self - %e",u)}continue}let c=!1,l={type:we.PUT_VALUE,key:e,record:s};for await(let u of this.network.sendRequest(a,l,o))u.name==="PEER_RESPONSE"&&u.record!=null&&Z(u.record.value,St.deserialize(s).value)&&(c=!0),yield u;if(!c)throw new Xo("Could not send correction");this.log.error("failed error correcting entry")}}async*put(e,t,n){this.log("put key %b value %b",e,t);let o=Q5(e,t),s=ts(this.datastorePrefix,e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray(),n),yield*yl(this.peerRouting.getClosestPeers(e,{...n,signal:n.signal}),i=>Vr(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:we.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,{...n,path:a.path}))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&Z(u.record.value,St.deserialize(o).value)||c.push(Wr({from:a.peer.id,error:new Xo("Value not put correctly"),path:u.path},n)));return c}),i=>Hn(i,{ordered:!1,concurrency:Qo}),async function*(i){for await(let a of i)yield*a})}async*get(e,t){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t)){if(a.name==="VALUE"){n.push(a);continue}yield a}if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=await qA(this.selectors,e,o)}catch(a){if(a.name!=="InvalidParametersError")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new Pe("Best value was not found");yield*this.sendCorrectionRecord(e,n,i,{...t,path:{index:-1,queued:0,running:0,total:0}}),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e,t);yield td({value:s.value,from:this.components.peerId,path:{index:-1,running:0,queued:0,total:0}},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i,path:a}){for await(let c of n.peerRouting.getValueOrPeers(s.id,e,{...t,signal:i,path:a}))yield c,c.name==="PEER_RESPONSE"&&c.record!=null&&(yield td({from:s.id,value:c.record.value,path:a},t))};yield*this.queryManager.run(e,o,t)}};function QA(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function rd(r){if(r.id==null)throw new Error("Invalid peer in message");let e=ve(r.id);return{id:Xe(e),multiaddrs:(r.multiaddrs??[]).map(t=>V(t))}}var Ap=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a,this.findProviders=e.metrics?.traceFunction("libp2p.kadDHT.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PROVIDER"&&(u.providers??=[],u.providers.push(...l.providers.map(d=>d.id.toString()))),u)})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.kadDHT.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PEER_RESPONSE"&&l.messageName==="ADD_PROVIDER"&&(u.providers??=[],u.providers.push(l.from.toString())),u)})??this.provide}async*provide(e,t,n={}){this.log("provide %s",e);let o=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId,n);let s={type:we.ADD_PROVIDER,key:o,providers:[QA({id:this.components.peerId,multiaddrs:t})]},i=0,a=this;async function*c(d){try{a.log("sending provider record for %s to %p",e,d.peer.id);for await(let f of a.network.sendMessage(d.peer.id,s,{...n,path:d.path}))f.name==="PEER_RESPONSE"&&(a.log("sent provider record for %s to %p",e,d.peer.id),i++),yield f}catch(f){a.log.error("error sending provide record to peer %p - %e",d.peer.id,f),yield Wr({from:d.peer.id,error:f,path:d.path},n)}}let l=Bt({objectMode:!0}),u=new jt({concurrency:Qo});u.addEventListener("idle",()=>{l.end()}),u.addEventListener("failure",d=>{this.log.error("error publishing provider record to peer - %e",d.detail.error)}),u.add(async()=>{let d=[];for await(let f of this.peerRouting.getClosestPeers(o,n))l.push(f),f.name==="FINAL_PEER"&&d.push(f);d.forEach(f=>{u.add(async()=>{for await(let h of c(f))l.push(h)}).catch(h=>{this.log.error("error publishing provider record to peer - %e",h)})})}).catch(d=>{l.end(d)}),yield*l,this.log("sent provider records to %d peers",i)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=0,s=e.multihash.bytes,i=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e,t);if(a.length>0){let u=[];for(let d of a.slice(0,n))try{let f=await this.components.peerStore.get(d,t);u.push({id:d,multiaddrs:f.addresses.map(({multiaddr:h})=>h)})}catch(f){if(f.name!=="NotFoundError")throw f;this.log("no peer store entry for %p",d)}if(yield ed({from:this.components.peerId,messageType:we.GET_PROVIDERS,providers:u,path:{index:-1,queued:0,running:0,total:0}},t),yield j5({from:this.components.peerId,providers:u,path:{index:-1,queued:0,running:0,total:0}},t),o+=u.length,o>=n)return}let c=async function*({peer:u,signal:d,path:f}){let h={type:we.GET_PROVIDERS,key:s};yield*i.network.sendRequest(u.id,h,{...t,signal:d,path:f})},l=new cr(a);for await(let u of this.queryManager.run(s,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let d=[];for(let f of u.providers)l.has(f.id)||(l.add(f.id),d.push(f));if(d.length>0&&(yield j5({from:u.from,providers:d,path:u.path},t),o+=d.length,o>=n))return}}};var Cp=class extends se{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new $r({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)},this.sendRequest=e.metrics?.traceFunction("libp2p.kadDHT.sendRequest",this.sendRequest.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],s){return{...s,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((s,i)=>{o[`providers-${i}`]=s.id.toString()}),n.closer.length>0&&n.closer.forEach((s,i)=>{o[`closer-${i}`]=s.id.toString()})),o)})??this.sendRequest,this.sendMessage=e.metrics?.traceFunction("libp2p.kadDHT.sendMessage",this.sendMessage.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],s){return{...s,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((s,i)=>{o[`providers-${i}`]=s.id.toString()}),n.closer.length>0&&n.closer.forEach((s,i)=>{o[`closer-${i}`]=s.id.toString()})),o)})??this.sendMessage}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new C("Message type was missing");let s,i=this.timeout.getTimeoutSignal(n);n={...n,signal:i};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield Y5({peer:e,path:n.path},n),s=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield W5({to:e,type:o,path:n.path},n);let a=await this._writeReadMessage(s,t,n);s.close(n).catch(c=>{this.log.error("error closing stream to %p - %e",e,c),s?.abort(c)}),yield ed({from:e,messageType:a.type,closer:a.closer.map(rd),providers:a.providers.map(rd),record:a.record==null?void 0:St.deserialize(a.record),path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),s?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield Wr({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(i)}}async*sendMessage(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new C("Message type was missing");let s,i=this.timeout.getTimeoutSignal(n);n={...n,signal:i};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield Y5({peer:e,path:n.path},n),s=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield W5({to:e,type:o,path:n.path},n),await this._writeMessage(s,t,n),s.close(n).catch(a=>{this.log.error("error closing stream to %p - %e",e,a),s?.abort(a)}),yield ed({from:e,messageType:o,path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),s?.abort(a),yield Wr({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(i)}}async _writeMessage(e,t,n){await ke(e).write(t,Jo,n)}async _writeReadMessage(e,t,n){let o=ke(e);await o.write(t,Jo,n);let s=await o.read(Jo,n);return s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:rd(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:rd(i)})}),s}};var rs=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return[...this.peerDistances]}async add(e,t={index:-1,queued:0,running:0,total:0},n){let o=await Jt(e.id,n);this.addWithKadId(e,o,t)}addWithKadId(e,t,n={index:-1,queued:0,running:0,total:0}){if(this.peerDistances.find(i=>i.peer.id.equals(e.id))!=null)return;let o={peer:e,distance:Br(this.originDhtKey,t),path:n};if(this.peerDistances.length===this.capacity){let i=this.peerDistances[this.peerDistances.length-1];if(i!=null&&Co(o.distance,i.distance)!==-1)return}let s=!1;for(let i=0;i<this.peerDistances.length;i++){let a=Co(this.peerDistances[i].distance,o.distance);if(a===0||a===1){s=!0,this.peerDistances.splice(i,0,o);break}}s||this.peerDistances.push(o),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e,t){if(this.length===0)return!0;let n=await Jt(e,t),o=Br(n,this.originDhtKey),s=this.peerDistances[this.peerDistances.length-1].distance;return Co(o,s)===-1}async anyCloser(e,t){return e.length===0?!1:Promise.any(e.map(async n=>this.isCloser(n,t)))}};var Ip=class{log;routingTable;network;validators;queryManager;components;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`),this.findPeer=e.metrics?.traceFunction("libp2p.kadDHT.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.kadDHT.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async findPeerLocal(e,t){let n,o=await this.routingTable.find(e,t);if(o!=null){this.log("findPeerLocal found %p in routing table",e);try{n=await this.components.peerStore.get(o,t)}catch(s){if(s.name!=="NotFoundError")throw s}}if(n==null)try{n=await this.components.peerStore.get(e,t)}catch(s){if(s.name!=="NotFoundError")throw s}if(n!=null)return this.log("findPeerLocal found %p in peer store",e),{id:n.id,multiaddrs:n.addresses.map(s=>s.multiaddr)}}async*_getValueSingle(e,t,n){let o={type:we.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=WA(e),o={index:-1,queued:0,running:0,total:0};for await(let s of this._getValueSingle(e,n,{...t,path:o}))if(yield s,s.name==="PEER_RESPONSE"&&s.record!=null){let i=nt(s.record.value),a=rn(i);if(!a.equals(e))throw new In("public key does not match id");if(a.publicKey==null)throw new In("public key missing");yield td({from:e,value:s.record.value,path:o},t)}throw new Xo(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e,t);if(o!=null){this.log("found local"),yield bp({from:this.components.peerId,peer:o,path:{index:-1,queued:0,running:0,total:0}},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a,path:c}){let l={type:we.FIND_NODE,key:e.toMultihash().bytes};for await(let u of o.network.sendRequest(i.id,l,{...t,signal:a,path:c}))if(yield u,u.name==="PEER_RESPONSE"){let d=u.closer.find(f=>f.id.equals(e));d!=null&&(yield bp({from:u.from,peer:d,path:u.path},t))}};for await(let i of this.queryManager.run(e.toMultihash().bytes,s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}if(!n)throw new Pe("Not found")}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await es(e,t),o=new rs(n,this.routingTable.kBucketSize),s=this,i=async function*({peer:a,path:c,peerKadId:l,signal:u}){s.log("getClosestPeers asking %p",a.id);let d={type:we.FIND_NODE,key:e};yield*s.network.sendRequest(a.id,d,{...t,signal:u,path:c}),o.addWithKadId(a,l,c)};yield*this.queryManager.run(e,i,t),this.log("found %d peers close to %b",o.length,e);for(let{peer:a,path:c}of o.peers)yield bp({from:this.components.peerId,peer:a,path:{index:c.index,queued:0,running:0,total:0}},t)}async*getValueOrPeers(e,t,n){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record,n)}catch{let i="invalid record received, discarded";this.log(i),yield Wr({from:o.from,error:new Xo(i),path:n.path},n);continue}yield o}}async _verifyRecordOnline(e,t){if(e.timeReceived==null)throw new mp("invalid record received");await uc(this.validators,new St(e.key,e.value,e.timeReceived),t)}async getClosestPeersOffline(e,t){let n=[];try{let i=ve(e),a=Xe(i),c=await this.components.peerStore.get(a,t);n.push({id:c.id,multiaddrs:c.addresses.map(({multiaddr:l})=>l)})}catch{}let o=await es(e,t),s=this.routingTable.closestPeers(o,t);for(let i of s)try{n.push(await this.components.peerStore.getInfo(i,t))}catch(a){if(a.name!=="NotFoundError")throw a}return n.length>0?this.log("getClosestPeersOffline returning the %d closest peer(s) we know to %b",n.length,e):this.log("getClosestPeersOffline could not any peers close to %b with %d peers in the routing table",e,this.routingTable.size),n}};var Tp=class{log;datastore;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`${t.datastorePrefix}/provider`,this.datastore=e.datastore}async addProvider(e,t,n){this.log.trace("%p provides %s",t,e),await this.writeProviderEntry(e,t,n)}async removeProvider(e,t,n){let o=xp(this.datastorePrefix,e,t);this.log.trace("%p no longer provides %s",t,e),await this.datastore.delete(o,n)}async getProviders(e,t){this.log.trace("get providers for %c",e);let n=await this.loadProviders(e,t);return this.log.trace("got %d providers for %c",n.size,e),[...n.keys()]}async writeProviderEntry(e,t,n){let o=xp(this.datastorePrefix,e,t),s=zt(n?.time?.getTime()??Date.now());await this.datastore.put(o,s,n)}async loadProviders(e,t){let n=new Tt,o=xp(this.datastorePrefix,e);for await(let s of this.datastore.query({prefix:o.toString()},t)){let{peerId:i}=wp(s.key);n.set(i,Ep(s.value))}return n}};var i$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function a$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=i$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function XA(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=a$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}async function*ZA(r){let{key:e,startingPeers:t,ourPeerId:n,query:o,alpha:s,path:i,numPaths:a,log:c,peersSeen:l,connectionManager:u,signal:d}=r,f=Bt({objectMode:!0}),h=new jt({concurrency:s,sort:(y,g)=>Co(y.options.distance,g.options.distance)});h.addEventListener("idle",()=>{f.push(KA({path:{index:i,queued:h.queued,running:h.running,total:h.size}},r)),f.end()}),h.addEventListener("failure",y=>{c.error("error during query - %e",y.detail.error)});let p=()=>{h.abort(),f.end(new tr)};d.addEventListener("abort",p);try{let g=function(m,b){if(m==null)return;l.add(m.id.toMultihash().bytes);let w=Br(b,y);h.add(async()=>{try{for await(let x of o({...r,key:e,peer:m,path:{index:i,queued:h.queued,running:h.running,total:h.size},numPaths:a,peerKadId:b,signal:d})){if(x.name==="PEER_RESPONSE")for(let v of x.closer){if(l.has(v.id.toMultihash().bytes)){c("already seen %p in query",v.id);continue}if(n.equals(v.id)){c("not querying ourselves");continue}let A=await Jt(v.id,{signal:d}),S=Br(A,y);if(Co(S,w)!==-1){c("skipping %p as they are not closer to %b than %p",v.id,e,m.id);continue}if(!await u.isDialable(v.multiaddrs,{signal:d})){c("not querying undialable peer");continue}c("querying closer peer %p",v.id),g(v,A)}f.push({...x,path:{index:i,queued:h.queued,running:h.running,total:h.size}})}}catch(x){f.push(Wr({from:m.id,error:x,path:{index:i,queued:h.queued,running:h.running-1,total:h.size-1}},r))}},{distance:w}).catch(x=>{c.error("error during query - %e",x)})},y=await es(e,{signal:d});await Promise.all(t.map(async m=>{g({id:m,multiaddrs:[]},await Jt(m,{signal:d}))})),yield*f}finally{d.removeEventListener("abort",p)}}var _p=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;allowQueryWithZeroPeers;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??pp,this.alpha=t.alpha??Qo,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.allowQueryWithZeroPeers=t.allowQueryWithZeroPeers??!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,this.shutDownController.signal,void 0)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(UA);n={...n,signal:c}}let o=new AbortController,s=me([this.shutDownController.signal,o.signal,n.signal]);o.signal;let i=this.logger.forComponent(`${this.logPrefix}:query:`+B(e,"base58btc")),a=!1;try{this.routingTable.size===0&&!this.allowQueryWithZeroPeers&&(i("routing table was empty, waiting for some peers before running%s query",n.isSelfQuery===!0?" self":""),await XA(this.routingTable,"peer:add",{signal:s,filter:h=>!this.peerId.equals(h.detail)}),i("routing table has peers, continuing with%s query",n.isSelfQuery===!0?" self":"")),n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(i("waiting for initial self query before continuing"),await De(this.initialQuerySelfHasRun.promise,s),this.initialQuerySelfHasRun=void 0),i("query:start");let c=await es(e,{signal:s}),l=this.routingTable.closestPeers(c,{count:this.routingTable.kBucketSize}),u=l.sort(()=>Math.random()>.5?1:-1).reduce((h,p,y)=>(h[y%this.disjointPaths].push(p),h),new Array(this.disjointPaths).fill(0).map(()=>[])).filter(h=>h.length>0);if(l.length===0){i.error("running query with no peers");return}let d=Wt(1024),f=u.map((h,p)=>ZA({...n,key:e,startingPeers:h,ourPeerId:this.peerId,signal:s,query:t,path:p,numPaths:u.length,alpha:this.alpha,log:i,peersSeen:d,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let h of Vn(...f))h.name==="QUERY_ERROR"&&i.error("query error - %e",h.error),h.name==="PEER_RESPONSE"&&this.routingTable.queueRoutingTableUpdate(h.from),s.throwIfAborted(),yield h;a=!0}catch(c){if(this.running)throw c}finally{a||(i("query exited early"),o.abort()),s.clear(),i("query finished")}}};function c$(r){return r[Symbol.asyncIterator]!=null}function l$(r){if(c$(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Rp=l$;var Lp=class{log;peerId;peerRouting;events;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.events=e.events,this.running=!1,this.peerRouting=t.peerRouting,this.count=t.count??pp,this.interval=t.interval??kA,this.initialInterval=t.initialInterval??NA,this.queryTimeout=t.queryTimeout??OA,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=vp(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=He(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);e.push(n)}let t=me(e);this.controller.signal;try{this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),o=await yl(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),i=>Rl(i,this.count),async i=>Rp(i));t?.throwIfAborted();let s=Date.now()-n;this.log("self-query found %d peers in %dms",o,s),this.events.dispatchEvent(new CustomEvent("kad-dht:query:self",{detail:{peers:o,duration:s}}))}catch(n){this.log.error("self-query error - %e",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.interval))}};var Pp=class extends se{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new jt({concurrency:t.concurrency??RA,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new $r({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??_A,this.maxQueueSize=t.maxQueueSize??LA,this.validity=t.validity??hp,this.interval=t.interval??PA,this.contentRouting=t.contentRouting,this.running=!1,this.reprovide=vp(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(H5)}).catch(e=>{this.log.error("error running process to reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async processRecords(e){try{this.safeDispatchEvent("reprovide:start"),this.log("starting reprovide/cleanup");for await(let t of this.datastore.query({prefix:this.datastorePrefix},e))try{let{cid:n,peerId:o}=wp(t.key),i=Ep(t.value).getTime()+this.validity,a=Date.now(),c=a>i,l=this.peerId.equals(o);this.log.trace("comparing: %d (now) < %d (expires) = %s %s",a,i,c,c?"(expired)":"(valid)"),c&&!l&&await this.datastore.delete(t.key,e),this.shouldReprovide(l,i)&&(this.log("reproviding %c as it is within the reprovide threshold (%d)",n,this.reprovideThreshold),this.queueReprovide(n).catch(u=>{this.log.error("could not reprovide %c - %e",n,u)}))}catch(n){this.log.error("error processing datastore key %s - %s",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{this.safeDispatchEvent("reprovide:end"),this.running&&(this.log("queuing next re-provide/cleanup run in %d ms",this.interval),this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(H5)}).catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}shouldReprovide(e,t){if(!e)return!1;let n=Date.now();return t<n?!0:t-n<this.reprovideThreshold}async queueReprovide(e,t){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize,t);let n=this.reprovideQueue.queue.find(o=>o.options.cid.equals(e));if(n!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),n.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async o=>{if(o.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let s=this.reprovideTimeout.getTimeoutSignal(o);try{await this.reprovide(o.cid,o)}finally{this.reprovideTimeout.cleanUp(s)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(o=>{this.log.error("could not re-provide key %c - %e",e,o)})}async reprovide(e,t){await an(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var u$=20,d$=5e3,f$="kad-close",h$=50,Dp=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??d$,this.peerSetSize=t.peerSetSize??u$,this.closeTagName=t.closeTagName??f$,this.closeTagValue=t.closeTagValue??h$,this.closestPeers=new cr,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await Jt(this.components.peerId);this.newPeers=new rs(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new cr(this.newPeers?.peers.map(({peer:o})=>o.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:{value:this.closeTagValue},[z5]:{value:1}}})}),...[...n].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:void 0,[z5]:void 0}})})])}};function nd(r){return Array.isArray(r?.peers)}var kp=class{peerId;root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e,t){this.peerId=e.peerId,this.prefixLength=t.prefixLength??JA,this.kBucketSize=t.kBucketSize??od,this.splitThreshold=t.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=t.numberOfOldContactsToPing??eC,this.lastPingThreshold=t.lastPingThreshold??tC,this.ping=t.ping,this.verify=t.verify,this.onAdd=t.onAdd,this.onRemove=t.onRemove,this.addingPeerMap=El({name:`${t.metricsPrefix}_adding_peer_map`,metrics:e.metrics}),this.root={prefix:"",depth:0,peers:[]}}async start(){await this.addSelfPeer(this.peerId)}stop(){this.addingPeerMap.clear(),this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e,t){this.localPeer={peerId:e,kadId:await Jt(e,t),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await Jt(e,t),lastPing:0},o=this.addingPeerMap.get(e);if(o!=null)return o;try{let s=this._add(n,t);this.addingPeerMap.set(e,s),await s}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n,t),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!m$(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n,t);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let o=n.peers.filter(i=>!(i.peerId.equals(this.localPeer?.peerId)||i.lastPing>Date.now()-this.lastPingThreshold)).sort((i,a)=>i.lastPing<a.lastPing?-1:i.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),s=!1;for await(let i of this.ping(o,t))s=!0,await this.remove(i.kadId,t);s&&await this._add(e,t)}*closest(e,t){let n=new rs(e,t?.count??this.kBucketSize);for(let o of this.toIterable())t?.exclude?.some(s=>s.equals(o.peerId))!==!0&&n.addWithKadId({id:o.peerId,multiaddrs:[]},o.kadId);yield*Vr(n.peers,({peer:o})=>o.id)}count(){function e(t){if(nd(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e,t){let n=this._determineBucket(e),o=this._indexOf(n,e);if(o>-1){let s=n.peers.splice(o,1)[0];await this.onRemove?.(s,n,t)}}*toIterable(){function*e(t){if(nd(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+B(Br(e,t),"base16"))}_determineBucket(e){let t=B(e,"base2");function n(o,s=0){return nd(o)?o:t[s]==="0"?n(o.left,s+1):n(o.right,s+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>Z(n.kadId,t))}async _split(e,t){let n={prefix:"0",depth:e.depth+1,peers:[]},o={prefix:"1",depth:e.depth+1,peers:[]};for(let s of e.peers)B(s.kadId,"base2")[e.depth]==="0"?(n.peers.push(s),await this.onMove?.(s,e,n,t)):(o.peers.push(s),await this.onMove?.(s,e,o,t));p$(e,n,o)}};function p$(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function m$(r,e){return r.lastPing<Date.now()-e}var od=20,JA=6;var g$=20,y$=100,b$=16,w$=16384,eC=3;var x$=20,E$=100,rC="kad-peer",v$=1,tC=6e5,S$=!0,A$=1e3,Np=class extends se{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;routingTableUpdateQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;shutdownController;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??od,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??rC,this.peerTagValue=t.peerTagValue??v$,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??S$,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??A$,this.shutdownController=new AbortController,this.shutdownController.signal,this.routingTableUpdateQueue=new Yt({concurrency:t.routingTableUpdateQueueConcurrency??b$,metricName:`${t.metricsPrefix}_routing_table_update_queue`,metrics:this.components.metrics,maxSize:t.routingTableUpdateMaxQueueSize??w$}),this.pingOldContactQueue=new Yt({concurrency:t.pingOldContactConcurrency??x$,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??E$}),this.pingOldContactTimeout=new $r({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new Yt({concurrency:t.pingNewContactConcurrency??g$,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??y$}),this.pingNewContactTimeout=new $r({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new kp(e,{kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved,metricsPrefix:t.metricsPrefix}),this.closestPeerTagger=new Dp(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,await Ir(this.closestPeerTagger,this.kb))}async afterStart(){let e=0;Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let t=me([this.shutdownController.signal,AbortSignal.timeout(2e4)]);try{for(let n of await this.components.peerStore.all({filters:[o=>o.protocols.includes(this.protocol)&&o.tags.has(rC)],limit:this.populateFromDatastoreLimit,signal:t})){if(!this.running)return;try{await this.add(n.id,{signal:t}),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(n.id,{tags:{[this.peerTagName]:void 0}})}}}finally{t.clear()}this.log("added %d peer store peers to the routing table",e)}).catch(t=>{this.log.error("error adding %d, peer store peers to the routing table - %e",e,t)})}async stop(){this.running=!1,await Xr(this.closestPeerTagger,this.kb),this.routingTableUpdateQueue.abort(),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort(),this.shutdownController.abort()}queueRoutingTableUpdate(e,t={}){let n=this.routingTableUpdateQueue.find(e);if(n!=null){n.join(t).catch(()=>{});return}this.routingTableUpdateQueue.add(async o=>{let s=o,i;t.activeTimeout!=null&&(i=me([o.signal,AbortSignal.timeout(t.activeTimeout)]),s={...o,signal:i});try{await this.add(e,s)}finally{i?.clear()}},{peerId:e,signal:this.shutdownController.signal}).catch(o=>{this.shutdownController.signal.aborted||o?.name==="AbortError"||this.log.error("could not update routing table for peer %p - %e",e,o)})}async peerAdded(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let o of e){if(this.kb.get(o.kadId)==null){this.log("asked to ping contact %p that was not in routing table",o.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let s=this.pingOldContactQueue.find(o.peerId);if(s!=null)return this.log("asked to ping contact %p was already being pinged",o.peerId),await s.join(t)?void 0:o;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),l=me([c,this.shutdownController.signal,a?.signal]);try{return await this.pingContact(o,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),l.clear()}},{peerId:o.peerId,signal:t?.signal}))return o})}for await(let o of Hn(n))o!=null&&(yield o)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),o=me([n,this.shutdownController.signal,t?.signal]);try{let s=this.pingNewContactQueue.find(e.peerId);return s!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await s.join({signal:o})):await this.pingNewContactQueue.add(async i=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,i)),{peerId:e.peerId,signal:o})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),o.clear()}}async pingContact(e,t){let n;try{return this.log("pinging contact %p",e.peerId),await this.components.ping.ping(e.peerId,t),this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0}catch(o){return this.log("error pinging old contact %p - %e",e.peerId,o),n?.abort(o),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e,t){let n=await Jt(e,t);return this.kb.get(n)?.peerId}closestPeer(e){let t=this.closestPeers(e,{count:1});if(t.length>0)return t[0]}closestPeers(e,t){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");let n=await Jt(e,t);await this.kb.remove(n,t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,o=20,s=0;function i(a){if(nd(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<o&&(o=a.peers.length),a.peers.length>s&&(s=a.peers.length);return}i(a.left),i(a.right)}i(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(o),this.metrics.routingTableKadBucketMaxOccupancy.update(s),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var nC=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var Op=15,Mp=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??MA,this.refreshQueryTimeout=i??BA,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1,t){this.log("refreshing routing table");let n=this._maxCommonPrefix(),o=this._getTrackedCommonPrefixLengthsForRefresh(n);this.log(`max common prefix length ${n}`),this.log(`tracked CPLs [ ${o.map(s=>s.toISOString()).join(", ")} ]`),Promise.all(o.map(async(s,i)=>{try{if(await this._refreshCommonPrefixLength(i,s,e,t),this._numPeersForCpl(n)===0){let a=Math.min(2*(i+1),o.length-1);for(let c=i+1;c<a+1;c++)try{await this._refreshCommonPrefixLength(c,s,e,t)}catch(l){this.log.error("failed to refresh entries with common prefix length %d - %e",c,l)}}}catch(a){this.log.error("failed to refresh entries with common prefix length - %e",a)}})).catch(s=>{this.log.error("failed to refresh table - %e",s)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(s=>{this.log.error("failed to set refresh timeout - %e",s)})}async _refreshCommonPrefixLength(e,t,n,o){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let s=this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,s,this.routingTable.size);let i=me([o?.signal,AbortSignal.timeout(this.refreshQueryTimeout)]);try{let a=await Rp(this.peerRouting.getClosestPeers(s.toMultihash().bytes,{signal:i}));this.log(`found ${a} peers that were close to imaginary peer %p`,s),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,s,this.routingTable.size)}finally{i.clear()}}_getTrackedCommonPrefixLengthsForRefresh(e){e>Op&&(e=Op);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}_generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=crypto.getRandomValues(new Uint8Array(2)),n=(t[1]<<8)+t[0],o=this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),s=ve(o);return Xe(s)}_makePeerId(e,t,n){if(n>Op)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Op}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=nC[c],u=new ArrayBuffer(34),d=new DataView(u,0,u.byteLength);return d.setUint8(0,pt.code),d.setUint8(1,32),d.setUint32(2,l,!1),new Uint8Array(d.buffer,d.byteOffset,d.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=Br(this.routingTable.kb.localPeer.kadId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Bp=class{peerId;providers;peerStore;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.peerId=e.peerId,this.providers=t.providers,this.peerStore=e.peerStore}async handle(e,t){if(t.key==null||t.key.length===0)throw new oe("Missing key");let n;try{n=ie.decode(t.key)}catch{throw new oe("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us, %p to store provider record for for %c",e,this.peerId,n),await Promise.all(t.providers.map(async o=>{let s=ve(o.id),i=Xe(s),a=o.multiaddrs.map(c=>V(c));if(!e.equals(i)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,a),await this.providers.addProvider(n,i),await this.peerStore.merge(i,{multiaddrs:a})}))}};var Up=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers close to %b",e,t.key);try{if(t.key==null)throw new oe("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getClosestPeersOffline(t.key,{exclude:[e,this.peerId]});Z(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(421))});let o={type:we.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toMultihash().bytes,multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0?this.log("could not find any peers closer to %b for %p",t.key,e):this.log("found %d peers close to %b for %p",o.closer.length,t.key,e),o}catch(n){throw this.log("error during finding peers closer to %b for %p - %e",t.key,e,n),n}}};var Fp=class{peerId;peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerId=e.peerId,this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new oe("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=ie.decode(t.key)}catch{throw new oe("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([Qs(Vr(await this.providers.getProviders(n),async a=>{let c=await this.peerStore.get(a);return{id:c.id,multiaddrs:c.addresses.map(({multiaddr:u})=>u)}})),this.peerRouting.getClosestPeersOffline(t.key)]),i={type:we.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:s.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)})),providers:o.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))};return this.log("got %s providers %s closerPeers",i.providers.length,i.closer.length),i}async _getAddresses(e){return[]}};var $p=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new oe("Invalid key");let o={type:we.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(jA(n)){this.log("is public key");let a=YA(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new Pe("No public key found in key book");c=ct(l.id.publicKey)}catch(l){if(l.name!=="NotFoundError")throw l}if(c!=null)return this.log("returning found public key"),o.record=new St(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getClosestPeersOffline(n)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=ts(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(s){if(s.name==="NotFoundError")return;throw s}let o=St.deserialize(n);if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>hp){await this.datastore.delete(t);return}return o}};var Vp=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Kp=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null)throw this.log.error("empty record from %p",e),new oe(`Empty record from: ${e}`);try{let o=St.deserialize(t.record);await uc(this.validators,o),o.timeReceived=new Date;let s=ts(this.datastorePrefix,o.key);return await this.components.datastore.put(s,o.serialize().subarray()),this.log("accepted put for key %b under %k",n,s),t}catch(o){throw this.log("failed to accept put for key %b - %e",n,o),o}}};var qp=class{handlers;log;metrics;incomingMessageTimeout;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`),rpcTime:e.metrics?.registerMetricGroup(`${t.metricsPrefix}_inbound_rpc_time_seconds`,{label:"operation"})},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.incomingMessageTimeout=t.incomingMessageTimeout??1e4,this.handlers={[we.GET_VALUE.toString()]:new $p(e,t),[we.PUT_VALUE.toString()]:new Kp(e,t),[we.FIND_NODE.toString()]:new Up(e,t),[we.ADD_PROVIDER.toString()]:new Bp(e,t),[we.GET_PROVIDERS.toString()]:new Fp(e,t),[we.PING.toString()]:new Vp(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null)throw new oe(`No handler found for message type: ${t.type}`);try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch(o){throw this.metrics.errors?.increment({[t.type]:!0}),o}}async onIncomingStream(e,t){let n=()=>{e.abort(new co)},o=AbortSignal.timeout(this.incomingMessageTimeout);o.addEventListener("abort",n);let s=ke(e).pb(Jo);for(;;){if(e.readStatus!=="readable"){await e.close({signal:o});break}let i=await s.read({signal:o}),a=this.metrics?.rpcTime?.timer(i.type.toString()),c=this.metrics?.rpcTime?.timer(i.type.toString()),l=!1;try{this.log("incoming %s from %p",i.type,t.remotePeer);let u=await this.handleMessage(t.remotePeer,i);u!=null&&await s.write(u,{signal:o})}catch(u){l=!0,c?.(),this.log.error("error handling incoming message - %e",u),e.abort(u);return}finally{l||a?.()}o.removeEventListener("abort",n),o=AbortSignal.timeout(this.incomingMessageTimeout),o.addEventListener("abort",n)}}};var Hp=class extends se{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var X5=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await an(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers.map(o=>({...o,routing:"kad-dht"})))}async put(e,t,n){await an(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new Pe("Could not find value for key")}},Z5=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new Pe("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},C$=32,I$=64,zp=class extends se{k;a;d;protocol;routingTable;providers;network;peerRouting;validators;selectors;components;log;running;clientMode;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;onPeerConnectTimeout;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",o=t.datastorePrefix??"/dht",s=t.metricsPrefix??"libp2p_kad_dht",i={queries:e.metrics?.registerMetricGroup(`${s}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${s}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${s}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${s}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.k=t.kBucketSize??od,this.a=t.alpha??Qo,this.d=t.disjointPaths??this.a,this.protocol=t.protocol??TA,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??C$,this.maxOutboundStreams=t.maxOutboundStreams??I$,this.peerInfoMapper=t.peerInfoMapper??GA,this.onPeerConnectTimeout=t.onPeerConnectTimeout??DA,this.providers=new Tp(e,{...t.providers,logPrefix:n,datastorePrefix:o}),this.validators={...zA,...t.validators},this.selectors={...HA,...t.selectors},this.network=new Cp(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:s,timeout:t.networkDialTimeout}),this.routingTable=new Np(e,{kBucketSize:this.k,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:s,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network,routingTableUpdateQueueConcurrency:t.routingTableUpdateQueueConcurrency??Math.max(1,Math.min(this.a*2,16)),routingTableUpdateMaxQueueSize:t.routingTableUpdateMaxQueueSize});let a=He();t.allowQueryWithZeroPeers===!0&&a.resolve(),this.queryManager=new _p(e,{disjointPaths:this.d,alpha:this.a,logPrefix:n,metricsPrefix:s,initialQuerySelfHasRun:a,routingTable:this.routingTable,allowQueryWithZeroPeers:t.allowQueryWithZeroPeers}),this.peerRouting=new Ip(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new Sp(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n,datastorePrefix:o}),this.contentRouting=new Ap(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new Mp(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new qp(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:s,datastorePrefix:o,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new Hp(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new Lp(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:a,operationMetrics:i}),this.reprovider=new Pp(e,{...t.reprovide,logPrefix:n,metricsPrefix:s,datastorePrefix:o,contentRouting:this.contentRouting,operationMetrics:i}),this.network.addEventListener("peer",c=>{let l=c.detail;this.onPeerConnect(l).catch(u=>{this.log.error("could not add %p to routing table - %e",l.id,u)}),this.dispatchEvent(new CustomEvent("peer",{detail:l}))}),this.topologyListener.addEventListener("peer",c=>{let l=c.detail;Promise.resolve().then(async()=>{let u=await this.components.peerStore.get(l),d={id:l,multiaddrs:u.addresses.map(({multiaddr:f})=>f),protocols:u.protocols};await this.onPeerConnect(d)}).catch(u=>{this.log.error("could not add %p to routing table - %e",l,u)})}),this.dhtPeerRouting=new Z5(this),this.dhtContentRouting=new X5(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",c=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let l=c.detail.peer.addresses.some(({multiaddr:d})=>!Ze(d)&&!dt.exactMatch(d)),u=this.getMode();l&&u==="client"?await this.setMode("server"):u==="server"&&!l&&await this.setMode("client")}).catch(l=>{this.log.error("error setting dht server mode - %e",l)})}),this.get=pi(this.get.bind(this),i,"GET_VALUE"),this.findProviders=pi(this.findProviders.bind(this),i,"FIND_PROVIDERS"),this.findPeer=pi(this.findPeer.bind(this),i,"FIND_PEER"),this.getClosestPeers=pi(this.getClosestPeers.bind(this),i,"GET_CLOSEST_PEERS"),this.provide=pi(this.provide.bind(this),i,"PROVIDE"),this.put=pi(this.put.bind(this),i,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[ue]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery","@libp2p/kad-dht"];[rr]=["@libp2p/identify","@libp2p/ping"];get[is](){return this.dhtContentRouting}get[ds](){return this.dhtPeerRouting}get[us](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id,e.multiaddrs),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}this.routingTable.queueRoutingTableUpdate(e.id,{activeTimeout:this.onPeerConnectTimeout})}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e,t){if(e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol,t),e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{signal:t?.signal,maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running||(this.running=!0,await this.setMode(this.clientMode?"client":"server",{force:!0}),await Ir(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await Ir(this.querySelf))}async stop(){this.running=!1,await Xr(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async cancelReprovide(e,t){await this.providers.removeProvider(e,this.components.peerId,t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(e){this.routingTableRefresh.refreshTable(!0,e)}};var oC;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER",r[r.PATH_ENDED=8]="PATH_ENDED"})(oC||(oC={}));function sC(r={}){return e=>new zp(e,r)}var xe;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(xe||(xe={}));var sd=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),J5=Object.freeze({NEW_STREAM:xe.NEW_STREAM,MESSAGE:xe.MESSAGE_INITIATOR,CLOSE:xe.CLOSE_INITIATOR,RESET:xe.RESET_INITIATOR}),iC=Object.freeze({MESSAGE:xe.MESSAGE_RECEIVER,CLOSE:xe.CLOSE_RECEIVER,RESET:xe.RESET_RECEIVER});var id=1<<20,e8=4<<20,Gp=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=id,t=e8){this._buffer=new W,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw new oe("Unprocessed message queue size too large!");let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.name==="InvalidMessageError")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===xe.NEW_STREAM||o===xe.MESSAGE_INITIATOR||o===xe.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=cC(e),{value:o,offset:s}=cC(e,n),i=t&7;if(sd[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw new oe("Message size too large");return{id:t>>3,type:i,offset:n+s,length:o}}},T$=128,aC=127;function cC(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&aC)<<n:(s&aC)*Math.pow(2,n),n+=7}while(s>=T$);return e=o-e,{value:t,offset:e}}var t8=10*1024,r8=class{_pool;_poolOffset;constructor(){this._pool=Ke(t8),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;zt(e.id<<3|e.type,n,o),o+=Re(e.id<<3|e.type),(e.type===xe.NEW_STREAM||e.type===xe.MESSAGE_INITIATOR||e.type===xe.MESSAGE_RECEIVER)&&e.data!=null?(zt(e.data.length,n,o),o+=Re(e.data.length)):(zt(0,n,o),o+=Re(0));let s=n.subarray(this._poolOffset,o);t8-o<100?(this._pool=Ke(t8),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===xe.NEW_STREAM||e.type===xe.MESSAGE_INITIATOR||e.type===xe.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},_$=new r8;function ad(r){let e=new W;return _$.write(r,e),e}var n8=class extends Lo{streamId;types;maxDataSize;muxer;constructor(e){super(e),this.types=e.direction==="outbound"?J5:iC,this.maxDataSize=e.maxDataSize,this.muxer=e.muxer,this.streamId=parseInt(this.id.substring(1)),e.direction==="outbound"&&queueMicrotask(()=>{this.muxer.send(ad({id:this.streamId,type:J5.NEW_STREAM,data:new W(O(this.id))}))})}sendData(e){let t=new W,n=e.byteLength;for(;e.byteLength>0;){let o=Math.min(e.byteLength,this.maxDataSize),s=e.sublist(0,o);e=e.sublist(o),t.append(ad({id:this.streamId,type:this.types.MESSAGE,data:s}))}return{sentBytes:n,canSendMore:this.muxer.send(t)}}sendReset(){return this.muxer.send(ad({id:this.streamId,type:this.types.RESET}))}async sendCloseWrite(e){this.muxer.send(ad({id:this.streamId,type:this.types.CLOSE})),e?.signal?.throwIfAborted()}async sendCloseRead(e){e?.signal?.throwIfAborted()}sendPause(){}sendResume(){}};function lC(r){let{id:e,muxer:t,direction:n,maxMsgSize:o=id}=r;return new n8({...r,id:n==="outbound"?`i${e}`:`r${e}`,direction:n,maxDataSize:o,muxer:t,log:r.log.newScope(`${n}:${e}`),protocol:""})}var R$=5;function L$(r){let e={...r,type:`${sd[r.type]} (${r.type})`};return r.type===xe.NEW_STREAM&&(e.data=B(r.data.subarray())),(r.type===xe.MESSAGE_INITIATOR||r.type===xe.MESSAGE_RECEIVER)&&(e.data=B(r.data.subarray(),"base16")),e}var Wp=class extends Ro{_streamId;rateLimiter;maxMessageSize;maxUnprocessedMessageQueueSize;decoder;constructor(e,t){super(e,{...t,protocol:"/mplex/6.7.0",name:"mplex"}),this._streamId=0,this.maxMessageSize=t.maxMessageSize??id,this.maxUnprocessedMessageQueueSize=t.maxUnprocessedMessageQueueSize??e8,this.decoder=new Gp(this.maxMessageSize,this.maxUnprocessedMessageQueueSize),this.rateLimiter=new sa({points:t.disconnectThreshold??R$,duration:1})}onData(e){for(let t of this.decoder.write(e))this.handleMessage(t)}onCreateStream(e){if(this.status!=="open")throw new Sr("Muxer already closed");let t=this._streamId++;return this._newStream(t,"outbound",e)}_newStream(e,t,n){return this.log("new %s stream %s",t,e),lC({...n,id:e,direction:t,maxMsgSize:this.maxMessageSize,log:this.log,muxer:this})}handleMessage(e){if(this.log.enabled&&this.log.trace("incoming message",L$(e)),e.type===xe.NEW_STREAM){try{this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}let o=this._newStream(e.id,"inbound",this.streamOptions);this.onRemoteStream(o);return}let t=`${(e.type&1)===1?"i":"r"}${e.id}`,n=this.streams.find(o=>o.id===t);if(n==null){this.log("missing stream %s for message type %s",t,sd[e.type]);try{this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}try{switch(e.type){case xe.MESSAGE_INITIATOR:case xe.MESSAGE_RECEIVER:n.onData(e.data);break;case xe.CLOSE_INITIATOR:case xe.CLOSE_RECEIVER:n.onRemoteCloseWrite();break;case xe.RESET_INITIATOR:case xe.RESET_RECEIVER:n.onRemoteReset();break;default:this.log("unknown message type")}}catch(o){this.log.error("error while processing message - %e",o),n.abort(o)}}};var o8=class{protocol="/mplex/6.7.0";_init;constructor(e={}){this._init=e}[Symbol.toStringTag]="@libp2p/mplex";[ue]=["@libp2p/stream-multiplexing"];createStreamMuxer(e){return new Wp(e,{...this._init})}};function uC(r={}){return()=>new o8(r)}var P$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function D$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=P$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function dC(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=D$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var fC="1.0.0",hC="ping",pC="ipfs";var jp=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnLimitedConnection;constructor(e,t={}){this.components=e,this.started=!1,this.protocol=`/${t.protocolPrefix??pC}/${hC}/${fC}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnLimitedConnection=t.runOnLimitedConnection??!0,this.handlePing=this.handlePing.bind(this)}[Symbol.toStringTag]="@libp2p/ping";[ue]=["@libp2p/ping"];async start(){await this.components.registrar.handle(this.protocol,this.handlePing,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}async handlePing(e,t){let n=e.log.newScope("ping");n.trace("ping from %p",t.remotePeer);let o=AbortSignal.timeout(this.timeout);o.addEventListener("abort",()=>{e.abort(new co("Ping timed out"))});let s=Date.now();for await(let i of e){if(e.status!=="open"){n("stream status changed to %s",e.status);break}e.send(i)||(n("waiting for stream to drain"),await dC(e,"drain",{rejectionEvents:["close"],signal:o}),n("stream drained"))}n("ping from %p complete in %dms",t.remotePeer,Date.now()-s),await e.close({signal:o})}async ping(e,t={}){let n=crypto.getRandomValues(new Uint8Array(32)),o=await this.components.connectionManager.openStream(e,this.protocol,{runOnLimitedConnection:this.runOnLimitedConnection,...t}),s=o.log.newScope("ping");try{let i=Date.now(),a=Promise.withResolvers(),c=new W,l=u=>{if(c.append(u.data),c.byteLength===32){o.removeEventListener("message",l);let d=Date.now()-i;Promise.all([o.closeRead(t)]).then(()=>{if(Z(n,c.subarray()))a.resolve(d);else throw new cs(`Received wrong ping ack after ${d}ms`)}).catch(f=>{o.abort(f),a.reject(f)})}};return o.addEventListener("message",l),o.send(n),await o.close(t),await De(a.promise,t.signal)}catch(i){throw s.error("error while pinging %o - %e",e,i),o?.abort(i),i}finally{o?.close()}}};function gC(r={}){return e=>new jp(e,r)}var kt;(function(r){let e;(function(a){a.FIN="FIN",a.STOP_SENDING="STOP_SENDING",a.RESET="RESET",a.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(a){a[a.FIN=0]="FIN",a[a.STOP_SENDING=1]="STOP_SENDING",a[a.RESET=2]="RESET",a[a.FIN_ACK=3]="FIN_ACK"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.flag!=null&&(c.uint32(8),r.Flag.codec().encode(a.flag,c)),a.message!=null&&(c.uint32(18),c.bytes(a.message)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.flag=r.Flag.codec().decode(a);break}case 2:{u.message=a.bytes();break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.flag`,value:r.Flag.codec().decode(a)};break}case 2:{yield{field:`${l}.message`,value:a.bytes()};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(kt||(kt={}));var yC=["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478","stun:stun.cloudflare.com:3478","stun:stun.services.mozilla.com:3478"],s8=Array.from("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"),bC="libp2p+webrtc+v1/",wC=2*1024*1024,dc=16*1024;function M$(r=dc){let e=Re(r-Re(r)),t=1+Re(Object.keys(kt.Flag).length-1),n=1,o=r-e-t-n,s=Re(o);return e+t+n+s}var xC=M$();var EC=1e4,i8="/webrtc",cd="/webrtc-signaling/0.0.1";var B$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function U$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=B$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function ao(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=U$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var a8=class extends Lo{channel;incomingData;maxBufferedAmount;receivedFinAck;finAckTimeout;constructor(e){super({...e,maxMessageSize:(e.maxMessageSize??dc)-xC}),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=Bt(),this.maxBufferedAmount=e.maxBufferedAmount??wC,this.finAckTimeout=e.finAckTimeout??EC,this.channel.onclose=()=>{this.log.trace("received datachannel close event"),this.onRemoteCloseWrite(),this.onTransportClosed()},this.channel.onerror=n=>{let o=n.error;this.log.trace("received datachannel error event - %e",o),this.abort(o)},this.channel.onmessage=async n=>{this.log("incoming message %d bytes",n.data.byteLength);let{data:o}=n;o===null||o.byteLength===0||this.incomingData.push(new Uint8Array(o,0,o.byteLength))},this.channel.bufferedAmountLowThreshold=0,this.channel.onbufferedamountlow=()=>{this.writableNeedsDrain&&this.safeDispatchEvent("drain")},Promise.resolve().then(async()=>{for await(let n of xl(this.incomingData))this.processIncomingProtobuf(n)}).catch(n=>{this.log.error("error processing incoming data channel messages - %e",n)});let t=()=>{this.channel.readyState==="open"&&(this.log.trace("stream closed, closing underlying datachannel"),this.channel.close())};this.addEventListener("close",t),this.channel.readyState!=="open"&&(this.log('channel ready state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),ao(this.channel,"open",{rejectionEvents:["close","error"]}).then(()=>{this.log('channel ready state is now "%s", dispatching drain',this.channel.readyState),this.safeDispatchEvent("drain")}).catch(n=>{this.abort(n.error??n)}))}sendNewStream(){}_sendMessage(e){if(this.channel.readyState!=="open")throw new jr(`Invalid datachannel state - ${this.channel.readyState}`);this.log.trace('sending message, channel state "%s"',this.channel.readyState);try{for(let t of e)this.channel.send(ae(t))}catch(t){this.log.error("error sending datachannel message - %e",t),this.abort(t)}}sendData(e){return this.channel.readyState!=="open"?{sentBytes:0,canSendMore:!1}:(this._sendMessage(js.single(kt.encode({message:e.subarray()}))),{sentBytes:e.byteLength,canSendMore:this.channel.bufferedAmount<this.maxBufferedAmount})}sendReset(e){try{this.log.error("sending reset - %e",e),this._sendFlag(kt.Flag.RESET),this.receivedFinAck?.reject(e)}catch(t){this.log.error("failed to send reset - %e",t)}}async sendCloseWrite(e){this._sendFlag(kt.Flag.FIN),e?.signal?.throwIfAborted(),this.receivedFinAck=Promise.withResolvers();let t=e?.signal??AbortSignal.timeout(this.finAckTimeout),n=[ao(this.channel,"close",{signal:t}),ao(this.channel,"error",{signal:t})];await Promise.any([De(this.receivedFinAck.promise,t),...n]).finally(()=>{n.forEach(o=>o.cancel())})}async sendCloseRead(e){this._sendFlag(kt.Flag.STOP_SENDING),e?.signal?.throwIfAborted()}processIncomingProtobuf(e){let t=kt.decode(e);t.message!=null&&(this.readStatus==="readable"||this.readStatus==="paused")&&this.onData(new W(t.message)),t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===kt.Flag.FIN&&(this._sendFlag(kt.Flag.FIN_ACK),this.onRemoteCloseWrite()),t.flag===kt.Flag.RESET&&(this.receivedFinAck?.reject(new bi("The stream was reset")),this.onRemoteReset()),t.flag===kt.Flag.STOP_SENDING&&this.onRemoteCloseRead(),t.flag===kt.Flag.FIN_ACK&&this.receivedFinAck?.resolve())}_sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',e.toString(),this.channel.readyState),!1;this.log.trace("sending flag %s",e.toString());let t=kt.encode({flag:e}),n=js.single(t);try{return this._sendMessage(n),!0}catch(o){this.log.error("could not send flag %s - %e",e.toString(),o)}return!1}sendPause(){}sendResume(){}};function ld(r){let{channel:e,direction:t,isHandshake:n}=r;return new a8({...r,id:`${e.id}`,log:r.log.newScope(`${n===!0?"handshake":t}:${e.id}`),protocol:""})}var ns=class{protocol;peerConnection;metrics;dataChannelOptions;earlyDataChannels;constructor(e){this.onEarlyDataChannel=this.onEarlyDataChannel.bind(this),this.peerConnection=e.peerConnection,this.metrics=e.metrics,this.protocol=e.protocol??i8,this.dataChannelOptions=e.dataChannelOptions??{},this.peerConnection.addEventListener("datachannel",this.onEarlyDataChannel),this.earlyDataChannels=[]}onEarlyDataChannel(e){this.earlyDataChannels.push(e.channel)}createStreamMuxer(e){return this.peerConnection.removeEventListener("datachannel",this.onEarlyDataChannel),new c8(e,{peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,protocol:this.protocol,earlyDataChannels:this.earlyDataChannels})}},c8=class extends Ro{peerConnection;dataChannelOptions;constructor(e,t){super(e,{...t,name:"muxer"}),this.peerConnection=t.peerConnection,this.protocol=t.protocol??i8,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{this.onDataChannel(n)},queueMicrotask(()=>{if(this.status!=="open"){t.earlyDataChannels.forEach(n=>{n.close()});return}t.earlyDataChannels.forEach(n=>{this.onDataChannel(n)})})}onDataChannel(e){if(this.log("incoming datachannel with channel id %d, protocol %s and status %s",e.id,e.protocol,e.readyState),e.label==="init"){this.log.trace("closing init channel %d",e.id),e.close();return}let t=ld({...this.streamOptions,...this.dataChannelOptions,channel:e,direction:"inbound",log:this.log});this.onRemoteStream(t)}async onCreateStream(e){let t=this.peerConnection.createDataChannel("",{});return this.log("open channel %d for protocol %s",t.id,e?.protocol),ld({...e,...this.dataChannelOptions,channel:t,direction:"outbound",log:this.log})}onData(){}};var l8=class extends _o{peerConnection;constructor(e){super(e),this.peerConnection=e.peerConnection;let t=e.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change %s initial state %s",this.peerConnection.connectionState,t),(this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.onTransportClosed(),this.peerConnection.close())}}sendData(e){return{sentBytes:e.byteLength,canSendMore:!0}}async sendClose(e){this.peerConnection.close(),e?.signal?.throwIfAborted()}sendReset(){this.peerConnection.close()}sendPause(){}sendResume(){}},ud=r=>new l8(r);async function u8(r){return r=r??{},typeof r=="function"&&(r=await r()),r.iceServers=r.iceServers??yC.map(e=>({urls:[e]})),r}var vC=(r=32)=>bC+[...Array(r)].map(()=>s8.at(Math.floor(Math.random()*s8.length))).join("");var Yp=globalThis.RTCPeerConnection,Qp=globalThis.RTCSessionDescription,SC=globalThis.RTCIceCandidate;var os=class extends Error{constructor(e){super(`WebRTC transport error: ${e}`),this.name="WebRTCTransportError"}},Er=class extends os{constructor(e="SDP handshake failed"){super(e),this.name="SDPHandshakeFailedError"}};var Xp=class extends os{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`),this.name="WebRTC/InvalidFingerprintError"}};var Zp=class extends os{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`),this.name="WebRTC/UnimplementedError"}},Jp=class extends os{constructor(e){super(`unsupported hash algorithm code: ${e} please see the codes at https://github.com/multiformats/multicodec/blob/master/table.csv `),this.name="WebRTC/UnsupportedHashAlgorithmError"}};var er;(function(r){let e;(function(a){a.SDP_OFFER="SDP_OFFER",a.SDP_ANSWER="SDP_ANSWER",a.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.SDP_OFFER=0]="SDP_OFFER",a[a.SDP_ANSWER=1]="SDP_ANSWER",a[a.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.data!=null&&(c.uint32(18),c.string(a.data)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{u.data=a.string();break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{yield{field:`${l}.data`,value:a.string()};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(er||(er={}));var e2=async(r,e,t)=>{try{let n=Promise.withResolvers();for(F$(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null){t.signal?.throwIfAborted();break}if(o.type!==er.Type.ICE_CANDIDATE)throw new oe("ICE candidate message expected");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.onProgress?.(new X("webrtc:end-of-ice-candidates")),t.log.trace("end-of-candidates received");continue}let i=new SC(s);t.log.trace("%s received new ICE candidate %o",t.direction,s);try{t.onProgress?.(new X("webrtc:add-ice-candidate",i.candidate)),await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received %o - %e",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate - %e",t.direction,n),t.signal?.aborted===!0&&r.connectionState!=="connected")throw n}};function F$(r,e){if(r.connectionState==="connected"){e.resolve();return}r.onconnectionstatechange=t=>{switch(r.connectionState){case"connected":e.resolve();break;case"failed":case"closed":e.reject(new yi(`RTCPeerConnection connection state became "${r.connectionState}"`));break;default:break}}}function t2(r){let e;for(let t of r.getComponents())t.name==="p2p"&&(e=Oe(t.value??""));if(e==null)throw new Yr("Remote peerId must be present in multiaddr");return e}async function AC({rtcConfiguration:r,dataChannel:e,signal:t,metrics:n,multiaddr:o,connectionManager:s,transportManager:i,log:a,logger:c,onProgress:l}){let{circuitAddress:u,targetPeer:d}=CC(o);n?.dialerEvents.increment({open:!0}),a.trace("dialing circuit address: %a",u);let f=s.getConnections(d),h;f.length===0?(l?.(new X("webrtc:dial-relay")),h=await i.dial(u,{signal:t,onProgress:l})):(l?.(new X("webrtc:reuse-relay-connection")),h=f[0]),l?.(new X("webrtc:open-signaling-stream"));let p=await h.newStream(cd,{signal:t,runOnLimitedConnection:!0}),y=ke(p).pb(er),g=new Yp(r);g.addEventListener("connectionstatechange",()=>{g.connectionState==="closed"&&g.close()});let m=new ns({peerConnection:g,dataChannelOptions:e});try{let b=g.createDataChannel("init");g.onicecandidate=({candidate:A})=>{if(g.connectionState==="connected"){a.trace("ignore new ice candidate as peer connection is already connected");return}if(A==null||A?.candidate===""){a.trace("initiator detected end of ICE candidates");return}let S=JSON.stringify(A?.toJSON()??null);a.trace("initiator sending ICE candidate %o",A),y.write({type:er.Type.ICE_CANDIDATE,data:S},{signal:t}).catch(I=>{a.error("error sending ICE candidate - %e",I)})},g.onicecandidateerror=A=>{a.error("initiator ICE candidate error",A)};let w=await g.createOffer().catch(A=>{throw a.error("could not execute createOffer - %e",A),new Er("Failed to set createOffer")});a.trace("initiator send SDP offer %s",w.sdp),l?.(new X("webrtc:send-sdp-offer")),await y.write({type:er.Type.SDP_OFFER,data:w.sdp},{signal:t}),await g.setLocalDescription(w).catch(A=>{throw a.error("could not execute setLocalDescription - %e",A),new Er("Failed to set localDescription")}),l?.(new X("webrtc:read-sdp-answer")),a.trace("initiator read SDP answer");let x=await y.read({signal:t});if(x.type!==er.Type.SDP_ANSWER)throw new Er("Remote should send an SDP answer");a.trace("initiator received SDP answer %s",x.data);let v=new Qp({type:"answer",sdp:x.data});return await g.setRemoteDescription(v).catch(A=>{throw a.error("could not execute setRemoteDescription - %e",A),new Er("Failed to set remoteDescription")}),a.trace("initiator read candidates until connected"),l?.(new X("webrtc:read-ice-candidates")),await e2(g,y,{direction:"initiator",signal:t,log:a,onProgress:l}),a.trace("initiator connected"),b.readyState!=="open"&&(a.trace("wait for init channel to open"),await ao(b,"open",{signal:t})),a.trace("closing init channel"),b.close(),a.trace("waiting for init channel to close"),await ao(b,"close",{signal:t}),l?.(new X("webrtc:close-signaling-stream")),a.trace("closing signaling channel"),await p.close({signal:t}),a.trace("initiator connected to remote address %s",o),{remoteAddress:o,peerConnection:g,muxerFactory:m}}catch(b){throw a.error("outgoing signaling error - %e",b),g.close(),p.abort(b),b}finally{g.onicecandidate=null,g.onicecandidateerror=null}}var IC=Ce(ta.matchers[0],Ae(290)),r2=class r extends se{transportManager;shutdownController;events;constructor(e,t){super(),this.transportManager=e.transportManager,this.events=e.events,this.shutdownController=t.shutdownController,this.onTransportListening=this.onTransportListening.bind(this)}async listen(){this.events.addEventListener("transport:listening",this.onTransportListening)}onTransportListening(e){e.detail.getAddrs().filter(n=>IC.exactMatch(n)).map(n=>n.encapsulate("/webrtc")).length>0&&this.safeDispatchEvent("listening")}getAddrs(){return this.transportManager.getListeners().filter(e=>!(e instanceof r)).map(e=>e.getAddrs().filter(t=>IC.exactMatch(t)).map(t=>t.encapsulate("/webrtc"))).flat()}updateAnnounceAddrs(){}async close(){this.events.removeEventListener("transport:listening",this.onTransportListening),this.shutdownController.abort(),queueMicrotask(()=>{this.safeDispatchEvent("close")})}};async function TC(r,e,{peerConnection:t,signal:n,log:o}){o.trace("new inbound signaling stream");let s=ke(r).pb(er);try{t.onicecandidate=({candidate:d})=>{if(t.connectionState==="connected"){o.trace("ignore new ice candidate as peer connection is already connected");return}if(d==null||d?.candidate===""){o.trace("recipient detected end of ICE candidates");return}let f=JSON.stringify(d?.toJSON()??null);o.trace("recipient sending ICE candidate %s",f),s.write({type:er.Type.ICE_CANDIDATE,data:f},{signal:n}).catch(h=>{o.error("error sending ICE candidate - %e",h)})},o.trace("recipient read SDP offer");let c=await s.read({signal:n});if(c.type!==er.Type.SDP_OFFER)throw new Er(`expected message type SDP_OFFER, received: ${c.type??"undefined"} `);o.trace("recipient received SDP offer %s",c.data);let l=new Qp({type:"offer",sdp:c.data});await t.setRemoteDescription(l).catch(d=>{throw o.error("could not execute setRemoteDescription - %e",d),new Er("Failed to set remoteDescription")});let u=await t.createAnswer().catch(d=>{throw o.error("could not execute createAnswer - %e",d),new Er("Failed to create answer")});o.trace("recipient send SDP answer %s",u.sdp),await s.write({type:er.Type.SDP_ANSWER,data:u.sdp},{signal:n}),await t.setLocalDescription(u).catch(d=>{throw o.error("could not execute setLocalDescription - %e",d),new Er("Failed to set localDescription")}),o.trace("recipient read candidates until connected"),await e2(t,s,{direction:"recipient",signal:n,log:o})}catch(c){if(t.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a - %e",e.remoteAddr,c),t.close(),c;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",e.remoteAddr,c)}let i=t2(e.remoteAddr),a=V(`/webrtc/p2p/${i}`);return o.trace("recipient connected to remote address %s",a),{remoteAddress:a,remotePeer:i}}var n2=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,this.shutdownController.signal,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}[fo]=!0;[Symbol.toStringTag]="@libp2p/webrtc";[ue]=["@libp2p/transport"];[rr]=["@libp2p/identify","@libp2p/circuit-relay-v2-transport"];isStarted(){return this._started}async start(){await this.components.registrar.handle(cd,(e,t)=>{let n=this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);this._onProtocol(e,t,n).catch(o=>{this.log.error("failed to handle incoming connect from %p - %e",t.remotePeer,o)}).finally(()=>{n.clear()})},{runOnLimitedConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(cd),this._started=!1}createListener(e){return new r2(this.components,{shutdownController:this.shutdownController})}listenFilter(e){return e.filter(gl.exactMatch)}dialFilter(e){return this.listenFilter(e)}async dial(e,t){this.log.trace("dialing address: %a",e);let{remoteAddress:n,peerConnection:o,muxerFactory:s}=await AC({rtcConfiguration:await u8(this.init.rtcConfiguration),dataChannel:this.init.dataChannel,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log,logger:this.components.logger,onProgress:t.onProgress}),i=ud({peerConnection:o,remoteAddr:n,metrics:this.metrics?.dialerEvents,direction:"outbound",log:this.components.logger.forComponent("libp2p:webrtc:connection")}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,remotePeer:t2(e),muxerFactory:s,onProgress:t.onProgress,signal:t.signal});return this._closeOnShutdown(o,i),a}async _onProtocol(e,t,n){let o=new Yp(await u8(this.init.rtcConfiguration));o.addEventListener("connectionstatechange",()=>{o.connectionState==="closed"&&o.close()});let s=new ns({peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i,remotePeer:a}=await TC(e,t,{peerConnection:o,signal:n,log:this.log});await e.close({signal:n});let c=ud({peerConnection:o,remoteAddr:i,metrics:this.metrics?.listenerEvents,direction:"inbound",log:this.components.logger.forComponent("libp2p:webrtc:connection")});await this.components.upgrader.upgradeInbound(c,{skipEncryption:!0,skipProtection:!0,remotePeer:a,muxerFactory:s,signal:n}),this._closeOnShutdown(o,c)}catch(i){throw this.log.error("incoming signaling error - %e",i),o.close(),e.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection - %e",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function CC(r){let e=r.getComponents().filter(({name:n})=>n==="p2p").map(({value:n})=>n).pop();if(e==null)throw new C("Destination peer id was missing");return{circuitAddress:V(r.getComponents().filter(({name:n})=>n!=="webrtc")),targetPeer:Oe(e)}}var d8=Object.values(gs).map(r=>r.decoder).reduce((r,e)=>r.or(e)),$$=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function _C(r){return r?.match($$)?.groups?.fingerprint}function f8(r){let t=r.getComponents().find(n=>n.code===466)?.value;if(t===void 0||t==="")throw new C(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function V$(r){return Ue.decode(d8.decode(r))}function K$(r){let e=V$(f8(r)),t=q$(e.code),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw new Xp(n,r.toString());return`${t} ${o.join(":").toUpperCase()}`}function RC(r){let e=r.split(":").map(o=>parseInt(o,16)),t=Uint8Array.from(e),n=Nt(pt.code,t);return V(`/certhash/${Sc.encode(n.bytes)}`)}function q$(r){switch(r){case 17:return"sha-1";case 18:return"sha-256";case 19:return"sha-512";default:throw new Jp(r)}}function LC(r,e){let{host:t,port:n,type:o}=Y(r);if(o!=="ip4"&&o!=="ip6")throw new C(`Multiaddr ${r} was not an IPv4 or IPv6 address`);let s=K$(r);return{type:"answer",sdp:`v=0
|
|
54
|
+
`)),n.close())}})}function m5(r,e){return e.set("Content-Length",`${r.length}`),e.set("Content-Type",'text/plain; charset="UTF-8"'),new ReadableStream({start(t){t.enqueue(Er(r)),t.close()}})}function _S(r,e){if(r!=null){if(typeof r=="string")return m5(r,e);if(r instanceof Blob)return AS(r,e);if(CU(r))return CS(r,e);if(r instanceof URLSearchParams)return m5(r.toString(),e);if(r instanceof ReadableStream)return TS(r,e);if(r instanceof FormData)return IS(r,e);throw new Error("Unsupported body type")}}function CU(r){return r==null?!1:r.byteLength!=null}async function RS(r,e,t){let n=new Headers(t.headers),o=n.get("host")??e.hostname;n.set("host",o),n.get("user-agent")==null&&n.set("user-agent","libp2p/fetch");let s=_S(t.body,n),i=[`${t?.method?.toUpperCase()??"GET"} ${e.pathname??"/"} HTTP/1.1`,...K0(n),"",""];r.send(Er(i.join(`\r
|
|
55
|
+
`)))||await r.onDrain({signal:t.signal??void 0}),s!=null&&(t.log("request sending body"),await IU(r,s,t))}async function IU(r,e,t){let n=e.getReader();for(;;){let{done:o,value:s}=await n.read();if(s!=null&&(t.log("request send %d bytes",s.byteLength),r.send(s)||await r.onDrain({signal:t.signal??void 0})),o){t.log("request finished sending body");break}}}async function LS(r,e,t={}){let n=r.log.newScope("http-fetch");e=typeof e=="string"?new URL(e):e;let[o]=await Promise.all([Jv(r,e,{...t,log:n}),RS(r,e,{...t,log:n})]);return await r.close({signal:t.signal??void 0}),o}var Y0=class extends Event{message;error;filename="";lineno=0;colno=0;constructor(e){super("error"),this.error=e,this.message=e.message}},qu=class extends Event{code;reason;wasClean;constructor(e,t){super(e),this.code=t?.code??0,this.reason=t?.reason??"",this.wasClean=t?.wasClean??!0}};var TU={CONTINUATION:0,TEXT:1,BINARY:2,CONNECTION_CLOSE:8,PING:9,PONG:10},g5={0:"CONTINUATION",1:"TEXT",2:"BINARY",8:"CONNECTION_CLOSE",9:"PING",10:"PONG"};var Hu={NORMAL_CLOSURE:1e3,GOING_AWAY:1001,PROTOCOL_ERROR:1002,UNSUPPORTED_DATA:1003,RESERVED:1004,NO_STATUS_RECEIVED:1005,ABNORMAL_CLOSURE:1006,INVALID_FRAME_PAYLOAD_DATA:1007,POLICY_VIOLATION:1008,MESSAGE_TOO_BIG:1009,MANDATORY_EXT:1010,INTERNAL_SERVER_ERROR:1011,TLS_HANDSHAKE:1015};function PS(r){let e=0;if(r.byteLength<e+1)return;let n=r.get(e)&15;if(e++,g5[n]==null)throw new Error(`Unknown opcode: ${n}`);if(r.byteLength<e+1)return;let o=r.get(e),s=(o&128)===128,i=o&127;if(e++,i===126){if(r.byteLength<e+2)return;i=r.getUint16(e),e+=2}else if(i===127){if(r.byteLength<e+8)return;i=r.getUint32(e),e+=8}if(i===0)return r.consume(e),{type:g5[n]};let a;if(s){if(r.byteLength<e+4)return;a=r.subarray(e,e+4),e+=4}if(r.byteLength<e+i)return;let c=r.subarray(e,e+i);return e+=i,a!=null&&(c=DS(c,a)),r.consume(e),{type:g5[n],data:c}}function DS(r,e){let t=0;for(let n=0;n<r.byteLength;n++)r[n]=r[n]^e[t],t++,t===e.byteLength&&(t=0);return r}function kS(r,e,t){let o=new W(Uint8Array.from([128|TU[r]])),s=e?.byteLength??0;if(s<126)o.append(Uint8Array.from([s|(t===!0?128:0)]));else if(s<65535){let i=new W(new Uint8Array(3));i.set(0,126|(t===!0?128:0)),i.setUint16(1,s),o.append(i)}else if(s<18446744073709552e3){let i=new W(new Uint8Array(9));i.set(0,127|(t===!0?128:0)),i.setUint32(1,s),o.append(i)}else throw new Error("Payload too large");if(t===!0&&e!=null){let i=Uint8Array.from([0,0,0,0]);o.append(i),e=DS(e,i)}return e!=null&&o.append(e),o}var E5={};$(E5,{base10:()=>NU});var Npe=new Uint8Array(0);function NS(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function io(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 OS(r){return new TextEncoder().encode(r)}function MS(r){return new TextDecoder().decode(r)}function _U(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function d(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,g=0,m=0,b=p.length;m!==b&&p[m]===0;)m++,y++;for(var w=(b-m)*u+1>>>0,x=new Uint8Array(w);m!==b;){for(var v=p[m],A=0,S=w-1;(v!==0||A<g)&&S!==-1;S--,A++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");g=A,m++}for(var I=w-g;I!==w&&x[I]===0;)I++;for(var k=c.repeat(y);I<w;++I)k+=r.charAt(x[I]);return k}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var y=0;if(p[y]!==" "){for(var g=0,m=0;p[y]===c;)g++,y++;for(var b=(p.length-y)*l+1>>>0,w=new Uint8Array(b);p[y];){var x=t[p.charCodeAt(y)];if(x===255)return;for(var v=0,A=b-1;(x!==0||v<m)&&A!==-1;A--,v++)x+=a*w[A]>>>0,w[A]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}if(p[y]!==" "){for(var S=b-m;S!==b&&w[S]===0;)S++;for(var I=new Uint8Array(g+(b-S)),k=g;S!==b;)I[k++]=w[S++];return I}}}function h(p){var y=f(p);if(y)return y;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:f,decode:h}}var RU=_U,LU=RU,US=LU;var y5=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},b5=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return FS(this,e)}},w5=class{decoders;constructor(e){this.decoders=e}or(e){return FS(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function FS(r,e){return new w5({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var x5=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new y5(e,t,n),this.decoder=new b5(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function nc({name:r,prefix:e,encode:t,decode:n}){return new x5(r,e,t,n)}function Wo({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=US(t,r);return nc({prefix:e,name:r,encode:n,decode:s=>io(o(s))})}function PU(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function DU(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function kU(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function Ye({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=kU(n);return nc({prefix:e,name:r,encode(s){return DU(s,n,t)},decode(s){return PU(s,o,t,r)}})}var NU=Wo({prefix:"9",name:"base10",alphabet:"0123456789"});var v5={};$(v5,{base16:()=>OU,base16upper:()=>MU});var OU=Ye({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),MU=Ye({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var S5={};$(S5,{base2:()=>BU});var BU=Ye({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var A5={};$(A5,{base256emoji:()=>KU});var $S=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}"),UU=$S.reduce((r,e,t)=>(r[t]=e,r),[]),FU=$S.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function $U(r){return r.reduce((e,t)=>(e+=UU[t],e),"")}function VU(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=FU[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var KU=nc({prefix:"\u{1F680}",name:"base256emoji",encode:$U,decode:VU});var C5={};$(C5,{base32:()=>oc,base32hex:()=>GU,base32hexpad:()=>jU,base32hexpadupper:()=>YU,base32hexupper:()=>WU,base32pad:()=>HU,base32padupper:()=>zU,base32upper:()=>qU,base32z:()=>QU});var oc=Ye({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),qU=Ye({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),HU=Ye({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),zU=Ye({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),GU=Ye({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),WU=Ye({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),jU=Ye({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),YU=Ye({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),QU=Ye({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var I5={};$(I5,{base36:()=>zu,base36upper:()=>XU});var zu=Wo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),XU=Wo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var T5={};$(T5,{base58btc:()=>An,base58flickr:()=>ZU});var An=Wo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),ZU=Wo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var _5={};$(_5,{base64:()=>JU,base64pad:()=>eF,base64url:()=>tF,base64urlpad:()=>rF});var JU=Ye({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),eF=Ye({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),tF=Ye({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),rF=Ye({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var R5={};$(R5,{base8:()=>nF});var nF=Ye({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var L5={};$(L5,{identity:()=>oF});var oF=nc({prefix:"\0",name:"identity",encode:r=>MS(r),decode:r=>OS(r)});var Qpe=new TextEncoder,Xpe=new TextDecoder;var D5={};$(D5,{identity:()=>TF});var aF=qS,VS=128,cF=127,lF=~cF,uF=Math.pow(2,31);function qS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=uF;)e[t++]=r&255|VS,r/=128;for(;r&lF;)e[t++]=r&255|VS,r>>>=7;return e[t]=r|0,qS.bytes=t-n+1,e}var dF=P5,fF=128,KS=127;function P5(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw P5.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&KS)<<o:(i&KS)*Math.pow(2,o),o+=7}while(i>=fF);return P5.bytes=s-n,t}var hF=Math.pow(2,7),pF=Math.pow(2,14),mF=Math.pow(2,21),gF=Math.pow(2,28),yF=Math.pow(2,35),bF=Math.pow(2,42),wF=Math.pow(2,49),xF=Math.pow(2,56),EF=Math.pow(2,63),vF=function(r){return r<hF?1:r<pF?2:r<mF?3:r<gF?4:r<yF?5:r<bF?6:r<wF?7:r<xF?8:r<EF?9:10},SF={encode:aF,decode:dF,encodingLength:vF},AF=SF,Gu=AF;function Wu(r,e=0){return[Gu.decode(r,e),Gu.decode.bytes]}function sc(r,e,t=0){return Gu.encode(r,e,t),e}function ic(r){return Gu.encodingLength(r)}function cc(r,e){let t=e.byteLength,n=ic(r),o=n+ic(t),s=new Uint8Array(o+t);return sc(r,s,0),sc(t,s,n),s.set(e,o),new ac(r,t,e,s)}function HS(r){let e=io(r),[t,n]=Wu(e),[o,s]=Wu(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ac(t,o,i,e)}function zS(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&NS(r.bytes,t.bytes)}}var ac=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var GS=0,CF="identity",WS=io;function IF(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return cc(GS,WS(r))}var TF={code:GS,name:CF,encode:WS,digest:IF};var O5={};$(O5,{sha256:()=>RF,sha512:()=>LF});var _F=20;function N5({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new k5(r,e,t,n,o)}var k5=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??_F,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?jS(n,this.code,t?.truncate):n.then(o=>jS(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function jS(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return cc(e,r)}function QS(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var RF=N5({name:"sha2-256",code:18,encode:QS("SHA-256")}),LF=N5({name:"sha2-512",code:19,encode:QS("SHA-512")});function XS(r,e){let{bytes:t,version:n}=r;return n===0?DF(t,M5(r),e??An.encoder):kF(t,M5(r),e??oc.encoder)}var ZS=new WeakMap;function M5(r){let e=ZS.get(r);if(e==null){let t=new Map;return ZS.set(r,t),t}return e}var X0=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==Yu)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==NF)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=cc(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&zS(e.multihash,n.multihash)}toString(e){return XS(this,e)}toJSON(){return{"/":XS(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??JS(n,o,s.bytes))}else if(t[OF]===!0){let{version:n,multihash:o,code:s}=t,i=HS(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Yu)throw new Error(`Version 0 CID must use dag-pb (code: ${Yu}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=JS(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Yu,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=io(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new ac(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[d,f]=Wu(e.subarray(t));return t+=f,d},o=n(),s=Yu;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,u=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=PF(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return M5(s).set(n,e),s}};function PF(r,e){switch(r[0]){case"Q":{let t=e??An;return[An.prefix,t.decode(`${An.prefix}${r}`)]}case An.prefix:{let t=e??An;return[An.prefix,t.decode(r)]}case oc.prefix:{let t=e??oc;return[oc.prefix,t.decode(r)]}case zu.prefix:{let t=e??zu;return[zu.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function DF(r,e,t){let{prefix:n}=t;if(n!==An.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function kF(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var Yu=112,NF=18;function JS(r,e,t){let n=ic(r),o=n+ic(e),s=new Uint8Array(o+t.byteLength);return sc(r,s,0),sc(e,s,n),s.set(t,o),s}var OF=Symbol.for("@ipld/js-cid/CID");var B5={...L5,...S5,...R5,...E5,...v5,...C5,...I5,...T5,..._5,...A5},w2e={...O5,...D5};function eA(r=0){return new Uint8Array(r)}function rA(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var tA=rA("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),U5=rA("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=eA(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),MF={utf8:tA,"utf-8":tA,hex:B5.base16,latin1:U5,ascii:U5,binary:U5,...B5},nA=MF;function F5(r,e="utf8"){let t=nA[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function oA(r){if(r instanceof ArrayBuffer)return Bu(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);if(typeof r=="string")return F5(r);if(r instanceof Blob)return r.arrayBuffer().then(e=>Bu(e));throw new C("Unsupported data type")}async function sA(r,e){return new Promise((t,n)=>{let o=!1,s=new H("RESPONSE");s[H.kOnHeadersComplete]=i=>{o=!0;let a=[];for(let c=0;c<i.headers.length;c+=2)a.push([i.headers[c],i.headers[c+1]]);t(new vn(null,{status:i.statusCode,statusText:i.statusMessage,headers:new Headers(a)}))},Promise.resolve().then(async()=>{for(;;){let{data:i}=await Do(r,"message",e.signal),a=i.subarray(),c=s.execute(a,0,a.byteLength);if(c instanceof Error)throw c;if(c<a.byteLength&&r.push(a.subarray(c)),o)break}}).catch(i=>{n(i)})})}async function*iA(r,e=[],t){let n=vc.encode(crypto.getRandomValues(new Uint8Array(16))).substring(1);t.set("host",r.hostname),t.set("connection","upgrade"),t.set("upgrade","websocket"),t.set("pragma","no-cache"),t.set("cache-control","no-cache"),t.set("sec-websocket-version","13"),t.set("sec-websocket-key",n),e.length>0&&t.set("sec-websocket-protocol",e.join(", ")),yield F5([`GET ${r.pathname??"/"} HTTP/1.1`,...[...t.entries()].map(([o,s])=>`${o}: ${s}`),"",""].join(`\r
|
|
56
|
+
`))}var BF=["BINARY","TEXT","CONTINUATION"],UF=10485760;var FF="/http/1.1",Z0=class extends se{binaryType="arraybuffer";bufferedAmount=0;extensions="";protocol="";readyState;url;CONNECTING=0;OPEN=1;CLOSING=2;CLOSED=3;_onclose;_onerror;_onmessage;_onopen;sentClose;isClient;buffer;maxMessageSize;_url;closeController;constructor(e,t={}){super(),this.readyState=this.CONNECTING,this.url=e.pathname,this.sentClose=!1,this.isClient=t.isClient??!0,this.buffer=new W,this.closeController=new AbortController,this.maxMessageSize=t.maxMessageSize??UF}send(e){if(this.readyState!==this.OPEN)throw new Error("WebSocket was not open");let t=oA(e);_f(t)?t.then(n=>{this._send("BINARY",n)}).catch(n=>{this._errored(n)}):this._send("BINARY",t)}_send(e,t){if(this.readyState!==this.OPEN)return;let n=kS(e,t,this.isClient),o=n.byteLength;this.bufferedAmount+=o,this._write(n,s=>{this.bufferedAmount-=o,s!=null&&this._errored(s)})}close(e,t){if(this.readyState!==this.OPEN)throw new Error("WebSocket was not open");this.readyState=this.CLOSING,this.sentClose=!0,this._send("CONNECTION_CLOSE")}_errored(e){this.readyState=this.CLOSED,this.dispatchEvent(new Y0(e))}set onclose(e){this._onclose=e,this.addEventListener("close",e)}get onclose(){return this._onclose??null}set onerror(e){this._onerror=e,this.addEventListener("error",e)}get onerror(){return this._onerror??null}set onmessage(e){this._onmessage=e,this.addEventListener("message",e)}get onmessage(){return this._onmessage??null}set onopen(e){this._onopen=e,this.addEventListener("open",e)}get onopen(){return this._onopen??null}_push(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxMessageSize){this.close(Hu.MESSAGE_TOO_BIG,"Max message size exceeded");return}for(;;){let t=PS(this.buffer);if(t==null)break;if(BF.includes(t.type)&&t.data!=null){let n;this.binaryType==="blob"?n=new Blob([Uint8Array.from(t.data)]):t.data.byteOffset===0&&t.data.byteLength===t.data.buffer.byteLength?n=t.data.buffer:(n=new ArrayBuffer(t.data.byteLength),new Uint8Array(n,0,n.byteLength).set(t.data)),this.dispatchEvent(new MessageEvent("message",{data:n,origin:this._url?.hostname}))}t.type==="PING"&&this._send("PONG",t.data),t.type==="CONNECTION_CLOSE"&&(this.sentClose||this.close(),this.closeController.abort(),this._close(void 0,()=>{this.readyState=this.CLOSED,this.dispatchEvent(new qu("close"))}))}}_remoteClosed(e){this.readyState=this.CLOSING,this._close(e,()=>{this.readyState=this.CLOSED,this.dispatchEvent(new qu("close"))})}};var Qu=class extends Z0{writer;writable;constructor(e,t,n={}){if(super(new URL(e.url),{...n,isClient:!1}),e.body==null)throw new C("Request body cannot be null");this.readyState=this.OPEN,this.writable=t,this.writer=t.getWriter();let o=e.body.getReader();Promise.resolve().then(async()=>{for(this.dispatchEvent(new Event("open"));;){let{value:s,done:i}=await o.read();if(s!=null&&this._push(s),i){this._remoteClosed();break}}}).catch(s=>{this._errored(s)})}_write(e,t){this.writer?.write(e).then(()=>{t()},n=>{t(n)})}_close(e,t){e!=null?this.writable.abort(e).then(()=>{t()},()=>{t()}):this.writable.close().then(()=>{t()},()=>{t()})}},Xu=class extends Z0{stream;handshakeTimeout;drainTimeout;constructor(e,t,n,o){super(t,{...o,isClient:!0}),this.handshakeTimeout=o.handshakeTimeout??1e4,this.drainTimeout=o.drainTimeout??1e4,Promise.resolve().then(async()=>{let s=AbortSignal.timeout(this.handshakeTimeout);this.stream=await n.openStream(e,FF,{...o,signal:s});for await(let a of iA(t,o.protocols,En(o)))this.stream.send(a)||await this.stream.onDrain({signal:s});let i=await sA(this.stream,{signal:s});if(i.status!==101)throw new Error("Invalid WebSocket handshake - response status "+i.status);await o.onHandshakeResponse?.(i,{signal:s}),this.protocol=i.headers.get("Sec-WebSocket-Protocol")??"",this.readyState=this.OPEN,this.dispatchEvent(new Event("open"));for await(let a of this.stream)this._push(a)}).catch(s=>{this._errored(s)})}_write(e,t){if(this.stream==null){t(new Error("WebSocket was not open"));return}this.stream.send(e)?t():this.stream.onDrain({signal:AbortSignal.timeout(this.drainTimeout)}).then(()=>{t()},n=>{t(n)})}_close(e,t){if(this.stream==null){t();return}if(e!=null){this.stream.abort(e),t();return}this.stream.close().catch(n=>{this.stream?.abort(n)}).finally(()=>{t()})}};var Zu="/http/1.1";var J0=Symbol.for("@libp2p/http/websocket-handler");var hA=gi(dA(),1),tp=class{log;cookies;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:http:cookies"),this.cookies=new Map}async prepareRequest(e,t){if((t.credentials??"same-origin")==="omit")return;let o=t.headers.get("origin");if(o==null||o==="null")return;let s=Mu(e,t.headers),i=(this.cookies.get(s.hostname)??[]).filter(a=>!(a.expires!=null&&a.expires<Date.now()||a.path!=null&&!s.pathname.startsWith(a.path))).map(a=>`${a.name}=${a.value}`).join("; ");i.length>0&&t.headers.set("cookie",i)}async processResponse(e,t,n){if((t.credentials??"same-origin")==="omit"){fA(n);return}let s=t.headers.get("origin");if(s==null||s==="null")return;let i=Mu(e,t.headers);for(let a of n.headers.getSetCookie()){let c=[...this.cookies.get(i.hostname)??[],...jF(hA.default.parse(a))];this.cookies.set(i.hostname,c)}fA(n)}};function fA(r){return r.headers.has("set-cookie")&&r.headers.delete("set-cookie"),r}function jF(r){let e={},t=[];return Object.entries(r).forEach(([n,o])=>{n.toLowerCase()==="domain"&&o!=null&&(e.domain=o),n.toLowerCase()==="max-age"&&o!=null&&(e.expires=Date.now()+parseInt(o,10)*1e3),!YF.includes(n.toLowerCase())&&o!=null&&t.push({name:n,value:o})}),t.map(n=>({...n,...e}))}var YF=["domain","expires","httponly","max-age","partitioned","path","samesite","secure"];var rp=class{async prepareRequest(e,t){if(t.headers.get("origin")!=null||t.mode==="no-cors")return;let n=Mu(e,t.headers);t.headers.set("origin",`${n.protocol}//${n.host}`)}};function QF(r){return typeof r.init=="function"}function np(r,e){if(QF(r)){let t=r;return t.handler=r.init(e),delete t.init,t}return r}function pA(r){let e=z0(r.method,["GET"]);if(r.fallback==null&&e.filter(n=>n!=="GET").length>0)throw new C("WebSocket handlers only support the GET HTTP method");let t={...r,init:n=>{let o=np(r,n);return t[J0]=o.handler,async s=>{if(!V0(s.method,s.headers))return r?.fallback!=null?r.fallback(s):new vn(null,{status:400});let i=new TransformStream;try{let a=new vn(i.readable,{status:101,headers:await G6(s.headers)}),c=new Qu(s,i.writable,r);return o.handler(c),a}catch{return new vn(null,{status:500})}}}};return t}var op="/.well-known/libp2p/protocols";function mA(r){return pA({path:op,method:["GET"],cors:!0,handler:e=>{let t=JSON.stringify(r.getProtocolMap());e.send(t),e.close()},fallback:async e=>{let t=JSON.stringify(r.getProtocolMap());return new Response(t,{headers:{"Content-Type":"application/json","Content-Length":`${t.length}`}})}})}var sp=class{log;components;protocols;endpoint;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:http:registrar"),this.protocols=[],this.onStream=this.onStream.bind(this),this.endpoint=t.server,this.handle("",mA(this))}async start(){await this.components.registrar.handle(Zu,this.onStream.bind(this))}async stop(){await this.components.registrar.unhandle(Zu)}async onStream(e,t){let n=await Zv(e);if(this.canHandle(n)){this.log("handling incoming request %s %s",n.method,n.url);let o=await this.onRequest(Yv(n,e));await Qv(o,e),await e.close();return}if(this.endpoint==null){this.log("cannot handle incoming request %s %s and no endpoint configured",n.method,n.url),e.send(Xv),await e.close();return}this.log("passing incoming request %s %s to endpoint",n.method,n.url),this.endpoint.inject(n,e,t).catch(o=>{this.log.error("error injecting request to endpoint - %e",o),e.abort(o)})}canHandle(e){let t=z6(e).pathname;return this.protocols.find(n=>n.route.path===t)!=null?(this.log.trace("can handle %s",t),!0):(this.log.trace("cannot handle %s",t),!1)}async onRequest(e){this.log("incoming request %s %s",e.method,e.url);let t=this.findHandler(e.url);if(t==null)return new Response(null,{status:404});let n;return t.route.method.includes(e.method)?n=await t.route.handler(e):e.method==="OPTIONS"?n=new Response(null,{status:204}):n=new Response(null,{status:405}),XF(n,e,t),this.log("%s %s %d %s",e.method,e.url,n.status,n.statusText),n}onWebSocket(e){let t=this.findHandler(e.url);if(t!=null){let n=t.route[J0];if(n!=null){n(e);return}}e.close(Hu.NORMAL_CLOSURE)}findHandler(e){let t=e.startsWith("/")?e:new URL(e).pathname;this.log("search for handler on path %s",t);let n=this.protocols.find(o=>o.route.path===t);return n!=null&&this.log("found handler for HTTP protocol %s on path %s",n.protocol,e),n}handle(e,t){if(t.path=t.path??e,this.protocols.find(n=>n.protocol===e)!=null)throw new C(`HTTP protocol handler for ${e} already registered`);(t.path===""||!t.path.startsWith("/"))&&(t.path=`/${t.path}`),t.cors=t.cors??!0,t.method=z0(t.method),t=np(t,this.components),this.protocols.push({protocol:e,route:t}),this.protocols.sort(({route:{path:n}},{route:{path:o}})=>o.length-n.length)}unhandle(e){this.protocols=this.protocols.filter(t=>t.protocol===e)}getProtocolMap(){let e={};for(let t of this.protocols)t.protocol!==""&&(e[t.protocol]={path:t.route.path});return e}};function XF(r,e,t){let n=[...new Set(["OPTIONS",...t.route.method])].join(", ");t.route.cors&&(e.headers.get("Access-Control-Request-Method")!=null&&r.headers.set("access-control-allow-methods",n),e.headers.get("Access-Control-Request-Headers")!=null&&r.headers.set("access-control-allow-headers",e.headers.get("Access-Control-Request-Headers")??""),e.headers.get("Origin")!=null&&(r.headers.set("access-control-allow-origin",e.headers.get("Origin")??""),r.headers.set("vary","Origin"))),e.method==="OPTIONS"&&r.headers.set("allow",n)}async function gA(r,e,t){for(let n of e.middleware)await n.prepareRequest?.(r,e);return t()}async function yA(r,e,t){for(let n of e.middleware)await n.prepareRequest?.(r,e);return t()}async function bA(r,e,t){for(let n of e.middleware)t=await n.processResponse?.(r,e,t)??t;return t}var ip=class{log;components;httpRegistrar;origin;cookies;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:http"),this.httpRegistrar=new sp(e,t),this.origin=new rp,this.cookies=new tp(e,t)}[Symbol.toStringTag]="@libp2p/http";[ue]=["@libp2p/http"];async start(){await Tr(this.httpRegistrar)}async stop(){await Zr(this.httpRegistrar)}agent(...e){throw new mc("This method is not supported in browsers")}dispatcher(...e){throw new mc("This method is not supported in browsers")}async connect(e,t={}){let n=Qa(e),o=En(t),s={...t,headers:o,method:"GET",middleware:t.middleware?.map(i=>i(this.components))??[]};return o.set("connection","upgrade"),o.set("upgrade","websocket"),yA(n,s,async()=>{if(n instanceof URL){let c=new globalThis.WebSocket(n,t.protocols);return c.binaryType="arraybuffer",c}let{addresses:i,httpPath:a}=H0(n);return new Xu(i,new URL(`http://${q0(n,s.headers)}${decodeURIComponent(a)}`),this.components.connectionManager,s)})}async fetch(e,t={}){let n=Qa(e),o={...t,headers:En(t),method:"GET",middleware:[this.origin,this.cookies,...t.middleware?.map(i=>i(this.components))??[]]},s=await gA(n,o,async()=>this.sendRequest(n,t));return bA(n,o,s)}async connectProtocol(e,t,n){let o=await this.getProtocolPath(e,t,n),s=Qa(e,o);return this.connect(s,n)}async fetchProtocol(e,t,n={}){let o=await this.getProtocolPath(e,t,n),s=Qa(e,o);return this.fetch(s,n)}async getSupportedProtocols(e,t={}){let n=Qa(e,op),o=await this.fetch(n,{method:"GET",headers:{Accept:"application/json"},signal:t.signal});if(o.status!==200)throw new Error(`Unexpected status code: ${o.status}`);return o.json()}async getProtocolPath(e,t,n={}){let o=await this.getSupportedProtocols(e,n);if(o[t]==null)throw new Error(`Peer does not serve protocol: ${t}`);return o[t].path}canHandle(e){return this.httpRegistrar.canHandle(e)}async onRequest(e){return this.httpRegistrar.onRequest(e)}onWebSocket(e){this.httpRegistrar.onWebSocket(e)}handle(e,t){this.httpRegistrar.handle(e,t)}unhandle(e){this.httpRegistrar.unhandle(e)}getProtocolMap(){return this.httpRegistrar.getProtocolMap()}async sendRequest(e,t){if(e instanceof URL)return this.log("making request to %s with global fetch"),globalThis.fetch(e,t);this.log("making request to %s with libp2p fetch",e);let n=q0(e,En(t)),{addresses:o,httpPath:s}=H0(e),a=await(await this.components.connectionManager.openConnection(o,{signal:t.signal??void 0})).newStream(Zu,{signal:t.signal??void 0});return LS(a,new URL(`http://${n}${decodeURIComponent(s)}`),t)}};function wA(r={}){return e=>new ip(e,r)}var xA="0.1.0";var EA="id/push",vA="1.0.0",SA="1.0.0";var Yo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.protocolVersion!=null&&(i.uint32(42),i.string(s.protocolVersion)),s.agentVersion!=null&&(i.uint32(50),i.string(s.agentVersion)),s.publicKey!=null&&(i.uint32(10),i.bytes(s.publicKey)),s.listenAddrs!=null&&s.listenAddrs.length>0)for(let c of s.listenAddrs)i.uint32(18),i.bytes(c);if(s.observedAddr!=null&&(i.uint32(34),i.bytes(s.observedAddr)),s.protocols!=null&&s.protocols.length>0)for(let c of s.protocols)i.uint32(26),i.string(c);s.signedPeerRecord!=null&&(i.uint32(66),i.bytes(s.signedPeerRecord)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={listenAddrs:[],protocols:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 5:{c.protocolVersion=s.string();break}case 6:{c.agentVersion=s.string();break}case 1:{c.publicKey=s.bytes();break}case 2:{if(a.limits?.listenAddrs!=null&&c.listenAddrs.length===a.limits.listenAddrs)throw new fe('Decode error - repeated field "listenAddrs" had too many elements');c.listenAddrs.push(s.bytes());break}case 4:{c.observedAddr=s.bytes();break}case 3:{if(a.limits?.protocols!=null&&c.protocols.length===a.limits.protocols)throw new fe('Decode error - repeated field "protocols" had too many elements');c.protocols.push(s.string());break}case 8:{c.signedPeerRecord=s.bytes();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={listenAddrs:0,protocols:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 5:{yield{field:`${a}.protocolVersion`,value:s.string()};break}case 6:{yield{field:`${a}.agentVersion`,value:s.string()};break}case 1:{yield{field:`${a}.publicKey`,value:s.bytes()};break}case 2:{if(c.limits?.listenAddrs!=null&&l.listenAddrs===c.limits.listenAddrs)throw new fe('Streaming decode error - repeated field "listenAddrs" had too many elements');yield{field:`${a}.listenAddrs[]`,index:l.listenAddrs,value:s.bytes()},l.listenAddrs++;break}case 4:{yield{field:`${a}.observedAddr`,value:s.bytes()};break}case 3:{if(c.limits?.protocols!=null&&l.protocols===c.limits.protocols)throw new fe('Streaming decode error - repeated field "protocols" had too many elements');yield{field:`${a}.protocols[]`,index:l.protocols,value:s.string()},l.protocols++;break}case 8:{yield{field:`${a}.signedPeerRecord`,value:s.bytes()};break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Yo||(Yo={}));var Zt={protocolPrefix:"ipfs",timeout:5e3,maxInboundStreams:1,maxOutboundStreams:1,maxObservedAddresses:10,maxMessageSize:8192,runOnConnectionOpen:!0,runOnSelfUpdate:!0,runOnLimitedConnection:!0,concurrency:32};function CA(r){return r.bytes.length===0}function K5(r){if(r!=null&&r.length>0)try{let e=V(r);if(!CA(e))return e}catch{}}async function ap(r,e,t,n,o){if(t("received identify from %p",n.remotePeer),o==null)throw new oe("message was null or undefined");let s={},i=o.listenAddrs.map(K5).filter(l=>l!=null);if(o.listenAddrs.length>0&&(s.addresses=i.map(l=>({isCertified:!1,multiaddr:l}))),o.protocols.length>0&&(s.protocols=o.protocols),o.publicKey!=null){let l=nt(o.publicKey);if(!nn(l).equals(n.remotePeer))throw new oe("public key did not match remote PeerId");s.publicKey=l}let a;if(o.signedPeerRecord!=null){t.trace("received signedPeerRecord from %p",n.remotePeer);let l=o.signedPeerRecord,u=await lr.openAndCertify(l,Ft.DOMAIN),d=Ft.createFromProtobuf(u.payload),f=Mt(u.publicKey.toCID());if(!d.peerId.equals(f))throw new oe("signing key does not match PeerId in the PeerRecord");if(!n.remotePeer.equals(d.peerId))throw new oe("signing key does not match remote PeerId");let h;try{h=await r.get(d.peerId)}catch(y){if(y.name!=="NotFoundError")throw y}if(h!=null&&(s.metadata=h.metadata,h.peerRecordEnvelope!=null)){let y=lr.createFromProtobuf(h.peerRecordEnvelope),g=Ft.createFromProtobuf(y.payload);g.seqNumber>=d.seqNumber&&(t("sequence number was lower or equal to existing sequence number - stored: %d received: %d",g.seqNumber,d.seqNumber),d=g,l=h.peerRecordEnvelope)}s.peerRecordEnvelope=l;let p=d.multiaddrs.filter(y=>!CA(y));s.addresses=p.map(y=>({isCertified:!0,multiaddr:y})),a={seq:d.seqNumber,addresses:p}}else t("%p did not send a signed peer record",n.remotePeer);if(t.trace("patching %p with",n.remotePeer,s),await r.patch(n.remotePeer,s),o.agentVersion!=null||o.protocolVersion!=null){let l={};o.agentVersion!=null&&(l.AgentVersion=O(o.agentVersion)),o.protocolVersion!=null&&(l.ProtocolVersion=O(o.protocolVersion)),t.trace("merging %p metadata",n.remotePeer,l),await r.merge(n.remotePeer,{metadata:l})}let c={peerId:n.remotePeer,protocolVersion:o.protocolVersion,agentVersion:o.agentVersion,publicKey:o.publicKey,listenAddrs:i,observedAddr:o.observedAddr==null?void 0:V(o.observedAddr),protocols:o.protocols,signedPeerRecord:a,connection:n};return e.safeDispatchEvent("peer:identify",{detail:c}),c}function cp(r){let e={...r[0]};for(let t of r.slice(1))t.protocolVersion!=null&&(e.protocolVersion=t.protocolVersion),t.agentVersion!=null&&(e.agentVersion=t.agentVersion),t.publicKey!=null&&(e.publicKey=t.publicKey),t.observedAddr!=null&&(e.observedAddr=t.observedAddr),t.signedPeerRecord!=null&&(e.signedPeerRecord=t.signedPeerRecord),e.listenAddrs=[...e.listenAddrs,...t.listenAddrs],e.protocols=[...new Set([...e.protocols,...t.protocols])];return e}async function lp(r,e,t,n){let o=ke(r,{maxDataLength:e}).pb(Yo),s=[];for(let i=0;i<10;i++)try{s.push(await o.read(t))}catch(a){if(s.length===0)throw a;n.trace("stopped reading identify - %e",a);break}s.length>=10&&n("reached MAX_IDENTIFY_MESSAGES, returning truncated identify");try{await r.close(t)}catch(i){n.trace("error closing identify stream after read - %e",i),r.abort(i)}return s}var lc=class{host;components;protocol;started;timeout;maxInboundStreams;maxOutboundStreams;maxMessageSize;maxObservedAddresses;runOnLimitedConnection;log;constructor(e,t){this.protocol=t.protocol,this.started=!1,this.components=e,this.log=t.log,this.timeout=t.timeout??Zt.timeout,this.maxInboundStreams=t.maxInboundStreams??Zt.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Zt.maxOutboundStreams,this.maxMessageSize=t.maxMessageSize??Zt.maxMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Zt.maxObservedAddresses,this.runOnLimitedConnection=t.runOnLimitedConnection??Zt.runOnLimitedConnection,this.host={protocolVersion:`${t.protocolPrefix??Zt.protocolPrefix}/${xA}`,agentVersion:e.nodeInfo.userAgent},this.handleProtocol=this.handleProtocol.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.peerStore.merge(this.components.peerId,{metadata:{AgentVersion:O(this.host.agentVersion),ProtocolVersion:O(this.host.protocolVersion)}}),await this.components.registrar.handle(this.protocol,this.handleProtocol,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnection}),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}};var up=class extends lc{connectionManager;concurrency;_push;constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??Zt.protocolPrefix}/${EA}/${SA}`,log:e.logger.forComponent("libp2p:identify-push")}),this.connectionManager=e.connectionManager,this.concurrency=t.concurrency??Zt.concurrency,this._push=$n(this.sendPushMessage.bind(this),t.debounce??1e3),(t.runOnSelfUpdate??Zt.runOnSelfUpdate)&&e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error("error pushing updates to peers - %e",o)})})}[ue]=["@libp2p/identify-push"];async push(){this._push()}async sendPushMessage(){if(this.isStarted())try{let e=this.components.addressManager.getAddresses().map(u=>u.decapsulateCode(421)),t=new Ft({peerId:this.components.peerId,multiaddrs:e}),n=await lr.seal(t,this.components.privateKey),o=this.components.registrar.getProtocols(),s=await this.components.peerStore.get(this.components.peerId),i=B(s.metadata.get("AgentVersion")??O(this.host.agentVersion)),a=B(s.metadata.get("ProtocolVersion")??O(this.host.protocolVersion)),c=this;async function*l(){for(let u of c.connectionManager.getConnections())(await c.components.peerStore.get(u.remotePeer)).protocols.includes(c.protocol)&&(yield async()=>{let f,h=AbortSignal.timeout(c.timeout);try{f=await u.newStream(c.protocol,{signal:h,runOnLimitedConnection:c.runOnLimitedConnection}),await ke(f,{maxDataLength:c.maxMessageSize}).pb(Yo).write({listenAddrs:e.map(y=>y.bytes),signedPeerRecord:n.marshal(),protocols:o,agentVersion:i,protocolVersion:a},{signal:h}),await f.close({signal:h})}catch(p){f?.log.newScope("identify-push")?.error("could not push identify update to peer",p),f?.abort(p)}})}await cn(Hn(l(),{concurrency:this.concurrency}))}catch(e){this.log.error("error pushing updates to peers - %e",e)}}async handleProtocol(e,t){let n=e.log.newScope("identify-push");if(this.components.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},s=await lp(e,this.maxMessageSize,o,n);await ap(this.components.peerStore,this.components.events,n,t,cp(s)),n.trace("handled push from %p",t.remotePeer)}};var dp=class extends lc{constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??Zt.protocolPrefix}/${"id"}/${vA}`,log:e.logger.forComponent("libp2p:identify")}),(t.runOnConnectionOpen??Zt.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(()=>{})})}[ue]=["@libp2p/identify"];async _identify(e,t={}){let n,o;if(t.signal==null){let s=AbortSignal.timeout(this.timeout);t={...t,signal:s}}this.log("run identify on new connection %a",e.remoteAddr);try{n=await e.newStream(this.protocol,{...t,runOnLimitedConnection:this.runOnLimitedConnection}),o=n.log.newScope("identify");let s=await lp(n,this.maxMessageSize,t,o);return cp(s)}catch(s){throw o?.error("identify failed - %e",s),n?.abort(s),s}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new oe("Public key was missing from identify message");let a=nt(o),c=Mt(a.toCID());if(!e.remotePeer.equals(c))throw new oe("Identified peer does not match the expected peer");if(this.components.peerId.equals(c))throw new oe("Identified peer is our own peer id?");return this.maybeAddObservedAddress(i),this.log("completed for peer %p and protocols %o",c,s),ap(this.components.peerStore,this.components.events,this.log,e,n)}maybeAddObservedAddress(e){let t=K5(e);if(t==null||(this.log.trace("our observed address was %a",t),Ze(t)))return;let n=t.getComponents();if((n[0].code===41||n[0].code===42&&n[1].code===41)&&!sf(t)){this.log.trace("our observed address was IPv6 but not a global unicast address");return}zs.exactMatch(t)||(this.log.trace("storing the observed address"),this.components.addressManager.addObservedAddr(t))}async handleProtocol(e,t){let n=e.log.newScope("identify");n("responding to identify");let o=AbortSignal.timeout(this.timeout);let s=await this.components.peerStore.get(this.components.peerId,{signal:o}),i=this.components.addressManager.getAddresses().map(u=>u.decapsulateCode(421)),a=s.peerRecordEnvelope;if(i.length>0&&a==null){let u=new Ft({peerId:this.components.peerId,multiaddrs:i});a=(await lr.seal(u,this.components.privateKey,{signal:o})).marshal().subarray()}let c=t.remoteAddr.bytes;S9.matches(t.remoteAddr)||(c=void 0);let l=ke(e).pb(Yo);n("send response"),await l.write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:ct(this.components.privateKey.publicKey),listenAddrs:i.map(u=>u.bytes),signedPeerRecord:a,observedAddr:c,protocols:s.protocols},{signal:o}),n("close write"),await l.unwrap().unwrap().close({signal:o})}};function IA(r={}){return e=>new dp(e,r)}function TA(r={}){return e=>new up(e,r)}var fi=1e3,q5=60*fi,fp=60*q5,_A="/ipfs/kad/1.0.0",hp=48*fp;var RA=24*fp,LA=10,PA=16384,DA=fp,H5=fp,w3e=10*fi,kA=10*fi;var pp=20,Qo=10,NA=5*q5,OA=fi,MA=5*fi,BA=5*q5,UA=30*fi,FA=180*fi,z5=`${fs}-kad-dht`;var Ju;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.key!=null&&s.key.byteLength>0&&(i.uint32(10),i.bytes(s.key)),s.value!=null&&s.value.byteLength>0&&(i.uint32(18),i.bytes(s.value)),s.timeReceived!=null&&s.timeReceived!==""&&(i.uint32(42),i.string(s.timeReceived)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={key:de(0),value:de(0),timeReceived:""},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.key=s.bytes();break}case 2:{c.value=s.bytes();break}case 5:{c.timeReceived=s.string();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.key`,value:s.bytes()};break}case 2:{yield{field:`${a}.value`,value:s.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:s.string()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Ju||(Ju={}));function $A(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function VA(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var St=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return Ju.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:$A(this.timeReceived)}}static deserialize(e){let t=Ju.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=VA(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};var Xo=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},mp=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},gp=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var KA;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.key!=null&&(i.uint32(10),i.bytes(s.key)),s.value!=null&&(i.uint32(18),i.bytes(s.value)),s.author!=null&&(i.uint32(26),i.bytes(s.author)),s.signature!=null&&(i.uint32(34),i.bytes(s.signature)),s.timeReceived!=null&&(i.uint32(42),i.string(s.timeReceived)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.key=s.bytes();break}case 2:{c.value=s.bytes();break}case 3:{c.author=s.bytes();break}case 4:{c.signature=s.bytes();break}case 5:{c.timeReceived=s.string();break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{yield{field:`${a}.key`,value:s.bytes()};break}case 2:{yield{field:`${a}.value`,value:s.bytes()};break}case 3:{yield{field:`${a}.author`,value:s.bytes()};break}case 4:{yield{field:`${a}.signature`,value:s.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:s.string()};break}default:{s.skipType(u&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(KA||(KA={}));var we;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(we||(we={}));var yp;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(yp||(yp={}));(function(r){r.codec=()=>rt(yp)})(we||(we={}));var hi;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(hi||(hi={}));var G5;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(G5||(G5={}));(function(r){r.codec=()=>rt(G5)})(hi||(hi={}));var Zo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.id!=null&&s.id.byteLength>0&&(i.uint32(10),i.bytes(s.id)),s.multiaddrs!=null&&s.multiaddrs.length>0)for(let c of s.multiaddrs)i.uint32(18),i.bytes(c);s.connection!=null&&(i.uint32(24),hi.codec().encode(s.connection,i)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={id:de(0),multiaddrs:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.id=s.bytes();break}case 2:{if(a.limits?.multiaddrs!=null&&c.multiaddrs.length===a.limits.multiaddrs)throw new fe('Decode error - repeated field "multiaddrs" had too many elements');c.multiaddrs.push(s.bytes());break}case 3:{c.connection=hi.codec().decode(s);break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={multiaddrs:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.id`,value:s.bytes()};break}case 2:{if(c.limits?.multiaddrs!=null&&l.multiaddrs===c.limits.multiaddrs)throw new fe('Streaming decode error - repeated field "multiaddrs" had too many elements');yield{field:`${a}.multiaddrs[]`,index:l.multiaddrs,value:s.bytes()},l.multiaddrs++;break}case 3:{yield{field:`${a}.connection`,value:hi.codec().decode(s)};break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Zo||(Zo={}));var Jo;(function(r){let e;r.codec=()=>(e==null&&(e=ne((s,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),s.type!=null&&yp[s.type]!==0&&(i.uint32(8),we.codec().encode(s.type,i)),s.clusterLevel!=null&&(i.uint32(80),i.int32(s.clusterLevel)),s.key!=null&&(i.uint32(18),i.bytes(s.key)),s.record!=null&&(i.uint32(26),i.bytes(s.record)),s.closer!=null&&s.closer.length>0)for(let c of s.closer)i.uint32(66),Zo.codec().encode(c,i);if(s.providers!=null&&s.providers.length>0)for(let c of s.providers)i.uint32(74),Zo.codec().encode(c,i);a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={type:we.PUT_VALUE,closer:[],providers:[]},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let u=s.uint32();switch(u>>>3){case 1:{c.type=we.codec().decode(s);break}case 10:{c.clusterLevel=s.int32();break}case 2:{c.key=s.bytes();break}case 3:{c.record=s.bytes();break}case 8:{if(a.limits?.closer!=null&&c.closer.length===a.limits.closer)throw new fe('Decode error - repeated field "closer" had too many elements');c.closer.push(Zo.codec().decode(s,s.uint32(),{limits:a.limits?.closer$}));break}case 9:{if(a.limits?.providers!=null&&c.providers.length===a.limits.providers)throw new fe('Decode error - repeated field "providers" had too many elements');c.providers.push(Zo.codec().decode(s,s.uint32(),{limits:a.limits?.providers$}));break}default:{s.skipType(u&7);break}}}return c},function*(s,i,a,c={}){let l={closer:0,providers:0},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let d=s.uint32();switch(d>>>3){case 1:{yield{field:`${a}.type`,value:we.codec().decode(s)};break}case 10:{yield{field:`${a}.clusterLevel`,value:s.int32()};break}case 2:{yield{field:`${a}.key`,value:s.bytes()};break}case 3:{yield{field:`${a}.record`,value:s.bytes()};break}case 8:{if(c.limits?.closer!=null&&l.closer===c.limits.closer)throw new fe('Streaming decode error - repeated field "closer" had too many elements');for(let f of Zo.codec().stream(s,s.uint32(),`${a}.closer[]`,{limits:c.limits?.closer$}))yield{...f,index:l.closer};l.closer++;break}case 9:{if(c.limits?.providers!=null&&l.providers===c.limits.providers)throw new fe('Streaming decode error - repeated field "providers" had too many elements');for(let f of Zo.codec().stream(s,s.uint32(),`${a}.providers[]`,{limits:c.limits?.providers$}))yield{...f,index:l.providers};l.providers++;break}default:{s.skipType(d&7);break}}}})),e);function t(s){return te(s,r.codec())}r.encode=t;function n(s,i){return ee(s,r.codec(),i)}r.decode=n;function o(s,i){return re(s,r.codec(),i)}r.stream=o})(Jo||(Jo={}));function W5(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function ed(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function bp(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function jr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function j5(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function td(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function Y5(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function qA(r,e={}){let t={...r,name:"PATH_ENDED",type:8};return e.onProgress?.(new CustomEvent("kad-dht:query:path-ended",{detail:t})),t}async function HA(r,e,t){if(t.length===0)throw new C("No records given");let o=B(e).split("/");if(o.length<3)throw new C("Record key does not have a selector function");let s=r[o[1].toString()];if(s==null)throw new gp(`No selector function configured for key type "${o[1]}"`);return t.length===1?0:s(e,t)}function n$(r,e){return 0}var zA={pk:n$};async function uc(r,e,t){let n=e.key,s=B(n).split("/");if(s.length<3)throw new C("Record key is missing a namespace");let i=r[s[1].toString()];if(i==null)throw new C(`No validator available for key type "${s[1]}"`);await i(n,e.value,t)}var o$=async(r,e,t)=>{if(!(r instanceof Uint8Array))throw new C('"key" must be a Uint8Array');if(r.byteLength<5)throw new C("Invalid public key record");if(B(r.subarray(0,4))!=="/pk/")throw new C("key was not prefixed with /pk/");let o=nt(e),s=r.slice(4);if(!Z(s,o.toMultihash().bytes))throw new C("public key does not match passed in key")},GA={pk:o$};var s$=O("/pk/");function WA(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>!Ze(e))}}async function es(r,e){let t=await pt.digest(r);return e?.signal?.throwIfAborted(),t.digest}async function Jt(r,e){return es(r.toMultihash().bytes,e)}function ts(r,e){return new Rt(`${r}/${B(e,"base32")}`,!1)}function jA(r){return et([s$,r.toMultihash().bytes])}function YA(r){return B(r.subarray(0,4))==="/pk/"}function QA(r){let e=ve(r.subarray(4));return Xe(e)}function Q5(r,e){let t=new Date;return new St(r,e,t).serialize()}function wp(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:ae.createV1(Cd,ve(O(n,"base32"))),peerId:Oe(t)}}function xp(r,e,t){let n=typeof e=="string"?e:B(e.multihash.bytes,"base32"),o=[r,n];return t!=null&&o.push(t.toString()),new Rt(o.join("/"))}function Ep(r){return new Date(Dr(r))}function pi(r,e,t){return async function*(...n){let o=e.queryTime?.timer(t),s=e.errorTime?.timer(t),i=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw i=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),i||o?.()}}}function vp(r,e,t){return async function(...n){let o=e?.queryTime?.timer(t),s=e?.errorTime?.timer(t),i=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw i=!0,s?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),i||o?.()}}}var Sp=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a,this.get=e.metrics?.traceFunction("libp2p.kadDHT.get",this.get.bind(this),{optionsIndex:1})??this.get,this.put=e.metrics?.traceFunction("libp2p.kadDHT.put",this.put.bind(this),{optionsIndex:2})??this.put}async getLocal(e,t){this.log("getLocal %b",e);let n=ts(this.datastorePrefix,e);this.log("fetching record for key %k",n);let o=await this.components.datastore.get(n,t);this.log("found %k in local datastore",n);let s=St.deserialize(o);return await uc(this.validators,s,t),s}async*sendCorrectionRecord(e,t,n,o){this.log("sendCorrection for %b",e);let s=Q5(e,n);for(let{value:i,from:a}of t){if(Z(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=ts(this.datastorePrefix,e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,s.subarray(),o)}catch(u){this.log.error("failed error correcting self - %e",u)}continue}let c=!1,l={type:we.PUT_VALUE,key:e,record:s};for await(let u of this.network.sendRequest(a,l,o))u.name==="PEER_RESPONSE"&&u.record!=null&&Z(u.record.value,St.deserialize(s).value)&&(c=!0),yield u;if(!c)throw new Xo("Could not send correction");this.log.error("failed error correcting entry")}}async*put(e,t,n){this.log("put key %b value %b",e,t);let o=Q5(e,t),s=ts(this.datastorePrefix,e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray(),n),yield*yl(this.peerRouting.getClosestPeers(e,{...n,signal:n.signal}),i=>Kr(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:we.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,{...n,path:a.path}))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&Z(u.record.value,St.deserialize(o).value)||c.push(jr({from:a.peer.id,error:new Xo("Value not put correctly"),path:u.path},n)));return c}),i=>Hn(i,{ordered:!1,concurrency:Qo}),async function*(i){for await(let a of i)yield*a})}async*get(e,t){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t)){if(a.name==="VALUE"){n.push(a);continue}yield a}if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=await HA(this.selectors,e,o)}catch(a){if(a.name!=="InvalidParametersError")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new Pe("Best value was not found");yield*this.sendCorrectionRecord(e,n,i,{...t,path:{index:-1,queued:0,running:0,total:0}}),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e,t);yield td({value:s.value,from:this.components.peerId,path:{index:-1,running:0,queued:0,total:0}},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i,path:a}){for await(let c of n.peerRouting.getValueOrPeers(s.id,e,{...t,signal:i,path:a}))yield c,c.name==="PEER_RESPONSE"&&c.record!=null&&(yield td({from:s.id,value:c.record.value,path:a},t))};yield*this.queryManager.run(e,o,t)}};function XA(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function rd(r){if(r.id==null)throw new Error("Invalid peer in message");let e=ve(r.id);return{id:Xe(e),multiaddrs:(r.multiaddrs??[]).map(t=>V(t))}}var Ap=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a,this.findProviders=e.metrics?.traceFunction("libp2p.kadDHT.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PROVIDER"&&(u.providers??=[],u.providers.push(...l.providers.map(d=>d.id.toString()))),u)})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.kadDHT.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PEER_RESPONSE"&&l.messageName==="ADD_PROVIDER"&&(u.providers??=[],u.providers.push(l.from.toString())),u)})??this.provide}async*provide(e,t,n={}){this.log("provide %s",e);let o=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId,n);let s={type:we.ADD_PROVIDER,key:o,providers:[XA({id:this.components.peerId,multiaddrs:t})]},i=0,a=this;async function*c(d){try{a.log("sending provider record for %s to %p",e,d.peer.id);for await(let f of a.network.sendMessage(d.peer.id,s,{...n,path:d.path}))f.name==="PEER_RESPONSE"&&(a.log("sent provider record for %s to %p",e,d.peer.id),i++),yield f}catch(f){a.log.error("error sending provide record to peer %p - %e",d.peer.id,f),yield jr({from:d.peer.id,error:f,path:d.path},n)}}let l=Bt({objectMode:!0}),u=new jt({concurrency:Qo});u.addEventListener("idle",()=>{l.end()}),u.addEventListener("failure",d=>{this.log.error("error publishing provider record to peer - %e",d.detail.error)}),u.add(async()=>{let d=[];for await(let f of this.peerRouting.getClosestPeers(o,n))l.push(f),f.name==="FINAL_PEER"&&d.push(f);d.forEach(f=>{u.add(async()=>{for await(let h of c(f))l.push(h)}).catch(h=>{this.log.error("error publishing provider record to peer - %e",h)})})}).catch(d=>{l.end(d)}),yield*l,this.log("sent provider records to %d peers",i)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=0,s=e.multihash.bytes,i=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e,t);if(a.length>0){let u=[];for(let d of a.slice(0,n))try{let f=await this.components.peerStore.get(d,t);u.push({id:d,multiaddrs:f.addresses.map(({multiaddr:h})=>h)})}catch(f){if(f.name!=="NotFoundError")throw f;this.log("no peer store entry for %p",d)}if(yield ed({from:this.components.peerId,messageType:we.GET_PROVIDERS,providers:u,path:{index:-1,queued:0,running:0,total:0}},t),yield j5({from:this.components.peerId,providers:u,path:{index:-1,queued:0,running:0,total:0}},t),o+=u.length,o>=n)return}let c=async function*({peer:u,signal:d,path:f}){let h={type:we.GET_PROVIDERS,key:s};yield*i.network.sendRequest(u.id,h,{...t,signal:d,path:f})},l=new cr(a);for await(let u of this.queryManager.run(s,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let d=[];for(let f of u.providers)l.has(f.id)||(l.add(f.id),d.push(f));if(d.length>0&&(yield j5({from:u.from,providers:d,path:u.path},t),o+=d.length,o>=n))return}}};var Cp=class extends se{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new Vr({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)},this.sendRequest=e.metrics?.traceFunction("libp2p.kadDHT.sendRequest",this.sendRequest.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],s){return{...s,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((s,i)=>{o[`providers-${i}`]=s.id.toString()}),n.closer.length>0&&n.closer.forEach((s,i)=>{o[`closer-${i}`]=s.id.toString()})),o)})??this.sendRequest,this.sendMessage=e.metrics?.traceFunction("libp2p.kadDHT.sendMessage",this.sendMessage.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],s){return{...s,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((s,i)=>{o[`providers-${i}`]=s.id.toString()}),n.closer.length>0&&n.closer.forEach((s,i)=>{o[`closer-${i}`]=s.id.toString()})),o)})??this.sendMessage}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new C("Message type was missing");let s,i=this.timeout.getTimeoutSignal(n);n={...n,signal:i};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield Y5({peer:e,path:n.path},n),s=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield W5({to:e,type:o,path:n.path},n);let a=await this._writeReadMessage(s,t,n);s.close(n).catch(c=>{this.log.error("error closing stream to %p - %e",e,c),s?.abort(c)}),yield ed({from:e,messageType:a.type,closer:a.closer.map(rd),providers:a.providers.map(rd),record:a.record==null?void 0:St.deserialize(a.record),path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),s?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield jr({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(i)}}async*sendMessage(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new C("Message type was missing");let s,i=this.timeout.getTimeoutSignal(n);n={...n,signal:i};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield Y5({peer:e,path:n.path},n),s=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield W5({to:e,type:o,path:n.path},n),await this._writeMessage(s,t,n),s.close(n).catch(a=>{this.log.error("error closing stream to %p - %e",e,a),s?.abort(a)}),yield ed({from:e,messageType:o,path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),s?.abort(a),yield jr({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(i)}}async _writeMessage(e,t,n){await ke(e).write(t,Jo,n)}async _writeReadMessage(e,t,n){let o=ke(e);await o.write(t,Jo,n);let s=await o.read(Jo,n);return s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:rd(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:rd(i)})}),s}};var rs=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return[...this.peerDistances]}async add(e,t={index:-1,queued:0,running:0,total:0},n){let o=await Jt(e.id,n);this.addWithKadId(e,o,t)}addWithKadId(e,t,n={index:-1,queued:0,running:0,total:0}){if(this.peerDistances.find(i=>i.peer.id.equals(e.id))!=null)return;let o={peer:e,distance:Ur(this.originDhtKey,t),path:n};if(this.peerDistances.length===this.capacity){let i=this.peerDistances[this.peerDistances.length-1];if(i!=null&&Co(o.distance,i.distance)!==-1)return}let s=!1;for(let i=0;i<this.peerDistances.length;i++){let a=Co(this.peerDistances[i].distance,o.distance);if(a===0||a===1){s=!0,this.peerDistances.splice(i,0,o);break}}s||this.peerDistances.push(o),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e,t){if(this.length===0)return!0;let n=await Jt(e,t),o=Ur(n,this.originDhtKey),s=this.peerDistances[this.peerDistances.length-1].distance;return Co(o,s)===-1}async anyCloser(e,t){return e.length===0?!1:Promise.any(e.map(async n=>this.isCloser(n,t)))}};var Ip=class{log;routingTable;network;validators;queryManager;components;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`),this.findPeer=e.metrics?.traceFunction("libp2p.kadDHT.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.kadDHT.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async findPeerLocal(e,t){let n,o=await this.routingTable.find(e,t);if(o!=null){this.log("findPeerLocal found %p in routing table",e);try{n=await this.components.peerStore.get(o,t)}catch(s){if(s.name!=="NotFoundError")throw s}}if(n==null)try{n=await this.components.peerStore.get(e,t)}catch(s){if(s.name!=="NotFoundError")throw s}if(n!=null)return this.log("findPeerLocal found %p in peer store",e),{id:n.id,multiaddrs:n.addresses.map(s=>s.multiaddr)}}async*_getValueSingle(e,t,n){let o={type:we.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=jA(e),o={index:-1,queued:0,running:0,total:0};for await(let s of this._getValueSingle(e,n,{...t,path:o}))if(yield s,s.name==="PEER_RESPONSE"&&s.record!=null){let i=nt(s.record.value),a=nn(i);if(!a.equals(e))throw new Tn("public key does not match id");if(a.publicKey==null)throw new Tn("public key missing");yield td({from:e,value:s.record.value,path:o},t)}throw new Xo(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e,t);if(o!=null){this.log("found local"),yield bp({from:this.components.peerId,peer:o,path:{index:-1,queued:0,running:0,total:0}},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a,path:c}){let l={type:we.FIND_NODE,key:e.toMultihash().bytes};for await(let u of o.network.sendRequest(i.id,l,{...t,signal:a,path:c}))if(yield u,u.name==="PEER_RESPONSE"){let d=u.closer.find(f=>f.id.equals(e));d!=null&&(yield bp({from:u.from,peer:d,path:u.path},t))}};for await(let i of this.queryManager.run(e.toMultihash().bytes,s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}if(!n)throw new Pe("Not found")}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await es(e,t),o=new rs(n,this.routingTable.kBucketSize),s=this,i=async function*({peer:a,path:c,peerKadId:l,signal:u}){s.log("getClosestPeers asking %p",a.id);let d={type:we.FIND_NODE,key:e};yield*s.network.sendRequest(a.id,d,{...t,signal:u,path:c}),o.addWithKadId(a,l,c)};yield*this.queryManager.run(e,i,t),this.log("found %d peers close to %b",o.length,e);for(let{peer:a,path:c}of o.peers)yield bp({from:this.components.peerId,peer:a,path:{index:c.index,queued:0,running:0,total:0}},t)}async*getValueOrPeers(e,t,n){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record,n)}catch{let i="invalid record received, discarded";this.log(i),yield jr({from:o.from,error:new Xo(i),path:n.path},n);continue}yield o}}async _verifyRecordOnline(e,t){if(e.timeReceived==null)throw new mp("invalid record received");await uc(this.validators,new St(e.key,e.value,e.timeReceived),t)}async getClosestPeersOffline(e,t){let n=[];try{let i=ve(e),a=Xe(i),c=await this.components.peerStore.get(a,t);n.push({id:c.id,multiaddrs:c.addresses.map(({multiaddr:l})=>l)})}catch{}let o=await es(e,t),s=this.routingTable.closestPeers(o,t);for(let i of s)try{n.push(await this.components.peerStore.getInfo(i,t))}catch(a){if(a.name!=="NotFoundError")throw a}return n.length>0?this.log("getClosestPeersOffline returning the %d closest peer(s) we know to %b",n.length,e):this.log("getClosestPeersOffline could not any peers close to %b with %d peers in the routing table",e,this.routingTable.size),n}};var Tp=class{log;datastore;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`${t.datastorePrefix}/provider`,this.datastore=e.datastore}async addProvider(e,t,n){this.log.trace("%p provides %s",t,e),await this.writeProviderEntry(e,t,n)}async removeProvider(e,t,n){let o=xp(this.datastorePrefix,e,t);this.log.trace("%p no longer provides %s",t,e),await this.datastore.delete(o,n)}async getProviders(e,t){this.log.trace("get providers for %c",e);let n=await this.loadProviders(e,t);return this.log.trace("got %d providers for %c",n.size,e),[...n.keys()]}async writeProviderEntry(e,t,n){let o=xp(this.datastorePrefix,e,t),s=zt(n?.time?.getTime()??Date.now());await this.datastore.put(o,s,n)}async loadProviders(e,t){let n=new Tt,o=xp(this.datastorePrefix,e);for await(let s of this.datastore.query({prefix:o.toString()},t)){let{peerId:i}=wp(s.key);n.set(i,Ep(s.value))}return n}};var a$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function c$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=a$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function ZA(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=c$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}async function*JA(r){let{key:e,startingPeers:t,ourPeerId:n,query:o,alpha:s,path:i,numPaths:a,log:c,peersSeen:l,connectionManager:u,signal:d}=r,f=Bt({objectMode:!0}),h=new jt({concurrency:s,sort:(y,g)=>Co(y.options.distance,g.options.distance)});h.addEventListener("idle",()=>{f.push(qA({path:{index:i,queued:h.queued,running:h.running,total:h.size}},r)),f.end()}),h.addEventListener("failure",y=>{c.error("error during query - %e",y.detail.error)});let p=()=>{h.abort(),f.end(new tr)};d.addEventListener("abort",p);try{let g=function(m,b){if(m==null)return;l.add(m.id.toMultihash().bytes);let w=Ur(b,y);h.add(async()=>{try{for await(let x of o({...r,key:e,peer:m,path:{index:i,queued:h.queued,running:h.running,total:h.size},numPaths:a,peerKadId:b,signal:d})){if(x.name==="PEER_RESPONSE")for(let v of x.closer){if(l.has(v.id.toMultihash().bytes)){c("already seen %p in query",v.id);continue}if(n.equals(v.id)){c("not querying ourselves");continue}let A=await Jt(v.id,{signal:d}),S=Ur(A,y);if(Co(S,w)!==-1){c("skipping %p as they are not closer to %b than %p",v.id,e,m.id);continue}if(!await u.isDialable(v.multiaddrs,{signal:d})){c("not querying undialable peer");continue}c("querying closer peer %p",v.id),g(v,A)}f.push({...x,path:{index:i,queued:h.queued,running:h.running,total:h.size}})}}catch(x){f.push(jr({from:m.id,error:x,path:{index:i,queued:h.queued,running:h.running-1,total:h.size-1}},r))}},{distance:w}).catch(x=>{c.error("error during query - %e",x)})},y=await es(e,{signal:d});await Promise.all(t.map(async m=>{g({id:m,multiaddrs:[]},await Jt(m,{signal:d}))})),yield*f}finally{d.removeEventListener("abort",p)}}var _p=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;allowQueryWithZeroPeers;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??pp,this.alpha=t.alpha??Qo,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.allowQueryWithZeroPeers=t.allowQueryWithZeroPeers??!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,this.shutDownController.signal,void 0)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(FA);n={...n,signal:c}}let o=new AbortController,s=me([this.shutDownController.signal,o.signal,n.signal]);o.signal;let i=this.logger.forComponent(`${this.logPrefix}:query:`+B(e,"base58btc")),a=!1;try{this.routingTable.size===0&&!this.allowQueryWithZeroPeers&&(i("routing table was empty, waiting for some peers before running%s query",n.isSelfQuery===!0?" self":""),await ZA(this.routingTable,"peer:add",{signal:s,filter:h=>!this.peerId.equals(h.detail)}),i("routing table has peers, continuing with%s query",n.isSelfQuery===!0?" self":"")),n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(i("waiting for initial self query before continuing"),await De(this.initialQuerySelfHasRun.promise,s),this.initialQuerySelfHasRun=void 0),i("query:start");let c=await es(e,{signal:s}),l=this.routingTable.closestPeers(c,{count:this.routingTable.kBucketSize}),u=l.sort(()=>Math.random()>.5?1:-1).reduce((h,p,y)=>(h[y%this.disjointPaths].push(p),h),new Array(this.disjointPaths).fill(0).map(()=>[])).filter(h=>h.length>0);if(l.length===0){i.error("running query with no peers");return}let d=Wt(1024),f=u.map((h,p)=>JA({...n,key:e,startingPeers:h,ourPeerId:this.peerId,signal:s,query:t,path:p,numPaths:u.length,alpha:this.alpha,log:i,peersSeen:d,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let h of Vn(...f))h.name==="QUERY_ERROR"&&i.error("query error - %e",h.error),h.name==="PEER_RESPONSE"&&this.routingTable.queueRoutingTableUpdate(h.from),s.throwIfAborted(),yield h;a=!0}catch(c){if(this.running)throw c}finally{a||(i("query exited early"),o.abort()),s.clear(),i("query finished")}}};function l$(r){return r[Symbol.asyncIterator]!=null}function u$(r){if(l$(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Rp=u$;var Lp=class{log;peerId;peerRouting;events;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.events=e.events,this.running=!1,this.peerRouting=t.peerRouting,this.count=t.count??pp,this.interval=t.interval??NA,this.initialInterval=t.initialInterval??OA,this.queryTimeout=t.queryTimeout??MA,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=vp(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=He(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);e.push(n)}let t=me(e);this.controller.signal;try{this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),o=await yl(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),i=>Rl(i,this.count),async i=>Rp(i));t?.throwIfAborted();let s=Date.now()-n;this.log("self-query found %d peers in %dms",o,s),this.events.dispatchEvent(new CustomEvent("kad-dht:query:self",{detail:{peers:o,duration:s}}))}catch(n){this.log.error("self-query error - %e",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.interval))}};var Pp=class extends se{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new jt({concurrency:t.concurrency??LA,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new Vr({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??RA,this.maxQueueSize=t.maxQueueSize??PA,this.validity=t.validity??hp,this.interval=t.interval??DA,this.contentRouting=t.contentRouting,this.running=!1,this.reprovide=vp(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(H5)}).catch(e=>{this.log.error("error running process to reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async processRecords(e){try{this.safeDispatchEvent("reprovide:start"),this.log("starting reprovide/cleanup");for await(let t of this.datastore.query({prefix:this.datastorePrefix},e))try{let{cid:n,peerId:o}=wp(t.key),i=Ep(t.value).getTime()+this.validity,a=Date.now(),c=a>i,l=this.peerId.equals(o);this.log.trace("comparing: %d (now) < %d (expires) = %s %s",a,i,c,c?"(expired)":"(valid)"),c&&!l&&await this.datastore.delete(t.key,e),this.shouldReprovide(l,i)&&(this.log("reproviding %c as it is within the reprovide threshold (%d)",n,this.reprovideThreshold),this.queueReprovide(n).catch(u=>{this.log.error("could not reprovide %c - %e",n,u)}))}catch(n){this.log.error("error processing datastore key %s - %s",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{this.safeDispatchEvent("reprovide:end"),this.running&&(this.log("queuing next re-provide/cleanup run in %d ms",this.interval),this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(H5)}).catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}shouldReprovide(e,t){if(!e)return!1;let n=Date.now();return t<n?!0:t-n<this.reprovideThreshold}async queueReprovide(e,t){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize,t);let n=this.reprovideQueue.queue.find(o=>o.options.cid.equals(e));if(n!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),n.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async o=>{if(o.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let s=this.reprovideTimeout.getTimeoutSignal(o);try{await this.reprovide(o.cid,o)}finally{this.reprovideTimeout.cleanUp(s)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(o=>{this.log.error("could not re-provide key %c - %e",e,o)})}async reprovide(e,t){await cn(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var d$=20,f$=5e3,h$="kad-close",p$=50,Dp=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??f$,this.peerSetSize=t.peerSetSize??d$,this.closeTagName=t.closeTagName??h$,this.closeTagValue=t.closeTagValue??p$,this.closestPeers=new cr,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await Jt(this.components.peerId);this.newPeers=new rs(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new cr(this.newPeers?.peers.map(({peer:o})=>o.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:{value:this.closeTagValue},[z5]:{value:1}}})}),...[...n].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:void 0,[z5]:void 0}})})])}};function nd(r){return Array.isArray(r?.peers)}var kp=class{peerId;root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e,t){this.peerId=e.peerId,this.prefixLength=t.prefixLength??eC,this.kBucketSize=t.kBucketSize??od,this.splitThreshold=t.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=t.numberOfOldContactsToPing??tC,this.lastPingThreshold=t.lastPingThreshold??rC,this.ping=t.ping,this.verify=t.verify,this.onAdd=t.onAdd,this.onRemove=t.onRemove,this.addingPeerMap=El({name:`${t.metricsPrefix}_adding_peer_map`,metrics:e.metrics}),this.root={prefix:"",depth:0,peers:[]}}async start(){await this.addSelfPeer(this.peerId)}stop(){this.addingPeerMap.clear(),this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e,t){this.localPeer={peerId:e,kadId:await Jt(e,t),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await Jt(e,t),lastPing:0},o=this.addingPeerMap.get(e);if(o!=null)return o;try{let s=this._add(n,t);this.addingPeerMap.set(e,s),await s}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n,t),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!g$(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n,t);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let o=n.peers.filter(i=>!(i.peerId.equals(this.localPeer?.peerId)||i.lastPing>Date.now()-this.lastPingThreshold)).sort((i,a)=>i.lastPing<a.lastPing?-1:i.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),s=!1;for await(let i of this.ping(o,t))s=!0,await this.remove(i.kadId,t);s&&await this._add(e,t)}*closest(e,t){let n=new rs(e,t?.count??this.kBucketSize);for(let o of this.toIterable())t?.exclude?.some(s=>s.equals(o.peerId))!==!0&&n.addWithKadId({id:o.peerId,multiaddrs:[]},o.kadId);yield*Kr(n.peers,({peer:o})=>o.id)}count(){function e(t){if(nd(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e,t){let n=this._determineBucket(e),o=this._indexOf(n,e);if(o>-1){let s=n.peers.splice(o,1)[0];await this.onRemove?.(s,n,t)}}*toIterable(){function*e(t){if(nd(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+B(Ur(e,t),"base16"))}_determineBucket(e){let t=B(e,"base2");function n(o,s=0){return nd(o)?o:t[s]==="0"?n(o.left,s+1):n(o.right,s+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>Z(n.kadId,t))}async _split(e,t){let n={prefix:"0",depth:e.depth+1,peers:[]},o={prefix:"1",depth:e.depth+1,peers:[]};for(let s of e.peers)B(s.kadId,"base2")[e.depth]==="0"?(n.peers.push(s),await this.onMove?.(s,e,n,t)):(o.peers.push(s),await this.onMove?.(s,e,o,t));m$(e,n,o)}};function m$(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function g$(r,e){return r.lastPing<Date.now()-e}var od=20,eC=6;var y$=20,b$=100,w$=16,x$=16384,tC=3;var E$=20,v$=100,nC="kad-peer",S$=1,rC=6e5,A$=!0,C$=1e3,Np=class extends se{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;routingTableUpdateQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;shutdownController;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??od,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??nC,this.peerTagValue=t.peerTagValue??S$,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??A$,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??C$,this.shutdownController=new AbortController,this.shutdownController.signal,this.routingTableUpdateQueue=new Yt({concurrency:t.routingTableUpdateQueueConcurrency??w$,metricName:`${t.metricsPrefix}_routing_table_update_queue`,metrics:this.components.metrics,maxSize:t.routingTableUpdateMaxQueueSize??x$}),this.pingOldContactQueue=new Yt({concurrency:t.pingOldContactConcurrency??E$,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??v$}),this.pingOldContactTimeout=new Vr({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new Yt({concurrency:t.pingNewContactConcurrency??y$,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??b$}),this.pingNewContactTimeout=new Vr({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new kp(e,{kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved,metricsPrefix:t.metricsPrefix}),this.closestPeerTagger=new Dp(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,await Tr(this.closestPeerTagger,this.kb))}async afterStart(){let e=0;Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let t=me([this.shutdownController.signal,AbortSignal.timeout(2e4)]);try{for(let n of await this.components.peerStore.all({filters:[o=>o.protocols.includes(this.protocol)&&o.tags.has(nC)],limit:this.populateFromDatastoreLimit,signal:t})){if(!this.running)return;try{await this.add(n.id,{signal:t}),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(n.id,{tags:{[this.peerTagName]:void 0}})}}}finally{t.clear()}this.log("added %d peer store peers to the routing table",e)}).catch(t=>{this.log.error("error adding %d, peer store peers to the routing table - %e",e,t)})}async stop(){this.running=!1,await Zr(this.closestPeerTagger,this.kb),this.routingTableUpdateQueue.abort(),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort(),this.shutdownController.abort()}queueRoutingTableUpdate(e,t={}){let n=this.routingTableUpdateQueue.find(e);if(n!=null){n.join(t).catch(()=>{});return}this.routingTableUpdateQueue.add(async o=>{let s=o,i;t.activeTimeout!=null&&(i=me([o.signal,AbortSignal.timeout(t.activeTimeout)]),s={...o,signal:i});try{await this.add(e,s)}finally{i?.clear()}},{peerId:e,signal:this.shutdownController.signal}).catch(o=>{this.shutdownController.signal.aborted||o?.name==="AbortError"||this.log.error("could not update routing table for peer %p - %e",e,o)})}async peerAdded(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let o of e){if(this.kb.get(o.kadId)==null){this.log("asked to ping contact %p that was not in routing table",o.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let s=this.pingOldContactQueue.find(o.peerId);if(s!=null)return this.log("asked to ping contact %p was already being pinged",o.peerId),await s.join(t)?void 0:o;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),l=me([c,this.shutdownController.signal,a?.signal]);try{return await this.pingContact(o,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),l.clear()}},{peerId:o.peerId,signal:t?.signal}))return o})}for await(let o of Hn(n))o!=null&&(yield o)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),o=me([n,this.shutdownController.signal,t?.signal]);try{let s=this.pingNewContactQueue.find(e.peerId);return s!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await s.join({signal:o})):await this.pingNewContactQueue.add(async i=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,i)),{peerId:e.peerId,signal:o})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),o.clear()}}async pingContact(e,t){let n;try{return this.log("pinging contact %p",e.peerId),await this.components.ping.ping(e.peerId,t),this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0}catch(o){return this.log("error pinging old contact %p - %e",e.peerId,o),n?.abort(o),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e,t){let n=await Jt(e,t);return this.kb.get(n)?.peerId}closestPeer(e){let t=this.closestPeers(e,{count:1});if(t.length>0)return t[0]}closestPeers(e,t){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");let n=await Jt(e,t);await this.kb.remove(n,t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,o=20,s=0;function i(a){if(nd(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<o&&(o=a.peers.length),a.peers.length>s&&(s=a.peers.length);return}i(a.left),i(a.right)}i(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(o),this.metrics.routingTableKadBucketMaxOccupancy.update(s),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var oC=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var Op=15,Mp=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??BA,this.refreshQueryTimeout=i??UA,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1,t){this.log("refreshing routing table");let n=this._maxCommonPrefix(),o=this._getTrackedCommonPrefixLengthsForRefresh(n);this.log(`max common prefix length ${n}`),this.log(`tracked CPLs [ ${o.map(s=>s.toISOString()).join(", ")} ]`),Promise.all(o.map(async(s,i)=>{try{if(await this._refreshCommonPrefixLength(i,s,e,t),this._numPeersForCpl(n)===0){let a=Math.min(2*(i+1),o.length-1);for(let c=i+1;c<a+1;c++)try{await this._refreshCommonPrefixLength(c,s,e,t)}catch(l){this.log.error("failed to refresh entries with common prefix length %d - %e",c,l)}}}catch(a){this.log.error("failed to refresh entries with common prefix length - %e",a)}})).catch(s=>{this.log.error("failed to refresh table - %e",s)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(s=>{this.log.error("failed to set refresh timeout - %e",s)})}async _refreshCommonPrefixLength(e,t,n,o){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let s=this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,s,this.routingTable.size);let i=me([o?.signal,AbortSignal.timeout(this.refreshQueryTimeout)]);try{let a=await Rp(this.peerRouting.getClosestPeers(s.toMultihash().bytes,{signal:i}));this.log(`found ${a} peers that were close to imaginary peer %p`,s),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,s,this.routingTable.size)}finally{i.clear()}}_getTrackedCommonPrefixLengthsForRefresh(e){e>Op&&(e=Op);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}_generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=crypto.getRandomValues(new Uint8Array(2)),n=(t[1]<<8)+t[0],o=this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),s=ve(o);return Xe(s)}_makePeerId(e,t,n){if(n>Op)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Op}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=oC[c],u=new ArrayBuffer(34),d=new DataView(u,0,u.byteLength);return d.setUint8(0,pt.code),d.setUint8(1,32),d.setUint32(2,l,!1),new Uint8Array(d.buffer,d.byteOffset,d.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=Ur(this.routingTable.kb.localPeer.kadId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Bp=class{peerId;providers;peerStore;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.peerId=e.peerId,this.providers=t.providers,this.peerStore=e.peerStore}async handle(e,t){if(t.key==null||t.key.length===0)throw new oe("Missing key");let n;try{n=ae.decode(t.key)}catch{throw new oe("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us, %p to store provider record for for %c",e,this.peerId,n),await Promise.all(t.providers.map(async o=>{let s=ve(o.id),i=Xe(s),a=o.multiaddrs.map(c=>V(c));if(!e.equals(i)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,a),await this.providers.addProvider(n,i),await this.peerStore.merge(i,{multiaddrs:a})}))}};var Up=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers close to %b",e,t.key);try{if(t.key==null)throw new oe("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getClosestPeersOffline(t.key,{exclude:[e,this.peerId]});Z(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(421))});let o={type:we.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toMultihash().bytes,multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0?this.log("could not find any peers closer to %b for %p",t.key,e):this.log("found %d peers close to %b for %p",o.closer.length,t.key,e),o}catch(n){throw this.log("error during finding peers closer to %b for %p - %e",t.key,e,n),n}}};var Fp=class{peerId;peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerId=e.peerId,this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new oe("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=ae.decode(t.key)}catch{throw new oe("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([Qs(Kr(await this.providers.getProviders(n),async a=>{let c=await this.peerStore.get(a);return{id:c.id,multiaddrs:c.addresses.map(({multiaddr:u})=>u)}})),this.peerRouting.getClosestPeersOffline(t.key)]),i={type:we.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:s.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)})),providers:o.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))};return this.log("got %s providers %s closerPeers",i.providers.length,i.closer.length),i}async _getAddresses(e){return[]}};var $p=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new oe("Invalid key");let o={type:we.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(YA(n)){this.log("is public key");let a=QA(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new Pe("No public key found in key book");c=ct(l.id.publicKey)}catch(l){if(l.name!=="NotFoundError")throw l}if(c!=null)return this.log("returning found public key"),o.record=new St(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getClosestPeersOffline(n)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=ts(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(s){if(s.name==="NotFoundError")return;throw s}let o=St.deserialize(n);if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>hp){await this.datastore.delete(t);return}return o}};var Vp=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Kp=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null)throw this.log.error("empty record from %p",e),new oe(`Empty record from: ${e}`);try{let o=St.deserialize(t.record);await uc(this.validators,o),o.timeReceived=new Date;let s=ts(this.datastorePrefix,o.key);return await this.components.datastore.put(s,o.serialize().subarray()),this.log("accepted put for key %b under %k",n,s),t}catch(o){throw this.log("failed to accept put for key %b - %e",n,o),o}}};var qp=class{handlers;log;metrics;incomingMessageTimeout;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`),rpcTime:e.metrics?.registerMetricGroup(`${t.metricsPrefix}_inbound_rpc_time_seconds`,{label:"operation"})},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.incomingMessageTimeout=t.incomingMessageTimeout??1e4,this.handlers={[we.GET_VALUE.toString()]:new $p(e,t),[we.PUT_VALUE.toString()]:new Kp(e,t),[we.FIND_NODE.toString()]:new Up(e,t),[we.ADD_PROVIDER.toString()]:new Bp(e,t),[we.GET_PROVIDERS.toString()]:new Fp(e,t),[we.PING.toString()]:new Vp(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null)throw new oe(`No handler found for message type: ${t.type}`);try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch(o){throw this.metrics.errors?.increment({[t.type]:!0}),o}}async onIncomingStream(e,t){let n=()=>{e.abort(new co)},o=AbortSignal.timeout(this.incomingMessageTimeout);o.addEventListener("abort",n);let s=ke(e).pb(Jo);for(;;){if(e.readStatus!=="readable"){await e.close({signal:o});break}let i=await s.read({signal:o}),a=this.metrics?.rpcTime?.timer(i.type.toString()),c=this.metrics?.rpcTime?.timer(i.type.toString()),l=!1;try{this.log("incoming %s from %p",i.type,t.remotePeer);let u=await this.handleMessage(t.remotePeer,i);u!=null&&await s.write(u,{signal:o})}catch(u){l=!0,c?.(),this.log.error("error handling incoming message - %e",u),e.abort(u);return}finally{l||a?.()}o.removeEventListener("abort",n),o=AbortSignal.timeout(this.incomingMessageTimeout),o.addEventListener("abort",n)}}};var Hp=class extends se{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var X5=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await cn(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers.map(o=>({...o,routing:"kad-dht"})))}async put(e,t,n){await cn(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new Pe("Could not find value for key")}},Z5=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new Pe("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},I$=32,T$=64,zp=class extends se{k;a;d;protocol;routingTable;providers;network;peerRouting;validators;selectors;components;log;running;clientMode;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;onPeerConnectTimeout;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",o=t.datastorePrefix??"/dht",s=t.metricsPrefix??"libp2p_kad_dht",i={queries:e.metrics?.registerMetricGroup(`${s}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${s}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${s}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${s}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.k=t.kBucketSize??od,this.a=t.alpha??Qo,this.d=t.disjointPaths??this.a,this.protocol=t.protocol??_A,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??I$,this.maxOutboundStreams=t.maxOutboundStreams??T$,this.peerInfoMapper=t.peerInfoMapper??WA,this.onPeerConnectTimeout=t.onPeerConnectTimeout??kA,this.providers=new Tp(e,{...t.providers,logPrefix:n,datastorePrefix:o}),this.validators={...GA,...t.validators},this.selectors={...zA,...t.selectors},this.network=new Cp(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:s,timeout:t.networkDialTimeout}),this.routingTable=new Np(e,{kBucketSize:this.k,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:s,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network,routingTableUpdateQueueConcurrency:t.routingTableUpdateQueueConcurrency??Math.max(1,Math.min(this.a*2,16)),routingTableUpdateMaxQueueSize:t.routingTableUpdateMaxQueueSize});let a=He();t.allowQueryWithZeroPeers===!0&&a.resolve(),this.queryManager=new _p(e,{disjointPaths:this.d,alpha:this.a,logPrefix:n,metricsPrefix:s,initialQuerySelfHasRun:a,routingTable:this.routingTable,allowQueryWithZeroPeers:t.allowQueryWithZeroPeers}),this.peerRouting=new Ip(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new Sp(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n,datastorePrefix:o}),this.contentRouting=new Ap(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new Mp(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new qp(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:s,datastorePrefix:o,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new Hp(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new Lp(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:a,operationMetrics:i}),this.reprovider=new Pp(e,{...t.reprovide,logPrefix:n,metricsPrefix:s,datastorePrefix:o,contentRouting:this.contentRouting,operationMetrics:i}),this.network.addEventListener("peer",c=>{let l=c.detail;this.onPeerConnect(l).catch(u=>{this.log.error("could not add %p to routing table - %e",l.id,u)}),this.dispatchEvent(new CustomEvent("peer",{detail:l}))}),this.topologyListener.addEventListener("peer",c=>{let l=c.detail;Promise.resolve().then(async()=>{let u=await this.components.peerStore.get(l),d={id:l,multiaddrs:u.addresses.map(({multiaddr:f})=>f),protocols:u.protocols};await this.onPeerConnect(d)}).catch(u=>{this.log.error("could not add %p to routing table - %e",l,u)})}),this.dhtPeerRouting=new Z5(this),this.dhtContentRouting=new X5(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",c=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let l=c.detail.peer.addresses.some(({multiaddr:d})=>!Ze(d)&&!dt.exactMatch(d)),u=this.getMode();l&&u==="client"?await this.setMode("server"):u==="server"&&!l&&await this.setMode("client")}).catch(l=>{this.log.error("error setting dht server mode - %e",l)})}),this.get=pi(this.get.bind(this),i,"GET_VALUE"),this.findProviders=pi(this.findProviders.bind(this),i,"FIND_PROVIDERS"),this.findPeer=pi(this.findPeer.bind(this),i,"FIND_PEER"),this.getClosestPeers=pi(this.getClosestPeers.bind(this),i,"GET_CLOSEST_PEERS"),this.provide=pi(this.provide.bind(this),i,"PROVIDE"),this.put=pi(this.put.bind(this),i,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[ue]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery","@libp2p/kad-dht"];[rr]=["@libp2p/identify","@libp2p/ping"];get[is](){return this.dhtContentRouting}get[ds](){return this.dhtPeerRouting}get[us](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id,e.multiaddrs),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}this.routingTable.queueRoutingTableUpdate(e.id,{activeTimeout:this.onPeerConnectTimeout})}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e,t){if(e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol,t),e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{signal:t?.signal,maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running||(this.running=!0,await this.setMode(this.clientMode?"client":"server",{force:!0}),await Tr(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await Tr(this.querySelf))}async stop(){this.running=!1,await Zr(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async cancelReprovide(e,t){await this.providers.removeProvider(e,this.components.peerId,t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(e){this.routingTableRefresh.refreshTable(!0,e)}};var sC;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER",r[r.PATH_ENDED=8]="PATH_ENDED"})(sC||(sC={}));function iC(r={}){return e=>new zp(e,r)}var xe;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(xe||(xe={}));var sd=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),J5=Object.freeze({NEW_STREAM:xe.NEW_STREAM,MESSAGE:xe.MESSAGE_INITIATOR,CLOSE:xe.CLOSE_INITIATOR,RESET:xe.RESET_INITIATOR}),aC=Object.freeze({MESSAGE:xe.MESSAGE_RECEIVER,CLOSE:xe.CLOSE_RECEIVER,RESET:xe.RESET_RECEIVER});var id=1<<20,e8=4<<20,Gp=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=id,t=e8){this._buffer=new W,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw new oe("Unprocessed message queue size too large!");let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.name==="InvalidMessageError")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===xe.NEW_STREAM||o===xe.MESSAGE_INITIATOR||o===xe.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=lC(e),{value:o,offset:s}=lC(e,n),i=t&7;if(sd[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw new oe("Message size too large");return{id:t>>3,type:i,offset:n+s,length:o}}},_$=128,cC=127;function lC(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&cC)<<n:(s&cC)*Math.pow(2,n),n+=7}while(s>=_$);return e=o-e,{value:t,offset:e}}var t8=10*1024,r8=class{_pool;_poolOffset;constructor(){this._pool=Ke(t8),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;zt(e.id<<3|e.type,n,o),o+=Re(e.id<<3|e.type),(e.type===xe.NEW_STREAM||e.type===xe.MESSAGE_INITIATOR||e.type===xe.MESSAGE_RECEIVER)&&e.data!=null?(zt(e.data.length,n,o),o+=Re(e.data.length)):(zt(0,n,o),o+=Re(0));let s=n.subarray(this._poolOffset,o);t8-o<100?(this._pool=Ke(t8),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===xe.NEW_STREAM||e.type===xe.MESSAGE_INITIATOR||e.type===xe.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},R$=new r8;function ad(r){let e=new W;return R$.write(r,e),e}var n8=class extends Lo{streamId;types;maxDataSize;muxer;constructor(e){super(e),this.types=e.direction==="outbound"?J5:aC,this.maxDataSize=e.maxDataSize,this.muxer=e.muxer,this.streamId=parseInt(this.id.substring(1)),e.direction==="outbound"&&queueMicrotask(()=>{this.muxer.send(ad({id:this.streamId,type:J5.NEW_STREAM,data:new W(O(this.id))}))})}sendData(e){let t=new W,n=e.byteLength;for(;e.byteLength>0;){let o=Math.min(e.byteLength,this.maxDataSize),s=e.sublist(0,o);e=e.sublist(o),t.append(ad({id:this.streamId,type:this.types.MESSAGE,data:s}))}return{sentBytes:n,canSendMore:this.muxer.send(t)}}sendReset(){return this.muxer.send(ad({id:this.streamId,type:this.types.RESET}))}async sendCloseWrite(e){this.muxer.send(ad({id:this.streamId,type:this.types.CLOSE})),e?.signal?.throwIfAborted()}async sendCloseRead(e){e?.signal?.throwIfAborted()}sendPause(){}sendResume(){}};function uC(r){let{id:e,muxer:t,direction:n,maxMsgSize:o=id}=r;return new n8({...r,id:n==="outbound"?`i${e}`:`r${e}`,direction:n,maxDataSize:o,muxer:t,log:r.log.newScope(`${n}:${e}`),protocol:""})}var L$=5;function P$(r){let e={...r,type:`${sd[r.type]} (${r.type})`};return r.type===xe.NEW_STREAM&&(e.data=B(r.data.subarray())),(r.type===xe.MESSAGE_INITIATOR||r.type===xe.MESSAGE_RECEIVER)&&(e.data=B(r.data.subarray(),"base16")),e}var Wp=class extends Ro{_streamId;rateLimiter;maxMessageSize;maxUnprocessedMessageQueueSize;decoder;constructor(e,t){super(e,{...t,protocol:"/mplex/6.7.0",name:"mplex"}),this._streamId=0,this.maxMessageSize=t.maxMessageSize??id,this.maxUnprocessedMessageQueueSize=t.maxUnprocessedMessageQueueSize??e8,this.decoder=new Gp(this.maxMessageSize,this.maxUnprocessedMessageQueueSize),this.rateLimiter=new sa({points:t.disconnectThreshold??L$,duration:1})}onData(e){for(let t of this.decoder.write(e))this.handleMessage(t)}onCreateStream(e){if(this.status!=="open")throw new Ar("Muxer already closed");let t=this._streamId++;return this._newStream(t,"outbound",e)}_newStream(e,t,n){return this.log("new %s stream %s",t,e),uC({...n,id:e,direction:t,maxMsgSize:this.maxMessageSize,log:this.log,muxer:this})}handleMessage(e){if(this.log.enabled&&this.log.trace("incoming message",P$(e)),e.type===xe.NEW_STREAM){try{this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}let o=this._newStream(e.id,"inbound",this.streamOptions);this.onRemoteStream(o);return}let t=`${(e.type&1)===1?"i":"r"}${e.id}`,n=this.streams.find(o=>o.id===t);if(n==null){this.log("missing stream %s for message type %s",t,sd[e.type]);try{this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}try{switch(e.type){case xe.MESSAGE_INITIATOR:case xe.MESSAGE_RECEIVER:n.onData(e.data);break;case xe.CLOSE_INITIATOR:case xe.CLOSE_RECEIVER:n.onRemoteCloseWrite();break;case xe.RESET_INITIATOR:case xe.RESET_RECEIVER:n.onRemoteReset();break;default:this.log("unknown message type")}}catch(o){this.log.error("error while processing message - %e",o),n.abort(o)}}};var o8=class{protocol="/mplex/6.7.0";_init;constructor(e={}){this._init=e}[Symbol.toStringTag]="@libp2p/mplex";[ue]=["@libp2p/stream-multiplexing"];createStreamMuxer(e){return new Wp(e,{...this._init})}};function dC(r={}){return()=>new o8(r)}var D$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function k$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=D$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function fC(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=k$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var hC="1.0.0",pC="ping",mC="ipfs";var jp=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnLimitedConnection;constructor(e,t={}){this.components=e,this.started=!1,this.protocol=`/${t.protocolPrefix??mC}/${pC}/${hC}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnLimitedConnection=t.runOnLimitedConnection??!0,this.handlePing=this.handlePing.bind(this)}[Symbol.toStringTag]="@libp2p/ping";[ue]=["@libp2p/ping"];async start(){await this.components.registrar.handle(this.protocol,this.handlePing,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}async handlePing(e,t){let n=e.log.newScope("ping");n.trace("ping from %p",t.remotePeer);let o=AbortSignal.timeout(this.timeout);o.addEventListener("abort",()=>{e.abort(new co("Ping timed out"))});let s=Date.now();for await(let i of e){if(e.status!=="open"){n("stream status changed to %s",e.status);break}e.send(i)||(n("waiting for stream to drain"),await fC(e,"drain",{rejectionEvents:["close"],signal:o}),n("stream drained"))}n("ping from %p complete in %dms",t.remotePeer,Date.now()-s),await e.close({signal:o})}async ping(e,t={}){let n=crypto.getRandomValues(new Uint8Array(32)),o=await this.components.connectionManager.openStream(e,this.protocol,{runOnLimitedConnection:this.runOnLimitedConnection,...t}),s=o.log.newScope("ping");try{let i=Date.now(),a=Promise.withResolvers(),c=new W,l=u=>{if(c.append(u.data),c.byteLength===32){o.removeEventListener("message",l);let d=Date.now()-i;Promise.all([o.closeRead(t)]).then(()=>{if(Z(n,c.subarray()))a.resolve(d);else throw new cs(`Received wrong ping ack after ${d}ms`)}).catch(f=>{o.abort(f),a.reject(f)})}};return o.addEventListener("message",l),o.send(n),await o.close(t),await De(a.promise,t.signal)}catch(i){throw s.error("error while pinging %o - %e",e,i),o?.abort(i),i}finally{o?.close()}}};function yC(r={}){return e=>new jp(e,r)}var kt;(function(r){let e;(function(a){a.FIN="FIN",a.STOP_SENDING="STOP_SENDING",a.RESET="RESET",a.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(a){a[a.FIN=0]="FIN",a[a.STOP_SENDING=1]="STOP_SENDING",a[a.RESET=2]="RESET",a[a.FIN_ACK=3]="FIN_ACK"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.flag!=null&&(c.uint32(8),r.Flag.codec().encode(a.flag,c)),a.message!=null&&(c.uint32(18),c.bytes(a.message)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.flag=r.Flag.codec().decode(a);break}case 2:{u.message=a.bytes();break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.flag`,value:r.Flag.codec().decode(a)};break}case 2:{yield{field:`${l}.message`,value:a.bytes()};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(kt||(kt={}));var bC=["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478","stun:stun.cloudflare.com:3478","stun:stun.services.mozilla.com:3478"],s8=Array.from("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"),wC="libp2p+webrtc+v1/",xC=2*1024*1024,dc=16*1024;function B$(r=dc){let e=Re(r-Re(r)),t=1+Re(Object.keys(kt.Flag).length-1),n=1,o=r-e-t-n,s=Re(o);return e+t+n+s}var EC=B$();var vC=1e4,i8="/webrtc",cd="/webrtc-signaling/0.0.1";var U$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function F$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=U$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function ao(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=F$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var a8=class extends Lo{channel;incomingData;maxBufferedAmount;receivedFinAck;finAckTimeout;constructor(e){super({...e,maxMessageSize:(e.maxMessageSize??dc)-EC}),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=Bt(),this.maxBufferedAmount=e.maxBufferedAmount??xC,this.finAckTimeout=e.finAckTimeout??vC,this.channel.onclose=()=>{this.log.trace("received datachannel close event"),this.onRemoteCloseWrite(),this.onTransportClosed()},this.channel.onerror=n=>{let o=n.error;this.log.trace("received datachannel error event - %e",o),this.abort(o)},this.channel.onmessage=async n=>{this.log("incoming message %d bytes",n.data.byteLength);let{data:o}=n;o===null||o.byteLength===0||this.incomingData.push(new Uint8Array(o,0,o.byteLength))},this.channel.bufferedAmountLowThreshold=0,this.channel.onbufferedamountlow=()=>{this.writableNeedsDrain&&this.safeDispatchEvent("drain")},Promise.resolve().then(async()=>{for await(let n of xl(this.incomingData))this.processIncomingProtobuf(n)}).catch(n=>{this.log.error("error processing incoming data channel messages - %e",n)});let t=()=>{this.channel.readyState==="open"&&(this.log.trace("stream closed, closing underlying datachannel"),this.channel.close())};this.addEventListener("close",t),this.channel.readyState!=="open"&&(this.log('channel ready state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),ao(this.channel,"open",{rejectionEvents:["close","error"]}).then(()=>{this.log('channel ready state is now "%s", dispatching drain',this.channel.readyState),this.safeDispatchEvent("drain")}).catch(n=>{this.abort(n.error??n)}))}sendNewStream(){}_sendMessage(e){if(this.channel.readyState!=="open")throw new Yr(`Invalid datachannel state - ${this.channel.readyState}`);this.log.trace('sending message, channel state "%s"',this.channel.readyState);try{for(let t of e)this.channel.send(ie(t))}catch(t){this.log.error("error sending datachannel message - %e",t),this.abort(t)}}sendData(e){return this.channel.readyState!=="open"?{sentBytes:0,canSendMore:!1}:(this._sendMessage(js.single(kt.encode({message:e.subarray()}))),{sentBytes:e.byteLength,canSendMore:this.channel.bufferedAmount<this.maxBufferedAmount})}sendReset(e){try{this.log.error("sending reset - %e",e),this._sendFlag(kt.Flag.RESET),this.receivedFinAck?.reject(e)}catch(t){this.log.error("failed to send reset - %e",t)}}async sendCloseWrite(e){this._sendFlag(kt.Flag.FIN),e?.signal?.throwIfAborted(),this.receivedFinAck=Promise.withResolvers();let t=e?.signal??AbortSignal.timeout(this.finAckTimeout),n=[ao(this.channel,"close",{signal:t}),ao(this.channel,"error",{signal:t})];await Promise.any([De(this.receivedFinAck.promise,t),...n]).finally(()=>{n.forEach(o=>o.cancel())})}async sendCloseRead(e){this._sendFlag(kt.Flag.STOP_SENDING),e?.signal?.throwIfAborted()}processIncomingProtobuf(e){let t=kt.decode(e);t.message!=null&&(this.readStatus==="readable"||this.readStatus==="paused")&&this.onData(new W(t.message)),t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===kt.Flag.FIN&&(this._sendFlag(kt.Flag.FIN_ACK),this.onRemoteCloseWrite()),t.flag===kt.Flag.RESET&&(this.receivedFinAck?.reject(new bi("The stream was reset")),this.onRemoteReset()),t.flag===kt.Flag.STOP_SENDING&&this.onRemoteCloseRead(),t.flag===kt.Flag.FIN_ACK&&this.receivedFinAck?.resolve())}_sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',e.toString(),this.channel.readyState),!1;this.log.trace("sending flag %s",e.toString());let t=kt.encode({flag:e}),n=js.single(t);try{return this._sendMessage(n),!0}catch(o){this.log.error("could not send flag %s - %e",e.toString(),o)}return!1}sendPause(){}sendResume(){}};function ld(r){let{channel:e,direction:t,isHandshake:n}=r;return new a8({...r,id:`${e.id}`,log:r.log.newScope(`${n===!0?"handshake":t}:${e.id}`),protocol:""})}var ns=class{protocol;peerConnection;metrics;dataChannelOptions;earlyDataChannels;constructor(e){this.onEarlyDataChannel=this.onEarlyDataChannel.bind(this),this.peerConnection=e.peerConnection,this.metrics=e.metrics,this.protocol=e.protocol??i8,this.dataChannelOptions=e.dataChannelOptions??{},this.peerConnection.addEventListener("datachannel",this.onEarlyDataChannel),this.earlyDataChannels=[]}onEarlyDataChannel(e){this.earlyDataChannels.push(e.channel)}createStreamMuxer(e){return this.peerConnection.removeEventListener("datachannel",this.onEarlyDataChannel),new c8(e,{peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,protocol:this.protocol,earlyDataChannels:this.earlyDataChannels})}},c8=class extends Ro{peerConnection;dataChannelOptions;constructor(e,t){super(e,{...t,name:"muxer"}),this.peerConnection=t.peerConnection,this.protocol=t.protocol??i8,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{this.onDataChannel(n)},queueMicrotask(()=>{if(this.status!=="open"){t.earlyDataChannels.forEach(n=>{n.close()});return}t.earlyDataChannels.forEach(n=>{this.onDataChannel(n)})})}onDataChannel(e){if(this.log("incoming datachannel with channel id %d, protocol %s and status %s",e.id,e.protocol,e.readyState),e.label==="init"){this.log.trace("closing init channel %d",e.id),e.close();return}let t=ld({...this.streamOptions,...this.dataChannelOptions,channel:e,direction:"inbound",log:this.log});this.onRemoteStream(t)}async onCreateStream(e){let t=this.peerConnection.createDataChannel("",{});return this.log("open channel %d for protocol %s",t.id,e?.protocol),ld({...e,...this.dataChannelOptions,channel:t,direction:"outbound",log:this.log})}onData(){}};var l8=class extends _o{peerConnection;constructor(e){super(e),this.peerConnection=e.peerConnection;let t=e.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change %s initial state %s",this.peerConnection.connectionState,t),(this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.onTransportClosed(),this.peerConnection.close())}}sendData(e){return{sentBytes:e.byteLength,canSendMore:!0}}async sendClose(e){this.peerConnection.close(),e?.signal?.throwIfAborted()}sendReset(){this.peerConnection.close()}sendPause(){}sendResume(){}},ud=r=>new l8(r);async function u8(r){return r=r??{},typeof r=="function"&&(r=await r()),r.iceServers=r.iceServers??bC.map(e=>({urls:[e]})),r}var SC=(r=32)=>wC+[...Array(r)].map(()=>s8.at(Math.floor(Math.random()*s8.length))).join("");var Yp=globalThis.RTCPeerConnection,Qp=globalThis.RTCSessionDescription,AC=globalThis.RTCIceCandidate;var os=class extends Error{constructor(e){super(`WebRTC transport error: ${e}`),this.name="WebRTCTransportError"}},vr=class extends os{constructor(e="SDP handshake failed"){super(e),this.name="SDPHandshakeFailedError"}};var Xp=class extends os{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`),this.name="WebRTC/InvalidFingerprintError"}};var Zp=class extends os{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`),this.name="WebRTC/UnimplementedError"}},Jp=class extends os{constructor(e){super(`unsupported hash algorithm code: ${e} please see the codes at https://github.com/multiformats/multicodec/blob/master/table.csv `),this.name="WebRTC/UnsupportedHashAlgorithmError"}};var er;(function(r){let e;(function(a){a.SDP_OFFER="SDP_OFFER",a.SDP_ANSWER="SDP_ANSWER",a.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(a){a[a.SDP_OFFER=0]="SDP_OFFER",a[a.SDP_ANSWER=1]="SDP_ANSWER",a[a.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),(function(a){a.codec=()=>rt(t)})(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((a,c,l={})=>{l.lengthDelimited!==!1&&c.fork(),a.type!=null&&(c.uint32(8),r.Type.codec().encode(a.type,c)),a.data!=null&&(c.uint32(18),c.string(a.data)),l.lengthDelimited!==!1&&c.ldelim()},(a,c,l={})=>{let u={},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{u.type=r.Type.codec().decode(a);break}case 2:{u.data=a.string();break}default:{a.skipType(f&7);break}}}return u},function*(a,c,l,u={}){let d=c==null?a.len:a.pos+c;for(;a.pos<d;){let f=a.uint32();switch(f>>>3){case 1:{yield{field:`${l}.type`,value:r.Type.codec().decode(a)};break}case 2:{yield{field:`${l}.data`,value:a.string()};break}default:{a.skipType(f&7);break}}}})),n);function o(a){return te(a,r.codec())}r.encode=o;function s(a,c){return ee(a,r.codec(),c)}r.decode=s;function i(a,c){return re(a,r.codec(),c)}r.stream=i})(er||(er={}));var e2=async(r,e,t)=>{try{let n=Promise.withResolvers();for($$(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null){t.signal?.throwIfAborted();break}if(o.type!==er.Type.ICE_CANDIDATE)throw new oe("ICE candidate message expected");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.onProgress?.(new X("webrtc:end-of-ice-candidates")),t.log.trace("end-of-candidates received");continue}let i=new AC(s);t.log.trace("%s received new ICE candidate %o",t.direction,s);try{t.onProgress?.(new X("webrtc:add-ice-candidate",i.candidate)),await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received %o - %e",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate - %e",t.direction,n),t.signal?.aborted===!0&&r.connectionState!=="connected")throw n}};function $$(r,e){if(r.connectionState==="connected"){e.resolve();return}r.onconnectionstatechange=t=>{switch(r.connectionState){case"connected":e.resolve();break;case"failed":case"closed":e.reject(new yi(`RTCPeerConnection connection state became "${r.connectionState}"`));break;default:break}}}function t2(r){let e;for(let t of r.getComponents())t.name==="p2p"&&(e=Oe(t.value??""));if(e==null)throw new Qr("Remote peerId must be present in multiaddr");return e}async function CC({rtcConfiguration:r,dataChannel:e,signal:t,metrics:n,multiaddr:o,connectionManager:s,transportManager:i,log:a,logger:c,onProgress:l}){let{circuitAddress:u,targetPeer:d}=IC(o);n?.dialerEvents.increment({open:!0}),a.trace("dialing circuit address: %a",u);let f=s.getConnections(d),h;f.length===0?(l?.(new X("webrtc:dial-relay")),h=await i.dial(u,{signal:t,onProgress:l})):(l?.(new X("webrtc:reuse-relay-connection")),h=f[0]),l?.(new X("webrtc:open-signaling-stream"));let p=await h.newStream(cd,{signal:t,runOnLimitedConnection:!0}),y=ke(p).pb(er),g=new Yp(r);g.addEventListener("connectionstatechange",()=>{g.connectionState==="closed"&&g.close()});let m=new ns({peerConnection:g,dataChannelOptions:e});try{let b=g.createDataChannel("init");g.onicecandidate=({candidate:A})=>{if(g.connectionState==="connected"){a.trace("ignore new ice candidate as peer connection is already connected");return}if(A==null||A?.candidate===""){a.trace("initiator detected end of ICE candidates");return}let S=JSON.stringify(A?.toJSON()??null);a.trace("initiator sending ICE candidate %o",A),y.write({type:er.Type.ICE_CANDIDATE,data:S},{signal:t}).catch(I=>{a.error("error sending ICE candidate - %e",I)})},g.onicecandidateerror=A=>{a.error("initiator ICE candidate error",A)};let w=await g.createOffer().catch(A=>{throw a.error("could not execute createOffer - %e",A),new vr("Failed to set createOffer")});a.trace("initiator send SDP offer %s",w.sdp),l?.(new X("webrtc:send-sdp-offer")),await y.write({type:er.Type.SDP_OFFER,data:w.sdp},{signal:t}),await g.setLocalDescription(w).catch(A=>{throw a.error("could not execute setLocalDescription - %e",A),new vr("Failed to set localDescription")}),l?.(new X("webrtc:read-sdp-answer")),a.trace("initiator read SDP answer");let x=await y.read({signal:t});if(x.type!==er.Type.SDP_ANSWER)throw new vr("Remote should send an SDP answer");a.trace("initiator received SDP answer %s",x.data);let v=new Qp({type:"answer",sdp:x.data});return await g.setRemoteDescription(v).catch(A=>{throw a.error("could not execute setRemoteDescription - %e",A),new vr("Failed to set remoteDescription")}),a.trace("initiator read candidates until connected"),l?.(new X("webrtc:read-ice-candidates")),await e2(g,y,{direction:"initiator",signal:t,log:a,onProgress:l}),a.trace("initiator connected"),b.readyState!=="open"&&(a.trace("wait for init channel to open"),await ao(b,"open",{signal:t})),a.trace("closing init channel"),b.close(),a.trace("waiting for init channel to close"),await ao(b,"close",{signal:t}),l?.(new X("webrtc:close-signaling-stream")),a.trace("closing signaling channel"),await p.close({signal:t}),a.trace("initiator connected to remote address %s",o),{remoteAddress:o,peerConnection:g,muxerFactory:m}}catch(b){throw a.error("outgoing signaling error - %e",b),g.close(),p.abort(b),b}finally{g.onicecandidate=null,g.onicecandidateerror=null}}var TC=Ce(ta.matchers[0],Ae(290)),r2=class r extends se{transportManager;shutdownController;events;constructor(e,t){super(),this.transportManager=e.transportManager,this.events=e.events,this.shutdownController=t.shutdownController,this.onTransportListening=this.onTransportListening.bind(this)}async listen(){this.events.addEventListener("transport:listening",this.onTransportListening)}onTransportListening(e){e.detail.getAddrs().filter(n=>TC.exactMatch(n)).map(n=>n.encapsulate("/webrtc")).length>0&&this.safeDispatchEvent("listening")}getAddrs(){return this.transportManager.getListeners().filter(e=>!(e instanceof r)).map(e=>e.getAddrs().filter(t=>TC.exactMatch(t)).map(t=>t.encapsulate("/webrtc"))).flat()}updateAnnounceAddrs(){}async close(){this.events.removeEventListener("transport:listening",this.onTransportListening),this.shutdownController.abort(),queueMicrotask(()=>{this.safeDispatchEvent("close")})}};async function _C(r,e,{peerConnection:t,signal:n,log:o}){o.trace("new inbound signaling stream");let s=ke(r).pb(er);try{t.onicecandidate=({candidate:d})=>{if(t.connectionState==="connected"){o.trace("ignore new ice candidate as peer connection is already connected");return}if(d==null||d?.candidate===""){o.trace("recipient detected end of ICE candidates");return}let f=JSON.stringify(d?.toJSON()??null);o.trace("recipient sending ICE candidate %s",f),s.write({type:er.Type.ICE_CANDIDATE,data:f},{signal:n}).catch(h=>{o.error("error sending ICE candidate - %e",h)})},o.trace("recipient read SDP offer");let c=await s.read({signal:n});if(c.type!==er.Type.SDP_OFFER)throw new vr(`expected message type SDP_OFFER, received: ${c.type??"undefined"} `);o.trace("recipient received SDP offer %s",c.data);let l=new Qp({type:"offer",sdp:c.data});await t.setRemoteDescription(l).catch(d=>{throw o.error("could not execute setRemoteDescription - %e",d),new vr("Failed to set remoteDescription")});let u=await t.createAnswer().catch(d=>{throw o.error("could not execute createAnswer - %e",d),new vr("Failed to create answer")});o.trace("recipient send SDP answer %s",u.sdp),await s.write({type:er.Type.SDP_ANSWER,data:u.sdp},{signal:n}),await t.setLocalDescription(u).catch(d=>{throw o.error("could not execute setLocalDescription - %e",d),new vr("Failed to set localDescription")}),o.trace("recipient read candidates until connected"),await e2(t,s,{direction:"recipient",signal:n,log:o})}catch(c){if(t.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a - %e",e.remoteAddr,c),t.close(),c;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",e.remoteAddr,c)}let i=t2(e.remoteAddr),a=V(`/webrtc/p2p/${i}`);return o.trace("recipient connected to remote address %s",a),{remoteAddress:a,remotePeer:i}}var n2=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,this.shutdownController.signal,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}[fo]=!0;[Symbol.toStringTag]="@libp2p/webrtc";[ue]=["@libp2p/transport"];[rr]=["@libp2p/identify","@libp2p/circuit-relay-v2-transport"];isStarted(){return this._started}async start(){await this.components.registrar.handle(cd,(e,t)=>{let n=this.components.upgrader.createInboundAbortSignal(this.shutdownController.signal);this._onProtocol(e,t,n).catch(o=>{this.log.error("failed to handle incoming connect from %p - %e",t.remotePeer,o)}).finally(()=>{n.clear()})},{runOnLimitedConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(cd),this._started=!1}createListener(e){return new r2(this.components,{shutdownController:this.shutdownController})}listenFilter(e){return e.filter(gl.exactMatch)}dialFilter(e){return this.listenFilter(e)}async dial(e,t){this.log.trace("dialing address: %a",e);let{remoteAddress:n,peerConnection:o,muxerFactory:s}=await CC({rtcConfiguration:await u8(this.init.rtcConfiguration),dataChannel:this.init.dataChannel,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log,logger:this.components.logger,onProgress:t.onProgress}),i=ud({peerConnection:o,remoteAddr:n,metrics:this.metrics?.dialerEvents,direction:"outbound",log:this.components.logger.forComponent("libp2p:webrtc:connection")}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,remotePeer:t2(e),muxerFactory:s,onProgress:t.onProgress,signal:t.signal});return this._closeOnShutdown(o,i),a}async _onProtocol(e,t,n){let o=new Yp(await u8(this.init.rtcConfiguration));o.addEventListener("connectionstatechange",()=>{o.connectionState==="closed"&&o.close()});let s=new ns({peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i,remotePeer:a}=await _C(e,t,{peerConnection:o,signal:n,log:this.log});await e.close({signal:n});let c=ud({peerConnection:o,remoteAddr:i,metrics:this.metrics?.listenerEvents,direction:"inbound",log:this.components.logger.forComponent("libp2p:webrtc:connection")});await this.components.upgrader.upgradeInbound(c,{skipEncryption:!0,skipProtection:!0,remotePeer:a,muxerFactory:s,signal:n}),this._closeOnShutdown(o,c)}catch(i){throw this.log.error("incoming signaling error - %e",i),o.close(),e.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection - %e",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function IC(r){let e=r.getComponents().filter(({name:n})=>n==="p2p").map(({value:n})=>n).pop();if(e==null)throw new C("Destination peer id was missing");return{circuitAddress:V(r.getComponents().filter(({name:n})=>n!=="webrtc")),targetPeer:Oe(e)}}var d8=Object.values(gs).map(r=>r.decoder).reduce((r,e)=>r.or(e)),V$=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function RC(r){return r?.match(V$)?.groups?.fingerprint}function f8(r){let t=r.getComponents().find(n=>n.code===466)?.value;if(t===void 0||t==="")throw new C(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function K$(r){return Ue.decode(d8.decode(r))}function q$(r){let e=K$(f8(r)),t=H$(e.code),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw new Xp(n,r.toString());return`${t} ${o.join(":").toUpperCase()}`}function LC(r){let e=r.split(":").map(o=>parseInt(o,16)),t=Uint8Array.from(e),n=Nt(pt.code,t);return V(`/certhash/${Sc.encode(n.bytes)}`)}function H$(r){switch(r){case 17:return"sha-1";case 18:return"sha-256";case 19:return"sha-512";default:throw new Jp(r)}}function PC(r,e){let{host:t,port:n,type:o}=Y(r);if(o!=="ip4"&&o!=="ip6")throw new C(`Multiaddr ${r} was not an IPv4 or IPv6 address`);let s=q$(r);return{type:"answer",sdp:`v=0
|
|
57
57
|
o=- 0 0 IN IP${o==="ip4"?4:6} ${t}
|
|
58
58
|
s=-
|
|
59
59
|
t=0 0
|
|
@@ -70,7 +70,7 @@ a=sctp-port:5000
|
|
|
70
70
|
a=max-message-size:${dc}
|
|
71
71
|
a=candidate:1467250027 1 UDP 1467250027 ${t} ${n} typ host
|
|
72
72
|
a=end-of-candidates
|
|
73
|
-
`}}function
|
|
73
|
+
`}}function DC(r,e){let{host:t,port:n,type:o}=Y(r);if(o!=="ip4"&&o!=="ip6")throw new C(`Multiaddr ${r} was not an IPv4 or IPv6 address`);return{type:"offer",sdp:`v=0
|
|
74
74
|
o=- 0 0 IN IP${o==="ip4"?4:6} ${t}
|
|
75
75
|
s=-
|
|
76
76
|
c=IN IP${o==="ip4"?4:6} ${t}
|
|
@@ -91,7 +91,7 @@ a=end-of-candidates
|
|
|
91
91
|
`:`
|
|
92
92
|
`;try{r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
|
|
93
93
|
a=ice-ufrag:`+e+t).replace(/\na=ice-pwd:[^\n]*\n/,`
|
|
94
|
-
a=ice-pwd:`+e+t)}catch{}return r}var p8=O("libp2p-webrtc-noise:");function kC(r,e,t){let n=r.trim().toLowerCase().replaceAll(":",""),o=O(n,"hex"),s=Nt(pt.code,o),i=d8.decode(f8(e)),a=p8.byteLength+s.bytes.byteLength+i.byteLength;return t==="server"?et([p8,i,s.bytes],a):et([p8,s.bytes,i],a)}function H$(r,e){return r.role==="server"}async function NC(r,e,t,n){let o=r.createDataChannel("",{negotiated:!0,id:0});try{if(n.role==="client"){n.log.trace("client creating local offer");let d=await r.createOffer();n.log.trace("client created local offer %s",d.sdp);let f=h8(d,t);n.log.trace("client setting local offer %s",f.sdp),await r.setLocalDescription(f);let h=LC(n.remoteAddr,t);n.log.trace("client setting server description %s",h.sdp),await r.setRemoteDescription(h)}else{let d=PC(n.remoteAddr,t);n.log.trace("server setting client %s %s",d.type,d.sdp),await r.setRemoteDescription(d),n.log.trace("server creating local answer");let f=await r.createAnswer();n.log.trace("server created local answer");let h=h8(f,t);n.log.trace("server setting local description %s",f.sdp),await r.setLocalDescription(h)}if(o.readyState!=="open"&&(n.log.trace("%s wait for handshake channel to open, starting status %s",n.role,o.readyState),await ao(o,"open",n)),n.log.trace("%s handshake channel opened",n.role),H$(n,r)){let d=r.remoteFingerprint()?.value??"";n.remoteAddr=n.remoteAddr.encapsulate(RC(d))}let s=_C(r.localDescription?.sdp);if(s==null)throw new os("Could not get fingerprint from local description sdp");n.log.trace("%s performing noise handshake",n.role);let i=kC(s,n.remoteAddr,n.role),a=s0({prologueBytes:i})(n),c=ld({channel:o,direction:"outbound",isHandshake:!0,log:n.log,...n.dataChannel??{}}),l=ud({peerConnection:r,remoteAddr:n.remoteAddr,metrics:n.events,direction:n.role==="client"?"outbound":"inbound",log:n.logger.forComponent("libp2p:webrtc-direct:connection")});if(r.addEventListener("connectionstatechange",()=>{switch(r.connectionState){case"failed":case"disconnected":case"closed":l.close().catch(d=>{n.log.error("error closing connection - %e",d),l.abort(d)});break;default:break}}),n.events?.increment({peer_connection:!0}),n.role==="client"){n.log.trace("%s secure inbound",n.role);let d=await a.secureInbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});return n.log.trace("%s upgrade outbound",n.role),await n.upgrader.upgradeOutbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:d.remotePeer,muxerFactory:e,signal:n.signal})}n.log.trace("%s secure outbound",n.role);let u=await a.secureOutbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});l.remoteAddr=l.remoteAddr.encapsulate(`/p2p/${u.remotePeer}`),n.log.trace("%s upgrade inbound",n.role),await n.upgrader.upgradeInbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:u.remotePeer,muxerFactory:e,signal:n.signal})}catch(s){throw o.close(),r.close(),s}}async function OC(r,e,t={}){let n=t.certificate;n==null&&(n=await RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256"}));let o=typeof t.rtcConfiguration=="function"?await t.rtcConfiguration():t.rtcConfiguration,s=new RTCPeerConnection({...o??{},certificates:[n]}),i=new ns({peerConnection:s,metrics:t.events,dataChannelOptions:t.dataChannel});return{peerConnection:s,muxerFactory:i}}var o2=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}[fo]=!0;[Symbol.toStringTag]="@libp2p/webrtc-direct";[ue]=["@libp2p/transport"];async dial(e,t){this.log("dial %a",e),t.signal.throwIfAborted();let n,o=e.getComponents().findLast(c=>c.code===421)?.value;o!=null&&(n=Oe(o));let s=vC(),{peerConnection:i,muxerFactory:a}=await OC("client",s,{rtcConfiguration:typeof this.init.rtcConfiguration=="function"?await this.init.rtcConfiguration():this.init.rtcConfiguration??{},dataChannel:this.init.dataChannel});try{return await NC(i,a,s,{role:"client",log:this.log,logger:this.components.logger,events:this.metrics?.dialerEvents,signal:t.signal,remoteAddr:e,dataChannel:this.init.dataChannel,upgrader:t.upgrader,peerId:this.components.peerId,remotePeer:n,privateKey:this.components.privateKey})}catch(c){throw i.close(),c}}createListener(e){throw new Zp("WebRTCDirectTransport.createListener")}listenFilter(e){return[]}dialFilter(e){return e.filter(ml.exactMatch)}};function MC(r){return e=>new o2(e,r)}function BC(r){return e=>new n2(e,r)}var z$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function G$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=z$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function UC(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=G$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function FC(){throw new Error("WebSocket Servers can not be created in the browser!")}var W$=1024*1024*4,j$=10,m8=class extends _o{websocket;maxBufferedAmount;checkBufferedAmountTask;constructor(e){super(e),this.websocket=e.websocket,this.maxBufferedAmount=e.maxBufferedAmount??W$,this.checkBufferedAmountTask=ia(this.checkBufferedAmount.bind(this),e.bufferedAmountPollInterval??j$),this.websocket.addEventListener("close",t=>{if(this.log('closed - code %d, reason "%s", wasClean %s',t.code,t.reason,t.wasClean),this.checkBufferedAmountTask.stop(),!t.wasClean){this.onRemoteReset();return}this.onTransportClosed()},{once:!0}),this.websocket.addEventListener("message",t=>{try{let n;if(typeof t.data=="string")n=O(t.data);else if(t.data instanceof ArrayBuffer)n=new Uint8Array(t.data,0,t.data.byteLength);else{this.abort(new Error("Incorrect binary type"));return}this.onData(n)}catch(n){this.log.error("error receiving data - %e",n)}})}sendData(e){for(let n of e)this.websocket.send(ae(n));let t=this.websocket.bufferedAmount<this.maxBufferedAmount;return t||this.checkBufferedAmountTask.start(),{sentBytes:e.byteLength,canSendMore:t}}sendReset(){this.websocket.close(1006)}async sendClose(e){this.websocket.close(),e?.signal?.throwIfAborted()}sendPause(){}sendResume(){}checkBufferedAmount(){this.log("buffered amount now %d",this.websocket.bufferedAmount),this.websocket.bufferedAmount===0&&(this.checkBufferedAmountTask.stop(),this.safeDispatchEvent("drain"))}};function $C(r){return new m8(r)}var g8=class{log;init;logger;metrics;components;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_websockets_dialer_events_total",{label:"event",help:"Total count of WebSockets dialer events by type"})})}[fo]=!0;[Symbol.toStringTag]="@libp2p/websockets";[ue]=["@libp2p/transport"];async dial(e,t){this.log("dialing %s",e),t=t??{};let n=$C({websocket:await this._connect(e,t),remoteAddr:e,metrics:this.metrics?.dialerEvents,direction:"outbound",log:this.components.logger.forComponent("libp2p:websockets:connection"),maxBufferedAmount:this.init.maxBufferedAmount,bufferedAmountPollInterval:this.init.bufferedAmountPollInterval});this.log("new outbound connection %s",n.remoteAddr);let o=await t.upgrader.upgradeOutbound(n,t);return this.log("outbound connection %s upgraded",n.remoteAddr),o}async _connect(e,t){t?.signal?.throwIfAborted();let n=M0(e);this.log("create websocket connection to %s",n);let o=new WebSocket(n);o.binaryType="arraybuffer";try{t.onProgress?.(new X("websockets:open-connection")),await UC(o,"open",t)}catch(s){if(t.signal?.aborted)throw this.metrics?.dialerEvents.increment({abort:!0}),new yi(`Could not connect to ${n}`);this.metrics?.dialerEvents.increment({error:!0});try{o.close()}catch{}throw s}return this.log("connected %s",e),this.metrics?.dialerEvents.increment({connect:!0}),o}createListener(e){return FC({logger:this.logger,events:this.components.events,metrics:this.components.metrics},{...this.init,...e})}listenFilter(e){return e.filter(t=>Fn.exactMatch(t)||Gs.exactMatch(t))}dialFilter(e){return this.listenFilter(e)}};function VC(r={}){return e=>new g8(e,r)}var KC={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/dnsaddr/va1.bootstrap.libp2p.io/p2p/12D3KooWKnDdG3iXw9eTFijk3EWSunZcFi54Zka4wmtqtt6rPxc8","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function s2(r={}){let e;return r.name!=null&&r.version!=null&&(e=`${r.name}/${r.version} ${Zh()}`),{privateKey:r.privateKey,dns:r.dns,nodeInfo:{userAgent:e},addresses:{listen:["/p2p-circuit","/webrtc"]},transports:[RE(),BC(),MC(),VC()],connectionEncrypters:[s0()],streamMuxers:[cE(),uC()],peerDiscovery:[bE(KC)],services:{autoNAT:yE(),dcutr:DE(),delegatedContentRouting:fE(x0()),delegatedPeerRouting:hE(x0()),dht:sC({clientMode:!0}),identify:CA(),identifyPush:IA(),ping:gC(),http:bA()}}}async function qC(r,e){let t=e??{};t.privateKey==null&&e.datastore!=null&&(t.privateKey=await D4(e.datastore,e.keychain));let n=s2({...t,name:t.nodeInfo?.name??r.info.name,version:t.nodeInfo?.version??r.info.version});return n.datastore=n.datastore??e.datastore,await Bb({...n,...t})}async function Y$(r,e){return b4(e)?e:qC(r,{...e,dns:r.dns,logger:r.logger,datastore:r.datastore})}function Q$(r,e){let t;Object.defineProperty(r,"libp2p",{configurable:!0,enumerable:!0,get(){if(t!=null)return t;throw new Ar}});let n={name:"libp2p",start:async o=>{t==null&&(t=await Y$(o,e));try{o.hasRouter("libp2p-router")||o.addRouter(Ub(t)),b4(o.libp2p)&&await o.libp2p.start()}catch(s){if(s.name!=="NotStartedError")throw s}},stop:async()=>{await t?.stop()}};return r.addMixin(n),r}return YC(X$);})();
|
|
94
|
+
a=ice-pwd:`+e+t)}catch{}return r}var p8=O("libp2p-webrtc-noise:");function NC(r,e,t){let n=r.trim().toLowerCase().replaceAll(":",""),o=O(n,"hex"),s=Nt(pt.code,o),i=d8.decode(f8(e)),a=p8.byteLength+s.bytes.byteLength+i.byteLength;return t==="server"?et([p8,i,s.bytes],a):et([p8,s.bytes,i],a)}function z$(r,e){return r.role==="server"}async function OC(r,e,t,n){let o=r.createDataChannel("",{negotiated:!0,id:0});try{if(n.role==="client"){n.log.trace("client creating local offer");let d=await r.createOffer();n.log.trace("client created local offer %s",d.sdp);let f=h8(d,t);n.log.trace("client setting local offer %s",f.sdp),await r.setLocalDescription(f);let h=PC(n.remoteAddr,t);n.log.trace("client setting server description %s",h.sdp),await r.setRemoteDescription(h)}else{let d=DC(n.remoteAddr,t);n.log.trace("server setting client %s %s",d.type,d.sdp),await r.setRemoteDescription(d),n.log.trace("server creating local answer");let f=await r.createAnswer();n.log.trace("server created local answer");let h=h8(f,t);n.log.trace("server setting local description %s",f.sdp),await r.setLocalDescription(h)}if(o.readyState!=="open"&&(n.log.trace("%s wait for handshake channel to open, starting status %s",n.role,o.readyState),await ao(o,"open",n)),n.log.trace("%s handshake channel opened",n.role),z$(n,r)){let d=r.remoteFingerprint()?.value??"";n.remoteAddr=n.remoteAddr.encapsulate(LC(d))}let s=RC(r.localDescription?.sdp);if(s==null)throw new os("Could not get fingerprint from local description sdp");n.log.trace("%s performing noise handshake",n.role);let i=NC(s,n.remoteAddr,n.role),a=s0({prologueBytes:i})(n),c=ld({channel:o,direction:"outbound",isHandshake:!0,log:n.log,...n.dataChannel??{}}),l=ud({peerConnection:r,remoteAddr:n.remoteAddr,metrics:n.events,direction:n.role==="client"?"outbound":"inbound",log:n.logger.forComponent("libp2p:webrtc-direct:connection")});if(r.addEventListener("connectionstatechange",()=>{switch(r.connectionState){case"failed":case"disconnected":case"closed":l.close().catch(d=>{n.log.error("error closing connection - %e",d),l.abort(d)});break;default:break}}),n.events?.increment({peer_connection:!0}),n.role==="client"){n.log.trace("%s secure inbound",n.role);let d=await a.secureInbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});return n.log.trace("%s upgrade outbound",n.role),await n.upgrader.upgradeOutbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:d.remotePeer,muxerFactory:e,signal:n.signal})}n.log.trace("%s secure outbound",n.role);let u=await a.secureOutbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});l.remoteAddr=l.remoteAddr.encapsulate(`/p2p/${u.remotePeer}`),n.log.trace("%s upgrade inbound",n.role),await n.upgrader.upgradeInbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:u.remotePeer,muxerFactory:e,signal:n.signal})}catch(s){throw o.close(),r.close(),s}}async function MC(r,e,t={}){let n=t.certificate;n==null&&(n=await RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256"}));let o=typeof t.rtcConfiguration=="function"?await t.rtcConfiguration():t.rtcConfiguration,s=new RTCPeerConnection({...o??{},certificates:[n]}),i=new ns({peerConnection:s,metrics:t.events,dataChannelOptions:t.dataChannel});return{peerConnection:s,muxerFactory:i}}var o2=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}[fo]=!0;[Symbol.toStringTag]="@libp2p/webrtc-direct";[ue]=["@libp2p/transport"];async dial(e,t){this.log("dial %a",e),t.signal.throwIfAborted();let n,o=e.getComponents().findLast(c=>c.code===421)?.value;o!=null&&(n=Oe(o));let s=SC(),{peerConnection:i,muxerFactory:a}=await MC("client",s,{rtcConfiguration:typeof this.init.rtcConfiguration=="function"?await this.init.rtcConfiguration():this.init.rtcConfiguration??{},dataChannel:this.init.dataChannel});try{return await OC(i,a,s,{role:"client",log:this.log,logger:this.components.logger,events:this.metrics?.dialerEvents,signal:t.signal,remoteAddr:e,dataChannel:this.init.dataChannel,upgrader:t.upgrader,peerId:this.components.peerId,remotePeer:n,privateKey:this.components.privateKey})}catch(c){throw i.close(),c}}createListener(e){throw new Zp("WebRTCDirectTransport.createListener")}listenFilter(e){return[]}dialFilter(e){return e.filter(ml.exactMatch)}};function BC(r){return e=>new o2(e,r)}function UC(r){return e=>new n2(e,r)}var G$=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function W$(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=G$(r),d=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(y){n(),i(y);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)u(h,d);for(let h of t.rejectionEvents)a.includes(h)||u(h,f)};for(let h of a)l(h,d);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Ut(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function FC(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=W$(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function $C(){throw new Error("WebSocket Servers can not be created in the browser!")}var j$=1024*1024*4,Y$=10,m8=class extends _o{websocket;maxBufferedAmount;checkBufferedAmountTask;constructor(e){super(e),this.websocket=e.websocket,this.maxBufferedAmount=e.maxBufferedAmount??j$,this.checkBufferedAmountTask=ia(this.checkBufferedAmount.bind(this),e.bufferedAmountPollInterval??Y$),this.websocket.addEventListener("close",t=>{if(this.log('closed - code %d, reason "%s", wasClean %s',t.code,t.reason,t.wasClean),this.checkBufferedAmountTask.stop(),!t.wasClean){this.onRemoteReset();return}this.onTransportClosed()},{once:!0}),this.websocket.addEventListener("message",t=>{try{let n;if(typeof t.data=="string")n=O(t.data);else if(t.data instanceof ArrayBuffer)n=new Uint8Array(t.data,0,t.data.byteLength);else{this.abort(new Error("Incorrect binary type"));return}this.onData(n)}catch(n){this.log.error("error receiving data - %e",n)}})}sendData(e){for(let n of e)this.websocket.send(ie(n));let t=this.websocket.bufferedAmount<this.maxBufferedAmount;return t||this.checkBufferedAmountTask.start(),{sentBytes:e.byteLength,canSendMore:t}}sendReset(){this.websocket.close(1006)}async sendClose(e){this.websocket.close(),e?.signal?.throwIfAborted()}sendPause(){}sendResume(){}checkBufferedAmount(){this.log("buffered amount now %d",this.websocket.bufferedAmount),this.websocket.bufferedAmount===0&&(this.checkBufferedAmountTask.stop(),this.safeDispatchEvent("drain"))}};function VC(r){return new m8(r)}var g8=class{log;init;logger;metrics;components;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_websockets_dialer_events_total",{label:"event",help:"Total count of WebSockets dialer events by type"})})}[fo]=!0;[Symbol.toStringTag]="@libp2p/websockets";[ue]=["@libp2p/transport"];async dial(e,t){this.log("dialing %s",e),t=t??{};let n=VC({websocket:await this._connect(e,t),remoteAddr:e,metrics:this.metrics?.dialerEvents,direction:"outbound",log:this.components.logger.forComponent("libp2p:websockets:connection"),maxBufferedAmount:this.init.maxBufferedAmount,bufferedAmountPollInterval:this.init.bufferedAmountPollInterval});this.log("new outbound connection %s",n.remoteAddr);let o=await t.upgrader.upgradeOutbound(n,t);return this.log("outbound connection %s upgraded",n.remoteAddr),o}async _connect(e,t){t?.signal?.throwIfAborted();let n=M0(e);this.log("create websocket connection to %s",n);let o=new WebSocket(n);o.binaryType="arraybuffer";try{t.onProgress?.(new X("websockets:open-connection")),await FC(o,"open",t)}catch(s){if(t.signal?.aborted)throw this.metrics?.dialerEvents.increment({abort:!0}),new yi(`Could not connect to ${n}`);this.metrics?.dialerEvents.increment({error:!0});try{o.close()}catch{}throw s}return this.log("connected %s",e),this.metrics?.dialerEvents.increment({connect:!0}),o}createListener(e){return $C({logger:this.logger,events:this.components.events,metrics:this.components.metrics},{...this.init,...e})}listenFilter(e){return e.filter(t=>Fn.exactMatch(t)||Gs.exactMatch(t))}dialFilter(e){return this.listenFilter(e)}};function KC(r={}){return e=>new g8(e,r)}var qC={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/dnsaddr/va1.bootstrap.libp2p.io/p2p/12D3KooWKnDdG3iXw9eTFijk3EWSunZcFi54Zka4wmtqtt6rPxc8","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function s2(r={}){let e;return r.name!=null&&r.version!=null&&(e=`${r.name}/${r.version} ${Zh()}`),{privateKey:r.privateKey,dns:r.dns,nodeInfo:{userAgent:e},addresses:{listen:["/p2p-circuit","/webrtc"]},transports:[LE(),UC(),BC(),KC()],connectionEncrypters:[s0()],streamMuxers:[lE(),dC()],peerDiscovery:[wE(qC)],services:{autoNAT:bE(),dcutr:kE(),delegatedContentRouting:hE(x0()),delegatedPeerRouting:pE(x0()),dht:iC({clientMode:!0}),identify:IA(),identifyPush:TA(),ping:yC(),http:wA()}}}async function HC(r,e){let t=e??{};t.privateKey==null&&e.datastore!=null&&(t.privateKey=await D4(e.datastore,e.keychain));let n=s2({...t,name:t.nodeInfo?.name??r.info.name,version:t.nodeInfo?.version??r.info.version});return n.datastore=n.datastore??e.datastore,await Ub({...n,...t})}async function Q$(r,e){return b4(e)?e:HC(r,{...e,dns:r.dns,logger:r.logger,datastore:r.datastore})}function X$(r,e){let t;Object.defineProperty(r,"libp2p",{configurable:!0,enumerable:!0,get(){if(t!=null)return t;throw new Cr}});let n={name:"libp2p",start:async o=>{t==null&&(t=await Q$(o,e));try{o.hasRouter("libp2p-router")||o.addRouter(Fb(t)),b4(o.libp2p)&&await o.libp2p.start()}catch(s){if(s.name!=="NotStartedError")throw s}},stop:async()=>{await t?.stop()}};return r.addMixin(n),r}return QC(Z$);})();
|
|
95
95
|
/*! Bundled license information:
|
|
96
96
|
|
|
97
97
|
pvtsutils/build/index.js:
|