libp2p 2.8.8-b8600fce8 → 2.8.8-bb4ad31db

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.
Files changed (61) hide show
  1. package/dist/index.min.js +8 -8
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/address-manager/index.d.ts +2 -1
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js.map +1 -1
  6. package/dist/src/components.d.ts +2 -1
  7. package/dist/src/components.d.ts.map +1 -1
  8. package/dist/src/components.js.map +1 -1
  9. package/dist/src/connection/index.d.ts.map +1 -1
  10. package/dist/src/connection/index.js +2 -1
  11. package/dist/src/connection/index.js.map +1 -1
  12. package/dist/src/connection-manager/connection-pruner.d.ts +2 -1
  13. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  14. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  15. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  16. package/dist/src/connection-manager/dial-queue.js +2 -1
  17. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  18. package/dist/src/connection-manager/index.d.ts +2 -1
  19. package/dist/src/connection-manager/index.d.ts.map +1 -1
  20. package/dist/src/connection-manager/index.js.map +1 -1
  21. package/dist/src/connection-manager/reconnect-queue.d.ts +2 -1
  22. package/dist/src/connection-manager/reconnect-queue.d.ts.map +1 -1
  23. package/dist/src/connection-manager/reconnect-queue.js.map +1 -1
  24. package/dist/src/connection-monitor.d.ts.map +1 -1
  25. package/dist/src/connection-monitor.js +2 -1
  26. package/dist/src/connection-monitor.js.map +1 -1
  27. package/dist/src/libp2p.d.ts +1 -1
  28. package/dist/src/libp2p.d.ts.map +1 -1
  29. package/dist/src/libp2p.js +2 -1
  30. package/dist/src/libp2p.js.map +1 -1
  31. package/dist/src/random-walk.d.ts +1 -1
  32. package/dist/src/random-walk.d.ts.map +1 -1
  33. package/dist/src/random-walk.js +1 -1
  34. package/dist/src/random-walk.js.map +1 -1
  35. package/dist/src/registrar.d.ts +2 -1
  36. package/dist/src/registrar.d.ts.map +1 -1
  37. package/dist/src/registrar.js.map +1 -1
  38. package/dist/src/transport-manager.d.ts +2 -1
  39. package/dist/src/transport-manager.d.ts.map +1 -1
  40. package/dist/src/transport-manager.js.map +1 -1
  41. package/dist/src/upgrader.d.ts +2 -1
  42. package/dist/src/upgrader.d.ts.map +1 -1
  43. package/dist/src/upgrader.js +2 -1
  44. package/dist/src/upgrader.js.map +1 -1
  45. package/dist/src/version.d.ts +1 -1
  46. package/dist/src/version.js +1 -1
  47. package/package.json +11 -10
  48. package/src/address-manager/index.ts +2 -1
  49. package/src/components.ts +2 -1
  50. package/src/connection/index.ts +2 -1
  51. package/src/connection-manager/connection-pruner.ts +2 -1
  52. package/src/connection-manager/dial-queue.ts +2 -1
  53. package/src/connection-manager/index.ts +2 -1
  54. package/src/connection-manager/reconnect-queue.ts +2 -1
  55. package/src/connection-monitor.ts +2 -1
  56. package/src/libp2p.ts +2 -1
  57. package/src/random-walk.ts +1 -1
  58. package/src/registrar.ts +2 -1
  59. package/src/transport-manager.ts +2 -1
  60. package/src/upgrader.ts +4 -2
  61. package/src/version.ts +1 -1
package/dist/index.min.js CHANGED
@@ -1,23 +1,23 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2P = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var Libp2P=(()=>{var Ep=Object.create;var Co=Object.defineProperty;var vp=Object.getOwnPropertyDescriptor;var Ap=Object.getOwnPropertyNames;var Sp=Object.getPrototypeOf,_p=Object.prototype.hasOwnProperty;var Cr=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),Kt=(r,t)=>{for(var e in t)Co(r,e,{get:t[e],enumerable:!0})},Au=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ap(t))!_p.call(r,o)&&o!==e&&Co(r,o,{get:()=>t[o],enumerable:!(n=vp(t,o))||n.enumerable});return r};var To=(r,t,e)=>(e=r!=null?Ep(Sp(r)):{},Au(t||!r||!r.__esModule?Co(e,"default",{value:r,enumerable:!0}):e,r)),Ip=r=>Au(Co({},"__esModule",{value:!0}),r);var kd=Cr((iv,Yc)=>{"use strict";var s0=Object.prototype.hasOwnProperty,Ft="~";function Zn(){}Object.create&&(Zn.prototype=Object.create(null),new Zn().__proto__||(Ft=!1));function i0(r,t,e){this.fn=r,this.context=t,this.once=e||!1}function Rd(r,t,e,n,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new i0(e,n||r,o),i=Ft?Ft+t:t;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 fs(r,t){--r._eventsCount===0?r._events=new Zn:delete r._events[t]}function Tt(){this._events=new Zn,this._eventsCount=0}Tt.prototype.eventNames=function(){var t=[],e,n;if(this._eventsCount===0)return t;for(n in e=this._events)s0.call(e,n)&&t.push(Ft?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Tt.prototype.listeners=function(t){var e=Ft?Ft+t:t,n=this._events[e];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};Tt.prototype.listenerCount=function(t){var e=Ft?Ft+t:t,n=this._events[e];return n?n.fn?1:n.length:0};Tt.prototype.emit=function(t,e,n,o,s,i){var a=Ft?Ft+t:t;if(!this._events[a])return!1;var c=this._events[a],u=arguments.length,l,f;if(c.fn){switch(c.once&&this.removeListener(t,c.fn,void 0,!0),u){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,n),!0;case 4:return c.fn.call(c.context,e,n,o),!0;case 5:return c.fn.call(c.context,e,n,o,s),!0;case 6:return c.fn.call(c.context,e,n,o,s,i),!0}for(f=1,l=new Array(u-1);f<u;f++)l[f-1]=arguments[f];c.fn.apply(c.context,l)}else{var d=c.length,m;for(f=0;f<d;f++)switch(c[f].once&&this.removeListener(t,c[f].fn,void 0,!0),u){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,e);break;case 3:c[f].fn.call(c[f].context,e,n);break;case 4:c[f].fn.call(c[f].context,e,n,o);break;default:if(!l)for(m=1,l=new Array(u-1);m<u;m++)l[m-1]=arguments[m];c[f].fn.apply(c[f].context,l)}}return!0};Tt.prototype.on=function(t,e,n){return Rd(this,t,e,n,!1)};Tt.prototype.once=function(t,e,n){return Rd(this,t,e,n,!0)};Tt.prototype.removeListener=function(t,e,n,o){var s=Ft?Ft+t:t;if(!this._events[s])return this;if(!e)return fs(this,s),this;var i=this._events[s];if(i.fn)i.fn===e&&(!o||i.once)&&(!n||i.context===n)&&fs(this,s);else{for(var a=0,c=[],u=i.length;a<u;a++)(i[a].fn!==e||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:fs(this,s)}return this};Tt.prototype.removeAllListeners=function(t){var e;return t?(e=Ft?Ft+t:t,this._events[e]&&fs(this,e)):(this._events=new Zn,this._eventsCount=0),this};Tt.prototype.off=Tt.prototype.removeListener;Tt.prototype.addListener=Tt.prototype.on;Tt.prefixed=Ft;Tt.EventEmitter=Tt;typeof Yc<"u"&&(Yc.exports=Tt)});var Fd=Cr((Pv,Bd)=>{Bd.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var t=0,e=Object.create(null),n=Object.create(null);function o(s,i){e[s]=i,t++,t>=r&&(t=0,n=e,e=Object.create(null))}return{has:function(s){return e[s]!==void 0||n[s]!==void 0},remove:function(s){e[s]!==void 0&&(e[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=e[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){e[s]!==void 0?e[s]=i:o(s,i)},clear:function(){e=Object.create(null),n=Object.create(null)}}}});var Ph=Cr(ho=>{(function(){var r,t,e,n,o,s,i,a;a=function(c){var u,l,f,d;return u=(c&255<<24)>>>24,l=(c&255<<16)>>>16,f=(c&65280)>>>8,d=c&255,[u,l,f,d].join(".")},i=function(c){var u,l,f,d,m,h;for(u=[],f=d=0;d<=3&&c.length!==0;f=++d){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}h=t(c),m=h[0],l=h[1],c=c.substring(l),u.push(m)}if(c.length!==0)throw new Error("Invalid IP");switch(u.length){case 1:if(u[0]>4294967295)throw new Error("Invalid IP");return u[0]>>>0;case 2:if(u[0]>255||u[1]>16777215)throw new Error("Invalid IP");return(u[0]<<24|u[1])>>>0;case 3:if(u[0]>255||u[1]>255||u[2]>65535)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2])>>>0;case 4:if(u[0]>255||u[1]>255||u[2]>255||u[3]>255)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2]<<8|u[3])>>>0;default:throw new Error("Invalid IP")}},e=function(c){return c.charCodeAt(0)},n=e("0"),s=e("a"),o=e("A"),t=function(c){var u,l,f,d,m;for(d=0,u=10,l="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,u=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,u=8,l="7")),m=f;f<c.length;){if("0"<=c[f]&&c[f]<=l)d=d*u+(e(c[f])-n)>>>0;else if(u===16)if("a"<=c[f]&&c[f]<="f")d=d*u+(10+e(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")d=d*u+(10+e(c[f])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");f++}if(f===m)throw new Error("empty octet");return[d,f]},r=function(){function c(u,l){var f,d,m,h;if(typeof u!="string")throw new Error("Missing `net' parameter");if(l||(h=u.split("/",2),u=h[0],l=h[1]),l||(l=32),typeof l=="string"&&l.indexOf(".")>-1){try{this.maskLong=i(l)}catch(g){throw f=g,new Error("Invalid mask: "+l)}for(d=m=32;m>=0;d=--m)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(l||l===0)this.bitmask=parseInt(l,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(u)&this.maskLong)>>>0}catch(g){throw f=g,new Error("Invalid net address: "+u)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+l);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(u){return typeof u=="string"&&(u.indexOf("/")>0||u.split(".").length!==4)&&(u=new c(u)),u instanceof c?this.contains(u.base)&&this.contains(u.broadcast||u.last):(i(u)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(u){return u==null&&(u=1),new c(a(this.netLong+this.size*u),this.mask)},c.prototype.forEach=function(u){var l,f,d;for(d=i(this.first),f=i(this.last),l=0;d<=f;)u(a(d),d,l),l++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),ho.ip2long=i,ho.long2ip=a,ho.Netmask=r}).call(ho)});var rp=Cr((o3,ep)=>{function Xt(r,t){typeof t=="boolean"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}ep.exports=Xt;Xt.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};Xt.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};Xt.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var t=new Date().getTime();if(r&&t-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var e=this._timeouts.shift();if(e===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),e=this._cachedTimeouts.slice(-1);else return!1;var n=this;return this._timer=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},e),this._options.unref&&this._timer.unref(),!0};Xt.prototype.attempt=function(r,t){this._fn=r,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var e=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){e._operationTimeoutCb()},e._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};Xt.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};Xt.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};Xt.prototype.start=Xt.prototype.try;Xt.prototype.errors=function(){return this._errors};Xt.prototype.attempts=function(){return this._attempts};Xt.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},t=null,e=0,n=0;n<this._errors.length;n++){var o=this._errors[n],s=o.message,i=(r[s]||0)+1;r[s]=i,i>=e&&(t=o,e=i)}return t}});var np=Cr(Sr=>{var gb=rp();Sr.operation=function(r){var t=Sr.timeouts(r);return new gb(t,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Sr.timeouts=function(r){if(r instanceof Array)return[].concat(r);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var e in r)t[e]=r[e];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],o=0;o<t.retries;o++)n.push(this.createTimeout(o,t));return r&&r.forever&&!n.length&&n.push(this.createTimeout(o,t)),n.sort(function(s,i){return s-i}),n};Sr.createTimeout=function(r,t){var e=t.randomize?Math.random()+1:1,n=Math.round(e*Math.max(t.minTimeout,1)*Math.pow(t.factor,r));return n=Math.min(n,t.maxTimeout),n};Sr.wrap=function(r,t,e){if(t instanceof Array&&(e=t,t=null),!e){e=[];for(var n in r)typeof r[n]=="function"&&e.push(n)}for(var o=0;o<e.length;o++){var s=e[o],i=r[s];r[s]=function(c){var u=Sr.operation(t),l=Array.prototype.slice.call(arguments,1),f=l.pop();l.push(function(d){u.retry(d)||(d&&(arguments[0]=u.mainError()),f.apply(this,arguments))}),u.attempt(function(){c.apply(r,l)})}.bind(r,i),r[s].options=t}}});var sp=Cr((i3,op)=>{op.exports=np()});var Gb={};Kt(Gb,{createLibp2p:()=>Wb});var Su=Symbol.for("@libp2p/connection");var ua=Symbol.for("@libp2p/content-routing");var fa=Symbol.for("@libp2p/peer-discovery");var Po=Symbol.for("@libp2p/peer-id");function Re(r){return!!r?.[Po]}var da=Symbol.for("@libp2p/peer-routing");var ha="keep-alive";var ew=Symbol.for("@libp2p/transport");var We;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(We||(We={}));var Zt=class extends Error{static name="AbortError";constructor(t="The operation was aborted"){super(t),this.name="AbortError"}};var k=class extends Error{static name="InvalidParametersError";constructor(t="Invalid parameters"){super(t),this.name="InvalidParametersError"}},Tr=class extends Error{static name="InvalidPublicKeyError";constructor(t="Invalid public key"){super(t),this.name="InvalidPublicKeyError"}},yn=class extends Error{static name="InvalidPrivateKeyError";constructor(t="Invalid private key"){super(t),this.name="InvalidPrivateKeyError"}};var Lo=class extends Error{static name="ConnectionClosingError";constructor(t="The connection is closing"){super(t),this.name="ConnectionClosingError"}},Pr=class extends Error{static name="ConnectionClosedError";constructor(t="The connection is closed"){super(t),this.name="ConnectionClosedError"}};var Ge=class extends Error{static name="NotFoundError";constructor(t="Not found"){super(t),this.name="NotFoundError"}},Lr=class extends Error{static name="InvalidPeerIdError";constructor(t="Invalid PeerID"){super(t),this.name="InvalidPeerIdError"}},ke=class extends Error{static name="InvalidMultiaddrError";constructor(t="Invalid multiaddr"){super(t),this.name="InvalidMultiaddrError"}},Do=class extends Error{static name="InvalidCIDError";constructor(t="Invalid CID"){super(t),this.name="InvalidCIDError"}},Ro=class extends Error{static name="InvalidMultihashError";constructor(t="Invalid Multihash"){super(t),this.name="InvalidMultihashError"}},bn=class extends Error{static name="UnsupportedProtocolError";constructor(t="Unsupported protocol error"){super(t),this.name="UnsupportedProtocolError"}},ko=class extends Error{static name="InvalidMessageError";constructor(t="Invalid message"){super(t),this.name="InvalidMessageError"}};var Mo=class extends Error{static name="TimeoutError";constructor(t="Timed out"){super(t),this.name="TimeoutError"}},me=class extends Error{static name="NotStartedError";constructor(t="Not started"){super(t),this.name="NotStartedError"}};var Dr=class extends Error{static name="DialError";constructor(t="Dial error"){super(t),this.name="DialError"}};var Rr=class extends Error{static name="LimitedConnectionError";constructor(t="Limited connection"){super(t),this.name="LimitedConnectionError"}},Oo=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(t="Too many inbound protocol streams"){super(t),this.name="TooManyInboundProtocolStreamsError"}},No=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(t="Too many outbound protocol streams"){super(t),this.name="TooManyOutboundProtocolStreamsError"}},Me=class extends Error{static name="UnsupportedKeyTypeError";constructor(t="Unsupported key type"){super(t),this.name="UnsupportedKeyTypeError"}};var ge=class extends EventTarget{#t=new Map;constructor(){super()}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let o=this.#t.get(t);o==null&&(o=[],this.#t.set(t,o)),o.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let o=this.#t.get(t);o!=null&&(o=o.filter(({callback:s})=>s!==e),this.#t.set(t,o))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:o})=>!o),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};function Bo(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function _u(...r){let t=[];for(let e of r)Bo(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStart!=null&&await e.beforeStart()})),await Promise.all(t.map(async e=>{await e.start()})),await Promise.all(t.map(async e=>{e.afterStart!=null&&await e.afterStart()}))}async function Iu(...r){let t=[];for(let e of r)Bo(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStop!=null&&await e.beforeStop()})),await Promise.all(t.map(async e=>{await e.stop()})),await Promise.all(t.map(async e=>{e.afterStop!=null&&await e.afterStop()}))}var wn=Symbol.for("@libp2p/service-capabilities"),pa=Symbol.for("@libp2p/service-dependencies");var wa={};Kt(wa,{base58btc:()=>j,base58flickr:()=>kp});var Tw=new Uint8Array(0);function Cu(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ye(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 Tu(r){return new TextEncoder().encode(r)}function Pu(r){return new TextDecoder().decode(r)}function Cp(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function f(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var g=0,b=0,v=0,C=h.length;v!==C&&h[v]===0;)v++,g++;for(var x=(C-v)*l+1>>>0,p=new Uint8Array(x);v!==C;){for(var w=h[v],T=0,P=x-1;(w!==0||T<b)&&P!==-1;P--,T++)w+=256*p[P]>>>0,p[P]=w%a>>>0,w=w/a>>>0;if(w!==0)throw new Error("Non-zero carry");b=T,v++}for(var D=x-b;D!==x&&p[D]===0;)D++;for(var F=c.repeat(g);D<x;++D)F+=r.charAt(p[D]);return F}function d(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var g=0;if(h[g]!==" "){for(var b=0,v=0;h[g]===c;)b++,g++;for(var C=(h.length-g)*u+1>>>0,x=new Uint8Array(C);h[g];){var p=e[h.charCodeAt(g)];if(p===255)return;for(var w=0,T=C-1;(p!==0||w<v)&&T!==-1;T--,w++)p+=a*x[T]>>>0,x[T]=p%256>>>0,p=p/256>>>0;if(p!==0)throw new Error("Non-zero carry");v=w,g++}if(h[g]!==" "){for(var P=C-v;P!==C&&x[P]===0;)P++;for(var D=new Uint8Array(b+(C-P)),F=b;P!==C;)D[F++]=x[P++];return D}}}function m(h){var g=d(h);if(g)return g;throw new Error(`Non-${t} character`)}return{encode:f,decodeUnsafe:d,decode:m}}var Tp=Cp,Pp=Tp,Du=Pp;var ma=class{name;prefix;baseEncode;constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},ga=class{name;prefix;baseDecode;prefixCodePoint;constructor(t,e,n){this.name=t,this.prefix=e;let o=e.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Ru(this,t)}},ya=class{decoders;constructor(t){this.decoders=t}or(t){return Ru(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n!=null)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Ru(r,t){return new ya({...r.decoders??{[r.prefix]:r},...t.decoders??{[t.prefix]:t}})}var ba=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new ma(t,e,n),this.decoder=new ga(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}};function kr({name:r,prefix:t,encode:e,decode:n}){return new ba(r,t,e,n)}function Oe({name:r,prefix:t,alphabet:e}){let{encode:n,decode:o}=Du(e,r);return kr({prefix:t,name:r,encode:n,decode:s=>ye(o(s))})}function Lp(r,t,e,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*e/8|0),i=0,a=0,c=0;for(let u=0;u<o;++u){let l=t[r[u]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<e|l,i+=e,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=e||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function Dp(r,t,e){let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i!==0&&(s+=t[o&a<<e-i]),n)for(;(s.length*e&7)!==0;)s+="=";return s}function Rp(r){let t={};for(let e=0;e<r.length;++e)t[r[e]]=e;return t}function at({name:r,prefix:t,bitsPerChar:e,alphabet:n}){let o=Rp(n);return kr({prefix:t,name:r,encode(s){return Dp(s,n,e)},decode(s){return Lp(s,o,e,r)}})}var j=Oe({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),kp=Oe({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var xa={};Kt(xa,{base32:()=>Vt,base32hex:()=>Bp,base32hexpad:()=>Up,base32hexpadupper:()=>Kp,base32hexupper:()=>Fp,base32pad:()=>Op,base32padupper:()=>Np,base32upper:()=>Mp,base32z:()=>qp});var Vt=at({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Mp=at({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Op=at({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Np=at({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Bp=at({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Fp=at({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Up=at({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Kp=at({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),qp=at({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ea={};Kt(Ea,{base36:()=>xn,base36upper:()=>zp});var xn=Oe({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),zp=Oe({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Vp=Ou,ku=128,Hp=127,$p=~Hp,Wp=Math.pow(2,31);function Ou(r,t,e){t=t||[],e=e||0;for(var n=e;r>=Wp;)t[e++]=r&255|ku,r/=128;for(;r&$p;)t[e++]=r&255|ku,r>>>=7;return t[e]=r|0,Ou.bytes=e-n+1,t}var Gp=va,jp=128,Mu=127;function va(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw va.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&Mu)<<o:(i&Mu)*Math.pow(2,o),o+=7}while(i>=jp);return va.bytes=s-n,e}var Xp=Math.pow(2,7),Yp=Math.pow(2,14),Zp=Math.pow(2,21),Qp=Math.pow(2,28),Jp=Math.pow(2,35),tm=Math.pow(2,42),em=Math.pow(2,49),rm=Math.pow(2,56),nm=Math.pow(2,63),om=function(r){return r<Xp?1:r<Yp?2:r<Zp?3:r<Qp?4:r<Jp?5:r<tm?6:r<em?7:r<rm?8:r<nm?9:10},sm={encode:Vp,decode:Gp,encodingLength:om},im=sm,En=im;function vn(r,t=0){return[En.decode(r,t),En.decode.bytes]}function Mr(r,t,e=0){return En.encode(r,t,e),t}function Or(r){return En.encodingLength(r)}function Qt(r,t){let e=t.byteLength,n=Or(r),o=n+Or(e),s=new Uint8Array(o+e);return Mr(r,s,0),Mr(e,s,n),s.set(t,o),new Nr(r,e,t,s)}function Jt(r){let t=ye(r),[e,n]=vn(t),[o,s]=vn(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Nr(e,o,i,t)}function Nu(r,t){if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&Cu(r.bytes,e.bytes)}}var Nr=class{code;size;digest;bytes;constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};function Bu(r,t){let{bytes:e,version:n}=r;switch(n){case 0:return cm(e,Aa(r),t??j.encoder);default:return lm(e,Aa(r),t??Vt.encoder)}}var Fu=new WeakMap;function Aa(r){let t=Fu.get(r);if(t==null){let e=new Map;return Fu.set(r,e),e}return t}var it=class r{code;version;multihash;bytes;"/";constructor(t,e,n,o){this.code=e,this.version=t,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:t,multihash:e}=this;if(t!==An)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==um)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=Qt(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n!=null&&t.code===n.code&&t.version===n.version&&Nu(t.multihash,n.multihash)}toString(t){return Bu(this,t)}toJSON(){return{"/":Bu(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i??Uu(n,o,s.bytes))}else if(e[fm]===!0){let{version:n,multihash:o,code:s}=e,i=Jt(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==An)throw new Error(`Version 0 CID must use dag-pb (code: ${An}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Uu(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,An,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length!==0)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=ye(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new Nr(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[f,d]=vn(t.subarray(e));return e+=d,f},o=n(),s=An;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),c=n(),u=e+c,l=u-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:l,size:u}}static parse(t,e){let[n,o]=am(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Aa(s).set(n,t),s}};function am(r,t){switch(r[0]){case"Q":{let e=t??j;return[j.prefix,e.decode(`${j.prefix}${r}`)]}case j.prefix:{let e=t??j;return[j.prefix,e.decode(r)]}case Vt.prefix:{let e=t??Vt;return[Vt.prefix,e.decode(r)]}case xn.prefix:{let e=t??xn;return[xn.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}}function cm(r,t,e){let{prefix:n}=e;if(n!==j.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o}function lm(r,t,e){let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o}var An=112,um=18;function Uu(r,t,e){let n=Or(r),o=n+Or(t),s=new Uint8Array(o+e.byteLength);return Mr(r,s,0),Mr(t,s,n),s.set(e,o),s}var fm=Symbol.for("@ipld/js-cid/CID");var Sa={};Kt(Sa,{identity:()=>te});var Ku=0,dm="identity",qu=ye;function hm(r){return Qt(Ku,qu(r))}var te={code:Ku,name:dm,encode:qu,digest:hm};function tt(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ct(r=0){return new Uint8Array(r)}function St(r=0){return new Uint8Array(r)}function Dt(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=St(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return e}var Vu=Symbol.for("@achingbrain/uint8arraylist");function zu(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function Uo(r){return!!r?.[Vu]}var Y=class r{bufs;length;[Vu]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(Uo(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(Uo(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=zu(this.bufs,t);return e.buf[e.index]}set(t,e){let n=zu(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(Uo(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return Dt(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:Dt(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),s=new r;return s.length=o,s.bufs=[...n],s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],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,t>=c)continue;let u=t>=a&&t<c,l=e>a&&e<=c;if(u&&l){if(t===a&&e===c){n.push(i);break}let f=t-a;n.push(i.subarray(f,f+(e-t)));break}if(u){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(l){if(e===c){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!Uo(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let 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 f=0;f<s;f++)i[f]=-1;for(let f=0;f<o;f++)i[n[f]]=f;let a=i,c=this.byteLength-n.byteLength,u=n.byteLength-1,l;for(let f=e;f<=c;f+=l){l=0;for(let d=u;d>=0;d--){let m=this.get(f+d);if(n[d]!==m){l=Math.max(1,d-a[m]);break}}if(l===0)return f}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=St(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=ct(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=St(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=ct(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!tt(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,s)=>o+s.byteLength,0)),n.length=e,n}};var _a={};Kt(_a,{base10:()=>pm});var pm=Oe({prefix:"9",name:"base10",alphabet:"0123456789"});var Ia={};Kt(Ia,{base16:()=>mm,base16upper:()=>gm});var mm=at({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),gm=at({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Ca={};Kt(Ca,{base2:()=>ym});var ym=at({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ta={};Kt(Ta,{base256emoji:()=>vm});var Hu=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}"),bm=Hu.reduce((r,t,e)=>(r[e]=t,r),[]),wm=Hu.reduce((r,t,e)=>{let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);return r[n]=e,r},[]);function xm(r){return r.reduce((t,e)=>(t+=bm[e],t),"")}function Em(r){let t=[];for(let e of r){let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);let o=wm[n];if(o==null)throw new Error(`Non-base256emoji character: ${e}`);t.push(o)}return new Uint8Array(t)}var vm=kr({prefix:"\u{1F680}",name:"base256emoji",encode:xm,decode:Em});var Da={};Kt(Da,{base64:()=>Pa,base64pad:()=>Am,base64url:()=>La,base64urlpad:()=>Sm});var Pa=at({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Am=at({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),La=at({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Sm=at({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ra={};Kt(Ra,{base8:()=>_m});var _m=at({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ka={};Kt(ka,{identity:()=>Im});var Im=kr({prefix:"\0",name:"identity",encode:r=>Pu(r),decode:r=>Tu(r)});var fx=new TextEncoder,dx=new TextDecoder;var Na={};Kt(Na,{sha256:()=>Br,sha512:()=>Pm});function Oa({name:r,code:t,encode:e}){return new Ma(r,t,e)}var Ma=class{name;code;encode;constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?Qt(this.code,e):e.then(n=>Qt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function Wu(r){return async t=>new Uint8Array(await crypto.subtle.digest(r,t))}var Br=Oa({name:"sha2-256",code:18,encode:Wu("SHA-256")}),Pm=Oa({name:"sha2-512",code:19,encode:Wu("SHA-512")});var Sn={...ka,...Ca,...Ra,..._a,...Ia,...xa,...Ea,...wa,...Da,...Ta},Sx={...Na,...Sa};function ju(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var Gu=ju("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Ba=ju("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=St(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Lm={utf8:Gu,"utf-8":Gu,hex:Sn.base16,latin1:Ba,ascii:Ba,binary:Ba,...Sn},Ko=Lm;function L(r,t="utf8"){let e=Ko[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.decoder.decode(`${e.prefix}${r}`)}function B(r,t="utf8"){let e=Ko[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.encoder.encode(r).substring(1)}var Dm=parseInt("11111",2),Fa=parseInt("10000000",2),Rm=parseInt("01111111",2),Xu={0:_n,1:_n,2:km,3:Nm,4:Bm,5:Om,6:Mm,16:_n,22:_n,48:_n};function we(r,t={offset:0}){let e=r[t.offset]&Dm;if(t.offset++,Xu[e]!=null)return Xu[e](r,t);throw new Error("No decoder for tag "+e)}function In(r,t){let e=0;if((r[t.offset]&Fa)===Fa){let n=r[t.offset]&Rm,o="0x";t.offset++;for(let s=0;s<n;s++,t.offset++)o+=r[t.offset].toString(16).padStart(2,"0");e=parseInt(o,16)}else e=r[t.offset],t.offset++;return e}function _n(r,t){In(r,t);let e=[];for(;!(t.offset>=r.byteLength);){let n=we(r,t);if(n===null)break;e.push(n)}return e}function km(r,t){let e=In(r,t),n=t.offset,o=t.offset+e,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return t.offset+=e,Uint8Array.from(s)}function Mm(r,t){let e=In(r,t),n=t.offset+e,o=r[t.offset];t.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(;t.offset<n;){let u=r[t.offset];if(t.offset++,c.push(u&127),u<128){c.reverse();let l=0;for(let f=0;f<c.length;f++)l+=c[f]<<f*7;a+=`.${l}`,c=[]}}return a}function Om(r,t){return t.offset++,null}function Nm(r,t){let e=In(r,t),n=r[t.offset];t.offset++;let o=r.subarray(t.offset,t.offset+e-1);if(t.offset+=e,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Bm(r,t){let e=In(r,t),n=r.subarray(t.offset,t.offset+e);return t.offset+=e,n}function Fm(r){let t=r.toString(16);t.length%2===1&&(t="0"+t);let e=new Y;for(let n=0;n<t.length;n+=2)e.append(Uint8Array.from([parseInt(`${t[n]}${t[n+1]}`,16)]));return e}function qo(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let t=Fm(r.byteLength);return new Y(Uint8Array.from([t.byteLength|Fa]),t)}function Rt(r){let t=new Y,e=128;return(r.subarray()[0]&e)===e&&t.append(Uint8Array.from([0])),t.append(r),new Y(Uint8Array.from([2]),qo(t),t)}function Cn(r){let t=Uint8Array.from([0]),e=new Y(t,r);return new Y(Uint8Array.from([3]),qo(e),e)}function Yu(r){return new Y(Uint8Array.from([4]),qo(r),r)}function ee(r,t=48){let e=new Y;for(let n of r)e.append(n);return new Y(Uint8Array.from([t]),qo(e),e)}async function Zu(r="P-256"){let t=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",t.publicKey),privateKey:await crypto.subtle.exportKey("jwk",t.privateKey)}}async function Qu(r,t,e){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);e?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,t.subarray());return e?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Ju(r,t,e,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,t,e.subarray());return n?.signal?.throwIfAborted(),s}var Um=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),Km=Uint8Array.from([6,5,43,129,4,0,34]),qm=Uint8Array.from([6,5,43,129,4,0,35]),zm={ext:!0,kty:"EC",crv:"P-256"},Vm={ext:!0,kty:"EC",crv:"P-384"},Hm={ext:!0,kty:"EC",crv:"P-521"},Ua=32,Ka=48,qa=66;function za(r){let t=we(r);return tf(t)}function tf(r){let t=r[1][1][0],e=1,n,o;if(t.byteLength===Ua*2+1)return n=B(t.subarray(e,e+Ua),"base64url"),o=B(t.subarray(e+Ua),"base64url"),new je({...zm,key_ops:["verify"],x:n,y:o});if(t.byteLength===Ka*2+1)return n=B(t.subarray(e,e+Ka),"base64url"),o=B(t.subarray(e+Ka),"base64url"),new je({...Vm,key_ops:["verify"],x:n,y:o});if(t.byteLength===qa*2+1)return n=B(t.subarray(e,e+qa),"base64url"),o=B(t.subarray(e+qa),"base64url"),new je({...Hm,key_ops:["verify"],x:n,y:o});throw new k(`coordinates were wrong length, got ${t.byteLength}, expected 65, 97 or 133`)}function ef(r){return ee([Rt(Uint8Array.from([1])),Yu(L(r.d??"","base64url")),ee([nf(r.crv)],160),ee([Cn(new Y(Uint8Array.from([4]),L(r.x??"","base64url"),L(r.y??"","base64url")))],161)]).subarray()}function rf(r){return ee([Rt(Uint8Array.from([1])),ee([nf(r.crv)],160),ee([Cn(new Y(Uint8Array.from([4]),L(r.x??"","base64url"),L(r.y??"","base64url")))],161)]).subarray()}function nf(r){if(r==="P-256")return Um;if(r==="P-384")return Km;if(r==="P-521")return qm;throw new k(`Invalid curve ${r}`)}async function of(r="P-256"){let t=await Zu(r);return new zo(t.privateKey)}var je=class{type="ECDSA";jwk;_raw;constructor(t){this.jwk=t}get raw(){return this._raw==null&&(this._raw=rf(this.jwk)),this._raw}toMultihash(){return te.digest(Gt(this))}toCID(){return it.createV1(114,this.toMultihash())}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}async verify(t,e,n){return Ju(this.jwk,e,t,n)}},zo=class{type="ECDSA";jwk;publicKey;_raw;constructor(t){this.jwk=t,this.publicKey=new je({crv:t.crv,ext:t.ext,key_ops:["verify"],kty:"EC",x:t.x,y:t.y})}get raw(){return this._raw==null&&(this._raw=ef(this.jwk)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}async sign(t,e){return Qu(this.jwk,t,e)}};var Xe=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function $m(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Vo(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Ye(r,...t){if(!$m(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error("Uint8Array expected of length "+t+", got length="+r.length)}function sf(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Vo(r.outputLen),Vo(r.blockLen)}function Ur(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function af(r,t){Ye(r);let e=t.outputLen;if(r.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}function xe(...r){for(let t=0;t<r.length;t++)r[t].fill(0)}function Ho(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function re(r,t){return r<<32-t|r>>>t}function cf(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function Tn(r){return typeof r=="string"&&(r=cf(r)),Ye(r),r}function Va(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];Ye(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}var Fr=class{};function Ha(r){let t=n=>r().update(Tn(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function Kr(r=32){if(Xe&&typeof Xe.getRandomValues=="function")return Xe.getRandomValues(new Uint8Array(r));if(Xe&&typeof Xe.randomBytes=="function")return Uint8Array.from(Xe.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function Wm(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(e>>o&s),a=Number(e&s),c=n?4:0,u=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+u,a,n)}function lf(r,t,e){return r&t^~r&e}function uf(r,t,e){return r&t^r&e^t&e}var Pn=class extends Fr{constructor(t,e,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(t),this.view=Ho(this.buffer)}update(t){Ur(this),t=Tn(t),Ye(t);let{view:e,buffer:n,blockLen:o}=this,s=t.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=Ho(t);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Ur(this),af(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;e[i++]=128,xe(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)e[f]=0;Wm(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=Ho(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<u;f++)a.setUint32(4*f,l[f],s)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return t.destroyed=i,t.finished=s,t.length=o,t.pos=a,o%e&&t.buffer.set(n),t}clone(){return this._cloneInto()}},Ee=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var xt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var $o=BigInt(4294967295),ff=BigInt(32);function Gm(r,t=!1){return t?{h:Number(r&$o),l:Number(r>>ff&$o)}:{h:Number(r>>ff&$o)|0,l:Number(r&$o)|0}}function df(r,t=!1){let e=r.length,n=new Uint32Array(e),o=new Uint32Array(e);for(let s=0;s<e;s++){let{h:i,l:a}=Gm(r[s],t);[n[s],o[s]]=[i,a]}return[n,o]}var $a=(r,t,e)=>r>>>e,Wa=(r,t,e)=>r<<32-e|t>>>e,Ze=(r,t,e)=>r>>>e|t<<32-e,Qe=(r,t,e)=>r<<32-e|t>>>e,Ln=(r,t,e)=>r<<64-e|t>>>e-32,Dn=(r,t,e)=>r>>>e-32|t<<64-e;function le(r,t,e,n){let o=(t>>>0)+(n>>>0);return{h:r+e+(o/2**32|0)|0,l:o|0}}var hf=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),pf=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,mf=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),gf=(r,t,e,n,o)=>t+e+n+o+(r/2**32|0)|0,yf=(r,t,e,n,o)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0),bf=(r,t,e,n,o,s)=>t+e+n+o+s+(r/2**32|0)|0;var Xm=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]),Ne=new Uint32Array(64),Wo=class extends Pn{constructor(t=32){super(64,t,8,!1),this.A=Ee[0]|0,this.B=Ee[1]|0,this.C=Ee[2]|0,this.D=Ee[3]|0,this.E=Ee[4]|0,this.F=Ee[5]|0,this.G=Ee[6]|0,this.H=Ee[7]|0}get(){let{A:t,B:e,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[t,e,n,o,s,i,a,c]}set(t,e,n,o,s,i,a,c){this.A=t|0,this.B=e|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(t,e){for(let f=0;f<16;f++,e+=4)Ne[f]=t.getUint32(e,!1);for(let f=16;f<64;f++){let d=Ne[f-15],m=Ne[f-2],h=re(d,7)^re(d,18)^d>>>3,g=re(m,17)^re(m,19)^m>>>10;Ne[f]=g+Ne[f-7]+h+Ne[f-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:u,H:l}=this;for(let f=0;f<64;f++){let d=re(a,6)^re(a,11)^re(a,25),m=l+d+lf(a,c,u)+Xm[f]+Ne[f]|0,g=(re(n,2)^re(n,13)^re(n,22))+uf(n,o,s)|0;l=u,u=c,c=a,a=i+m|0,i=s,s=o,o=n,n=m+g|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,u=u+this.G|0,l=l+this.H|0,this.set(n,o,s,i,a,c,u,l)}roundClean(){xe(Ne)}destroy(){this.set(0,0,0,0,0,0,0,0),xe(this.buffer)}};var wf=df(["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))),Ym=wf[0],Zm=wf[1],Be=new Uint32Array(80),Fe=new Uint32Array(80),Ga=class extends Pn{constructor(t=64){super(128,t,16,!1),this.Ah=xt[0]|0,this.Al=xt[1]|0,this.Bh=xt[2]|0,this.Bl=xt[3]|0,this.Ch=xt[4]|0,this.Cl=xt[5]|0,this.Dh=xt[6]|0,this.Dl=xt[7]|0,this.Eh=xt[8]|0,this.El=xt[9]|0,this.Fh=xt[10]|0,this.Fl=xt[11]|0,this.Gh=xt[12]|0,this.Gl=xt[13]|0,this.Hh=xt[14]|0,this.Hl=xt[15]|0}get(){let{Ah:t,Al:e,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:u,El:l,Fh:f,Fl:d,Gh:m,Gl:h,Hh:g,Hl:b}=this;return[t,e,n,o,s,i,a,c,u,l,f,d,m,h,g,b]}set(t,e,n,o,s,i,a,c,u,l,f,d,m,h,g,b){this.Ah=t|0,this.Al=e|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=u|0,this.El=l|0,this.Fh=f|0,this.Fl=d|0,this.Gh=m|0,this.Gl=h|0,this.Hh=g|0,this.Hl=b|0}process(t,e){for(let x=0;x<16;x++,e+=4)Be[x]=t.getUint32(e),Fe[x]=t.getUint32(e+=4);for(let x=16;x<80;x++){let p=Be[x-15]|0,w=Fe[x-15]|0,T=Ze(p,w,1)^Ze(p,w,8)^$a(p,w,7),P=Qe(p,w,1)^Qe(p,w,8)^Wa(p,w,7),D=Be[x-2]|0,F=Fe[x-2]|0,q=Ze(D,F,19)^Ln(D,F,61)^$a(D,F,6),M=Qe(D,F,19)^Dn(D,F,61)^Wa(D,F,6),U=mf(P,M,Fe[x-7],Fe[x-16]),N=gf(U,T,q,Be[x-7],Be[x-16]);Be[x]=N|0,Fe[x]=U|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:u,Dl:l,Eh:f,El:d,Fh:m,Fl:h,Gh:g,Gl:b,Hh:v,Hl:C}=this;for(let x=0;x<80;x++){let p=Ze(f,d,14)^Ze(f,d,18)^Ln(f,d,41),w=Qe(f,d,14)^Qe(f,d,18)^Dn(f,d,41),T=f&m^~f&g,P=d&h^~d&b,D=yf(C,w,P,Zm[x],Fe[x]),F=bf(D,v,p,T,Ym[x],Be[x]),q=D|0,M=Ze(n,o,28)^Ln(n,o,34)^Ln(n,o,39),U=Qe(n,o,28)^Dn(n,o,34)^Dn(n,o,39),N=n&s^n&a^s&a,ht=o&i^o&c^i&c;v=g|0,C=b|0,g=m|0,b=h|0,m=f|0,h=d|0,{h:f,l:d}=le(u|0,l|0,F|0,q|0),u=a|0,l=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let _=hf(q,U,ht);n=pf(_,F,M,N),o=_|0}({h:n,l:o}=le(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=le(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=le(this.Ch|0,this.Cl|0,a|0,c|0),{h:u,l}=le(this.Dh|0,this.Dl|0,u|0,l|0),{h:f,l:d}=le(this.Eh|0,this.El|0,f|0,d|0),{h:m,l:h}=le(this.Fh|0,this.Fl|0,m|0,h|0),{h:g,l:b}=le(this.Gh|0,this.Gl|0,g|0,b|0),{h:v,l:C}=le(this.Hh|0,this.Hl|0,v|0,C|0),this.set(n,o,s,i,a,c,u,l,f,d,m,h,g,b,v,C)}roundClean(){xe(Be,Fe)}destroy(){xe(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var Go=Ha(()=>new Wo);var xf=Ha(()=>new Ga);var Za=BigInt(0),Ya=BigInt(1);function qr(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Qa(r){if(!qr(r))throw new Error("Uint8Array expected")}function ue(r,t){if(typeof t!="boolean")throw new Error(r+" boolean expected, got "+t)}function Rn(r){let t=r.toString(16);return t.length&1?"0"+t:t}function Af(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Za:BigInt("0x"+r)}var Sf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Qm=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function Ue(r){if(Qa(r),Sf)return r.toHex();let t="";for(let e=0;e<r.length;e++)t+=Qm[r[e]];return t}var ve={_0:48,_9:57,A:65,F:70,a:97,f:102};function Ef(r){if(r>=ve._0&&r<=ve._9)return r-ve._0;if(r>=ve.A&&r<=ve.F)return r-(ve.A-10);if(r>=ve.a&&r<=ve.f)return r-(ve.a-10)}function kn(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(Sf)return Uint8Array.fromHex(r);let t=r.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let o=0,s=0;o<e;o++,s+=2){let i=Ef(r.charCodeAt(s)),a=Ef(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function Ae(r){return Af(Ue(r))}function Je(r){return Qa(r),Af(Ue(Uint8Array.from(r).reverse()))}function tr(r,t){return kn(r.toString(16).padStart(t*2,"0"))}function zr(r,t){return tr(r,t).reverse()}function nt(r,t,e){let n;if(typeof t=="string")try{n=kn(t)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(qr(t))n=Uint8Array.from(t);else throw new Error(r+" must be hex string or Uint8Array");let o=n.length;if(typeof e=="number"&&o!==e)throw new Error(r+" of length "+e+" expected, got "+o);return n}function Ke(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];Qa(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}var ja=r=>typeof r=="bigint"&&Za<=r;function jo(r,t,e){return ja(r)&&ja(t)&&ja(e)&&t<=r&&r<e}function Ht(r,t,e,n){if(!jo(t,e,n))throw new Error("expected valid "+r+": "+e+" <= n < "+n+", got "+t)}function _f(r){let t;for(t=0;r>Za;r>>=Ya,t+=1);return t}var er=r=>(Ya<<BigInt(r))-Ya,Xa=r=>new Uint8Array(r),vf=r=>Uint8Array.from(r);function If(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=Xa(r),o=Xa(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...f)=>e(o,n,...f),c=(f=Xa(0))=>{o=a(vf([0]),f),n=a(),f.length!==0&&(o=a(vf([1]),f),n=a())},u=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,d=[];for(;f<t;){n=a();let m=n.slice();d.push(m),f+=n.length}return Ke(...d)};return(f,d)=>{i(),c(f);let m;for(;!(m=d(u()));)c();return i(),m}}var Jm={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||qr(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,t)=>t.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function Se(r,t,e={}){let n=(o,s,i)=>{let a=Jm[s];if(typeof a!="function")throw new Error("invalid validator function");let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error("param "+String(o)+" is invalid. Expected "+s+", got "+c)};for(let[o,s]of Object.entries(t))n(o,s,!1);for(let[o,s]of Object.entries(e))n(o,s,!0);return r}function Vr(r){let t=new WeakMap;return(e,...n)=>{let o=t.get(e);if(o!==void 0)return o;let s=r(e,...n);return t.set(e,s),s}}var kt=BigInt(0),yt=BigInt(1),rr=BigInt(2),tg=BigInt(3),Tf=BigInt(4),Pf=BigInt(5),Lf=BigInt(8);function rt(r,t){let e=r%t;return e>=kt?e:t+e}function ot(r,t,e){let n=r;for(;t-- >kt;)n*=n,n%=e;return n}function Xo(r,t){if(r===kt)throw new Error("invert: expected non-zero number");if(t<=kt)throw new Error("invert: expected positive modulus, got "+t);let e=rt(r,t),n=t,o=kt,s=yt,i=yt,a=kt;for(;e!==kt;){let u=n/e,l=n%e,f=o-i*u,d=s-a*u;n=e,e=l,o=i,s=a,i=f,a=d}if(n!==yt)throw new Error("invert: does not exist");return rt(o,t)}function Df(r,t){let e=(r.ORDER+yt)/Tf,n=r.pow(t,e);if(!r.eql(r.sqr(n),t))throw new Error("Cannot find square root");return n}function eg(r,t){let e=(r.ORDER-Pf)/Lf,n=r.mul(t,rr),o=r.pow(n,e),s=r.mul(t,o),i=r.mul(r.mul(s,rr),o),a=r.mul(s,r.sub(i,r.ONE));if(!r.eql(r.sqr(a),t))throw new Error("Cannot find square root");return a}function rg(r){if(r<BigInt(3))throw new Error("sqrt is not defined for small field");let t=r-yt,e=0;for(;t%rr===kt;)t/=rr,e++;let n=rr,o=_e(r);for(;Cf(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(e===1)return Df;let s=o.pow(n,t),i=(t+yt)/rr;return function(c,u){if(c.is0(u))return u;if(Cf(c,u)!==1)throw new Error("Cannot find square root");let l=e,f=c.mul(c.ONE,s),d=c.pow(u,t),m=c.pow(u,i);for(;!c.eql(d,c.ONE);){if(c.is0(d))return c.ZERO;let h=1,g=c.sqr(d);for(;!c.eql(g,c.ONE);)if(h++,g=c.sqr(g),h===l)throw new Error("Cannot find square root");let b=yt<<BigInt(l-h-1),v=c.pow(f,b);l=h,f=c.sqr(v),d=c.mul(d,f),m=c.mul(m,v)}return m}}function ng(r){return r%Tf===tg?Df:r%Lf===Pf?eg:rg(r)}var Rf=(r,t)=>(rt(r,t)&yt)===yt,og=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ja(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=og.reduce((n,o)=>(n[o]="function",n),t);return Se(r,e)}function sg(r,t,e){if(e<kt)throw new Error("invalid exponent, negatives unsupported");if(e===kt)return r.ONE;if(e===yt)return t;let n=r.ONE,o=t;for(;e>kt;)e&yt&&(n=r.mul(n,o)),o=r.sqr(o),e>>=yt;return n}function Hr(r,t,e=!1){let n=new Array(t.length).fill(e?r.ZERO:void 0),o=t.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return t.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function Cf(r,t){let e=(r.ORDER-yt)/rr,n=r.pow(t,e),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function tc(r,t){t!==void 0&&Vo(t);let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function _e(r,t,e=!1,n={}){if(r<=kt)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:o,nByteLength:s}=tc(r,t);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i,a=Object.freeze({ORDER:r,isLE:e,BITS:o,BYTES:s,MASK:er(o),ZERO:kt,ONE:yt,create:c=>rt(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return kt<=c&&c<r},is0:c=>c===kt,isOdd:c=>(c&yt)===yt,neg:c=>rt(-c,r),eql:(c,u)=>c===u,sqr:c=>rt(c*c,r),add:(c,u)=>rt(c+u,r),sub:(c,u)=>rt(c-u,r),mul:(c,u)=>rt(c*u,r),pow:(c,u)=>sg(a,c,u),div:(c,u)=>rt(c*Xo(u,r),r),sqrN:c=>c*c,addN:(c,u)=>c+u,subN:(c,u)=>c-u,mulN:(c,u)=>c*u,inv:c=>Xo(c,r),sqrt:n.sqrt||(c=>(i||(i=ng(r)),i(a,c))),toBytes:c=>e?zr(c,s):tr(c,s),fromBytes:c=>{if(c.length!==s)throw new Error("Field.fromBytes: expected "+s+" bytes, got "+c.length);return e?Je(c):Ae(c)},invertBatch:c=>Hr(a,c),cmov:(c,u,l)=>l?u:c});return Object.freeze(a)}function kf(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function ec(r){let t=kf(r);return t+Math.ceil(t/2)}function Mf(r,t,e=!1){let n=r.length,o=kf(t),s=ec(t);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=e?Je(r):Ae(r),a=rt(i,t-yt)+yt;return e?zr(a,o):tr(a,o)}var Of=BigInt(0),ic=BigInt(1);function rc(r,t){let e=t.negate();return r?e:t}function Bf(r,t){if(!Number.isSafeInteger(r)||r<=0||r>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+r)}function nc(r,t){Bf(r,t);let e=Math.ceil(t/r)+1,n=2**(r-1),o=2**r,s=er(r),i=BigInt(r);return{windows:e,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function Nf(r,t,e){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=e,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=ic);let u=t*n,l=u+Math.abs(a)-1,f=a===0,d=a<0,m=t%2!==0;return{nextN:c,offset:l,isZero:f,isNeg:d,isNegF:m,offsetF:u}}function ig(r,t){if(!Array.isArray(r))throw new Error("array expected");r.forEach((e,n)=>{if(!(e instanceof t))throw new Error("invalid point at index "+n)})}function ag(r,t){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((e,n)=>{if(!t.isValid(e))throw new Error("invalid scalar at index "+n)})}var oc=new WeakMap,Ff=new WeakMap;function sc(r){return Ff.get(r)||1}function Yo(r,t){return{constTimeNegate:rc,hasPrecomputes(e){return sc(e)!==1},unsafeLadder(e,n,o=r.ZERO){let s=e;for(;n>Of;)n&ic&&(o=o.add(s)),s=s.double(),n>>=ic;return o},precomputeWindow(e,n){let{windows:o,windowSize:s}=nc(n,t),i=[],a=e,c=a;for(let u=0;u<o;u++){c=a,i.push(c);for(let l=1;l<s;l++)c=c.add(a),i.push(c);a=c.double()}return i},wNAF(e,n,o){let s=r.ZERO,i=r.BASE,a=nc(e,t);for(let c=0;c<a.windows;c++){let{nextN:u,offset:l,isZero:f,isNeg:d,isNegF:m,offsetF:h}=Nf(o,c,a);o=u,f?i=i.add(rc(m,n[h])):s=s.add(rc(d,n[l]))}return{p:s,f:i}},wNAFUnsafe(e,n,o,s=r.ZERO){let i=nc(e,t);for(let a=0;a<i.windows&&o!==Of;a++){let{nextN:c,offset:u,isZero:l,isNeg:f}=Nf(o,a,i);if(o=c,!l){let d=n[u];s=s.add(f?d.negate():d)}}return s},getPrecomputes(e,n,o){let s=oc.get(n);return s||(s=this.precomputeWindow(n,e),e!==1&&oc.set(n,o(s))),s},wNAFCached(e,n,o){let s=sc(e);return this.wNAF(s,this.getPrecomputes(s,e,o),n)},wNAFCachedUnsafe(e,n,o,s){let i=sc(e);return i===1?this.unsafeLadder(e,n,s):this.wNAFUnsafe(i,this.getPrecomputes(i,e,o),n,s)},setWindowSize(e,n){Bf(n,t),Ff.set(e,n),oc.delete(e)}}}function Zo(r,t,e,n){ig(e,r),ag(n,t);let o=e.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");let i=r.ZERO,a=_f(BigInt(o)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let u=er(c),l=new Array(Number(u)+1).fill(i),f=Math.floor((t.BITS-1)/c)*c,d=i;for(let m=f;m>=0;m-=c){l.fill(i);for(let g=0;g<s;g++){let b=n[g],v=Number(b>>BigInt(m)&u);l[v]=l[v].add(e[g])}let h=i;for(let g=l.length-1,b=i;g>0;g--)b=b.add(l[g]),h=h.add(b);if(d=d.add(h),m!==0)for(let g=0;g<c;g++)d=d.double()}return d}function Mn(r){return Ja(r.Fp),Se(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...tc(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var fe=BigInt(0),Mt=BigInt(1),Uf=BigInt(2),cg=BigInt(8),lg={zip215:!0};function ug(r){let t=Mn(r);return Se(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...t})}function Kf(r){let t=ug(r),{Fp:e,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=t,u=Uf<<BigInt(a*8)-Mt,l=e.create,f=_e(t.n,t.nBitLength);function d(A,y){let E=e.sqr(A),I=e.sqr(y),O=e.add(e.mul(t.a,E),I),K=e.add(e.ONE,e.mul(t.d,e.mul(E,I)));return e.eql(O,K)}if(!d(t.Gx,t.Gy))throw new Error("bad curve params: generator point");let m=t.uvRatio||((A,y)=>{try{return{isValid:!0,value:e.sqrt(A*e.inv(y))}}catch{return{isValid:!1,value:fe}}}),h=t.adjustScalarBytes||(A=>A),g=t.domain||((A,y,E)=>{if(ue("phflag",E),y.length||E)throw new Error("Contexts/pre-hash are not supported");return A});function b(A,y,E=!1){let I=E?Mt:fe;Ht("coordinate "+A,y,I,u)}function v(A){if(!(A instanceof p))throw new Error("ExtendedPoint expected")}let C=Vr((A,y)=>{let{ex:E,ey:I,ez:O}=A,K=A.is0();y==null&&(y=K?cg:e.inv(O));let V=l(E*y),$=l(I*y),X=l(O*y);if(K)return{x:fe,y:Mt};if(X!==Mt)throw new Error("invZ was invalid");return{x:V,y:$}}),x=Vr(A=>{let{a:y,d:E}=t;if(A.is0())throw new Error("bad point: ZERO");let{ex:I,ey:O,ez:K,et:V}=A,$=l(I*I),X=l(O*O),J=l(K*K),pt=l(J*J),ut=l($*y),wt=l(J*l(ut+X)),Ut=l(pt+l(E*l($*X)));if(wt!==Ut)throw new Error("bad point: equation left != right (1)");let gt=l(I*O),At=l(K*V);if(gt!==At)throw new Error("bad point: equation left != right (2)");return!0});class p{constructor(y,E,I,O){b("x",y),b("y",E),b("z",I,!0),b("t",O),this.ex=y,this.ey=E,this.ez=I,this.et=O,Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(y){if(y instanceof p)throw new Error("extended point not allowed");let{x:E,y:I}=y||{};return b("x",E),b("y",I),new p(E,I,Mt,l(E*I))}static normalizeZ(y){let E=Hr(e,y.map(I=>I.ez));return y.map((I,O)=>I.toAffine(E[O])).map(p.fromAffine)}static msm(y,E){return Zo(p,f,y,E)}_setWindowSize(y){P.setWindowSize(this,y)}assertValidity(){x(this)}equals(y){v(y);let{ex:E,ey:I,ez:O}=this,{ex:K,ey:V,ez:$}=y,X=l(E*$),J=l(K*O),pt=l(I*$),ut=l(V*O);return X===J&&pt===ut}is0(){return this.equals(p.ZERO)}negate(){return new p(l(-this.ex),this.ey,this.ez,l(-this.et))}double(){let{a:y}=t,{ex:E,ey:I,ez:O}=this,K=l(E*E),V=l(I*I),$=l(Uf*l(O*O)),X=l(y*K),J=E+I,pt=l(l(J*J)-K-V),ut=X+V,wt=ut-$,Ut=X-V,gt=l(pt*wt),At=l(ut*Ut),zt=l(pt*Ut),Yt=l(wt*ut);return new p(gt,At,Yt,zt)}add(y){v(y);let{a:E,d:I}=t,{ex:O,ey:K,ez:V,et:$}=this,{ex:X,ey:J,ez:pt,et:ut}=y,wt=l(O*X),Ut=l(K*J),gt=l($*I*ut),At=l(V*pt),zt=l((O+K)*(X+J)-wt-Ut),Yt=At-gt,gn=At+gt,vu=l(Ut-E*wt),yp=l(zt*Yt),bp=l(gn*vu),wp=l(zt*vu),xp=l(Yt*gn);return new p(yp,bp,xp,wp)}subtract(y){return this.add(y.negate())}wNAF(y){return P.wNAFCached(this,y,p.normalizeZ)}multiply(y){let E=y;Ht("scalar",E,Mt,n);let{p:I,f:O}=this.wNAF(E);return p.normalizeZ([I,O])[0]}multiplyUnsafe(y,E=p.ZERO){let I=y;return Ht("scalar",I,fe,n),I===fe?T:this.is0()||I===Mt?this:P.wNAFCachedUnsafe(this,I,p.normalizeZ,E)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return P.unsafeLadder(this,n).is0()}toAffine(y){return C(this,y)}clearCofactor(){let{h:y}=t;return y===Mt?this:this.multiplyUnsafe(y)}static fromHex(y,E=!1){let{d:I,a:O}=t,K=e.BYTES;y=nt("pointHex",y,K),ue("zip215",E);let V=y.slice(),$=y[K-1];V[K-1]=$&-129;let X=Je(V),J=E?u:e.ORDER;Ht("pointHex.y",X,fe,J);let pt=l(X*X),ut=l(pt-Mt),wt=l(I*pt-O),{isValid:Ut,value:gt}=m(ut,wt);if(!Ut)throw new Error("Point.fromHex: invalid y coordinate");let At=(gt&Mt)===Mt,zt=($&128)!==0;if(!E&&gt===fe&&zt)throw new Error("Point.fromHex: x=0 and x_0=1");return zt!==At&&(gt=l(-gt)),p.fromAffine({x:gt,y:X})}static fromPrivateKey(y){let{scalar:E}=q(y);return w.multiply(E)}toRawBytes(){let{x:y,y:E}=this.toAffine(),I=zr(E,e.BYTES);return I[I.length-1]|=y&Mt?128:0,I}toHex(){return Ue(this.toRawBytes())}}p.BASE=new p(t.Gx,t.Gy,Mt,l(t.Gx*t.Gy)),p.ZERO=new p(fe,Mt,Mt,fe);let{BASE:w,ZERO:T}=p,P=Yo(p,a*8);function D(A){return rt(A,n)}function F(A){return D(Je(A))}function q(A){let y=e.BYTES;A=nt("private key",A,y);let E=nt("hashed private key",s(A),2*y),I=h(E.slice(0,y)),O=E.slice(y,2*y),K=F(I);return{head:I,prefix:O,scalar:K}}function M(A){let{head:y,prefix:E,scalar:I}=q(A),O=w.multiply(I),K=O.toRawBytes();return{head:y,prefix:E,scalar:I,point:O,pointBytes:K}}function U(A){return M(A).pointBytes}function N(A=Uint8Array.of(),...y){let E=Ke(...y);return F(s(g(E,nt("context",A),!!o)))}function ht(A,y,E={}){A=nt("message",A),o&&(A=o(A));let{prefix:I,scalar:O,pointBytes:K}=M(y),V=N(E.context,I,A),$=w.multiply(V).toRawBytes(),X=N(E.context,$,K,A),J=D(V+X*O);Ht("signature.s",J,fe,n);let pt=Ke($,zr(J,e.BYTES));return nt("result",pt,e.BYTES*2)}let _=lg;function S(A,y,E,I=_){let{context:O,zip215:K}=I,V=e.BYTES;A=nt("signature",A,2*V),y=nt("message",y),E=nt("publicKey",E,V),K!==void 0&&ue("zip215",K),o&&(y=o(y));let $=Je(A.slice(V,2*V)),X,J,pt;try{X=p.fromHex(E,K),J=p.fromHex(A.slice(0,V),K),pt=w.multiplyUnsafe($)}catch{return!1}if(!K&&X.isSmallOrder())return!1;let ut=N(O,J.toRawBytes(),X.toRawBytes(),y);return J.add(X.multiplyUnsafe(ut)).subtract(pt).clearCofactor().equals(p.ZERO)}return w._setWindowSize(8),{CURVE:t,getPublicKey:U,sign:ht,verify:S,ExtendedPoint:p,utils:{getExtendedPublicKey:M,randomPrivateKey:()=>i(e.BYTES),precompute(A=8,y=p.BASE){return y._setWindowSize(A),y.multiply(BigInt(3)),y}}}}var ac=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),qf=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),S1=BigInt(0),fg=BigInt(1),zf=BigInt(2),_1=BigInt(3),dg=BigInt(5),hg=BigInt(8);function pg(r){let t=BigInt(10),e=BigInt(20),n=BigInt(40),o=BigInt(80),s=ac,a=r*r%s*r%s,c=ot(a,zf,s)*a%s,u=ot(c,fg,s)*r%s,l=ot(u,dg,s)*u%s,f=ot(l,t,s)*l%s,d=ot(f,e,s)*f%s,m=ot(d,n,s)*d%s,h=ot(m,o,s)*m%s,g=ot(h,o,s)*m%s,b=ot(g,t,s)*l%s;return{pow_p_5_8:ot(b,zf,s)*r%s,b2:a}}function mg(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function gg(r,t){let e=ac,n=rt(t*t*t,e),o=rt(n*n*t,e),s=pg(r*o).pow_p_5_8,i=rt(r*n*s,e),a=rt(t*i*i,e),c=i,u=rt(i*qf,e),l=a===r,f=a===rt(-r,e),d=a===rt(-r*qf,e);return l&&(i=c),(f||d)&&(i=u),Rf(i,e)&&(i=rt(-i,e)),{isValid:l||f,value:i}}var Vf=_e(ac,void 0,!0),yg={a:Vf.create(BigInt(-1)),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Vf,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:hg,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:xf,randomBytes:Kr,adjustScalarBytes:mg,uvRatio:gg},On=Kf(yg);var Qo=32,Jo=64,cc=32;function Hf(){let r=On.utils.randomPrivateKey(),t=On.getPublicKey(r);return{privateKey:bg(r,t),publicKey:t}}function $f(r,t){let e=r.subarray(0,cc);return On.sign(t instanceof Uint8Array?t:t.subarray(),e)}function Wf(r,t,e){return On.verify(t,e instanceof Uint8Array?e:e.subarray(),r)}function bg(r,t){let e=new Uint8Array(Jo);for(let n=0;n<cc;n++)e[n]=r[n],e[cc+n]=t[n];return e}var Nn=class{type="Ed25519";raw;constructor(t){this.raw=es(t,Qo)}toMultihash(){return te.digest(Gt(this))}toCID(){return it.createV1(114,this.toMultihash())}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}verify(t,e,n){return n?.signal?.throwIfAborted(),Wf(this.raw,e,t)}},ts=class{type="Ed25519";raw;publicKey;constructor(t,e){this.raw=es(t,Jo),this.publicKey=new Nn(e)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}sign(t,e){return e?.signal?.throwIfAborted(),$f(this.raw,t)}};function lc(r){return r=es(r,Qo),new Nn(r)}async function jf(){let{privateKey:r,publicKey:t}=Hf();return new ts(r,t)}function es(r,t){if(r=Uint8Array.from(r??[]),r.length!==t)throw new k(`Key must be a Uint8Array of length ${t}, got ${r.length}`);return r}var wg=Math.pow(2,7),xg=Math.pow(2,14),Eg=Math.pow(2,21),uc=Math.pow(2,28),fc=Math.pow(2,35),dc=Math.pow(2,42),hc=Math.pow(2,49),Q=128,_t=127;function mt(r){if(r<wg)return 1;if(r<xg)return 2;if(r<Eg)return 3;if(r<uc)return 4;if(r<fc)return 5;if(r<dc)return 6;if(r<hc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function pc(r,t,e=0){switch(mt(r)){case 8:t[e++]=r&255|Q,r/=128;case 7:t[e++]=r&255|Q,r/=128;case 6:t[e++]=r&255|Q,r/=128;case 5:t[e++]=r&255|Q,r/=128;case 4:t[e++]=r&255|Q,r>>>=7;case 3:t[e++]=r&255|Q,r>>>=7;case 2:t[e++]=r&255|Q,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function vg(r,t,e=0){switch(mt(r)){case 8:t.set(e++,r&255|Q),r/=128;case 7:t.set(e++,r&255|Q),r/=128;case 6:t.set(e++,r&255|Q),r/=128;case 5:t.set(e++,r&255|Q),r/=128;case 4:t.set(e++,r&255|Q),r>>>=7;case 3:t.set(e++,r&255|Q),r>>>=7;case 2:t.set(e++,r&255|Q),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function mc(r,t){let e=r[t],n=0;if(n+=e&_t,e<Q||(e=r[t+1],n+=(e&_t)<<7,e<Q)||(e=r[t+2],n+=(e&_t)<<14,e<Q)||(e=r[t+3],n+=(e&_t)<<21,e<Q)||(e=r[t+4],n+=(e&_t)*uc,e<Q)||(e=r[t+5],n+=(e&_t)*fc,e<Q)||(e=r[t+6],n+=(e&_t)*dc,e<Q)||(e=r[t+7],n+=(e&_t)*hc,e<Q))return n;throw new RangeError("Could not decode varint")}function Ag(r,t){let e=r.get(t),n=0;if(n+=e&_t,e<Q||(e=r.get(t+1),n+=(e&_t)<<7,e<Q)||(e=r.get(t+2),n+=(e&_t)<<14,e<Q)||(e=r.get(t+3),n+=(e&_t)<<21,e<Q)||(e=r.get(t+4),n+=(e&_t)*uc,e<Q)||(e=r.get(t+5),n+=(e&_t)*fc,e<Q)||(e=r.get(t+6),n+=(e&_t)*dc,e<Q)||(e=r.get(t+7),n+=(e&_t)*hc,e<Q))return n;throw new RangeError("Could not decode varint")}function It(r,t,e=0){return t==null&&(t=St(mt(r))),t instanceof Uint8Array?pc(r,t,e):vg(r,t,e)}function ne(r,t=0){return r instanceof Uint8Array?mc(r,t):Ag(r,t)}var gc=new Float32Array([-0]),qe=new Uint8Array(gc.buffer);function Xf(r,t,e){gc[0]=r,t[e]=qe[0],t[e+1]=qe[1],t[e+2]=qe[2],t[e+3]=qe[3]}function Yf(r,t){return qe[0]=r[t],qe[1]=r[t+1],qe[2]=r[t+2],qe[3]=r[t+3],gc[0]}var yc=new Float64Array([-0]),Ct=new Uint8Array(yc.buffer);function Zf(r,t,e){yc[0]=r,t[e]=Ct[0],t[e+1]=Ct[1],t[e+2]=Ct[2],t[e+3]=Ct[3],t[e+4]=Ct[4],t[e+5]=Ct[5],t[e+6]=Ct[6],t[e+7]=Ct[7]}function Qf(r,t){return Ct[0]=r[t],Ct[1]=r[t+1],Ct[2]=r[t+2],Ct[3]=r[t+3],Ct[4]=r[t+4],Ct[5]=r[t+5],Ct[6]=r[t+6],Ct[7]=r[t+7],yc[0]}var Sg=BigInt(Number.MAX_SAFE_INTEGER),_g=BigInt(Number.MIN_SAFE_INTEGER),$t=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return or;if(t<Sg&&t>_g)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,o=t-(n<<32n);return e&&(n=~n|0n,o=~o|0n,++o>Jf&&(o=0n,++n>Jf&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(t){if(t===0)return or;let e=t<0;e&&(t=-t);let n=t>>>0,o=(t-n)/4294967296>>>0;return e&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):or}},or=new $t(0,0);or.toBigInt=function(){return 0n};or.zzEncode=or.zzDecode=function(){return this};or.length=function(){return 1};var Jf=4294967296n;function td(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function ed(r,t,e){if(e-t<1)return"";let o,s=[],i=0,a;for(;t<e;)a=r[t++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[t++]&63:a>239&&a<365?(a=((a&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[t++]&63)<<6|r[t++]&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 bc(r,t,e){let n=e,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return e-n}function oe(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function rs(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var wc=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,oe(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw oe(this,4);return rs(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw oe(this,4);return rs(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw oe(this,4);let t=Yf(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw oe(this,4);let t=Qf(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw oe(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return ed(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw oe(this,t);this.pos+=t}else do if(this.pos>=this.len)throw oe(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new $t(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw oe(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw oe(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw oe(this,8);let t=rs(this.buf,this.pos+=4),e=rs(this.buf,this.pos+=4);return new $t(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let t=mc(this.buf,this.pos);return this.pos+=mt(t),t}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function xc(r){return new wc(r instanceof Uint8Array?r:r.subarray())}function Ot(r,t,e){let n=xc(r);return t.decode(n,void 0,e)}function Ec(r){let t=r??8192,e=t>>>1,n,o=t;return function(i){if(i<1||i>e)return St(i);o+i>t&&(n=St(t),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var sr=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function vc(){}var Sc=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},Ig=Ec();function Cg(r){return globalThis.Buffer!=null?St(r):Ig(r)}var Fn=class{len;head;tail;states;constructor(){this.len=0,this.head=new sr(vc,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new sr(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new _c((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(ns,10,$t.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=$t.fromBigInt(t);return this._push(ns,e.length(),e)}uint64Number(t){return this._push(pc,mt(t),t)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=$t.fromBigInt(t).zzEncode();return this._push(ns,e.length(),e)}sint64Number(t){let e=$t.fromNumber(t).zzEncode();return this._push(ns,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(Ac,1,t?1:0)}fixed32(t){return this._push(Bn,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=$t.fromBigInt(t);return this._push(Bn,4,e.lo)._push(Bn,4,e.hi)}fixed64Number(t){let e=$t.fromNumber(t);return this._push(Bn,4,e.lo)._push(Bn,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(Xf,4,t)}double(t){return this._push(Zf,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(Ac,1,0):this.uint32(e)._push(Pg,e,t)}string(t){let e=td(t);return e!==0?this.uint32(e)._push(bc,e,t):this._push(Ac,1,0)}fork(){return this.states=new Sc(this),this.head=this.tail=new sr(vc,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 sr(vc,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=Cg(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function Ac(r,t,e){t[e]=r&255}function Tg(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var _c=class extends sr{next;constructor(t,e){super(Tg,t,e),this.next=void 0}};function ns(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function Bn(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function Pg(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(Fn.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(Lg,t,r),this},Fn.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(Dg,t,r),this});function Lg(r,t,e){t.set(r,e)}function Dg(r,t,e){r.length<40?bc(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(L(r),e)}function Ic(){return new Fn}function Nt(r,t){let e=Ic();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var $r;(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"})($r||($r={}));function os(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function Cc(r){function t(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let e=function(s,i){let a=t(s);i.int32(a)},n=function(s){let i=s.int32();return t(i)};return os("enum",$r.VARINT,e,n)}function Bt(r,t){return os("message",$r.LENGTH_DELIMITED,r,t)}var ir=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Un=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var ft;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(ft||(ft={}));var Tc;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(Tc||(Tc={}));(function(r){r.codec=()=>Cc(Tc)})(ft||(ft={}));var de;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=ft.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(de||(de={}));var Pc;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=ft.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(Pc||(Pc={}));function Wr(r){if(isNaN(r)||r<=0)throw new k("random bytes length must be a Number bigger than 0");return Kr(r)}var Kn=class extends Error{constructor(t="An error occurred while signing a message"){super(t),this.name="SigningError"}},qn=class extends Error{constructor(t="An error occurred while verifying a message"){super(t),this.name="VerificationError"}},ss=class extends Error{constructor(t="Missing Web Crypto API"){super(t),this.name="WebCryptoMissingError"}};var od={get(r=globalThis){let t=r.crypto;if(t?.subtle==null)throw new ss("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return t}};var ze=od;var Vn={};Kt(Vn,{MAX_RSA_KEY_SIZE:()=>Lc,generateRSAKeyPair:()=>Uc,jwkToJWKKeyPair:()=>cd,jwkToPkcs1:()=>Og,jwkToPkix:()=>Mc,jwkToRSAPrivateKey:()=>Fc,pkcs1MessageToJwk:()=>Rc,pkcs1MessageToRSAPrivateKey:()=>Oc,pkcs1ToJwk:()=>Mg,pkcs1ToRSAPrivateKey:()=>ad,pkixMessageToJwk:()=>kc,pkixMessageToRSAPublicKey:()=>Bc,pkixToJwk:()=>Ng,pkixToRSAPublicKey:()=>Nc});var is=Go;var Gr=class{type="RSA";jwk;_raw;_multihash;constructor(t,e){this.jwk=t,this._multihash=e}get raw(){return this._raw==null&&(this._raw=Vn.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return it.createV1(114,this._multihash)}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}verify(t,e,n){return id(this.jwk,e,t,n)}},zn=class{type="RSA";jwk;_raw;publicKey;constructor(t,e){this.jwk=t,this.publicKey=e}get raw(){return this._raw==null&&(this._raw=Vn.jwkToPkcs1(this.jwk)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}sign(t,e){return sd(this.jwk,t,e)}};var Lc=8192,Dc=18,Rg=1062,kg=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Mg(r){let t=we(r);return Rc(t)}function Rc(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 Og(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 k("JWK was missing components");return ee([Rt(Uint8Array.from([0])),Rt(L(r.n,"base64url")),Rt(L(r.e,"base64url")),Rt(L(r.d,"base64url")),Rt(L(r.p,"base64url")),Rt(L(r.q,"base64url")),Rt(L(r.dp,"base64url")),Rt(L(r.dq,"base64url")),Rt(L(r.qi,"base64url"))]).subarray()}function Ng(r){let t=we(r,{offset:0});return kc(t)}function kc(r){let t=we(r[1],{offset:0});return{kty:"RSA",n:B(t[0],"base64url"),e:B(t[1],"base64url")}}function Mc(r){if(r.n==null||r.e==null)throw new k("JWK was missing components");return ee([kg,Cn(ee([Rt(L(r.n,"base64url")),Rt(L(r.e,"base64url"))]))]).subarray()}function ad(r){let t=we(r);return Oc(t)}function Oc(r){let t=Rc(r);return Fc(t)}function Nc(r,t){if(r.byteLength>=Rg)throw new Tr("Key size is too large");let e=we(r,{offset:0});return Bc(e,r,t)}function Bc(r,t,e){let n=kc(r);if(e==null){let o=is(de.encode({Type:ft.RSA,Data:t}));e=Qt(Dc,o)}return new Gr(n,e)}function Fc(r){if(ud(r)>Lc)throw new k("Key size is too large");let t=cd(r),e=is(de.encode({Type:ft.RSA,Data:Mc(t.publicKey)})),n=Qt(Dc,e);return new zn(t.privateKey,new Gr(t.publicKey,n))}async function Uc(r){if(r>Lc)throw new k("Key size is too large");let t=await ld(r),e=is(de.encode({Type:ft.RSA,Data:Mc(t.publicKey)})),n=Qt(Dc,e);return new zn(t.privateKey,new Gr(t.publicKey,n))}function cd(r){if(r==null)throw new k("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function ld(r,t){let e=await ze.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);t?.signal?.throwIfAborted();let n=await Bg(e,t);return{privateKey:n[0],publicKey:n[1]}}async function sd(r,t,e){let n=await ze.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);e?.signal?.throwIfAborted();let o=await ze.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,t instanceof Uint8Array?t:t.subarray());return e?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function id(r,t,e,n){let o=await ze.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await ze.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,t,e instanceof Uint8Array?e:e.subarray());return n?.signal?.throwIfAborted(),s}async function Bg(r,t){if(r.privateKey==null||r.publicKey==null)throw new k("Private and public key are required");let e=await Promise.all([ze.get().subtle.exportKey("jwk",r.privateKey),ze.get().subtle.exportKey("jwk",r.publicKey)]);return t?.signal?.throwIfAborted(),e}function ud(r){if(r.kty!=="RSA")throw new k("invalid key type");if(r.n==null)throw new k("invalid key modulus");return L(r.n,"base64url").length*8}var as=class extends Fr{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,sf(t);let n=Tn(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?t.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=t.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),xe(s)}update(t){return Ur(this),this.iHash.update(t),this}digestInto(t){Ur(this),Ye(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return t=t,t.finished=o,t.destroyed=s,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Kc=(r,t,e)=>new as(r,t).update(e).digest();Kc.create=(r,t)=>new as(r,t);function fd(r){r.lowS!==void 0&&ue("lowS",r.lowS),r.prehash!==void 0&&ue("prehash",r.prehash)}function Fg(r){let t=Mn(r);Se(t,{a:"field",b:"field"},{allowInfinityPoint:"boolean",allowedPrivateKeyLengths:"array",clearCofactor:"function",fromBytes:"function",isTorsionFree:"function",toBytes:"function",wrapPrivateKey:"boolean"});let{endo:e,Fp:n,a:o}=t;if(e){if(!n.eql(o,n.ZERO))throw new Error("invalid endo: CURVE.a must be 0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error('invalid endo: expected "beta": bigint and "splitScalar": function')}return Object.freeze({...t})}var Vc=class extends Error{constructor(t=""){super(t)}},Ie={Err:Vc,_tlv:{encode:(r,t)=>{let{Err:e}=Ie;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length&1)throw new e("tlv.encode: unpadded data");let n=t.length/2,o=Rn(n);if(o.length/2&128)throw new e("tlv.encode: long form length too big");let s=n>127?Rn(o.length/2|128):"";return Rn(r)+s+o+t},decode(r,t){let{Err:e}=Ie,n=0;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length<2||t[n++]!==r)throw new e("tlv.decode: wrong tlv");let o=t[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new e("tlv.decode(long): indefinite length not supported");if(c>4)throw new e("tlv.decode(long): byte length is too big");let u=t.subarray(n,n+c);if(u.length!==c)throw new e("tlv.decode: length bytes not complete");if(u[0]===0)throw new e("tlv.decode(long): zero leftmost byte");for(let l of u)i=i<<8|l;if(n+=c,i<128)throw new e("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new e("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(r){let{Err:t}=Ie;if(r<Ce)throw new t("integer: negative integers are not allowed");let e=Rn(r);if(Number.parseInt(e[0],16)&8&&(e="00"+e),e.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return e},decode(r){let{Err:t}=Ie;if(r[0]&128)throw new t("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return Ae(r)}},toSig(r){let{Err:t,_int:e,_tlv:n}=Ie,o=nt("signature",r),{v:s,l:i}=n.decode(48,o);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:u,l}=n.decode(2,c);if(l.length)throw new t("invalid signature: left bytes after parsing");return{r:e.decode(a),s:e.decode(u)}},hexFromSig(r){let{_tlv:t,_int:e}=Ie,n=t.encode(2,e.encode(r.r)),o=t.encode(2,e.encode(r.s)),s=n+o;return t.encode(48,s)}};function qc(r,t){return Ue(tr(r,t))}var Ce=BigInt(0),bt=BigInt(1),QE=BigInt(2),zc=BigInt(3),Ug=BigInt(4);function Kg(r){let t=Fg(r),{Fp:e}=t,n=_e(t.n,t.nBitLength),o=t.toBytes||((x,p,w)=>{let T=p.toAffine();return Ke(Uint8Array.from([4]),e.toBytes(T.x),e.toBytes(T.y))}),s=t.fromBytes||(x=>{let p=x.subarray(1),w=e.fromBytes(p.subarray(0,e.BYTES)),T=e.fromBytes(p.subarray(e.BYTES,2*e.BYTES));return{x:w,y:T}});function i(x){let{a:p,b:w}=t,T=e.sqr(x),P=e.mul(T,x);return e.add(e.add(P,e.mul(x,p)),w)}function a(x,p){let w=e.sqr(p),T=i(x);return e.eql(w,T)}if(!a(t.Gx,t.Gy))throw new Error("bad curve params: generator point");let c=e.mul(e.pow(t.a,zc),Ug),u=e.mul(e.sqr(t.b),BigInt(27));if(e.is0(e.add(c,u)))throw new Error("bad curve params: a or b");function l(x){return jo(x,bt,t.n)}function f(x){let{allowedPrivateKeyLengths:p,nByteLength:w,wrapPrivateKey:T,n:P}=t;if(p&&typeof x!="bigint"){if(qr(x)&&(x=Ue(x)),typeof x!="string"||!p.includes(x.length))throw new Error("invalid private key");x=x.padStart(w*2,"0")}let D;try{D=typeof x=="bigint"?x:Ae(nt("private key",x,w))}catch{throw new Error("invalid private key, expected hex or "+w+" bytes, got "+typeof x)}return T&&(D=rt(D,P)),Ht("private key",D,bt,P),D}function d(x){if(!(x instanceof g))throw new Error("ProjectivePoint expected")}let m=Vr((x,p)=>{let{px:w,py:T,pz:P}=x;if(e.eql(P,e.ONE))return{x:w,y:T};let D=x.is0();p==null&&(p=D?e.ONE:e.inv(P));let F=e.mul(w,p),q=e.mul(T,p),M=e.mul(P,p);if(D)return{x:e.ZERO,y:e.ZERO};if(!e.eql(M,e.ONE))throw new Error("invZ was invalid");return{x:F,y:q}}),h=Vr(x=>{if(x.is0()){if(t.allowInfinityPoint&&!e.is0(x.py))return;throw new Error("bad point: ZERO")}let{x:p,y:w}=x.toAffine();if(!e.isValid(p)||!e.isValid(w))throw new Error("bad point: x or y not FE");if(!a(p,w))throw new Error("bad point: equation left != right");if(!x.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class g{constructor(p,w,T){if(p==null||!e.isValid(p))throw new Error("x required");if(w==null||!e.isValid(w)||e.is0(w))throw new Error("y required");if(T==null||!e.isValid(T))throw new Error("z required");this.px=p,this.py=w,this.pz=T,Object.freeze(this)}static fromAffine(p){let{x:w,y:T}=p||{};if(!p||!e.isValid(w)||!e.isValid(T))throw new Error("invalid affine point");if(p instanceof g)throw new Error("projective point not allowed");let P=D=>e.eql(D,e.ZERO);return P(w)&&P(T)?g.ZERO:new g(w,T,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let w=Hr(e,p.map(T=>T.pz));return p.map((T,P)=>T.toAffine(w[P])).map(g.fromAffine)}static fromHex(p){let w=g.fromAffine(s(nt("pointHex",p)));return w.assertValidity(),w}static fromPrivateKey(p){return g.BASE.multiply(f(p))}static msm(p,w){return Zo(g,n,p,w)}_setWindowSize(p){C.setWindowSize(this,p)}assertValidity(){h(this)}hasEvenY(){let{y:p}=this.toAffine();if(e.isOdd)return!e.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){d(p);let{px:w,py:T,pz:P}=this,{px:D,py:F,pz:q}=p,M=e.eql(e.mul(w,q),e.mul(D,P)),U=e.eql(e.mul(T,q),e.mul(F,P));return M&&U}negate(){return new g(this.px,e.neg(this.py),this.pz)}double(){let{a:p,b:w}=t,T=e.mul(w,zc),{px:P,py:D,pz:F}=this,q=e.ZERO,M=e.ZERO,U=e.ZERO,N=e.mul(P,P),ht=e.mul(D,D),_=e.mul(F,F),S=e.mul(P,D);return S=e.add(S,S),U=e.mul(P,F),U=e.add(U,U),q=e.mul(p,U),M=e.mul(T,_),M=e.add(q,M),q=e.sub(ht,M),M=e.add(ht,M),M=e.mul(q,M),q=e.mul(S,q),U=e.mul(T,U),_=e.mul(p,_),S=e.sub(N,_),S=e.mul(p,S),S=e.add(S,U),U=e.add(N,N),N=e.add(U,N),N=e.add(N,_),N=e.mul(N,S),M=e.add(M,N),_=e.mul(D,F),_=e.add(_,_),N=e.mul(_,S),q=e.sub(q,N),U=e.mul(_,ht),U=e.add(U,U),U=e.add(U,U),new g(q,M,U)}add(p){d(p);let{px:w,py:T,pz:P}=this,{px:D,py:F,pz:q}=p,M=e.ZERO,U=e.ZERO,N=e.ZERO,ht=t.a,_=e.mul(t.b,zc),S=e.mul(w,D),R=e.mul(T,F),A=e.mul(P,q),y=e.add(w,T),E=e.add(D,F);y=e.mul(y,E),E=e.add(S,R),y=e.sub(y,E),E=e.add(w,P);let I=e.add(D,q);return E=e.mul(E,I),I=e.add(S,A),E=e.sub(E,I),I=e.add(T,P),M=e.add(F,q),I=e.mul(I,M),M=e.add(R,A),I=e.sub(I,M),N=e.mul(ht,E),M=e.mul(_,A),N=e.add(M,N),M=e.sub(R,N),N=e.add(R,N),U=e.mul(M,N),R=e.add(S,S),R=e.add(R,S),A=e.mul(ht,A),E=e.mul(_,E),R=e.add(R,A),A=e.sub(S,A),A=e.mul(ht,A),E=e.add(E,A),S=e.mul(R,E),U=e.add(U,S),S=e.mul(I,E),M=e.mul(y,M),M=e.sub(M,S),S=e.mul(y,R),N=e.mul(I,N),N=e.add(N,S),new g(M,U,N)}subtract(p){return this.add(p.negate())}is0(){return this.equals(g.ZERO)}wNAF(p){return C.wNAFCached(this,p,g.normalizeZ)}multiplyUnsafe(p){let{endo:w,n:T}=t;Ht("scalar",p,Ce,T);let P=g.ZERO;if(p===Ce)return P;if(this.is0()||p===bt)return this;if(!w||C.hasPrecomputes(this))return C.wNAFCachedUnsafe(this,p,g.normalizeZ);let{k1neg:D,k1:F,k2neg:q,k2:M}=w.splitScalar(p),U=P,N=P,ht=this;for(;F>Ce||M>Ce;)F&bt&&(U=U.add(ht)),M&bt&&(N=N.add(ht)),ht=ht.double(),F>>=bt,M>>=bt;return D&&(U=U.negate()),q&&(N=N.negate()),N=new g(e.mul(N.px,w.beta),N.py,N.pz),U.add(N)}multiply(p){let{endo:w,n:T}=t;Ht("scalar",p,bt,T);let P,D;if(w){let{k1neg:F,k1:q,k2neg:M,k2:U}=w.splitScalar(p),{p:N,f:ht}=this.wNAF(q),{p:_,f:S}=this.wNAF(U);N=C.constTimeNegate(F,N),_=C.constTimeNegate(M,_),_=new g(e.mul(_.px,w.beta),_.py,_.pz),P=N.add(_),D=ht.add(S)}else{let{p:F,f:q}=this.wNAF(p);P=F,D=q}return g.normalizeZ([P,D])[0]}multiplyAndAddUnsafe(p,w,T){let P=g.BASE,D=(q,M)=>M===Ce||M===bt||!q.equals(P)?q.multiplyUnsafe(M):q.multiply(M),F=D(this,w).add(D(p,T));return F.is0()?void 0:F}toAffine(p){return m(this,p)}isTorsionFree(){let{h:p,isTorsionFree:w}=t;if(p===bt)return!0;if(w)return w(g,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:w}=t;return p===bt?this:w?w(g,this):this.multiplyUnsafe(t.h)}toRawBytes(p=!0){return ue("isCompressed",p),this.assertValidity(),o(g,this,p)}toHex(p=!0){return ue("isCompressed",p),Ue(this.toRawBytes(p))}}g.BASE=new g(t.Gx,t.Gy,e.ONE),g.ZERO=new g(e.ZERO,e.ONE,e.ZERO);let{endo:b,nBitLength:v}=t,C=Yo(g,b?Math.ceil(v/2):v);return{CURVE:t,ProjectivePoint:g,normPrivateKeyToScalar:f,weierstrassEquation:i,isWithinCurveOrder:l}}function qg(r){let t=Mn(r);return Se(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function dd(r){let t=qg(r),{Fp:e,n,nByteLength:o,nBitLength:s}=t,i=e.BYTES+1,a=2*e.BYTES+1;function c(_){return rt(_,n)}function u(_){return Xo(_,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:f,weierstrassEquation:d,isWithinCurveOrder:m}=Kg({...t,toBytes(_,S,R){let A=S.toAffine(),y=e.toBytes(A.x),E=Ke;return ue("isCompressed",R),R?E(Uint8Array.from([S.hasEvenY()?2:3]),y):E(Uint8Array.from([4]),y,e.toBytes(A.y))},fromBytes(_){let S=_.length,R=_[0],A=_.subarray(1);if(S===i&&(R===2||R===3)){let y=Ae(A);if(!jo(y,bt,e.ORDER))throw new Error("Point is not on curve");let E=d(y),I;try{I=e.sqrt(E)}catch(V){let $=V instanceof Error?": "+V.message:"";throw new Error("Point is not on curve"+$)}let O=(I&bt)===bt;return(R&1)===1!==O&&(I=e.neg(I)),{x:y,y:I}}else if(S===a&&R===4){let y=e.fromBytes(A.subarray(0,e.BYTES)),E=e.fromBytes(A.subarray(e.BYTES,2*e.BYTES));return{x:y,y:E}}else{let y=i,E=a;throw new Error("invalid Point, expected length of "+y+", or uncompressed "+E+", got "+S)}}});function h(_){let S=n>>bt;return _>S}function g(_){return h(_)?c(-_):_}let b=(_,S,R)=>Ae(_.slice(S,R));class v{constructor(S,R,A){Ht("r",S,bt,n),Ht("s",R,bt,n),this.r=S,this.s=R,A!=null&&(this.recovery=A),Object.freeze(this)}static fromCompact(S){let R=o;return S=nt("compactSignature",S,R*2),new v(b(S,0,R),b(S,R,2*R))}static fromDER(S){let{r:R,s:A}=Ie.toSig(nt("DER",S));return new v(R,A)}assertValidity(){}addRecoveryBit(S){return new v(this.r,this.s,S)}recoverPublicKey(S){let{r:R,s:A,recovery:y}=this,E=P(nt("msgHash",S));if(y==null||![0,1,2,3].includes(y))throw new Error("recovery id invalid");let I=y===2||y===3?R+t.n:R;if(I>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let O=(y&1)===0?"02":"03",K=l.fromHex(O+qc(I,e.BYTES)),V=u(I),$=c(-E*V),X=c(A*V),J=l.BASE.multiplyAndAddUnsafe(K,$,X);if(!J)throw new Error("point at infinify");return J.assertValidity(),J}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new v(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return kn(this.toDERHex())}toDERHex(){return Ie.hexFromSig(this)}toCompactRawBytes(){return kn(this.toCompactHex())}toCompactHex(){let S=o;return qc(this.r,S)+qc(this.s,S)}}let C={isValidPrivateKey(_){try{return f(_),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let _=ec(t.n);return Mf(t.randomBytes(_),t.n)},precompute(_=8,S=l.BASE){return S._setWindowSize(_),S.multiply(BigInt(3)),S}};function x(_,S=!0){return l.fromPrivateKey(_).toRawBytes(S)}function p(_){if(typeof _=="bigint")return!1;if(_ instanceof l)return!0;let R=nt("key",_).length,A=e.BYTES,y=A+1,E=2*A+1;if(!(t.allowedPrivateKeyLengths||o===y))return R===y||R===E}function w(_,S,R=!0){if(p(_)===!0)throw new Error("first arg must be private key");if(p(S)===!1)throw new Error("second arg must be public key");return l.fromHex(S).multiply(f(_)).toRawBytes(R)}let T=t.bits2int||function(_){if(_.length>8192)throw new Error("input is too large");let S=Ae(_),R=_.length*8-s;return R>0?S>>BigInt(R):S},P=t.bits2int_modN||function(_){return c(T(_))},D=er(s);function F(_){return Ht("num < 2^"+s,_,Ce,D),tr(_,o)}function q(_,S,R=M){if(["recovered","canonical"].some(ut=>ut in R))throw new Error("sign() legacy options not supported");let{hash:A,randomBytes:y}=t,{lowS:E,prehash:I,extraEntropy:O}=R;E==null&&(E=!0),_=nt("msgHash",_),fd(R),I&&(_=nt("prehashed msgHash",A(_)));let K=P(_),V=f(S),$=[F(V),F(K)];if(O!=null&&O!==!1){let ut=O===!0?y(e.BYTES):O;$.push(nt("extraEntropy",ut))}let X=Ke(...$),J=K;function pt(ut){let wt=T(ut);if(!m(wt))return;let Ut=u(wt),gt=l.BASE.multiply(wt).toAffine(),At=c(gt.x);if(At===Ce)return;let zt=c(Ut*c(J+At*V));if(zt===Ce)return;let Yt=(gt.x===At?0:2)|Number(gt.y&bt),gn=zt;return E&&h(zt)&&(gn=g(zt),Yt^=1),new v(At,gn,Yt)}return{seed:X,k2sig:pt}}let M={lowS:t.lowS,prehash:!1},U={lowS:t.lowS,prehash:!1};function N(_,S,R=M){let{seed:A,k2sig:y}=q(_,S,R),E=t;return If(E.hash.outputLen,E.nByteLength,E.hmac)(A,y)}l.BASE._setWindowSize(8);function ht(_,S,R,A=U){let y=_;S=nt("msgHash",S),R=nt("publicKey",R);let{lowS:E,prehash:I,format:O}=A;if(fd(A),"strict"in A)throw new Error("options.strict was renamed to lowS");if(O!==void 0&&O!=="compact"&&O!=="der")throw new Error("format must be compact or der");let K=typeof y=="string"||qr(y),V=!K&&!O&&typeof y=="object"&&y!==null&&typeof y.r=="bigint"&&typeof y.s=="bigint";if(!K&&!V)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let $,X;try{if(V&&($=new v(y.r,y.s)),K){try{O!=="compact"&&($=v.fromDER(y))}catch(Yt){if(!(Yt instanceof Ie.Err))throw Yt}!$&&O!=="der"&&($=v.fromCompact(y))}X=l.fromHex(R)}catch{return!1}if(!$||E&&$.hasHighS())return!1;I&&(S=t.hash(S));let{r:J,s:pt}=$,ut=P(S),wt=u(pt),Ut=c(ut*wt),gt=c(J*wt),At=l.BASE.multiplyAndAddUnsafe(X,Ut,gt)?.toAffine();return At?c(At.x)===J:!1}return{CURVE:t,getPublicKey:x,getSharedSecret:w,sign:N,verify:ht,ProjectivePoint:l,Signature:v,utils:C}}function zg(r){return{hash:r,hmac:(t,...e)=>Kc(r,t,Va(...e)),randomBytes:Kr}}function hd(r,t){let e=n=>dd({...r,...zg(n)});return{...e(t),create:e}}var gd=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),pd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),Vg=BigInt(0),Hg=BigInt(1),Hc=BigInt(2),md=(r,t)=>(r+t/Hc)/t;function $g(r){let t=gd,e=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),u=r*r*r%t,l=u*u*r%t,f=ot(l,e,t)*l%t,d=ot(f,e,t)*l%t,m=ot(d,Hc,t)*u%t,h=ot(m,o,t)*m%t,g=ot(h,s,t)*h%t,b=ot(g,a,t)*g%t,v=ot(b,c,t)*b%t,C=ot(v,a,t)*g%t,x=ot(C,e,t)*l%t,p=ot(x,i,t)*h%t,w=ot(p,n,t)*u%t,T=ot(w,Hc,t);if(!$c.eql($c.sqr(T),r))throw new Error("Cannot find square root");return T}var $c=_e(gd,void 0,void 0,{sqrt:$g}),se=hd({a:Vg,b:BigInt(7),Fp:$c,n:pd,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=pd,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-Hg*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=e,i=BigInt("0x100000000000000000000000000000000"),a=md(s*r,t),c=md(-n*r,t),u=rt(r-a*e-c*o,t),l=rt(-a*n-c*s,t),f=u>i,d=l>i;if(f&&(u=t-u),d&&(l=t-l),u>i||l>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:u,k2neg:d,k2:l}}}},Go);function Wc(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function yd(r,t,e){let n=Br.digest(t instanceof Uint8Array?t:t.subarray());if(Wc(n))return n.then(({digest:o})=>(e?.signal?.throwIfAborted(),se.sign(o,r).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new Kn(String(o))});try{return se.sign(n.digest,r).toDERRawBytes()}catch(o){throw new Kn(String(o))}}function bd(r,t,e,n){let o=Br.digest(e instanceof Uint8Array?e:e.subarray());if(Wc(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),se.verify(t,s,r))).catch(s=>{throw s.name==="AbortError"?s:new qn(String(s))});try{return n?.signal?.throwIfAborted(),se.verify(t,o.digest,r)}catch(s){throw new qn(String(s))}}var Hn=class{type="secp256k1";raw;_key;constructor(t){this._key=Ed(t),this.raw=wd(this._key)}toMultihash(){return te.digest(Gt(this))}toCID(){return it.createV1(114,this.toMultihash())}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}verify(t,e,n){return bd(this._key,e,t,n)}},cs=class{type="secp256k1";raw;publicKey;constructor(t,e){this.raw=xd(t),this.publicKey=new Hn(e??vd(t))}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}sign(t,e){return yd(this.raw,t,e)}};function Gc(r){return new Hn(r)}async function Ad(){let r=Wg();return new cs(r)}function wd(r){return se.ProjectivePoint.fromHex(r).toRawBytes(!0)}function xd(r){try{return se.getPublicKey(r,!0),r}catch(t){throw new yn(String(t))}}function Ed(r){try{return se.ProjectivePoint.fromHex(r),r}catch(t){throw new Tr(String(t))}}function vd(r){try{return se.getPublicKey(r,!0)}catch(t){throw new yn(String(t))}}function Wg(){return se.utils.randomPrivateKey()}async function Sd(r,t){if(r==="Ed25519")return jf();if(r==="secp256k1")return Ad();if(r==="RSA")return Uc(Gg(t));if(r==="ECDSA")return of(jg(t));throw new Me}function jr(r,t){let{Type:e,Data:n}=de.decode(r),o=n??new Uint8Array;switch(e){case ft.RSA:return Nc(o,t);case ft.Ed25519:return lc(o);case ft.secp256k1:return Gc(o);case ft.ECDSA:return za(o);default:throw new Me}}function _d(r){let{Type:t,Data:e}=de.decode(r.digest),n=e??new Uint8Array;switch(t){case ft.Ed25519:return lc(n);case ft.secp256k1:return Gc(n);case ft.ECDSA:return za(n);default:throw new Me}}function Gt(r){return de.encode({Type:ft[r.type],Data:r.raw})}function Gg(r){return r==null?2048:parseInt(r,10)}function jg(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 k("Unsupported curve, should be P-256, P-384 or P-521")}var Id=Symbol.for("nodejs.util.inspect.custom"),Xg=114,$n=class{type;multihash;publicKey;string;constructor(t){this.type=t.type,this.multihash=t.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Po]=!0;toString(){return this.string==null&&(this.string=j.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return it.createV1(Xg,this.multihash)}toJSON(){return this.toString()}equals(t){if(t==null)return!1;if(t instanceof Uint8Array)return tt(this.multihash.bytes,t);if(typeof t=="string")return this.toString()===t;if(t?.toMultihash()?.bytes!=null)return tt(this.multihash.bytes,t.toMultihash().bytes);throw new Error("not valid Id")}[Id](){return`PeerId(${this.toString()})`}},Wn=class extends $n{type="RSA";publicKey;constructor(t){super({...t,type:"RSA"}),this.publicKey=t.publicKey}},Gn=class extends $n{type="Ed25519";publicKey;constructor(t){super({...t,type:"Ed25519"}),this.publicKey=t.publicKey}},jn=class extends $n{type="secp256k1";publicKey;constructor(t){super({...t,type:"secp256k1"}),this.publicKey=t.publicKey}},Yg=2336,Xn=class{type="url";multihash;publicKey;url;constructor(t){this.url=t.toString(),this.multihash=te.digest(L(this.url))}[Id](){return`PeerId(${this.url})`}[Po]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return it.createV1(Yg,this.toMultihash())}toJSON(){return this.toString()}equals(t){return t==null?!1:(t instanceof Uint8Array&&(t=B(t)),t.toString()===this.toString())}};var Zg=114,Cd=2336;function he(r,t){let e;if(r.charAt(0)==="1"||r.charAt(0)==="Q")e=Jt(j.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return Yn(it.parse(r));if(t==null)throw new k('Please pass a multibase decoder for strings that do not start with "1" or "Q"');e=Jt(t.decode(r))}return Xr(e)}function jc(r){if(r.type==="Ed25519")return new Gn({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new jn({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Wn({multihash:r.toCID().multihash,publicKey:r});throw new Me}function Td(r){return jc(r.publicKey)}function Xr(r){if(Jg(r))return new Wn({multihash:r});if(Qg(r))try{let t=_d(r);if(t.type==="Ed25519")return new Gn({multihash:r,publicKey:t});if(t.type==="secp256k1")return new jn({multihash:r,publicKey:t})}catch{let e=B(r.digest);return new Xn(new URL(e))}throw new Ro("Supplied PeerID Multihash is invalid")}function Yn(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==Zg&&r.code!==Cd)throw new Do("Supplied PeerID CID is invalid");if(r.code===Cd){let t=B(r.multihash.digest);return new Xn(new URL(t))}return Xr(r.multihash)}function Qg(r){return r.code===te.code}function Jg(r){return r.code===Br.code}function Yr(r){if(typeof r!="object"||r===null)return!1;let t=Object.getPrototypeOf(r);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in r)&&!(Symbol.iterator in r)}var{hasOwnProperty:Ld}=Object.prototype,{propertyIsEnumerable:t0}=Object,Zr=(r,t,e)=>{Object.defineProperty(r,t,{value:e,writable:!0,enumerable:!0,configurable:!0})},e0=void 0,Pd={concatArrays:!1,ignoreUndefined:!1},ls=r=>{let t=[];for(let e in r)Ld.call(r,e)&&t.push(e);if(Object.getOwnPropertySymbols){let e=Object.getOwnPropertySymbols(r);for(let n of e)t0.call(r,n)&&t.push(n)}return t};function Qr(r){return Array.isArray(r)?r0(r):Yr(r)?n0(r):r}function r0(r){let t=r.slice(0,0);return ls(r).forEach(e=>{Zr(t,e,Qr(r[e]))}),t}function n0(r){let t=Object.getPrototypeOf(r)===null?Object.create(null):{};return ls(r).forEach(e=>{Zr(t,e,Qr(r[e]))}),t}var Dd=(r,t,e,n)=>(e.forEach(o=>{typeof t[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?Zr(r,o,Xc(r[o],t[o],n)):Zr(r,o,Qr(t[o])))}),r),o0=(r,t,e)=>{let n=r.slice(0,0),o=0;return[r,t].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)Ld.call(s,a)&&(i.push(String(a)),s===r?Zr(n,o++,s[a]):Zr(n,o++,Qr(s[a])));n=Dd(n,s,ls(s).filter(a=>!i.includes(a)),e)}),n};function Xc(r,t,e){return e.concatArrays&&Array.isArray(r)&&Array.isArray(t)?o0(r,t,e):!Yr(t)||!Yr(r)?Qr(t):Dd(r,t,ls(t),e)}function us(...r){let t=Xc(Qr(Pd),this!==e0&&this||{},Pd),e={_:{}};for(let n of r)if(n!==void 0){if(!Yr(n))throw new TypeError("`"+n+"` is not an Option Object");e=Xc(e,{_:n},t)}return e._}var dt=class extends Event{type;detail;constructor(t,e){super(t),this.type=t,this.detail=e}};var Zc=To(kd(),1);var Qn=class extends Error{constructor(t){super(t),this.name="TimeoutError"}},Qc=class extends Error{constructor(t){super(),this.name="AbortError",this.message=t}},Md=r=>globalThis.DOMException===void 0?new Qc(r):new DOMException(r),Od=r=>{let t=r.reason===void 0?Md("This operation was aborted."):r.reason;return t instanceof Error?t:Md(t)};function Jc(r,t){let{milliseconds:e,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=t,i,a,u=new Promise((l,f)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(t.signal){let{signal:m}=t;m.aborted&&f(Od(m)),a=()=>{f(Od(m))},m.addEventListener("abort",a,{once:!0})}if(e===Number.POSITIVE_INFINITY){r.then(l,f);return}let d=new Qn;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(m){f(m)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${e} milliseconds`,f(d))},e),(async()=>{try{l(await r)}catch(m){f(m)}})()}).finally(()=>{u.clear(),a&&t.signal&&t.signal.removeEventListener("abort",a)});return u.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},u}function tl(r,t,e){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;e(r[i],t)<=0?(n=++i,o-=s+1):o=s}return n}var Jn=class{#t=[];enqueue(t,e){e={priority:0,...e};let n={priority:e.priority,id:e.id,run:t};if(this.size===0||this.#t[this.size-1].priority>=e.priority){this.#t.push(n);return}let o=tl(this.#t,n,(s,i)=>i.priority-s.priority);this.#t.splice(o,0,n)}setPriority(t,e){let n=this.#t.findIndex(s=>s.id===t);if(n===-1)throw new ReferenceError(`No promise function with the id "${t}" exists in the queue.`);let[o]=this.#t.splice(n,1);this.enqueue(o.run,{priority:e,id:t})}dequeue(){return this.#t.shift()?.run}filter(t){return this.#t.filter(e=>e.priority===t.priority).map(e=>e.run)}get size(){return this.#t.length}};var to=class extends Zc.default{#t;#e;#r=0;#a;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#i;#g;#w=1n;timeout;constructor(t){if(super(),t={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Jn,...t},!(typeof t.intervalCap=="number"&&t.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${t.intervalCap?.toString()??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${t.interval?.toString()??""}\` (${typeof t.interval})`);this.#t=t.carryoverConcurrencyCount,this.#e=t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0,this.#a=t.intervalCap,this.#c=t.interval,this.#n=new t.queueClass,this.#m=t.queueClass,this.concurrency=t.concurrency,this.timeout=t.timeout,this.#g=t.throwOnTimeout===!0,this.#i=t.autoStart===!1}get#x(){return this.#e||this.#r<this.#a}get#E(){return this.#s<this.#u}#v(){this.#s--,this.#f(),this.emit("next")}#A(){this.#b(),this.#y(),this.#l=void 0}get#S(){let t=Date.now();if(this.#o===void 0){let e=this.#p-t;if(e<0)this.#r=this.#t?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#A()},e)),!0}return!1}#f(){if(this.#n.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#i){let t=!this.#S;if(this.#x&&this.#E){let e=this.#n.dequeue();return e?(this.emit("active"),e(),t&&this.#y(),!0):!1}}return!1}#y(){this.#e||this.#o!==void 0||(this.#o=setInterval(()=>{this.#b()},this.#c),this.#p=Date.now()+this.#c)}#b(){this.#r===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#r=this.#t?this.#s:0,this.#d()}#d(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);this.#u=t,this.#d()}async#_(t){return new Promise((e,n)=>{t.addEventListener("abort",()=>{n(t.reason)},{once:!0})})}setPriority(t,e){this.#n.setPriority(t,e)}async add(t,e={}){return e.id??=(this.#w++).toString(),e={timeout:this.timeout,throwOnTimeout:this.#g,...e},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#s++,this.#r++;try{e.signal?.throwIfAborted();let s=t({signal:e.signal});e.timeout&&(s=Jc(Promise.resolve(s),{milliseconds:e.timeout})),e.signal&&(s=Promise.race([s,this.#_(e.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof Qn&&!e.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#v()}},e),this.emit("add"),this.#f()})}async addAll(t,e){return Promise.all(t.map(async n=>this.add(n,e)))}start(){return this.#i?(this.#i=!1,this.#d(),this):this}pause(){this.#i=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(t){this.#n.size<t||await this.#h("next",()=>this.#n.size<t)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(t,e){return new Promise(n=>{let o=()=>{e&&!e()||(this.off(t,o),n())};this.on(t,o)})}get size(){return this.#n.size}sizeBy(t){return this.#n.filter(t).length}get pending(){return this.#s}get isPaused(){return this.#i}};function ds(r){let t=[Wt.A];return r==null?t:Array.isArray(r)?r.length===0?t:r:[r]}var el=60;function hs(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(t=>({name:t.name,type:Wt[t.type]})),Answer:(r.Answer??r.answers??[]).map(t=>({name:t.name,type:Wt[t.type],TTL:t.TTL??t.ttl??el,data:t.data instanceof Uint8Array?B(t.data):t.data}))}}var a0=4;function rl(r,t={}){let e=new to({concurrency:t.queryConcurrency??a0});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),ds(o.types).forEach(a=>{s.append("type",Wt[a])}),o.onProgress?.(new dt("dns:query",{detail:n}));let i=await e.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=hs(await a.json());return o.onProgress?.(new dt("dns:response",{detail:c})),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function Nd(){return[rl("https://cloudflare-dns.com/dns-query"),rl("https://dns.google/resolve")]}var Ud=To(Fd(),1);var nl=class{lru;constructor(t){this.lru=(0,Ud.default)(t)}get(t,e){let n=!0,o=[];for(let s of e){let i=this.getAnswers(t,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return hs({answers:o})}getAnswers(t,e){let n=`${t.toLowerCase()}-${e}`,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:Wt[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(t,e){let n=`${t.toLowerCase()}-${e.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(e.TTL??el)*1e3,value:e}),this.lru.set(n,o)}remove(t,e){let n=`${t.toLowerCase()}-${e}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Kd(r){return new nl(r)}var c0=1e3,ps=class{resolvers;cache;constructor(t){this.resolvers={},this.cache=Kd(t.cacheSize??c0),Object.entries(t.resolvers??{}).forEach(([e,n])=>{Array.isArray(n)||(n=[n]),e.endsWith(".")||(e=`${e}.`),this.resolvers[e]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Nd())}async query(t,e={}){let n=ds(e.types),o=e.cached!==!1?this.cache.get(t,n):void 0;if(o!=null)return e.onProgress?.(new dt("dns:cache",{detail:o})),o;let s=`${t.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(e.signal?.aborted===!0)break;try{let u=await c(t,{...e,types:n});for(let l of u.Answer)this.cache.add(t,l);return u}catch(u){a.push(u),e.onProgress?.(new dt("dns:error",{detail:u}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${t} ${n} failed`)}};var Wt;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(Wt||(Wt={}));function qd(r={}){return new ps(r)}var ms=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",u=2**(8*o)-1;for(;;){let l=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,t);if(!Number.isNaN(d))return d});if(l===void 0)break;if(s*=t,s+=l,s>u||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[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];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var zd=45,l0=15,Jr=new ms;function gs(r){if(!(r.length>l0))return Jr.new(r).parseWith(()=>Jr.readIPv4Addr())}function ys(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>zd))return Jr.new(r).parseWith(()=>Jr.readIPv6Addr())}function ar(r,t=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>zd)return;let e=Jr.new(r).parseWith(()=>Jr.readIPAddr());if(e)return t&&e.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,e[0],e[1],e[2],e[3]]):e}function Vd(r,t,e){let n=0;for(let o of r)if(!(n<t)){if(n>e)break;if(o!==255)return!1;n++}return!0}function Hd(r,t,e,n){let o=0;for(let s of r)if(!(o<e)){if(o>n)break;if(s!==t[o])return!1;o++}return!0}function ol(r){switch(r.length){case cr:return r.join(".");case lr:{let t=[];for(let e=0;e<r.length;e++)e%2===0&&t.push(r[e].toString(16).padStart(2,"0")+r[e+1].toString(16).padStart(2,"0"));return t.join(":")}default:throw new Error("Invalid ip length")}}function $d(r){let t=0;for(let[e,n]of r.entries()){if(n===255){t+=8;continue}for(;(n&128)!=0;)t++,n=n<<1;if((n&128)!=0)return-1;for(let o=e+1;o<r.length;o++)if(r[o]!=0)return-1;break}return t}function Wd(r){let t="0x";for(let e of r)t+=(e>>4).toString(16)+(e&15).toString(16);return t}var cr=4,lr=16,Gv=parseInt("0xFFFF",16),u0=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function eo(r,t){t.length===lr&&r.length===cr&&Vd(t,0,11)&&(t=t.slice(12)),t.length===cr&&r.length===lr&&Hd(r,u0,0,11)&&(r=r.slice(12));let e=r.length;if(e!=t.length)throw new Error("Failed to mask ip");let n=new Uint8Array(e);for(let o=0;o<e;o++)n[o]=r[o]&t[o];return n}function Gd(r,t){if(typeof t=="string"&&(t=ar(t)),t==null)throw new Error("Invalid ip");if(t.length!==r.network.length)return!1;for(let e=0;e<t.length;e++)if((r.network[e]&r.mask[e])!==(t[e]&r.mask[e]))return!1;return!0}function sl(r){let[t,e]=r.split("/");if(!t||!e)throw new Error("Failed to parse given CIDR: "+r);let n=cr,o=gs(t);if(o==null&&(n=lr,o=ys(t),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(e,10);if(Number.isNaN(s)||String(s).length!==e.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=il(s,8*n);return{network:eo(o,i),mask:i}}function il(r,t){if(t!==8*cr&&t!==8*lr)throw new Error("Invalid CIDR mask");if(r<0||r>t)throw new Error("Invalid CIDR mask");let e=t/8,n=new Uint8Array(e);for(let o=0;o<e;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var tn=class{constructor(t,e){if(e==null)({network:this.network,mask:this.mask}=sl(t));else{let n=ar(t);if(n==null)throw new Error("Failed to parse network");e=String(e);let o=parseInt(e,10);if(Number.isNaN(o)||String(o).length!==e.length||o<0||o>n.length*8){let s=ar(e);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=il(o,8*n.length);this.network=eo(n,this.mask)}}contains(t){return Gd({network:this.network,mask:this.mask},t)}toString(){let t=$d(this.mask),e=t!==-1?String(t):Wd(this.mask);return ol(this.network)+"/"+e}};function ie(r){return!!gs(r)}function en(r){return!!ys(r)}function bs(r){return!!ar(r)}var jd=ie,f0=en,al=function(r){let t=0;if(r=r.toString().trim(),jd(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(f0(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=jd(e[n]),i;s&&(i=al(e[n]),e[n]=B(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,B(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let s=parseInt(e[n],16);o[t++]=s>>8&255,o[t++]=s&255}return o}throw new Error("invalid ip address")},Xd=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let s=0;s<e;s++)o.push(r[t+s]);return o.join(".")}if(e===16){let o=[];for(let s=0;s<e;s+=2)o.push(n.getUint16(t+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var rn={},cl={},h0=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];h0.forEach(r=>{let t=p0(...r);cl[t.code]=t,rn[t.name]=t});function p0(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function W(r){if(typeof r=="number"){if(cl[r]!=null)return cl[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(rn[r]!=null)return rn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var m0=W("ip4"),g0=W("ip6"),y0=W("ipcidr");function dl(r,t){switch(W(r).code){case 4:case 41:return w0(t);case 42:return fl(t);case 43:return B(t,"base10");case 6:case 273:case 33:case 132:return Qd(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return fl(t);case 421:return A0(t);case 444:return Zd(t);case 445:return Zd(t);case 466:return v0(t);case 481:return globalThis.encodeURIComponent(fl(t));default:return B(t,"base16")}}function hl(r,t){switch(W(r).code){case 4:return Yd(t);case 41:return Yd(t);case 42:return ul(t);case 43:return L(t,"base10");case 6:case 273:case 33:case 132:return ml(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return ul(t);case 421:return x0(t);case 444:return S0(t);case 445:return _0(t);case 466:return E0(t);case 481:return ul(globalThis.decodeURIComponent(t));default:return L(t,"base16")}}function pl(r){let t,e;if(r.stringTuples().forEach(([n,o])=>{(n===m0.code||n===g0.code)&&(e=o),n===y0.code&&(t=o)}),t==null||e==null)throw new Error("Invalid multiaddr");return new tn(e,t)}var ll=Object.values(Sn).map(r=>r.decoder),b0=function(){let r=ll[0].or(ll[1]);return ll.slice(2).forEach(t=>r=r.or(t)),r}();function Yd(r){if(!bs(r))throw new Error("invalid ip address");return al(r)}function w0(r){let t=Xd(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!bs(t))throw new Error("invalid ip address");return t}function ml(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function Qd(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function ul(r){let t=L(r),e=Uint8Array.from(It(t.length));return Dt([e,t],e.length+t.length)}function fl(r){let t=ne(r);if(r=r.slice(mt(t)),r.length!==t)throw new Error("inconsistent lengths");return B(r)}function x0(r){let t;r[0]==="Q"||r[0]==="1"?t=Jt(j.decode(`z${r}`)).bytes:t=it.parse(r).multihash.bytes;let e=Uint8Array.from(It(t.length));return Dt([e,t],e.length+t.length)}function E0(r){let t=b0.decode(r),e=Uint8Array.from(It(t.length));return Dt([e,t],e.length+t.length)}function v0(r){let t=ne(r),e=r.slice(mt(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+B(e,"base64url")}function A0(r){let t=ne(r),e=r.slice(mt(t));if(e.length!==t)throw new Error("inconsistent lengths");return B(e,"base58btc")}function S0(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=Vt.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=ml(n);return Dt([e,o],e.length+o.length)}function _0(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=Vt.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=ml(n);return Dt([e,o],e.length+o.length)}function Zd(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=B(t,"base32"),o=Qd(e);return`${n}:${o}`}function Jd(r){r=gl(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=W(i);if(a.size===0){t.push([a.code]),e.push([a.code]);continue}if(s++,s>=o.length)throw new ws("invalid address: "+r);if(a.path===!0){n=gl(o.slice(s).join("/")),t.push([a.code,hl(a.code,n)]),e.push([a.code,n]);break}let c=hl(a.code,o[s]);t.push([a.code,c]),e.push([a.code,dl(a.code,c)])}return{string:th(e),bytes:xs(t),tuples:t,stringTuples:e,path:n}}function yl(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let s=ne(r,o),i=mt(s),a=W(s),c=I0(a,r.slice(o+i));if(c===0){t.push([s]),e.push([s]),o+=i;continue}let u=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw new ws("Invalid address Uint8Array: "+B(r,"base16"));t.push([s,u]);let l=dl(s,u);if(e.push([s,l]),a.path===!0){n=l;break}}return{bytes:Uint8Array.from(r),string:th(e),tuples:t,stringTuples:e,path:n}}function th(r){let t=[];return r.map(e=>{let n=W(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),gl(t.join("/"))}function xs(r){return Dt(r.map(t=>{let e=W(t[0]),n=Uint8Array.from(It(e.code));return t.length>1&&t[1]!=null&&(n=Dt([n,t[1]])),n}))}function I0(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=ne(t instanceof Uint8Array?t:Uint8Array.from(t));return e+mt(e)}}function gl(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}var ws=class extends Error{static name="ParseError";name="ParseError";constructor(t){super(`Error parsing address: ${t}`)}};var C0=Symbol.for("nodejs.util.inspect.custom"),wl=Symbol.for("@multiformats/js-multiaddr/multiaddr"),T0=[W("dns").code,W("dns4").code,W("dns6").code,W("dnsaddr").code],bl=class extends Error{constructor(t="No available resolver"){super(t),this.name="NoAvailableResolverError"}},Es=class r{bytes;#t;#e;#r;#a;[wl]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=yl(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=Jd(t)}else if(Ve(t))e=yl(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#a=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="",i=W("tcp"),a=W("udp"),c=W("ip4"),u=W("ip6"),l=W("dns6"),f=W("ip6zone");for(let[m,h]of this.stringTuples())m===f.code&&(s=`%${h??""}`),T0.includes(m)&&(e=i.name==="tcp"?"tcp":"udp",o=443,n=`${h??""}${s}`,t=m===l.code?6:4),(m===i.code||m===a.code)&&(e=W(m).name==="tcp"?"tcp":"udp",o=parseInt(h??"")),(m===c.code||m===u.code)&&(e=W(m).name==="tcp"?"tcp":"udp",n=`${h??""}${s}`,t=m===u.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#e.map(([t])=>Object.assign({},W(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>W(t).name)}tuples(){return this.#e.map(([t,e])=>e==null?[t]:[t,e])}stringTuples(){return this.#r.map(([t,e])=>e==null?[t]:[t,e])}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(xs(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===rn.p2p.code&&t.push([n,o]),n===rn["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?B(j.decode(`z${n}`),"base58btc"):B(it.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(t){return tt(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=nn.get(e.name);if(n==null)throw new bl(`no available resolver for ${e.name}`);return(await n(this,t)).map(s=>G(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[C0](){return`Multiaddr(${this.#t})`}};var nn=new Map;function Ve(r){return!!r?.[wl]}function G(r){return new Es(r)}var P0=32,{code:L0}=W("dnsaddr"),xl=class extends Error{constructor(t="Max recursive depth reached"){super(t),this.name="RecursionLimitError"}},ur=async function(t,e={}){let n=e.maxRecursiveDepth??P0;if(n===0)throw new xl("Max recursive depth reached");let[,o]=t.stringTuples().find(([u])=>u===L0)??[],i=await(e?.dns??qd()).query(`_dnsaddr.${o}`,{signal:e?.signal,types:[Wt.TXT]}),a=t.getPeerId(),c=[];for(let u of i.Answer){let l=u.data.replace(/["']/g,"").trim().split("=")[1];if(l==null||a!=null&&!l.includes(a))continue;let f=G(l);if(l.startsWith("/dnsaddr")){let d=await f.resolve({...e,maxRecursiveDepth:n-1});c.push(...d.map(m=>m.toString()))}else c.push(f.toString())}return c};var D0={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:ur}},transportManager:{faultTolerance:We.FATAL_ALL}};async function eh(r){let t=us(D0,r);if(t.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new k("Private network is enforced, but no protector was provided");return t}function R0(r,t){try{if(typeof r=="string"&&r.length>0)return k0(r);if(typeof r=="number"&&isFinite(r))return t?.long?O0(r):M0(r);throw new Error("Value is not a string or number.")}catch(e){let n=N0(e)?`${e.message}. value=${JSON.stringify(r)}`:"An unknown error has occured.";throw new Error(n)}}function k0(r){if(r=String(r),r.length>100)throw new Error("Value exceeds the maximum length of 100 characters.");let t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(!t)return NaN;let e=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return e*315576e5;case"weeks":case"week":case"w":return e*6048e5;case"days":case"day":case"d":return e*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return e*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return e*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return e*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:throw new Error(`The unit ${n} was matched, but no matching case exists.`)}}var As=R0;function M0(r){let t=Math.abs(r);return t>=864e5?`${Math.round(r/864e5)}d`:t>=36e5?`${Math.round(r/36e5)}h`:t>=6e4?`${Math.round(r/6e4)}m`:t>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function O0(r){let t=Math.abs(r);return t>=864e5?vs(r,t,864e5,"day"):t>=36e5?vs(r,t,36e5,"hour"):t>=6e4?vs(r,t,6e4,"minute"):t>=1e3?vs(r,t,1e3,"second"):`${r} ms`}function vs(r,t,e,n){let o=t>=e*1.5;return`${Math.round(r/e)} ${n}${o?"s":""}`}function N0(r){return typeof r=="object"&&r!==null&&"message"in r}function El(r){e.debug=e,e.default=e,e.coerce=c,e.disable=s,e.enable=o,e.enabled=i,e.humanize=As,e.destroy=u,Object.keys(r).forEach(l=>{e[l]=r[l]}),e.names=[],e.skips=[],e.formatters={};function t(l){let f=0;for(let d=0;d<l.length;d++)f=(f<<5)-f+l.charCodeAt(d),f|=0;return e.colors[Math.abs(f)%e.colors.length]}e.selectColor=t;function e(l){let f,d=null,m,h;function g(...b){if(!g.enabled)return;let v=g,C=Number(new Date),x=C-(f||C);v.diff=x,v.prev=f,v.curr=C,f=C,b[0]=e.coerce(b[0]),typeof b[0]!="string"&&b.unshift("%O");let p=0;b[0]=b[0].replace(/%([a-zA-Z%])/g,(T,P)=>{if(T==="%%")return"%";p++;let D=e.formatters[P];if(typeof D=="function"){let F=b[p];T=D.call(v,F),b.splice(p,1),p--}return T}),e.formatArgs.call(v,b),(v.log||e.log).apply(v,b)}return g.namespace=l,g.useColors=e.useColors(),g.color=e.selectColor(l),g.extend=n,g.destroy=e.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(m!==e.namespaces&&(m=e.namespaces,h=e.enabled(l)),h),set:b=>{d=b}}),typeof e.init=="function"&&e.init(g),g}function n(l,f){let d=e(this.namespace+(typeof f>"u"?":":f)+l);return d.log=this.log,d}function o(l){e.save(l),e.namespaces=l,e.names=[],e.skips=[];let f,d=(typeof l=="string"?l:"").split(/[\s,]+/),m=d.length;for(f=0;f<m;f++)d[f]&&(l=d[f].replace(/\*/g,".*?"),l[0]==="-"?e.skips.push(new RegExp("^"+l.substr(1)+"$")):e.names.push(new RegExp("^"+l+"$")))}function s(){let l=[...e.names.map(a),...e.skips.map(a).map(f=>"-"+f)].join(",");return e.enable(""),l}function i(l){if(l[l.length-1]==="*")return!0;let f,d;for(f=0,d=e.skips.length;f<d;f++)if(e.skips[f].test(l))return!1;for(f=0,d=e.names.length;f<d;f++)if(e.names[f].test(l))return!0;return!1}function a(l){return l.toString().substring(2,l.toString().length-2).replace(/\.\*\?$/,"*")}function c(l){return l instanceof Error?l.stack??l.message:l}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return e.setupFormatters(e.formatters),e.enable(e.load()),e}var Ss=V0(),B0=["#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 F0(){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 U0(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+As(this.diff),!this.useColors)return;let t="color: "+this.color;r.splice(1,0,t,"color: inherit");let e=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(e++,o==="%c"&&(n=e))}),r.splice(n,0,t)}var K0=console.debug??console.log??(()=>{});function q0(r){try{r?Ss?.setItem("debug",r):Ss?.removeItem("debug")}catch{}}function z0(){let r;try{r=Ss?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function V0(){try{return localStorage}catch{}}function H0(r){r.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}var rh=El({formatArgs:U0,save:q0,load:z0,useColors:F0,setupFormatters:H0,colors:B0,storage:Ss,log:K0});var qt=rh;qt.formatters.b=r=>r==null?"undefined":j.baseEncode(r);qt.formatters.t=r=>r==null?"undefined":Vt.baseEncode(r);qt.formatters.m=r=>r==null?"undefined":Pa.baseEncode(r);qt.formatters.p=r=>r==null?"undefined":r.toString();qt.formatters.c=r=>r==null?"undefined":r.toString();qt.formatters.k=r=>r==null?"undefined":r.toString();qt.formatters.a=r=>r==null?"undefined":r.toString();qt.formatters.e=r=>r==null?"undefined":nh(r.stack)??nh(r.message)??r.toString();function $0(r){let t=()=>{};return t.enabled=!1,t.color="",t.diff=0,t.log=()=>{},t.namespace=r,t.destroy=()=>!0,t.extend=()=>t,t}function _s(){return{forComponent(r){return W0(r)}}}function W0(r){let t=$0(`${r}:trace`);return qt.enabled(`${r}:trace`)&&qt.names.map(e=>e.toString()).find(e=>e.includes(":trace"))!=null&&(t=qt(`${r}:trace`)),Object.assign(qt(r),{error:qt(`${r}:error`),trace:t})}function nh(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function fr(r,t){let e={[Symbol.iterator]:()=>e,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:t(o)}}};return e}function Is(r){let t=Jt(j.decode(`z${r}`));return Xr(t)}var jt=class{map;constructor(t){if(this.map=new Map,t!=null)for(let[e,n]of t.entries())this.map.set(e.toString(),{key:e,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(t){return this.map.delete(t.toString())}entries(){return fr(this.map.entries(),t=>[t[1].key,t[1].value])}forEach(t){this.map.forEach((e,n)=>{t(e.value,e.key,this)})}get(t){return this.map.get(t.toString())?.value}has(t){return this.map.has(t.toString())}set(t,e){this.map.set(t.toString(),{key:t,value:e})}keys(){return fr(this.map.values(),t=>t.key)}values(){return fr(this.map.values(),t=>t.value)}get size(){return this.map.size}};var dr=class r{set;constructor(t){if(this.set=new Set,t!=null)for(let e of t)this.set.add(e.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(t){this.set.add(t.toString())}clear(){this.set.clear()}delete(t){this.set.delete(t.toString())}entries(){return fr(this.set.entries(),t=>{let e=Is(t[0]);return[e,e]})}forEach(t){this.set.forEach(e=>{let n=Is(e);t(n,n,this)})}has(t){return this.set.has(t.toString())}values(){return fr(this.set.values(),t=>Is(t))}intersection(t){let e=new r;for(let n of t)this.has(n)&&e.add(n);return e}difference(t){let e=new r;for(let n of this)t.has(n)||e.add(n);return e}union(t){let e=new r;for(let n of t)e.add(n);for(let n of this)e.add(n);return e}};var vl={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},oh={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},sh=new globalThis.TextEncoder;function G0(r,t){let e=vl[t],n=oh[t];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(t,n*e);return n}function j0(r,t,e){if(e.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=vl[t],o=oh[t],s=r;for(;s.length>0;){let i=sh.encodeInto(s,e);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(e[a]),o=BigInt.asUintN(t,o*n)}return o}function Al(r,{size:t=32,utf8Buffer:e}={}){if(!vl[t])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(e)return j0(r,t,e);r=sh.encode(r)}return G0(r,t)}var ro={hash:r=>Number(Al(r,{size:32})),hashV:(r,t)=>X0(ro.hash(r,t))};function X0(r){let t=r.toString(16);return t.length%2===1&&(t=`0${t}`),L(t,"base16")}var Sl=64,ae=class{fp;h;seed;constructor(t,e,n,o=2){if(o>Sl)throw new TypeError("Invalid Fingerprint Size");let s=e.hashV(t,n),i=ct(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=e,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(t){return t?.fp instanceof Uint8Array?tt(this.fp,t.fp):!1}};function hr(r,t){return Math.floor(Math.random()*(t-r))+r}var pr=class{contents;constructor(t){this.contents=new Array(t).fill(null)}has(t){if(!(t instanceof ae))throw new TypeError("Invalid Fingerprint");return this.contents.some(e=>t.equals(e))}add(t){if(!(t instanceof ae))throw new TypeError("Invalid Fingerprint");for(let e=0;e<this.contents.length;e++)if(this.contents[e]==null)return this.contents[e]=t,!0;return!0}swap(t){if(!(t instanceof ae))throw new TypeError("Invalid Fingerprint");let e=hr(0,this.contents.length-1),n=this.contents[e];return this.contents[e]=t,n}remove(t){if(!(t instanceof ae))throw new TypeError("Invalid Fingerprint");let e=this.contents.findIndex(n=>t.equals(n));return e>-1?(this.contents[e]=null,!0):!1}};var Y0=500,no=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(t){this.filterSize=t.filterSize,this.bucketSize=t.bucketSize??4,this.fingerprintSize=t.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=t.hash??ro,this.seed=t.seed??hr(0,Math.pow(2,10))}add(t){typeof t=="string"&&(t=L(t));let e=new ae(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=(n^e.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new pr(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new pr(this.bucketSize)),this.buckets[n].add(e)||this.buckets[o].add(e))return this.count++,!0;let s=[n,o],i=s[hr(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new pr(this.bucketSize));for(let a=0;a<Y0;a++){let c=this.buckets[i].swap(e);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new pr(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(t){typeof t=="string"&&(t=L(t));let e=new ae(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=this.buckets[n]?.has(e)??!1;if(o)return o;let s=(n^e.hash())%this.filterSize;return this.buckets[s]?.has(e)??!1}remove(t){typeof t=="string"&&(t=L(t));let e=new ae(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=this.buckets[n]?.remove(e)??!1;if(o)return this.count--,o;let s=(n^e.hash())%this.filterSize,i=this.buckets[s]?.remove(e)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Z0={1:.5,2:.84,4:.95,8:.98};function Q0(r=.001){return r>.002?2:r>1e-5?4:8}function ih(r,t=.001){let e=Q0(t),n=Z0[e],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/t)+Math.log2(2*e)),Sl);return{filterSize:o,bucketSize:e,fingerprintSize:s}}var Cs=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(t){this.bucketSize=t.bucketSize??4,this.filterSize=t.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=t.fingerprintSize??2,this.scale=t.scale??2,this.hash=t.hash??ro,this.seed=t.seed??hr(0,Math.pow(2,10)),this.filterSeries=[new no({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(t){if(typeof t=="string"&&(t=L(t)),this.has(t))return!0;let e=this.filterSeries.find(n=>n.reliable);if(e==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);e=new no({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(e)}return e.add(t)}has(t){typeof t=="string"&&(t=L(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].has(t))return!0;return!1}remove(t){typeof t=="string"&&(t=L(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].remove(t))return!0;return!1}get count(){return this.filterSeries.reduce((t,e)=>t+e.count,0)}};function oo(r,t=.001,e){return new Cs({...ih(r,t),...e??{}})}var _l=class extends jt{metric;constructor(t){super();let{name:e,metrics:n}=t;this.metric=n.registerMetric(e),this.updateComponentMetric()}set(t,e){return super.set(t,e),this.updateComponentMetric(),this}delete(t){let e=super.delete(t);return this.updateComponentMetric(),e}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Il(r){let{name:t,metrics:e}=r,n;return e!=null?n=new _l({name:t,metrics:e}):n=new jt,n}var so;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.publicKey!=null&&e.publicKey.byteLength>0&&(n.uint32(10),n.bytes(e.publicKey)),e.payloadType!=null&&e.payloadType.byteLength>0&&(n.uint32(18),n.bytes(e.payloadType)),e.payload!=null&&e.payload.byteLength>0&&(n.uint32(26),n.bytes(e.payload)),e.signature!=null&&e.signature.byteLength>0&&(n.uint32(42),n.bytes(e.signature)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={publicKey:ct(0),payloadType:ct(0),payload:ct(0),signature:ct(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.publicKey=e.bytes();break}case 2:{s.payloadType=e.bytes();break}case 3:{s.payload=e.bytes();break}case 5:{s.signature=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(so||(so={}));var Ts=class extends Error{constructor(t="Invalid signature"){super(t),this.name="InvalidSignatureError"}};var on=class r{static createFromProtobuf=t=>{let e=so.decode(t),n=jr(e.publicKey);return new r({publicKey:n,payloadType:e.payloadType,payload:e.payload,signature:e.signature})};static seal=async(t,e,n)=>{if(e==null)throw new Error("Missing private key");let o=t.domain,s=t.codec,i=t.marshal(),a=ah(o,s,i),c=await e.sign(a.subarray(),n);return new r({publicKey:e.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(t,e,n)=>{let o=r.createFromProtobuf(t);if(!await o.validate(e,n))throw new Ts("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(t){let{publicKey:e,payloadType:n,payload:o,signature:s}=t;this.publicKey=e,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=so.encode({publicKey:Gt(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(t){return t==null?!1:tt(this.marshal(),t.marshal())}async validate(t,e){let n=ah(t,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,e)}},ah=(r,t,e)=>{let n=L(r),o=It(n.byteLength),s=It(t.length),i=It(e.length);return new Y(o,n,s,t,i,e)};function ch(r,t){let e=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==t.length?!1:(t.sort(e),r.sort(e).every((n,o)=>t[o].equals(n)))}var lh="libp2p-peer-record",uh=Uint8Array.from([3,1]);var io;(function(r){let t;(function(n){let o;n.codec=()=>(o==null&&(o=Bt((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ct(0)},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let l=s.uint32();switch(l>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(l&7);break}}}return c})),o),n.encode=s=>Nt(s,n.codec()),n.decode=(s,i)=>Ot(s,n.codec(),i)})(t=r.AddressInfo||(r.AddressInfo={}));let e;r.codec=()=>(e==null&&(e=Bt((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ct(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new ir('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),e),r.encode=n=>Nt(n,r.codec()),r.decode=(n,o)=>Ot(n,r.codec(),o)})(io||(io={}));var mr=class r{static createFromProtobuf=t=>{let e=io.decode(t),n=Xr(Jt(e.peerId)),o=(e.addresses??[]).map(i=>G(i.multiaddr)),s=e.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=lh;static CODEC=uh;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(t){let{peerId:e,multiaddrs:n,seqNumber:o}=t;this.peerId=e,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=io.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(t=>({multiaddr:t.bytes}))})),this.marshaled}equals(t){return!(!(t instanceof r)||!this.peerId.equals(t.peerId)||this.seqNumber!==t.seqNumber||!ch(this.multiaddrs,t.multiaddrs))}};function J0(r){return r[Symbol.asyncIterator]!=null}function ty(r){if(J0(r))return(async()=>{let e=[];for await(let n of r)e.push(n);return e})();let t=[];for(let e of r)t.push(e);return t}var ao=ty;var ce=class extends Error{static name="AbortError";name="AbortError";constructor(t="The operation was aborted",...e){super(t,...e)}};function lt(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Ps=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||(t-1&t)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},sn=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new Ps(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new Ps(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var Cl=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function Ls(r={}){return ey(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function ey(r,t){t=t??{};let e=t.onEnd,n=new sn,o,s,i,a=lt(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((b,v)=>{s=C=>{s=null,n.push(C);try{b(r(n))}catch(x){v(x)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=lt()})}},u=b=>s!=null?s(b):(n.push(b),o),l=b=>(n=new sn,s!=null?s({error:b}):(n.push({error:b}),o)),f=b=>{if(i)return o;if(t?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:b})},d=b=>i?o:(i=!0,b!=null?l(b):u({done:!0})),m=()=>(n=new sn,d(),{done:!0}),h=b=>(d(b),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:m,throw:h,push:f,end:d,get readableLength(){return n.size},onEmpty:async b=>{let v=b?.signal;if(v?.throwIfAborted(),n.isEmpty())return;let C,x;v!=null&&(C=new Promise((p,w)=>{x=()=>{w(new Cl)},v.addEventListener("abort",x)}));try{await Promise.race([a.promise,C])}finally{x!=null&&v!=null&&v?.removeEventListener("abort",x)}}},e==null)return o;let g=o;return o={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(b){return g.throw(b),e!=null&&(e(b),e=void 0),{done:!0}},return(){return g.return(),e!=null&&(e(),e=void 0),{done:!0}},push:f,end(b){return g.end(b),e!=null&&(e(b),e=void 0),o},get readableLength(){return g.readableLength},onEmpty:b=>g.onEmpty(b)},o}var an=class extends EventTarget{#t=new Map;constructor(){super()}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let o=this.#t.get(t);o==null&&(o=[],this.#t.set(t,o)),o.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let o=this.#t.get(t);o!=null&&(o=o.filter(({callback:s})=>s!==e),this.#t.set(t,o))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:o})=>!o),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};var Tl=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function pe(r,t,e,n){let o=new Tl(n?.errorMessage,n?.errorCode);return e?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{function a(){e?.removeEventListener("abort",l),r.removeEventListener(t,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,u)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(d){a(),i(d);return}a(),s(f)},u=f=>{a(),i(f.detail)},l=()=>{a(),i(o)};e?.addEventListener("abort",l),r.addEventListener(t,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,u)})}var Ds=class extends Error{static name="QueueFullError";constructor(t="The queue was full"){super(t),this.name="QueueFullError"}};var Rs=class extends Error{type;code;constructor(t,e,n){super(t??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=e??"ABORT_ERR"}};async function Et(r,t,e){if(t==null)return r;if(t.aborted)return r.catch(()=>{}),Promise.reject(new Rs(e?.errorMessage,e?.errorCode,e?.errorName));let n,o=new Rs(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var ks=class{deferred;signal;constructor(t){this.signal=t,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new ce)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function ny(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Ms=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=ny(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new ce),this.cleanup())}async join(t={}){let e=new ks(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await Et(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};function Pl(r,t){let e,n=function(){let o=function(){e=void 0,r()};clearTimeout(e),e=setTimeout(o,t)};return n.start=()=>{},n.stop=()=>{clearTimeout(e)},n}var co=class extends an{concurrency;maxSize;queue;pending;sort;autoStart;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.maxSize=t.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=t.autoStart??!0,this.sort=t.sort,this.queue=[],this.emitEmpty=Pl(this.emitEmpty.bind(this),1),this.emitIdle=Pl(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 t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(t,e){if(e?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Ds;let n=new Ms(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(e).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(t=>{t.abort(new ce)}),this.clear()}async onEmpty(t){this.size!==0&&await pe(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await pe(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await pe(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=Ls({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},o=c=>{c.detail!=null&&e.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new ce("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var Os="lock:worker:request-read",Ns="lock:worker:abort-read-request",Bs="lock:worker:release-read",Fs="lock:master:grant-read",Us="lock:master:error-read",Ks="lock:worker:request-write",qs="lock:worker:abort-write-request",zs="lock:worker:release-write",Vs="lock:master:grant-write",Hs="lock:master:error-write",$s="lock:worker:finalize",Ws="mortice",fh={singleProcess:!1};var Ll=(r,t,e,n,o,s,i,a,c)=>u=>{if(u.data==null)return;let l={type:u.data.type,name:u.data.name,identifier:u.data.identifier};l.type===o&&r.safeDispatchEvent(e,{detail:{name:l.name,identifier:l.identifier,handler:async()=>{t.postMessage({type:c,name:l.name,identifier:l.identifier}),await new Promise(f=>{let d=m=>{if(m?.data==null)return;let h={type:m.data.type,name:m.data.name,identifier:m.data.identifier};h.type===a&&h.identifier===l.identifier&&(t.removeEventListener("message",d),f())};t.addEventListener("message",d)})},onError:f=>{t.postMessage({type:i,name:l.name,identifier:l.identifier,error:{message:f.message,name:f.name,stack:f.stack}})}}}),l.type===s&&r.safeDispatchEvent(n,{detail:{name:l.name,identifier:l.identifier}}),l.type===$s&&r.safeDispatchEvent("finalizeRequest",{detail:{name:l.name}})};var dh=(r=10)=>Math.random().toString().substring(2,r+2);var Gs=class{name;channel;constructor(t){this.name=t,this.channel=new BroadcastChannel(Ws)}readLock(t){return this.sendRequest(Os,Ns,Fs,Us,Bs,t)}writeLock(t){return this.sendRequest(Ks,qs,Vs,Hs,zs,t)}finalize(){this.channel.postMessage({type:$s,name:this.name}),this.channel.close()}async sendRequest(t,e,n,o,s,i){i?.signal?.throwIfAborted();let a=dh();return this.channel.postMessage({type:t,identifier:a,name:this.name}),new Promise((c,u)=>{let l=()=>{this.channel.postMessage({type:e,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",l,{once:!0});let f=d=>{if(d.data?.identifier===a&&(d.data?.type===n&&(this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",l),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),d.data.type===o)){this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",l);let m=new Error;d.data.error!=null&&(m.message=d.data.error.message,m.name=d.data.error.name,m.stack=d.data.error.stack),u(m)}};this.channel.addEventListener("message",f)})}};var hh=r=>{if(r=Object.assign({},fh,r),!!globalThis.document||r.singleProcess){let e=new BroadcastChannel(Ws),n=new an;return e.addEventListener("message",Ll(n,e,"requestReadLock","abortReadLockRequest",Os,Ns,Us,Bs,Fs)),e.addEventListener("message",Ll(n,e,"requestWriteLock","abortWriteLockRequest",Ks,qs,Hs,zs,Vs)),n}return new Gs(r.name)};var gr=new Map,lo;function ph(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function oy(r){if(lo==null&&(lo=hh(r),!ph(lo))){let t=lo;t.addEventListener("requestReadLock",e=>{let n=e.detail.name,o=e.detail.identifier,s=gr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};t.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await e.detail.handler().finally(()=>{c()})}).catch(c=>{e.detail.onError(c)}).finally(()=>{t.removeEventListener("abortReadLockRequest",a)})}),t.addEventListener("requestWriteLock",e=>{let n=e.detail.name,o=e.detail.identifier,s=gr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};t.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await e.detail.handler().finally(()=>{c()})}).catch(c=>{e.detail.onError(c)}).finally(()=>{t.removeEventListener("abortWriteLockRequest",a)})}),t.addEventListener("finalizeRequest",e=>{let n=e.detail.name,o=gr.get(n);o?.finalize()})}return lo}async function Dl(r,t){let e,n,o=new Promise((i,a)=>{e=i,n=a}),s=()=>{n(new ce)};return t?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{e(()=>{t?.signal?.removeEventListener("abort",s),i()})})},{signal:t?.signal}).catch(i=>{n(i)}),o}var mh=(r,t)=>{let e=gr.get(r);if(e!=null)return e;let n=oy(t);if(ph(n))return e=n,gr.set(r,e),e;let o=new co({concurrency:1}),s;return e={async readLock(i){if(s!=null)return Dl(s,i);s=new co({concurrency:t.concurrency,autoStart:!1});let a=s,c=Dl(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,Dl(o,i)},finalize:()=>{gr.delete(r)},queue:o},gr.set(r,e),e};var sy={name:"lock",concurrency:1/0,singleProcess:!1};function Rl(r){let t=Object.assign({},sy,r);return mh(t.name,t)}var Te;(function(r){let t;(function(o){let s;o.codec=()=>(s==null&&(s=Bt((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:"",value:ct(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:{u.key=i.string();break}case 2:{u.value=i.bytes();break}default:{i.skipType(f&7);break}}}return u})),s),o.encode=i=>Nt(i,o.codec()),o.decode=(i,a)=>Ot(i,o.codec(),a)})(t=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let e;(function(o){let s;o.codec=()=>(s==null&&(s=Bt((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),Xs.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:{u.key=i.string();break}case 2:{u.value=Xs.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(f&7);break}}}return u})),s),o.encode=i=>Nt(i,o.codec()),o.decode=(i,a)=>Ot(i,o.codec(),a)})(e=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=Bt((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),js.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let u=o.uint32();switch(u>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new ir('Decode error - map field "addresses" had too many elements');a.addresses.push(js.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new ir('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Un('Decode error - map field "metadata" had too many elements');let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(l.key,l.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Un('Decode error - map field "tags" had too many elements');let l=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(l.key,l.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(u&7);break}}}return a})),n),r.encode=o=>Nt(o,r.codec()),r.decode=(o,s)=>Ot(o,r.codec(),s)})(Te||(Te={}));var js;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.multiaddr!=null&&e.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(e.multiaddr)),e.isCertified!=null&&(n.uint32(16),n.bool(e.isCertified)),e.observed!=null&&(n.uint32(24),n.uint64Number(e.observed)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={multiaddr:ct(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.multiaddr=e.bytes();break}case 2:{s.isCertified=e.bool();break}case 3:{s.observed=e.uint64Number();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(js||(js={}));var Xs;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.value!=null&&e.value!==0&&(n.uint32(8),n.uint32(e.value)),e.expiry!=null&&(n.uint32(16),n.uint64(e.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={value:0},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.value=e.uint32();break}case 2:{s.expiry=e.uint64();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(Xs||(Xs={}));function iy(r,t){if(r.publicKey!=null||t.publicKey==null)return r;let e;r.type==="RSA"&&(e=r.toMultihash());let n=jr(t.publicKey,e);return jc(n)}function gh(r,t,e){let n=Te.decode(t);return cn(r,n,e)}function cn(r,t,e){let n=new Map,o=BigInt(Date.now());for(let[s,i]of t.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...t,id:iy(r,t),addresses:t.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-e).map(({multiaddr:s,isCertified:i})=>({multiaddr:G(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}function yh(r,t){return ay(r.addresses,t.addresses)&&cy(r.protocols,t.protocols)&&ly(r.publicKey,t.publicKey)&&uy(r.peerRecordEnvelope,t.peerRecordEnvelope)&&fy(r.metadata,t.metadata)&&dy(r.tags,t.tags)}function ay(r,t){return wh(r,t,(e,n)=>!(e.isCertified!==n.isCertified||!tt(e.multiaddr,n.multiaddr)))}function cy(r,t){return wh(r,t,(e,n)=>e===n)}function ly(r,t){return bh(r,t)}function uy(r,t){return bh(r,t)}function fy(r,t){return xh(r,t,(e,n)=>tt(e,n))}function dy(r,t){return xh(r,t,(e,n)=>e.value===n.value&&e.expiry===n.expiry)}function bh(r,t){return r==null&&t==null?!0:r!=null&&t!=null?tt(r,t):!1}function wh(r,t,e){if(r.length!==t.length)return!1;for(let n=0;n<r.length;n++)if(!e(r[n],t[n]))return!1;return!0}function xh(r,t,e){if(r.size!==t.size)return!1;for(let[n,o]of r.entries()){let s=t.get(n);if(s==null||!e(o,s))return!1}return!0}var Pe="/",Eh=new TextEncoder().encode(Pe),Ys=Eh[0],yr=class r{_buf;constructor(t,e){if(typeof t=="string")this._buf=L(t);else if(t instanceof Uint8Array)this._buf=t;else throw new Error("Invalid key, should be String of Uint8Array");if(e==null&&(e=!0),e&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Ys)throw new Error("Invalid key")}toString(t="utf8"){return B(this._buf,t)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(t){return new r(t.join(Pe))}static random(){return new r(Math.random().toString().substring(2))}static asKey(t){return t instanceof Uint8Array||typeof t=="string"?new r(t):typeof t.uint8Array=="function"?new r(t.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=Eh),this._buf[0]!==Ys){let t=new Uint8Array(this._buf.byteLength+1);t.fill(Ys,0,1),t.set(this._buf,1),this._buf=t}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Ys;)this._buf=this._buf.subarray(0,-1)}less(t){let e=this.list(),n=t.list();for(let o=0;o<e.length;o++){if(n.length<o+1)return!1;let s=e[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return e.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let t=this.namespaces();return t[t.length-1]}list(){return this.toString().split(Pe).slice(1)}type(){return hy(this.baseNamespace())}name(){return py(this.baseNamespace())}instance(t){return new r(this.toString()+":"+t)}path(){let t=this.parent().toString();return t.endsWith(Pe)||(t+=Pe),t+=this.type(),new r(t)}parent(){let t=this.list();return t.length===1?new r(Pe):new r(t.slice(0,-1).join(Pe))}child(t){return this.toString()===Pe?t:t.toString()===Pe?this:new r(this.toString()+t.toString(),!1)}isAncestorOf(t){return t.toString()===this.toString()?!1:t.toString().startsWith(this.toString())}isDecendantOf(t){return t.toString()===this.toString()?!1:this.toString().startsWith(t.toString())}isTopLevel(){return this.list().length===1}concat(...t){return r.withNamespaces([...this.namespaces(),...my(t.map(e=>e.namespaces()))])}};function hy(r){let t=r.split(":");return t.length<2?"":t.slice(0,-1).join(":")}function py(r){let t=r.split(":");return t[t.length-1]}function my(r){return[].concat(...r)}var kl="/peers/";function uo(r){if(!Re(r)||r.type==null)throw new k("Invalid PeerId");let t=r.toCID().toString();return new yr(`${kl}${t}`)}async function vh(r,t,e,n,o){let s=new Map;for(let i of e){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=G(i.multiaddr)),!Ve(i.multiaddr))throw new k("Multiaddr was invalid");if(!await t(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),u=s.get(c);u!=null?i.isCertified=u.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.getPeerId();return r.equals(c)&&(a=a.decapsulate(G(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function Qs(r,t,e,n){if(t==null)throw new k("Invalid PeerData");if(t.publicKey!=null&&r.publicKey!=null&&!t.publicKey.equals(r.publicKey))throw new k("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new k("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,u=o?.peerRecordEnvelope;if(e==="patch"){if((t.multiaddrs!=null||t.addresses!=null)&&(s=[],t.multiaddrs!=null&&s.push(...t.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),t.addresses!=null&&s.push(...t.addresses)),t.protocols!=null&&(i=new Set(t.protocols)),t.metadata!=null){let d=t.metadata instanceof Map?[...t.metadata.entries()]:Object.entries(t.metadata);a=Zs(d,{validate:Ah})}if(t.tags!=null){let d=t.tags instanceof Map?[...t.tags.entries()]:Object.entries(t.tags);c=Zs(d,{validate:Sh,map:_h})}t.peerRecordEnvelope!=null&&(u=t.peerRecordEnvelope)}if(e==="merge"){if(t.multiaddrs!=null&&s.push(...t.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),t.addresses!=null&&s.push(...t.addresses),t.protocols!=null&&(i=new Set([...i,...t.protocols])),t.metadata!=null){let d=t.metadata instanceof Map?[...t.metadata.entries()]:Object.entries(t.metadata);for(let[m,h]of d)h==null?a.delete(m):a.set(m,h);a=Zs([...a.entries()],{validate:Ah})}if(t.tags!=null){let d=t.tags instanceof Map?[...t.tags.entries()]:Object.entries(t.tags),m=new Map(c);for(let[h,g]of d)g==null?m.delete(h):m.set(h,g);c=Zs([...m.entries()],{validate:Sh,map:_h})}t.peerRecordEnvelope!=null&&(u=t.peerRecordEnvelope)}let l;o?.id.publicKey!=null?l=Gt(o.id.publicKey):t.publicKey!=null?l=Gt(t.publicKey):r.publicKey!=null&&(l=Gt(r.publicKey));let f={addresses:await vh(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((d,m)=>d.localeCompare(m)),metadata:a,tags:c,publicKey:l,peerRecordEnvelope:u};return f.addresses.forEach(d=>{d.observed=n.existingPeer?.peerPB.addresses?.find(m=>tt(m.multiaddr,m.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete f.publicKey,f}function Zs(r,t){let e=new Map;for(let[n,o]of r)o!=null&&t.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&e.set(n,t.map?.(n,o)??o);return e}function Ah(r,t){if(typeof r!="string")throw new k("Metadata key must be a string");if(!(t instanceof Uint8Array))throw new k("Metadata value must be a Uint8Array")}function Sh(r,t){if(typeof r!="string")throw new k("Tag name must be a string");if(t.value!=null){if(parseInt(`${t.value}`,10)!==t.value)throw new k("Tag value must be an integer");if(t.value<0||t.value>100)throw new k("Tag value must be between 0-100")}if(t.ttl!=null){if(parseInt(`${t.ttl}`,10)!==t.ttl)throw new k("Tag ttl must be an integer");if(t.ttl<0)throw new k("Tag ttl must be between greater than 0")}}function _h(r,t){let e;t.expiry!=null&&(e=t.expiry),t.ttl!=null&&(e=BigInt(Date.now()+Number(t.ttl)));let n={value:t.value??0};return e!=null&&(n.expiry=e),n}function Ih(r){let t=r.toString().split("/")[2],e=it.parse(t,Vt);return Yn(e)}function Ml(r,t,e){let n=Ih(r);return gh(n,t,e)}function gy(r,t){return{prefix:kl,filters:(r.filters??[]).map(e=>({key:n,value:o})=>e(Ml(n,o,t))),orders:(r.orders??[]).map(e=>(n,o)=>e(Ml(n.key,n.value,t),Ml(o.key,o.value,t)))}}var Js=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-store"),this.peerId=t.peerId,this.datastore=t.datastore,this.addressFilter=e.addressFilter,this.locks=Il({name:"libp2p_peer_store_locks",metrics:t.metrics}),this.maxAddressAge=e.maxAddressAge??36e5,this.maxPeerAge=e.maxPeerAge??216e5}getLock(t){let e=this.locks.get(t);return e==null&&(e={refs:0,lock:Rl({name:t.toString(),singleProcess:!0})},this.locks.set(t,e)),e.refs++,e}maybeRemoveLock(t,e){e.refs--,e.refs===0&&(e.lock.finalize(),this.locks.delete(t))}async getReadLock(t,e){let n=this.getLock(t);try{let o=await n.lock.readLock(e);return()=>{o(),this.maybeRemoveLock(t,n)}}catch(o){throw this.maybeRemoveLock(t,n),o}}async getWriteLock(t,e){let n=this.getLock(t);try{let o=await n.lock.writeLock(e);return()=>{o(),this.maybeRemoveLock(t,n)}}catch(o){throw this.maybeRemoveLock(t,n),o}}async has(t,e){try{return await this.load(t,e),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(t,e){this.peerId.equals(t)||await this.datastore.delete(uo(t),e)}async load(t,e){let n=uo(t),o=await this.datastore.get(n,e),s=Te.decode(o);if(this.#r(t,s))throw await this.datastore.delete(n,e),new Ge;return cn(t,s,this.peerId.equals(t)?1/0:this.maxAddressAge)}async save(t,e,n){let o=await this.#t(t,n),s=await Qs(t,e,"patch",{...n,addressFilter:this.addressFilter});return this.#e(t,s,o)}async patch(t,e,n){let o=await this.#t(t,n),s=await Qs(t,e,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#e(t,s,o)}async merge(t,e,n){let o=await this.#t(t,n),s=await Qs(t,e,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#e(t,s,o)}async*all(t){for await(let{key:e,value:n}of this.datastore.query(gy(t??{},this.maxAddressAge),t)){let o=Ih(e);if(o.equals(this.peerId))continue;let s=Te.decode(n);if(this.#r(o,s)){await this.datastore.delete(e,t);continue}yield cn(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#t(t,e){try{let n=uo(t),o=await this.datastore.get(n,e),s=Te.decode(o);if(this.#r(t,s))throw await this.datastore.delete(n,e),new Ge;return{peerPB:s,peer:cn(t,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#e(t,e,n,o){e.updated=Date.now();let s=Te.encode(e);return await this.datastore.put(uo(t),s,o),{peer:cn(t,e,this.maxAddressAge),previous:n?.peer,updated:n==null||!yh(e,n.peerPB)}}#r(t,e){if(e.updated==null)return!0;if(this.peerId.equals(t))return!1;let n=e.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=e.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var Ol=class{store;events;peerId;log;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-store"),this.events=t.events,this.peerId=t.peerId,this.store=new Js(t,e)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(t,e){for await(let n of this.store.all(e))t(n)}async all(t){return ao(this.store.all(t))}async delete(t,e){let n=await this.store.getReadLock(t,e);try{await this.store.delete(t,e)}finally{n()}}async has(t,e){let n=await this.store.getReadLock(t,e);try{return await this.store.has(t,e)}finally{this.log.trace("has release read lock"),n?.()}}async get(t,e){let n=await this.store.getReadLock(t,e);try{return await this.store.load(t,e)}finally{n?.()}}async getInfo(t,e){let n=await this.get(t,e);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.save(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async patch(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.patch(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async merge(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.merge(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async consumePeerRecord(t,e,n){let o=Re(e)?e:Re(e?.expectedPeer)?e.expectedPeer:void 0,s=Re(e)||e===void 0?n:e,i=await on.openAndCertify(t,mr.DOMAIN,s),a=Yn(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=mr.createFromProtobuf(i.payload),u;try{u=await this.get(a,s)}catch(l){if(l.name!=="NotFoundError")throw l}if(u?.peerRecordEnvelope!=null){let l=on.createFromProtobuf(u.peerRecordEnvelope),f=mr.createFromProtobuf(l.payload);if(f.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",f.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:t,addresses:c.multiaddrs.map(l=>({isCertified:!0,multiaddr:l}))},s),!0}#t(t,e){e.updated&&(this.peerId.equals(t)?this.events.safeDispatchEvent("self:peer:update",{detail:e}):this.events.safeDispatchEvent("peer:update",{detail:e}))}};function Ch(r,t={}){return new Ol(r,t)}var ti=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(t="Not Found"){super(t)}};function yy(r){return r[Symbol.asyncIterator]!=null}function by(r){if(yy(r))return(async()=>{for await(let t of r);})();for(let t of r);}var Nl=by;function wy(r){let[t,e]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>t.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:t.next(),[e](){return this}}}var Th=wy;function xy(r){return r[Symbol.asyncIterator]!=null}function Ey(r,t){let e=0;if(xy(r))return async function*(){for await(let c of r)await t(c,e++)&&(yield c)}();let n=Th(r),{value:o,done:s}=n.next();if(s===!0)return function*(){}();let i=t(o,e++);if(typeof i.then=="function")return async function*(){await i&&(yield o);for(let c of n)await t(c,e++)&&(yield c)}();let a=t;return function*(){i===!0&&(yield o);for(let c of n)a(c,e++)&&(yield c)}()}var br=Ey;function vy(r){return r[Symbol.asyncIterator]!=null}function Ay(r,t){return vy(r)?async function*(){yield*(await ao(r)).sort(t)}():function*(){yield*ao(r).sort(t)}()}var Bl=Ay;function Sy(r){return r[Symbol.asyncIterator]!=null}function _y(r,t){return Sy(r)?async function*(){let e=0;if(!(t<1)){for await(let n of r)if(yield n,e++,e===t)return}}():function*(){let e=0;if(!(t<1)){for(let n of r)if(yield n,e++,e===t)return}}()}var Fl=_y;var ei=class{put(t,e,n){return Promise.reject(new Error(".put is not implemented"))}get(t,e){return Promise.reject(new Error(".get is not implemented"))}has(t,e){return Promise.reject(new Error(".has is not implemented"))}delete(t,e){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(t,e={}){for await(let{key:n,value:o}of t)await this.put(n,o,e),yield n}async*getMany(t,e={}){for await(let n of t)yield{key:n,value:await this.get(n,e)}}async*deleteMany(t,e={}){for await(let n of t)await this.delete(n,e),yield n}batch(){let t=[],e=[];return{put(n,o){t.push({key:n,value:o})},delete(n){e.push(n)},commit:async n=>{await Nl(this.putMany(t,n)),t=[],await Nl(this.deleteMany(e,n)),e=[]}}}async*_all(t,e){throw new Error("._all is not implemented")}async*_allKeys(t,e){throw new Error("._allKeys is not implemented")}query(t,e){let n=this._all(t,e);if(t.prefix!=null){let o=t.prefix;n=br(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>br(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>Bl(o,s),n)),t.offset!=null){let o=0,s=t.offset;n=br(n,()=>o++>=s)}return t.limit!=null&&(n=Fl(n,t.limit)),n}queryKeys(t,e){let n=this._allKeys(t,e);if(t.prefix!=null){let o=t.prefix;n=br(n,s=>s.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>br(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>Bl(o,s),n)),t.offset!=null){let o=t.offset,s=0;n=br(n,()=>s++>=o)}return t.limit!=null&&(n=Fl(n,t.limit)),n}};var ri=class extends ei{data;constructor(){super(),this.data=new Map}put(t,e,n){return n?.signal?.throwIfAborted(),this.data.set(t.toString(),e),t}get(t,e){e?.signal?.throwIfAborted();let n=this.data.get(t.toString());if(n==null)throw new ti;return n}has(t,e){return e?.signal?.throwIfAborted(),this.data.has(t.toString())}delete(t,e){e?.signal?.throwIfAborted(),this.data.delete(t.toString())}*_all(t,e){e?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new yr(n),value:o},e?.signal?.throwIfAborted()}*_allKeys(t,e){e?.signal?.throwIfAborted();for(let n of this.data.keys())yield new yr(n),e?.signal?.throwIfAborted()}};function fo(r,t){let e,n=function(){let o=function(){e=void 0,r()};clearTimeout(e),e=setTimeout(o,t)};return n.start=()=>{},n.stop=()=>{clearTimeout(e)},n}var Lh=To(Ph(),1),Iy=["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"],Cy=Iy.map(r=>new Lh.Netmask(r));function Ul(r){for(let t of Cy)if(t.contains(r))return!0;return!1}function Ty(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function Py(r){let t=r.split(":");if(t.length<2)return!1;let e=t[t.length-1].padStart(4,"0"),n=t[t.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(e.substring(0,2),16)}.${parseInt(e.substring(2),16)}`;return Ul(o)}function Ly(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function Dy(r){let t=r.split(":"),e=t[t.length-1];return Ul(e)}function Ry(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 He(r){return ie(r)?Ul(r):Ty(r)?Py(r):Ly(r)?Dy(r):en(r)?Ry(r):void 0}var ky=r=>r.toString().split("/").slice(1),ln=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),z=r=>({match:t=>ln(e=>e===r).match(t),pattern:r}),wr=()=>({match:r=>ln(t=>typeof t=="string").match(r),pattern:"{string}"}),un=()=>({match:r=>ln(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),et=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{j.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),po=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{La.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),Z=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),Pt=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),H=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function st(...r){function t(o){let s=ky(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function e(o){return t(o)!==!1}function n(o){let s=t(o);return s===!1?!1:s.length===0}return{matchers:r,matches:e,exactMatch:n}}var My=et(),Dh=st(My),oi=H(z("dns4"),wr()),si=H(z("dns6"),wr()),ii=H(z("dnsaddr"),wr()),ql=H(z("dns"),wr()),$I=st(oi,Z(et())),WI=st(si,Z(et())),GI=st(ii,Z(et())),jI=st(Pt(ql,ii,oi,si),Z(et())),Rh=H(z("ip4"),ln(ie)),kh=H(z("ip6"),ln(en)),zl=Pt(Rh,kh),Le=Pt(zl,ql,oi,si,ii),XI=st(Pt(zl,H(Pt(ql,ii,oi,si),Z(et())))),Vl=st(Rh),Hl=st(kh),YI=st(zl),$l=H(Le,z("tcp"),un()),mo=H(Le,z("udp"),un()),go=st(H($l,Z(et()))),ZI=st(mo),Wl=H(mo,z("quic"),Z(et())),ai=H(mo,z("quic-v1"),Z(et())),Oy=Pt(Wl,ai),QI=st(Wl),Mh=st(ai),Kl=Pt(Le,$l,mo,Wl,ai),Oh=Pt(H(Kl,z("ws"),Z(et()))),xr=st(Oh),Nh=Pt(H(Kl,z("wss"),Z(et())),H(Kl,z("tls"),Z(H(z("sni"),wr())),z("ws"),Z(et()))),yo=st(Nh),Bh=H(mo,z("webrtc-direct"),Z(po()),Z(po()),Z(et())),Gl=st(Bh),Fh=H(ai,z("webtransport"),Z(po()),Z(po()),Z(et())),jl=st(Fh),ni=Pt(Oh,Nh,H($l,Z(et())),H(Oy,Z(et())),H(Le,Z(et())),Bh,Fh,et()),JI=st(ni),Ny=H(ni,z("p2p-circuit"),et()),bo=st(Ny),By=Pt(H(ni,z("p2p-circuit"),z("webrtc"),Z(et())),H(ni,z("webrtc"),Z(et())),H(z("webrtc"),Z(et()))),Xl=st(By),Fy=Pt(H(Le,z("tcp"),un(),z("http"),Z(et())),H(Le,z("http"),Z(et()))),t4=st(Fy),Uy=Pt(H(Le,z("tcp"),Pt(H(z("443"),z("http")),H(un(),z("https")),H(un(),z("tls"),z("http"))),Z(et())),H(Le,z("tls"),z("http"),Z(et())),H(Le,z("https"),Z(et()))),e4=st(Uy),Ky=Pt(H(z("memory"),wr(),Z(et()))),r4=st(Ky);var Yl=class extends Map{metric;constructor(t){super();let{name:e,metrics:n}=t;this.metric=n.registerMetric(e),this.updateComponentMetric()}set(t,e){return super.set(t,e),this.updateComponentMetric(),this}delete(t){let e=super.delete(t);return this.updateComponentMetric(),e}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Lt(r){let{name:t,metrics:e}=r,n;return e!=null?n=new Yl({name:t,metrics:e}):n=new Map,n}var Uh=864e13;var qy=448,Zl=449,zy=53,Vy=54,Hy=55,$y=56,ci=class{log;mappings;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=Lt({name:"libp2p_address_manager_dns_mappings",metrics:t.metrics})}has(t){let e=this.findHost(t);for(let n of this.mappings.values())if(n.domain===e)return!0;return!1}add(t,e){e.forEach(n=>{this.log("add DNS mapping %s to %s",n,t);let o=He(n)===!0;this.mappings.set(n,{domain:t,verified:o,expires:o?Uh-Date.now():0,lastVerified:o?Uh-Date.now():void 0})})}remove(t){let e=this.findHost(t),n=!1;for(let[o,s]of this.mappings.entries())s.domain===e&&(this.log("removing %s to %s DNS mapping %e",o,s.domain,new Error("where")),this.mappings.delete(o),n=n||s.verified);return n}getAll(t){let e=[];for(let n=0;n<t.length;n++){let s=t[n].multiaddr.stringTuples(),i=s[0][1];if(i!=null)for(let[a,c]of this.mappings.entries()){if(i!==a)continue;this.maybeAddSNITuple(s,c.domain)&&(t.splice(n,1),n--,e.push({multiaddr:G(`/${s.map(l=>[W(l[0]).name,l[1]].join("/")).join("/")}`),verified:c.verified,type:"dns-mapping",expires:c.expires,lastVerified:c.lastVerified}))}}return e}maybeAddSNITuple(t,e){for(let n=0;n<t.length;n++)if(t[n][0]===qy&&t[n+1]?.[0]!==Zl)return t.splice(n+1,0,[Zl,e]),!0;return!1}confirm(t,e){let n=this.findHost(t),o=!1;for(let[s,i]of this.mappings.entries())i.domain===n&&(this.log("marking %s to %s DNS mapping as verified",s,i.domain),o=i.verified,i.verified=!0,i.expires=Date.now()+e,i.lastVerified=Date.now());return o}unconfirm(t,e){let n=this.findHost(t),o=!1;for(let[s,i]of this.mappings.entries())i.domain===n&&(this.log("removing verification of %s to %s DNS mapping",s,i.domain),o=o||i.verified,i.verified=!1,i.expires=Date.now()+e);return o}findHost(t){for(let e of t.stringTuples())if(e[0]===Zl||e[0]===zy||e[0]===Vy||e[0]===Hy||e[0]===$y)return e[1]}};var Ql=4,Jl=41,tu=6,Wy=273,li=class{log;mappings;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=Lt({name:"libp2p_address_manager_ip_mappings",metrics:t.metrics})}has(t){let e=t.stringTuples();for(let n of this.mappings.values())for(let o of n)if(o.externalIp===e[0][1])return!0;return!1}add(t,e,n,o=e,s="tcp"){let i=`${t}-${e}-${s}`,a=this.mappings.get(i)??[],c={internalIp:t,internalPort:e,externalIp:n,externalPort:o,externalFamily:ie(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(t){let e=t.stringTuples(),n=e[0][1]??"",o=e[1][0]===tu?"tcp":"udp",s=parseInt(e[1][1]??"0"),i=!1;for(let[a,c]of this.mappings.entries()){for(let u=0;u<c.length;u++){let l=c[u];l.externalIp===n&&l.externalPort===s&&l.protocol===o&&(this.log("removing %s:%s to %s:%s %s IP mapping",l.externalIp,l.externalPort,n,s,o),i=i||l.verified,c.splice(u,1),u--)}c.length===0&&this.mappings.delete(a)}return i}getAll(t){let e=[];for(let{multiaddr:n}of t){let o=n.stringTuples(),s;if((o[0][0]===Ql||o[0][0]===Jl)&&o[1][0]===tu?s=`${o[0][1]}-${o[1][1]}-tcp`:(o[0][0]===Ql||o[0][0]===Jl)&&o[1][0]===Wy&&(s=`${o[0][1]}-${o[1][1]}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)o[0][0]=a.externalFamily===4?Ql:Jl,o[0][1]=a.externalIp,o[1][1]=`${a.externalPort}`,e.push({multiaddr:G(`/${o.map(c=>[W(c[0]).name,c[1]].join("/")).join("/")}`),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return e}confirm(t,e){let o=t.stringTuples()[0][1],s=!1;for(let i of this.mappings.values())for(let a of i)a.externalIp===o&&(this.log("marking %s to %s IP mapping as verified",a.internalIp,a.externalIp),s=a.verified,a.verified=!0,a.expires=Date.now()+e,a.lastVerified=Date.now());return s}unconfirm(t,e){let n=t.stringTuples(),o=n[0][1]??"",s=n[1][0]===tu?"tcp":"udp",i=parseInt(n[1][1]??"0"),a=!1;for(let c of this.mappings.values())for(let u=0;u<c.length;u++){let l=c[u];l.externalIp===o&&l.externalPort===i&&l.protocol===s&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",l.externalIp,l.externalPort,o,i,s),a=a||l.verified,l.verified=!1,l.expires=Date.now()+e)}return a}};function Kh(r){try{let[[t,e]]=r.stringTuples();if(e==null)return!1;if(t===4)return e.startsWith("169.254.");if(t===41)return e.toLowerCase().startsWith("fe80")}catch{}return!1}function ui(r){try{let[[t]]=r.stringTuples();return t===4||t===41}catch{}return!1}function Er(r){try{if(!ui(r))return!1;let[[,t]]=r.stringTuples();return t==null?!1:He(t)??!1}catch{}return!0}var Gy={maxObservedAddresses:10},fi=class{log;addresses;maxObservedAddresses;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Lt({name:"libp2p_address_manager_observed_addresses",metrics:t.metrics}),this.maxObservedAddresses=e.maxObservedAddresses??Gy.maxObservedAddresses}has(t){return this.addresses.has(t.toString())}removePrefixed(t){for(let e of this.addresses.keys())e.toString().startsWith(t)&&this.addresses.delete(e)}add(t){this.addresses.size!==this.maxObservedAddresses&&(Er(t)||Kh(t)||(this.log("adding observed address %a",t),this.addresses.set(t.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([t,e])=>({multiaddr:G(t),verified:e.verified,type:"observed",expires:e.expires,lastVerified:e.lastVerified}))}remove(t){let e=this.addresses.get(t.toString())?.verified??!1;return this.log("removing observed address %a",t),this.addresses.delete(t.toString()),e}confirm(t,e){let n=t.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+e,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+e,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var jy=[4,41,53,54,55,56];function eu(r){try{let[[t]]=r.stringTuples();return jy.includes(t)}catch{}return!1}var Xy={maxObservedAddresses:10},di=class{log;addresses;maxObservedAddresses;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Lt({name:"libp2p_address_manager_transport_addresses",metrics:t.metrics}),this.maxObservedAddresses=e.maxObservedAddresses??Xy.maxObservedAddresses}get(t,e){if(Er(t))return{multiaddr:t,verified:!0,type:"transport",expires:Date.now()+e,lastVerified:Date.now()};let n=this.toKey(t),o=this.addresses.get(n);return o==null&&(o={verified:!eu(t),expires:0},this.addresses.set(n,o)),{multiaddr:t,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(t){let e=this.toKey(t);return this.addresses.has(e)}remove(t){let e=this.toKey(t),n=this.addresses.get(e)?.verified??!1;return this.log("removing observed address %a",t),this.addresses.delete(e),n}confirm(t,e){let n=this.toKey(t),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+e,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(t,e){let n=this.toKey(t),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+e,this.addresses.set(n,o),s}toKey(t){if(eu(t)){let e=t.toOptions();return`${e.host}-${e.port}-${e.transport}`}return t.toString()}};var qh=6e4,zh={maxObservedAddresses:10,addressVerificationTTL:qh*10,addressVerificationRetry:qh*5},Yy=r=>r;function ru(r,t){let e=r.getPeerId();return e!=null&&he(e).equals(t)&&(r=r.decapsulate(G(`/p2p/${t.toString()}`))),r}var hi=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(t,e={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=e;this.components=t,this.log=t.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 fi(t,e),this.dnsMappings=new ci(t,e),this.ipMappings=new li(t,e),this.transportAddresses=new di(t,e),this.announceFilter=e.announceFilter??Yy,this.observedAddressFilter=oo(1024),this.addressVerificationTTL=e.addressVerificationTTL??zh.addressVerificationTTL,this.addressVerificationRetry=e.addressVerificationRetry??zh.addressVerificationRetry,this._updatePeerStoreAddresses=fo(this._updatePeerStoreAddresses.bind(this),1e3),t.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),t.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let t=this.getAddresses().map(e=>e.getPeerId()===this.components.peerId.toString()?e.decapsulate(`/p2p/${this.components.peerId.toString()}`):e);this.components.peerStore.patch(this.components.peerId,{multiaddrs:t}).catch(e=>{this.log.error("error updating addresses",e)})}getListenAddrs(){return Array.from(this.listen).map(t=>G(t))}getAnnounceAddrs(){return Array.from(this.announce).map(t=>G(t))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(t=>G(t))}getObservedAddrs(){return this.observed.getAll().map(t=>t.multiaddr)}addObservedAddr(t){let e=t.stringTuples(),n=`${e[0][1]}:${e[1][1]}`;this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),t=ru(t,this.components.peerId),!this.ipMappings.has(t)&&(this.dnsMappings.has(t)||this.observed.add(t)))}confirmObservedAddr(t,e){t=ru(t,this.components.peerId);let n=!0;(e?.type==="transport"||this.transportAddresses.has(t))&&!this.transportAddresses.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="dns-mapping"||this.dnsMappings.has(t))&&!this.dnsMappings.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="ip-mapping"||this.ipMappings.has(t))&&!this.ipMappings.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="observed"||this.observed.has(t))&&(this.maybeUpgradeToIPMapping(t)?(this.ipMappings.confirm(t,e?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(t,e){t=ru(t,this.components.peerId);let n=!1;this.observed.has(t)&&!this.observed.remove(t)&&n&&(n=!1),this.transportAddresses.has(t)&&!this.transportAddresses.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(t)&&!this.dnsMappings.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(t)&&!this.ipMappings.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let t=new Set,e=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return t.has(o)?!1:(t.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(e.map(n=>{let o=G(n);return o.protos().pop()?.path===!0||o.getPeerId()===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let t=this.getAnnounceAddrs();if(t.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(t)}),t.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let e=[];e=e.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)}),e=e.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),e=e.concat(this.observed.getAll()),e=e.concat(this.ipMappings.getAll(e)),e=e.concat(this.dnsMappings.getAll(e)),e}addDNSMapping(t,e){this.dnsMappings.add(t,e)}removeDNSMapping(t){this.dnsMappings.remove(G(`/dns/${t}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(t,e,n,o=e,s="tcp"){this.ipMappings.add(t,e,n,o,s),this.observed.removePrefixed(`/ip${ie(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(t,e,n,o=e,s="tcp"){this.ipMappings.remove(G(`/ip${ie(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(t){if(this.ipMappings.has(t))return!1;let e=t.toOptions();if(e.family===6||e.host==="127.0.0.1"||He(e.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>xr.exactMatch(s)||yo.exactMatch(s),s=>go.exactMatch(s),s=>Mh.exactMatch(s)];for(let s of o){if(!s(t))continue;let i=n.filter(u=>u.getAddrs().filter(l=>l.toOptions().family===4&&s(l)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(u=>u.toOptions().host!=="127.0.0.1").pop();if(a==null)continue;let c=a.toOptions();return this.observed.remove(t),this.ipMappings.add(c.host,c.port,e.host,e.port,e.transport),!0}return!1}};var Vh;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(Vh||(Vh={}));var pi=class extends Error{constructor(t="Missing service"){super(t),this.name="MissingServiceError"}},mi=class extends Error{constructor(t="Unmet service dependencies"){super(t),this.name="UnmetServiceDependenciesError"}},fn=class extends Error{constructor(t="No content routers available"){super(t),this.name="NoContentRoutersError"}},wo=class extends Error{constructor(t="No peer routers available"){super(t),this.name="NoPeerRoutersError"}},gi=class extends Error{constructor(t="Should not try to find self"){super(t),this.name="QueriedForSelfError"}},yi=class extends Error{constructor(t="Unhandled protocol error"){super(t),this.name="UnhandledProtocolError"}},bi=class extends Error{constructor(t="Duplicate protocol handler error"){super(t),this.name="DuplicateProtocolHandlerError"}},xo=class extends Error{constructor(t="Dial denied error"){super(t),this.name="DialDeniedError"}},wi=class extends Error{constructor(t="No transport was configured to listen on this address"){super(t),this.name="UnsupportedListenAddressError"}},xi=class extends Error{constructor(t="Configured listen addresses could not be listened on"){super(t),this.name="UnsupportedListenAddressesError"}},Ei=class extends Error{constructor(t="No valid addresses"){super(t),this.name="NoValidAddressesError"}},vi=class extends Error{constructor(t="Connection intercepted"){super(t),this.name="ConnectionInterceptedError"}},Ai=class extends Error{constructor(t="Connection denied"){super(t),this.name="ConnectionDeniedError"}},vr=class extends Error{constructor(t="Stream is not multiplexed"){super(t),this.name="MuxerUnavailableError"}},Ar=class extends Error{constructor(t="Encryption failed"){super(t),this.name="EncryptionFailedError"}},Si=class extends Error{constructor(t="Transport unavailable"){super(t),this.name="TransportUnavailableError"}};var nu=class{components={};_started=!1;constructor(t={}){this.components={};for(let[e,n]of Object.entries(t))this.components[e]=n;this.components.logger==null&&(this.components.logger=_s())}isStarted(){return this._started}async _invokeStartableMethod(t){await Promise.all(Object.values(this.components).filter(e=>Bo(e)).map(async e=>{await e[t]?.()}))}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")}},Qy=["metrics","connectionProtector","dns"],Jy=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function Hh(r={}){let t=new nu(r);return new Proxy(t,{get(n,o,s){if(typeof o=="string"&&!Jy.includes(o)){let i=t.components[o];if(i==null&&!Qy.includes(o))throw new pi(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?t.components[o]=s:Reflect.set(n,o,s),!0}})}function $h(r){let t={};for(let e of Object.values(r.components))for(let n of tb(e))t[n]=!0;for(let e of Object.values(r.components))for(let n of eb(e))if(t[n]!==!0)throw new mi(`Service "${rb(e)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function tb(r){return Array.isArray(r?.[wn])?r[wn]:[]}function eb(r){return Array.isArray(r?.[pa])?r[pa]:[]}function rb(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}var nb=4,ob=41;function Wh(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async t=>{if(xr.matches(t))return!1;let e=t.stringTuples();return e[0][0]===nb||e[0][0]===ob?!!He(`${e[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}var Gh=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},sb=new WeakMap;function ib({clearTimeout:r,setTimeout:t}={}){return(e,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(Gh());let s,i,a,c=r??clearTimeout,u=()=>{c(s),a(Gh())},l=()=>{o&&o.removeEventListener("abort",u)},f=new Promise((d,m)=>{i=()=>{l(),d(n)},a=m,s=(t??setTimeout)(i,e)});return o&&o.addEventListener("abort",u,{once:!0}),sb.set(f,()=>{c(s),s=null,i()}),f}}var ab=ib(),jh=ab;var _i=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(t="Rate limit exceeded",e){super(t),this.name="RateLimitError",this.remainingPoints=e.remainingPoints,this.msBeforeNext=e.msBeforeNext,this.consumedPoints=e.consumedPoints,this.isFirstInDuration=e.isFirstInDuration}},Ii=class extends Error{static name="QueueFullError";constructor(t="The queue was full"){super(t),this.name="QueueFullError"}};var Ci=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(t={}){this.points=t.points??4,this.duration=t.duration??1,this.blockDuration=t.blockDuration??0,this.execEvenly=t.execEvenly??!1,this.execEvenlyMinDelayMs=t.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=t.keyPrefix??"rlflx",this.memoryStorage=new ou}async consume(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,e,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+e&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new _i("Rate limit exceeded",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await jh(a)}return i}penalty(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,e,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-e,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(t,e){let n=e*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(t),o,e),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(t,e,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(t),e,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:e,isFirstInDuration:!1}}get(t){let e=this.memoryStorage.get(this.getKey(t));return e!=null&&(e.remainingPoints=Math.max(this.points-e.consumedPoints,0)),e}delete(t){this.memoryStorage.delete(this.getKey(t))}_getKeySecDuration(t){return t?.customDuration!=null&&t.customDuration>=0?t.customDuration:this.duration}getKey(t){return this.keyPrefix.length>0?`${this.keyPrefix}:${t}`:t}parseKey(t){return t.substring(this.keyPrefix.length)}},ou=class{storage;constructor(){this.storage=new Map}incrby(t,e,n){let o=this.storage.get(t);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=e,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(t,e,n)}return this.set(t,e,n)}set(t,e,n){let o=n*1e3,s=this.storage.get(t);s!=null&&clearTimeout(s.timeoutId);let i={value:e,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(t,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(t)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(t){let e=this.storage.get(t);if(e!=null)return{remainingPoints:0,msBeforeNext:e.expiresAt!=null?e.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:e.value,isFirstInDuration:!1}}delete(t){let e=this.storage.get(t);return e!=null?(e.timeoutId!=null&&clearTimeout(e.timeoutId),this.storage.delete(t),!0):!1}};function Ti(r){if(Re(r))return{peerId:r,multiaddrs:[]};let t=Array.isArray(r)?r:[r],e;if(t.length>0){let n=t[0].getPeerId();e=n==null?void 0:he(n),t.forEach(o=>{if(!Ve(o))throw new ke("Invalid multiaddr");let s=o.getPeerId();if(s==null){if(e!=null)throw new k("Multiaddrs must all have the same peer id or have no peer id")}else{let i=he(s);if(e?.equals(i)!==!0)throw new k("Multiaddrs must all have the same peer id or have no peer id")}})}return t=t.filter(n=>!Dh.exactMatch(n)),{peerId:e,multiaddrs:t}}var cb=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function Xh(r,t){let e=r?.streams?.map(o=>o.protocol)??[],n=t?.closableProtocols??cb;if(!(e.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(t)}catch(o){r?.abort(o)}}var Yh="last-dial-failure",Zh="last-dial-success";var Pi=100,Li=50;async function Qh(r,t){let e=!1;for(let o of nn.keys())if(e=r.protoNames().includes(o),e)break;if(!e)return[r];let n=await r.resolve(t);return t.log("resolved %s to",r,n.map(o=>o.toString())),n}function Eo(r){try{let t;if(typeof r=="string"?t=G(r):t=r,!t.protoNames().includes("ipcidr")){let n=t.protoNames().includes("ip6")?"/ipcidr/128":"/ipcidr/32";t=t.encapsulate(n)}return pl(t)}catch{throw new Error(`Can't convert to IpNet, Invalid multiaddr format: ${r}`)}}var lb={maxConnections:Pi,allow:[]},Di=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(t,e={}){this.maxConnections=e.maxConnections??lb.maxConnections,this.allow=(e.allow??[]).map(n=>Eo(n)),this.connectionManager=t.connectionManager,this.peerStore=t.peerStore,this.events=t.events,this.log=t.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(t=>{this.log.error("error while pruning connections %e",t)})}async _maybePruneConnections(){let t=this.connectionManager.getConnections(),e=t.length;if(this.log("checking max connections limit %d/%d",e,this.maxConnections),e<=this.maxConnections)return;let n=new jt;for(let a of t){let c=a.remotePeer;if(!n.has(c)){n.set(c,0);try{let u=await this.peerStore.get(c);n.set(c,[...u.tags.values()].reduce((l,f)=>l+f.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags",u)}}}let o=this.sortConnections(t,n),s=Math.max(e-this.maxConnections,0),i=[];for(let a of o)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(u=>u.contains(a.remoteAddr.nodeAddress().address))||i.push(a),i.length===s)break;await Promise.all(i.map(async a=>{await Xh(a,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:i})}sortConnections(t,e){return t.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=e.get(n.remotePeer)??0,i=e.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var Ri=class{deferred;signal;constructor(t){this.signal=t,this.deferred=lt(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Zt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function ub(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ki=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=ub(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Zt),this.cleanup())}async join(t={}){let e=new Ri(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await Et(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};var hn=class extends ge{concurrency;maxSize;queue;pending;sort;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.maxSize=t.maxSize??Number.POSITIVE_INFINITY,this.pending=0,t.metricName!=null&&t.metrics?.registerMetricGroup(t.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=t.sort,this.queue=[],this.emitEmpty=fo(this.emitEmpty.bind(this),1),this.emitIdle=fo(this.emitIdle.bind(this),1)}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 t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}async add(t,e){if(e?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Ii;let n=new ki(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(e).then(o=>(this.safeDispatchEvent("completed",{detail: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("error",{detail:o}),this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(t=>{t.abort(new Zt)}),this.clear()}async onEmpty(t){this.size!==0&&await pe(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await pe(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await pe(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=Ls({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},o=c=>{c.detail!=null&&e.push(c.detail)},s=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new Zt("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var Mi=class extends hn{constructor(t={}){super({...t,sort:(e,n)=>e.options.priority>n.options.priority?-1:e.options.priority<n.options.priority?1:0})}};function De(r){let t=new globalThis.AbortController;function e(){t.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}for(let s of r){if(s?.aborted===!0){e();break}s?.addEventListener!=null&&s.addEventListener("abort",e)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}let o=t.signal;return o.clear=n,o}function Jh(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function su(r){if(!ui(r))return!1;let{address:t}=r.nodeAddress();return Jh(t)}function fb(r,t){let e=go.exactMatch(r.multiaddr),n=go.exactMatch(t.multiaddr);if(e&&!n)return-1;if(!e&&n)return 1;let o=yo.exactMatch(r.multiaddr),s=yo.exactMatch(t.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=xr.exactMatch(r.multiaddr),a=xr.exactMatch(t.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=Xl.exactMatch(r.multiaddr),u=Xl.exactMatch(t.multiaddr);if(c&&!u)return-1;if(!c&&u)return 1;let l=Gl.exactMatch(r.multiaddr),f=Gl.exactMatch(t.multiaddr);if(l&&!f)return-1;if(!l&&f)return 1;let d=jl.exactMatch(r.multiaddr),m=jl.exactMatch(t.multiaddr);return d&&!m?-1:!d&&m?1:0}function db(r,t){let e=su(r.multiaddr),n=su(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function hb(r,t){let e=Er(r.multiaddr),n=Er(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function pb(r,t){return r.isCertified&&!t.isCertified?-1:!r.isCertified&&t.isCertified?1:0}function mb(r,t){let e=bo.exactMatch(r.multiaddr),n=bo.exactMatch(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function tp(r){return r.sort(fb).sort(pb).sort(mb).sort(hb).sort(db)}var Oi={maxParallelDials:Li,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:ur}},Ni=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;constructor(t,e={}){this.addressSorter=e.addressSorter,this.maxPeerAddrsToDial=e.maxPeerAddrsToDial??Oi.maxPeerAddrsToDial,this.maxDialQueueLength=e.maxDialQueueLength??Oi.maxDialQueueLength,this.dialTimeout=e.dialTimeout??Oi.dialTimeout,this.connections=e.connections??new jt,this.log=t.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=t,this.shutDownController=new AbortController,this.shutDownController.signal;for(let[n,o]of Object.entries(e.resolvers??{}))nn.set(n,o);this.queue=new Mi({concurrency:e.maxParallelDials??Oi.maxParallelDials,metricName:"libp2p_dial_queue",metrics:t.metrics}),this.queue.addEventListener("error",n=>{n.detail?.name!==Zt.name&&this.log.error("error in dial queue - %e",n.detail)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(t,e={}){let{peerId:n,multiaddrs:o}=Ti(t),s=Array.from(this.connections.values()).flat().find(a=>e.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s?.status==="open")return this.log("already connected to %a",s.remoteAddr),e.onProgress?.(new dt("dial-queue:already-connected")),s;let i=this.queue.queue.find(a=>{if(n?.equals(a.options.peerId)===!0)return!0;let c=a.options.multiaddrs;if(c==null)return!1;for(let u of o)if(c.has(u.toString()))return!0;return!1});if(i!=null){this.log("joining existing dial target for %p",n);for(let a of o)i.options.multiaddrs.add(a.toString());return e.onProgress?.(new dt("dial-queue:already-in-dial-queue")),i.join(e)}if(this.queue.size>=this.maxDialQueueLength)throw new Dr("Dial queue is full");return this.log("creating dial target for %p",n,o.map(a=>a.toString())),e.onProgress?.(new dt("dial-queue:add-to-dial-queue")),this.queue.add(async a=>{a.onProgress?.(new dt("dial-queue:start-dial"));let c=De([this.shutDownController.signal,a.signal]);try{return await this.dialPeer(a,c)}finally{c.clear()}},{peerId:n,priority:e.priority??lu,multiaddrs:new Set(o.map(a=>a.toString())),signal:e.signal??AbortSignal.timeout(this.dialTimeout),onProgress:e.onProgress})}async dialPeer(t,e){let n=t.peerId,o=t.multiaddrs,s=new Set,i=t.multiaddrs.size===0,a=0,c=0,u=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let l=[],f=new Set(t.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...f]);let d=await this.calculateMultiaddrs(n,f,{...t,signal:e});for(let m of d){if(s.has(m.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",m.multiaddr,n);continue}l.push(m)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,l.map(m=>m.multiaddr.toString())),t?.onProgress?.(new dt("dial-queue:calculated-addresses",l));for(let m of l){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,t.peerId),new Dr("Peer had more than maxPeerAddrsToDial");a++;try{let h=await this.components.transportManager.dial(m.multiaddr,{...t,signal:e});this.log("dial to %a succeeded",m.multiaddr);try{await this.components.peerStore.merge(h.remotePeer,{multiaddrs:[h.remoteAddr],metadata:{[Zh]:L(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p",n,g)}return h}catch(h){if(this.log.error("dial failed to %a",m.multiaddr,h),s.add(m.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[Yh]:L(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p",n,g)}if(e.aborted)throw new Mo(h.message);u.push(h)}}}throw u.length===1?u[0]:new AggregateError(u,"All multiaddr dials failed")}async calculateMultiaddrs(t,e=new Set,n={}){let o=[...e].map(f=>({multiaddr:G(f),isCertified:!1}));if(t!=null){if(this.components.peerId.equals(t))throw new Dr("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(t)===!0)throw new xo("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",t);try{let f=await this.components.peerStore.get(t);o.push(...f.addresses),this.log("loaded multiaddrs for %p",t,o.map(({multiaddr:d})=>d.toString()))}catch(f){if(f.name!=="NotFoundError")throw f}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",t);try{let f=await this.components.peerRouting.findPeer(t,n);this.log("found multiaddrs for %p in the peer routing",t,o.map(({multiaddr:d})=>d.toString())),o.push(...f.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(f){f.name==="NoPeerRoutersError"?this.log("no peer routers configured",t):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",t,f)}}}let s=(await Promise.all(o.map(async f=>{let d=await Qh(f.multiaddr,{dns:this.components.dns,...n,log:this.log});return d.length===1&&d[0].equals(f.multiaddr)?f:d.map(m=>({multiaddr:m,isCertified:!1}))}))).flat();if(t!=null){let f=`/p2p/${t.toString()}`;s=s.map(d=>d.multiaddr.protos().pop()?.path===!0?d:d.multiaddr.getPeerId()==null?{multiaddr:d.multiaddr.encapsulate(f),isCertified:d.isCertified}:d)}let i=s.filter(f=>{if(this.components.transportManager.dialTransportForMultiaddr(f.multiaddr)==null)return!1;let d=f.multiaddr.getPeerId();return t!=null&&d!=null?t.equals(d):!0}),a=new Map;for(let f of i){let d=f.multiaddr.toString(),m=a.get(d);if(m!=null){m.isCertified=m.isCertified||f.isCertified||!1;continue}a.set(d,f)}let c=[...a.values()];if(c.length===0)throw new Ei("The dial request has no valid addresses");let u=[];for(let f of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(f.multiaddr)||u.push(f);let l=this.addressSorter==null?tp(u):u.sort(this.addressSorter);if(l.length===0)throw new xo("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",t??"unknown peer",s.map(({multiaddr:f})=>f.toString())),this.log.trace("addresses for %p after filtering",t??"unknown peer",l.map(({multiaddr:f})=>f.toString())),l}async isDialable(t,e={}){Array.isArray(t)||(t=[t]);try{let n=await this.calculateMultiaddrs(void 0,new Set(t.map(o=>o.toString())),e);return e.runOnLimitedConnection===!1?n.find(o=>!bo.matches(o.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var Bi=class extends hn{has(t){return this.find(t)!=null}find(t){return this.queue.find(e=>t.equals(e.options.peerId))}};var ap=To(sp(),1);var yb=Object.prototype.toString,bb=r=>yb.call(r)==="[object Error]",wb=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed","terminated"]);function uu(r){return r&&bb(r)&&r.name==="TypeError"&&typeof r.message=="string"?r.message==="Load failed"?r.stack===void 0:wb.has(r.message):!1}var fu=class extends Error{constructor(t){super(),t instanceof Error?(this.originalError=t,{message:t}=t):(this.originalError=new Error(t),this.originalError.stack=this.stack),this.name="AbortError",this.message=t}},ip=(r,t,e)=>{let n=e.retries-(t-1);return r.attemptNumber=t,r.retriesLeft=n,r};async function du(r,t){return new Promise((e,n)=>{t={...t},t.onFailedAttempt??=()=>{},t.shouldRetry??=()=>!0,t.retries??=10;let o=ap.default.operation(t),s=()=>{o.stop(),n(t.signal?.reason)};t.signal&&!t.signal.aborted&&t.signal.addEventListener("abort",s,{once:!0});let i=()=>{t.signal?.removeEventListener("abort",s),o.stop()};o.attempt(async a=>{try{let c=await r(a);i(),e(c)}catch(c){try{if(!(c instanceof Error))throw new TypeError(`Non-error was thrown: "${c}". You should only throw errors.`);if(c instanceof fu)throw c.originalError;if(c instanceof TypeError&&!uu(c))throw c;if(ip(c,a,t),await t.shouldRetry(c)||(o.stop(),n(c)),await t.onFailedAttempt(c),!o.retry(c))throw o.mainError()}catch(u){ip(u,a,t),i(),n(u)}}})})}var Fi=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=t.peerStore,this.connectionManager=t.connectionManager,this.queue=new Bi({concurrency:e.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:t.metrics}),this.started=!1,this.retries=e.retries??5,this.backoffFactor=e.backoffFactor,this.retryInterval=e.retryInterval,this.events=t.events,t.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(t){if(!this.started)return;let e=await this.peerStore.get(t);cp(e)&&(this.queue.has(t)||this.queue.add(async n=>{await du(async o=>{if(this.started)try{await this.connectionManager.openConnection(t,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",t,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:t}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",t,n);let o={};[...e.tags.keys()].forEach(s=>{s.startsWith(ha)&&(o[s]=void 0)}),await this.peerStore.merge(t,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:t})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",t,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let t=await this.peerStore.all({filters:[e=>cp(e)]});await Promise.all(t.map(async e=>{await this.connectionManager.openConnection(e.id).catch(n=>{this.log.error(n)})}))}).catch(t=>{this.log.error(t)})}stop(){this.started=!1,this.queue.abort()}};function cp(r){for(let t of r.tags.keys())if(t.startsWith(ha))return!0;return!1}var lu=50,hu={maxConnections:Pi,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Ui=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(t,e={}){if(this.maxConnections=e.maxConnections??hu.maxConnections,this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");this.connections=new jt,this.started=!1,this.peerId=t.peerId,this.peerStore=t.peerStore,this.metrics=t.metrics,this.events=t.events,this.log=t.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(e.allow??[]).map(n=>Eo(n)),this.deny=(e.deny??[]).map(n=>Eo(n)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=e.maxIncomingPendingConnections??hu.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new Ci({points:e.inboundConnectionThreshold??hu.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Di({connectionManager:this,peerStore:t.peerStore,events:t.events,logger:t.logger},{maxConnections:this.maxConnections,allow:e.allow?.map(n=>G(n))}),this.dialQueue=new Ni(t,{addressSorter:e.addressSorter,maxParallelDials:e.maxParallelDials??Li,maxDialQueueLength:e.maxDialQueueLength??500,maxPeerAddrsToDial:e.maxPeerAddrsToDial??25,dialTimeout:e.dialTimeout??1e4,resolvers:e.resolvers??{dnsaddr:ur},connections:this.connections}),this.reconnectQueue=new Fi({events:t.events,peerStore:t.peerStore,logger:t.logger,connectionManager:this},{retries:e.reconnectRetries,retryInterval:e.reconnectRetryInterval,backoffFactor:e.reconnectBackoffFactor,maxParallelReconnects:e.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let t={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let e of this.connections.values())for(let n of e)t[n.direction]++;return t}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let t={};for(let e of this.connections.values())for(let n of e)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;t[s]=(t[s]??0)+1}return t}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let t={};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))t[i]=t[i]??[],t[i].push(a)}let e={};for(let[n,o]of Object.entries(t)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);e[n]=o[s]}return e}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await _u(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 Iu(this.reconnectQueue,this.dialQueue,this.connectionPruner);let t=[];for(let e of this.connections.values())for(let n of e)t.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",t.length),await Promise.all(t),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}onConnect(t){this._onConnect(t).catch(e=>{this.log.error(e)})}async _onConnect(t){let{detail:e}=t;if(!this.started){await e.close();return}if(e.status!=="open")return;let n=e.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(e),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:e.remotePeer})}onDisconnect(t){let{detail:e}=t,n=e.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==e.id);this.connections.set(n,s),s.length===0&&(this.log("onDisconnect remove all connections for peer %p",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:e.remotePeer}))}getConnections(t){if(t!=null)return this.connections.get(t)??[];let e=[];for(let n of this.connections.values())e=e.concat(n);return e}getConnectionsMap(){return this.connections}async openConnection(t,e={}){if(!this.started)throw new me("Not started");this.outboundPendingConnections++;try{e.signal?.throwIfAborted();let{peerId:n}=Ti(t);if(this.peerId.equals(n))throw new Lr("Can not dial self");if(n!=null&&e.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>c.limits==null);if(a!=null)return this.log("had an existing non-limited connection to %p",n),e.onProgress?.(new dt("dial-queue:already-connected")),a}let o=await this.dialQueue.dial(t,{...e,priority:e.priority??lu});if(o.status!=="open")throw new Pr("Remote closed connection during opening");let s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)if(a.id===o.id&&(i=!0),e.force!==!0&&a.id!==o.id&&a.remoteAddr.equals(o.remoteAddr))return o.abort(new ke("Duplicate multiaddr connection")),a;return i||s.push(o),o}finally{this.outboundPendingConnections--}}async closeConnections(t,e={}){let n=this.connections.get(t)??[];await Promise.all(n.map(async o=>{try{await o.close(e)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(t){if(this.deny.some(o=>o.contains(t.remoteAddr.nodeAddress().address)))return this.log("connection from %a refused - connection remote address was in deny list",t.remoteAddr),!1;if(this.allow.some(o=>o.contains(t.remoteAddr.nodeAddress().address)))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",t.remoteAddr),!1;if(t.remoteAddr.isThinWaistAddress()){let o=t.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",t.remoteAddr,o),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",t.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let t={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(e=>({id:e.id,status:t[e.status],peerId:e.options.peerId,multiaddrs:[...e.options.multiaddrs].map(n=>G(n))}))}async isDialable(t,e={}){return this.dialQueue.isDialable(t,e)}};var pn=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(t){this.timeSpan=t,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(t,e){return 1-Math.exp(-(t-e)/this.timeSpan)}push(t,e=Date.now()){if(this.previousTime!=null){let n=this.alpha(e,this.previousTime),o=t-this.movingAverage,s=n*o;this.movingAverage=n*t+(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=t;this.previousTime=e}};var vb=1.2,Ab=2,Sb=5e3,_b=6e4,Ib=5e3,Ki=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(t={}){let e=t.interval??Ib;this.success=new pn(e),this.failure=new pn(e),this.next=new pn(e),this.failureMultiplier=t.failureMultiplier??Ab,this.timeoutMultiplier=t.timeoutMultiplier??vb,this.minTimeout=t.minTimeout??Sb,this.maxTimeout=t.maxTimeout??_b,t.metricName!=null&&(this.metric=t.metrics?.registerMetricGroup(t.metricName))}getTimeoutSignal(t={}){let e=Math.round(this.next.movingAverage*(t.timeoutFactor??this.timeoutMultiplier));e<this.minTimeout&&(e=this.minTimeout),e>this.maxTimeout&&(e=this.maxTimeout);let n=AbortSignal.timeout(e),o=De([t.signal,n]);return o.start=Date.now(),o.timeout=e,o}cleanUp(t){let e=Date.now()-t.start;t.aborted?(this.failure.push(e),this.next.push(e*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:e})):(this.success.push(e),this.next.push(e),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:e}))}};var pu=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=lt(),this.haveNext=lt()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=lt(),t}async throw(t){return this.ended=!0,this.error=t,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return this.ended=!0,this.nextResult=t,this.haveNext.resolve(),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=lt(),await Et(this.readNext.promise,e?.signal,e)}};function qi(){return new pu}var zi=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function Vi(r,t){let e=qi();r.sink(e).catch(async i=>{await e.end(i)}),r.sink=async i=>{for await(let a of i)await e.push(a);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new Y;return{read:async i=>{if(i?.signal?.throwIfAborted(),i?.bytes==null){let{done:c,value:u}=await Et(n.next(),i?.signal);return c===!0?null:u}for(;o.byteLength<i.bytes;){let{value:c,done:u}=await Et(n.next(),i?.signal);if(u===!0)throw new zi("unexpected end of input");o.append(c)}let a=o.sublist(0,i.bytes);return o.consume(i.bytes),a},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await e.push(i,a):await e.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){t?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var Cb=1e4,Tb="1.0.0",Pb="ping",Lb="ipfs",lp=32,Db=!0,Hi=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(t,e={}){this.components=t,this.protocol=`/${e.protocolPrefix??Lb}/${Pb}/${Tb}`,this.log=t.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=e.pingInterval??Cb,this.abortConnectionOnPingFailure=e.abortConnectionOnPingFailure??Db,this.timeout=new Ki({...e.pingTimeout??{},metrics:t.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[wn]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(t=>{Promise.resolve().then(async()=>{let e=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o=await t.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=Vi(o);e=Date.now(),await Promise.all([s.write(Wr(lp),{signal:n}),s.read({bytes:lp,signal:n})]),t.rtt=Date.now()-e,await s.unwrap().close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;t.rtt=(Date.now()-e)/2}}).catch(e=>{this.log.error("error during heartbeat",e),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),t.abort(e)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};function Rb(r){return r[Symbol.asyncIterator]!=null}async function kb(r,t,e){try{await Promise.all(r.map(async n=>{for await(let o of n)await t.push(o,{signal:e}),e.throwIfAborted()})),await t.end(void 0,{signal:e})}catch(n){await t.end(n,{signal:e}).catch(()=>{})}}async function*Mb(r){let t=new AbortController,e=qi();kb(r,e,t.signal).catch(()=>{});try{yield*e}finally{t.abort()}}function*Ob(r){for(let t of r)yield*t}function Nb(...r){let t=[];for(let e of r)Rb(e)||t.push(e);return t.length===r.length?Ob(t):Mb(r)}var vo=Nb;var $i=class{routers;started;components;constructor(t,e){this.routers=e.routers??[],this.started=!1,this.components=t,this.findProviders=t.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=t.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=t.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=t.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:B(n,"base36")})})??this.put,this.get=t.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(t,e={}){if(this.routers.length===0)throw new fn("No content routers available");let n=this,o=new dr;for await(let s of vo(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(t,e))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(t,e={}){if(this.routers.length===0)throw new fn("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(t,e)}))}async cancelReprovide(t,e={}){if(this.routers.length===0)throw new fn("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(t,e)}))}async put(t,e,n){if(!this.isStarted())throw new me;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(t,e,n)}))}async get(t,e){if(!this.isStarted())throw new me;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(t,e)))}};var Wi=globalThis.CustomEvent??Event;async function*mu(r,t={}){let e=t.concurrency??1/0;e<1&&(e=1/0);let n=t.ordered??!1,o=new EventTarget,s=[],i=lt(),a=lt(),c=!1,u,l=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let h of r){if(s.length===e&&(i=lt(),await i.promise),l)break;let g={done:!1};s.push(g),h().then(b=>{g.done=!0,g.ok=!0,g.value=b,o.dispatchEvent(new Wi("task-complete"))},b=>{g.done=!0,g.err=b,o.dispatchEvent(new Wi("task-complete"))})}c=!0,o.dispatchEvent(new Wi("task-complete"))}catch(h){u=h,o.dispatchEvent(new Wi("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(h=>h.done)}function*d(){for(;s.length>0&&s[0].done;){let h=s[0];if(s.shift(),h.ok)yield h.value;else throw l=!0,i.resolve(),h.err;i.resolve()}}function*m(){for(;f();)for(let h=0;h<s.length;h++)if(s[h].done){let g=s[h];if(s.splice(h,1),h--,g.ok)yield g.value;else throw l=!0,i.resolve(),g.err;i.resolve()}}for(;;){if(f()||(a=lt(),await a.promise),u!=null||(n?yield*d():yield*m(),u!=null))throw u;if(c&&s.length===0)break}}var Gi=class{log;peerId;peerStore;routers;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-routing"),this.peerId=t.peerId,this.peerStore=t.peerStore,this.routers=e.routers??[],this.findPeer=t.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=t.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(t,e){if(this.routers.length===0)throw new wo("No peer routers available");if(t.toString()===this.peerId.toString())throw new gi("Should not try to find self");let n=this,o=vo(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>async function*(){try{yield await s.findPeer(t,e)}catch(i){n.log.error(i)}}()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),s;throw new Ge}async*getClosestPeers(t,e={}){if(this.routers.length===0)throw new wo("No peer routers available");let n=this,o=oo(1024);for await(let s of mu(async function*(){let i=vo(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(t,e)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...e,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}}()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var ji=class extends ge{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(t){super(),this.log=t.logger.forComponent("libp2p:random-walk"),this.peerRouting=t.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(t){this.walking||this.startWalk(),this.walkers++;let e=De([this.shutdownController.signal,t?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=lt(),yield(await pe(this,"walk:peer",e,{errorEvent:"walk:error"})).detail}finally{e.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 t=De([this.walkController.signal,this.shutdownController.signal]);let e=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=Wr(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:t}))t.aborted&&this.log("aborting walk"),t.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 Et(this.needNext.promise,t)),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",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-e),this.walking=!1})}};var gu=32,yu=64,Xi=class{log;topologies;handlers;components;constructor(t){this.components=t,this.log=t.logger.forComponent("libp2p:registrar"),this.topologies=new Map,t.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let e={};for(let[n,o]of this.topologies)e[n]=o.size;return e}}),this.handlers=Lt({name:"libp2p_registrar_protocol_handlers",metrics:t.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(t){let e=this.handlers.get(t);if(e==null)throw new yi(`No handler registered for protocol ${t}`);return e}getTopologies(t){let e=this.topologies.get(t);return e==null?[]:[...e.values()]}async handle(t,e,n){if(this.handlers.has(t)&&n?.force!==!0)throw new bi(`Handler already registered for protocol ${t}`);let o=us.bind({ignoreUndefined:!0})({maxInboundStreams:gu,maxOutboundStreams:yu},n);this.handlers.set(t,{handler:e,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[t]},n)}async unhandle(t,e){(Array.isArray(t)?t:[t]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},e)}async register(t,e){if(e==null)throw new k("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(t);return o==null&&(o=new Map,this.topologies.set(t,o)),o.set(n,e),n}unregister(t){for(let[e,n]of this.topologies.entries())n.has(t)&&(n.delete(t),n.size===0&&this.topologies.delete(e))}_onDisconnect(t){let e=t.detail,n={signal:AbortSignal.timeout(5e3)};this.components.peerStore.get(e,n).then(o=>{for(let s of o.protocols){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.filter?.has(e)!==!1&&(a.filter?.remove(e),a.onDisconnect?.(e))}}).catch(o=>{o.name!=="NotFoundError"&&this.log.error("could not inform topologies of disconnecting peer %p",e,o)})}_onPeerUpdate(t){let{peer:e,previous:n}=t.detail,o=(n?.protocols??[]).filter(s=>!e.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.filter?.has(e.id)!==!1&&(a.filter?.remove(e.id),a.onDisconnect?.(e.id))}}_onPeerIdentify(t){let e=t.detail.protocols,n=t.detail.connection,o=t.detail.peerId;for(let s of e){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),a.onConnect?.(o,n))}}};var Yi=class{log;components;transports;listeners;faultTolerance;started;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:transports"),this.components=t,this.started=!1,this.transports=Lt({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=Lt({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=e.faultTolerance??We.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(t){let e=t[Symbol.toStringTag];if(e==null)throw new k("Transport must have a valid tag");if(this.transports.has(e))throw new k(`There is already a transport with the tag ${e}`);this.log("adding transport %s",e),this.transports.set(e,t),this.listeners.has(e)||this.listeners.set(e,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let t=this.components.addressManager.getListenAddrs();await this.listen(t)}async stop(){let t=[];for(let[e,n]of this.listeners)for(this.log("closing listeners for %s",e);n.length>0;){let o=n.pop();o!=null&&t.push(o.close())}await Promise.all(t),this.log("all listeners closed");for(let e of this.listeners.keys())this.listeners.set(e,[]);this.started=!1}async dial(t,e){let n=this.dialTransportForMultiaddr(t);if(n==null)throw new Si(`No transport available for address ${String(t)}`);return e?.onProgress?.(new dt("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(t,{...e,upgrader:this.components.upgrader})}getAddrs(){let t=[];for(let e of this.listeners.values())for(let n of e)t=[...t,...n.getAddrs()];return t}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(t){for(let e of this.transports.values())if(e.dialFilter([t]).length>0)return e}listenTransportForMultiaddr(t){for(let e of this.transports.values())if(e.listenFilter([t]).length>0)return e}async listen(t){if(!this.isStarted())throw new me("Not started");if(t==null||t.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let e={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};t.forEach(s=>{e.errors.set(s.toString(),new wi)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(t);for(let c of a){this.log("creating listener for %s on %a",s,c);let u=i.createListener({upgrader:this.components.upgrader}),l=this.listeners.get(s)??[];l==null&&(l=[],this.listeners.set(s,l)),l.push(u),u.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:u})}),u.addEventListener("close",()=>{let f=l.findIndex(d=>d===u);l.splice(f,1),this.components.events.safeDispatchEvent("transport:close",{detail:u})}),Vl.matches(c)?e.ipv4.attempts++:Hl.matches(c)&&e.ipv6.attempts++,n.push(u.listen(c).then(()=>{e.errors.delete(c.toString()),Vl.matches(c)&&e.ipv4.success++,Hl.matches(c)&&e.ipv6.success++},f=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,f),e.errors.set(c.toString(),f),f}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(e)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===We.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new xi(`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:
2
+ "use strict";var Libp2P=(()=>{var wp=Object.create;var _o=Object.defineProperty;var xp=Object.getOwnPropertyDescriptor;var Ep=Object.getOwnPropertyNames;var vp=Object.getPrototypeOf,Ap=Object.prototype.hasOwnProperty;var Cr=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),Kt=(r,t)=>{for(var e in t)_o(r,e,{get:t[e],enumerable:!0})},Eu=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ep(t))!Ap.call(r,o)&&o!==e&&_o(r,o,{get:()=>t[o],enumerable:!(n=xp(t,o))||n.enumerable});return r};var Io=(r,t,e)=>(e=r!=null?wp(vp(r)):{},Eu(t||!r||!r.__esModule?_o(e,"default",{value:r,enumerable:!0}):e,r)),Sp=r=>Eu(_o({},"__esModule",{value:!0}),r);var Dd=Cr((nv,jc)=>{"use strict";var n0=Object.prototype.hasOwnProperty,Ft="~";function Xn(){}Object.create&&(Xn.prototype=Object.create(null),new Xn().__proto__||(Ft=!1));function o0(r,t,e){this.fn=r,this.context=t,this.once=e||!1}function Ld(r,t,e,n,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new o0(e,n||r,o),i=Ft?Ft+t:t;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 ls(r,t){--r._eventsCount===0?r._events=new Xn:delete r._events[t]}function Tt(){this._events=new Xn,this._eventsCount=0}Tt.prototype.eventNames=function(){var t=[],e,n;if(this._eventsCount===0)return t;for(n in e=this._events)n0.call(e,n)&&t.push(Ft?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Tt.prototype.listeners=function(t){var e=Ft?Ft+t:t,n=this._events[e];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};Tt.prototype.listenerCount=function(t){var e=Ft?Ft+t:t,n=this._events[e];return n?n.fn?1:n.length:0};Tt.prototype.emit=function(t,e,n,o,s,i){var a=Ft?Ft+t:t;if(!this._events[a])return!1;var c=this._events[a],u=arguments.length,l,f;if(c.fn){switch(c.once&&this.removeListener(t,c.fn,void 0,!0),u){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,n),!0;case 4:return c.fn.call(c.context,e,n,o),!0;case 5:return c.fn.call(c.context,e,n,o,s),!0;case 6:return c.fn.call(c.context,e,n,o,s,i),!0}for(f=1,l=new Array(u-1);f<u;f++)l[f-1]=arguments[f];c.fn.apply(c.context,l)}else{var d=c.length,m;for(f=0;f<d;f++)switch(c[f].once&&this.removeListener(t,c[f].fn,void 0,!0),u){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,e);break;case 3:c[f].fn.call(c[f].context,e,n);break;case 4:c[f].fn.call(c[f].context,e,n,o);break;default:if(!l)for(m=1,l=new Array(u-1);m<u;m++)l[m-1]=arguments[m];c[f].fn.apply(c[f].context,l)}}return!0};Tt.prototype.on=function(t,e,n){return Ld(this,t,e,n,!1)};Tt.prototype.once=function(t,e,n){return Ld(this,t,e,n,!0)};Tt.prototype.removeListener=function(t,e,n,o){var s=Ft?Ft+t:t;if(!this._events[s])return this;if(!e)return ls(this,s),this;var i=this._events[s];if(i.fn)i.fn===e&&(!o||i.once)&&(!n||i.context===n)&&ls(this,s);else{for(var a=0,c=[],u=i.length;a<u;a++)(i[a].fn!==e||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:ls(this,s)}return this};Tt.prototype.removeAllListeners=function(t){var e;return t?(e=Ft?Ft+t:t,this._events[e]&&ls(this,e)):(this._events=new Xn,this._eventsCount=0),this};Tt.prototype.off=Tt.prototype.removeListener;Tt.prototype.addListener=Tt.prototype.on;Tt.prefixed=Ft;Tt.EventEmitter=Tt;typeof jc<"u"&&(jc.exports=Tt)});var Nd=Cr((Iv,Od)=>{Od.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var t=0,e=Object.create(null),n=Object.create(null);function o(s,i){e[s]=i,t++,t>=r&&(t=0,n=e,e=Object.create(null))}return{has:function(s){return e[s]!==void 0||n[s]!==void 0},remove:function(s){e[s]!==void 0&&(e[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=e[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){e[s]!==void 0?e[s]=i:o(s,i)},clear:function(){e=Object.create(null),n=Object.create(null)}}}});var Ch=Cr(uo=>{(function(){var r,t,e,n,o,s,i,a;a=function(c){var u,l,f,d;return u=(c&255<<24)>>>24,l=(c&255<<16)>>>16,f=(c&65280)>>>8,d=c&255,[u,l,f,d].join(".")},i=function(c){var u,l,f,d,m,h;for(u=[],f=d=0;d<=3&&c.length!==0;f=++d){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}h=t(c),m=h[0],l=h[1],c=c.substring(l),u.push(m)}if(c.length!==0)throw new Error("Invalid IP");switch(u.length){case 1:if(u[0]>4294967295)throw new Error("Invalid IP");return u[0]>>>0;case 2:if(u[0]>255||u[1]>16777215)throw new Error("Invalid IP");return(u[0]<<24|u[1])>>>0;case 3:if(u[0]>255||u[1]>255||u[2]>65535)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2])>>>0;case 4:if(u[0]>255||u[1]>255||u[2]>255||u[3]>255)throw new Error("Invalid IP");return(u[0]<<24|u[1]<<16|u[2]<<8|u[3])>>>0;default:throw new Error("Invalid IP")}},e=function(c){return c.charCodeAt(0)},n=e("0"),s=e("a"),o=e("A"),t=function(c){var u,l,f,d,m;for(d=0,u=10,l="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,u=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,u=8,l="7")),m=f;f<c.length;){if("0"<=c[f]&&c[f]<=l)d=d*u+(e(c[f])-n)>>>0;else if(u===16)if("a"<=c[f]&&c[f]<="f")d=d*u+(10+e(c[f])-s)>>>0;else if("A"<=c[f]&&c[f]<="F")d=d*u+(10+e(c[f])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");f++}if(f===m)throw new Error("empty octet");return[d,f]},r=function(){function c(u,l){var f,d,m,h;if(typeof u!="string")throw new Error("Missing `net' parameter");if(l||(h=u.split("/",2),u=h[0],l=h[1]),l||(l=32),typeof l=="string"&&l.indexOf(".")>-1){try{this.maskLong=i(l)}catch(g){throw f=g,new Error("Invalid mask: "+l)}for(d=m=32;m>=0;d=--m)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(l||l===0)this.bitmask=parseInt(l,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(u)&this.maskLong)>>>0}catch(g){throw f=g,new Error("Invalid net address: "+u)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+l);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(u){return typeof u=="string"&&(u.indexOf("/")>0||u.split(".").length!==4)&&(u=new c(u)),u instanceof c?this.contains(u.base)&&this.contains(u.broadcast||u.last):(i(u)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(u){return u==null&&(u=1),new c(a(this.netLong+this.size*u),this.mask)},c.prototype.forEach=function(u){var l,f,d;for(d=i(this.first),f=i(this.last),l=0;d<=f;)u(a(d),d,l),l++,d++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),uo.ip2long=i,uo.long2ip=a,uo.Netmask=r}).call(uo)});var tp=Cr((Q3,Jh)=>{function Yt(r,t){typeof t=="boolean"&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}Jh.exports=Yt;Yt.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};Yt.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};Yt.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var t=new Date().getTime();if(r&&t-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var e=this._timeouts.shift();if(e===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),e=this._cachedTimeouts.slice(-1);else return!1;var n=this;return this._timer=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},e),this._options.unref&&this._timer.unref(),!0};Yt.prototype.attempt=function(r,t){this._fn=r,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var e=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){e._operationTimeoutCb()},e._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};Yt.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};Yt.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};Yt.prototype.start=Yt.prototype.try;Yt.prototype.errors=function(){return this._errors};Yt.prototype.attempts=function(){return this._attempts};Yt.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},t=null,e=0,n=0;n<this._errors.length;n++){var o=this._errors[n],s=o.message,i=(r[s]||0)+1;r[s]=i,i>=e&&(t=o,e=i)}return t}});var ep=Cr(Sr=>{var hb=tp();Sr.operation=function(r){var t=Sr.timeouts(r);return new hb(t,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Sr.timeouts=function(r){if(r instanceof Array)return[].concat(r);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var e in r)t[e]=r[e];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],o=0;o<t.retries;o++)n.push(this.createTimeout(o,t));return r&&r.forever&&!n.length&&n.push(this.createTimeout(o,t)),n.sort(function(s,i){return s-i}),n};Sr.createTimeout=function(r,t){var e=t.randomize?Math.random()+1:1,n=Math.round(e*Math.max(t.minTimeout,1)*Math.pow(t.factor,r));return n=Math.min(n,t.maxTimeout),n};Sr.wrap=function(r,t,e){if(t instanceof Array&&(e=t,t=null),!e){e=[];for(var n in r)typeof r[n]=="function"&&e.push(n)}for(var o=0;o<e.length;o++){var s=e[o],i=r[s];r[s]=function(c){var u=Sr.operation(t),l=Array.prototype.slice.call(arguments,1),f=l.pop();l.push(function(d){u.retry(d)||(d&&(arguments[0]=u.mainError()),f.apply(this,arguments))}),u.attempt(function(){c.apply(r,l)})}.bind(r,i),r[s].options=t}}});var np=Cr((tC,rp)=>{rp.exports=ep()});var $b={};Kt($b,{createLibp2p:()=>Hb});var vu=Symbol.for("@libp2p/connection");var ca=Symbol.for("@libp2p/content-routing");var la=Symbol.for("@libp2p/peer-discovery");var Co=Symbol.for("@libp2p/peer-id");function Re(r){return!!r?.[Co]}var ua=Symbol.for("@libp2p/peer-routing");var fa="keep-alive";var Jb=Symbol.for("@libp2p/transport");var We;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(We||(We={}));var Qt=class extends Error{static name="AbortError";constructor(t="The operation was aborted"){super(t),this.name="AbortError"}};var k=class extends Error{static name="InvalidParametersError";constructor(t="Invalid parameters"){super(t),this.name="InvalidParametersError"}},Tr=class extends Error{static name="InvalidPublicKeyError";constructor(t="Invalid public key"){super(t),this.name="InvalidPublicKeyError"}},mn=class extends Error{static name="InvalidPrivateKeyError";constructor(t="Invalid private key"){super(t),this.name="InvalidPrivateKeyError"}};var To=class extends Error{static name="ConnectionClosingError";constructor(t="The connection is closing"){super(t),this.name="ConnectionClosingError"}},Pr=class extends Error{static name="ConnectionClosedError";constructor(t="The connection is closed"){super(t),this.name="ConnectionClosedError"}};var Ge=class extends Error{static name="NotFoundError";constructor(t="Not found"){super(t),this.name="NotFoundError"}},Lr=class extends Error{static name="InvalidPeerIdError";constructor(t="Invalid PeerID"){super(t),this.name="InvalidPeerIdError"}},ke=class extends Error{static name="InvalidMultiaddrError";constructor(t="Invalid multiaddr"){super(t),this.name="InvalidMultiaddrError"}},Po=class extends Error{static name="InvalidCIDError";constructor(t="Invalid CID"){super(t),this.name="InvalidCIDError"}},Lo=class extends Error{static name="InvalidMultihashError";constructor(t="Invalid Multihash"){super(t),this.name="InvalidMultihashError"}},gn=class extends Error{static name="UnsupportedProtocolError";constructor(t="Unsupported protocol error"){super(t),this.name="UnsupportedProtocolError"}},Do=class extends Error{static name="InvalidMessageError";constructor(t="Invalid message"){super(t),this.name="InvalidMessageError"}};var Ro=class extends Error{static name="TimeoutError";constructor(t="Timed out"){super(t),this.name="TimeoutError"}},ge=class extends Error{static name="NotStartedError";constructor(t="Not started"){super(t),this.name="NotStartedError"}};var Dr=class extends Error{static name="DialError";constructor(t="Dial error"){super(t),this.name="DialError"}};var Rr=class extends Error{static name="LimitedConnectionError";constructor(t="Limited connection"){super(t),this.name="LimitedConnectionError"}},ko=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(t="Too many inbound protocol streams"){super(t),this.name="TooManyInboundProtocolStreamsError"}},Mo=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(t="Too many outbound protocol streams"){super(t),this.name="TooManyOutboundProtocolStreamsError"}},Me=class extends Error{static name="UnsupportedKeyTypeError";constructor(t="Unsupported key type"){super(t),this.name="UnsupportedKeyTypeError"}};var Vt=class extends EventTarget{#t=new Map;constructor(){super()}listenerCount(t){let e=this.#t.get(t);return e==null?0:e.length}addEventListener(t,e,n){super.addEventListener(t,e,n);let o=this.#t.get(t);o==null&&(o=[],this.#t.set(t,o)),o.push({callback:e,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(t,e,n){super.removeEventListener(t.toString(),e??null,n);let o=this.#t.get(t);o!=null&&(o=o.filter(({callback:s})=>s!==e),this.#t.set(t,o))}dispatchEvent(t){let e=super.dispatchEvent(t),n=this.#t.get(t.type);return n==null||(n=n.filter(({once:o})=>!o),this.#t.set(t.type,n)),e}safeDispatchEvent(t,e={}){return this.dispatchEvent(new CustomEvent(t,e))}};function Oo(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Au(...r){let t=[];for(let e of r)Oo(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStart!=null&&await e.beforeStart()})),await Promise.all(t.map(async e=>{await e.start()})),await Promise.all(t.map(async e=>{e.afterStart!=null&&await e.afterStart()}))}async function Su(...r){let t=[];for(let e of r)Oo(e)&&t.push(e);await Promise.all(t.map(async e=>{e.beforeStop!=null&&await e.beforeStop()})),await Promise.all(t.map(async e=>{await e.stop()})),await Promise.all(t.map(async e=>{e.afterStop!=null&&await e.afterStop()}))}var yn=Symbol.for("@libp2p/service-capabilities"),da=Symbol.for("@libp2p/service-dependencies");var ya={};Kt(ya,{base58btc:()=>j,base58flickr:()=>Dp});var _w=new Uint8Array(0);function _u(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ye(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 Iu(r){return new TextEncoder().encode(r)}function Cu(r){return new TextDecoder().decode(r)}function _p(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(e[i]!==255)throw new TypeError(s+" is ambiguous");e[i]=o}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function f(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var g=0,b=0,v=0,C=h.length;v!==C&&h[v]===0;)v++,g++;for(var x=(C-v)*l+1>>>0,p=new Uint8Array(x);v!==C;){for(var w=h[v],T=0,P=x-1;(w!==0||T<b)&&P!==-1;P--,T++)w+=256*p[P]>>>0,p[P]=w%a>>>0,w=w/a>>>0;if(w!==0)throw new Error("Non-zero carry");b=T,v++}for(var D=x-b;D!==x&&p[D]===0;)D++;for(var F=c.repeat(g);D<x;++D)F+=r.charAt(p[D]);return F}function d(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var g=0;if(h[g]!==" "){for(var b=0,v=0;h[g]===c;)b++,g++;for(var C=(h.length-g)*u+1>>>0,x=new Uint8Array(C);h[g];){var p=e[h.charCodeAt(g)];if(p===255)return;for(var w=0,T=C-1;(p!==0||w<v)&&T!==-1;T--,w++)p+=a*x[T]>>>0,x[T]=p%256>>>0,p=p/256>>>0;if(p!==0)throw new Error("Non-zero carry");v=w,g++}if(h[g]!==" "){for(var P=C-v;P!==C&&x[P]===0;)P++;for(var D=new Uint8Array(b+(C-P)),F=b;P!==C;)D[F++]=x[P++];return D}}}function m(h){var g=d(h);if(g)return g;throw new Error(`Non-${t} character`)}return{encode:f,decodeUnsafe:d,decode:m}}var Ip=_p,Cp=Ip,Pu=Cp;var ha=class{name;prefix;baseEncode;constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},pa=class{name;prefix;baseDecode;prefixCodePoint;constructor(t,e,n){this.name=t,this.prefix=e;let o=e.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Lu(this,t)}},ma=class{decoders;constructor(t){this.decoders=t}or(t){return Lu(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n!=null)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function Lu(r,t){return new ma({...r.decoders??{[r.prefix]:r},...t.decoders??{[t.prefix]:t}})}var ga=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new ha(t,e,n),this.decoder=new pa(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}};function kr({name:r,prefix:t,encode:e,decode:n}){return new ga(r,t,e,n)}function Oe({name:r,prefix:t,alphabet:e}){let{encode:n,decode:o}=Pu(e,r);return kr({prefix:t,name:r,encode:n,decode:s=>ye(o(s))})}function Tp(r,t,e,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*e/8|0),i=0,a=0,c=0;for(let u=0;u<o;++u){let l=t[r[u]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<e|l,i+=e,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=e||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function Pp(r,t,e){let n=t[t.length-1]==="=",o=(1<<e)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>e;)i-=e,s+=t[o&a>>i];if(i!==0&&(s+=t[o&a<<e-i]),n)for(;(s.length*e&7)!==0;)s+="=";return s}function Lp(r){let t={};for(let e=0;e<r.length;++e)t[r[e]]=e;return t}function at({name:r,prefix:t,bitsPerChar:e,alphabet:n}){let o=Lp(n);return kr({prefix:t,name:r,encode(s){return Pp(s,n,e)},decode(s){return Tp(s,o,e,r)}})}var j=Oe({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Dp=Oe({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ba={};Kt(ba,{base32:()=>Ht,base32hex:()=>Op,base32hexpad:()=>Bp,base32hexpadupper:()=>Fp,base32hexupper:()=>Np,base32pad:()=>kp,base32padupper:()=>Mp,base32upper:()=>Rp,base32z:()=>Up});var Ht=at({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Rp=at({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),kp=at({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Mp=at({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Op=at({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Np=at({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Bp=at({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Fp=at({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Up=at({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var wa={};Kt(wa,{base36:()=>bn,base36upper:()=>Kp});var bn=Oe({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Kp=Oe({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var qp=ku,Du=128,zp=127,Vp=~zp,Hp=Math.pow(2,31);function ku(r,t,e){t=t||[],e=e||0;for(var n=e;r>=Hp;)t[e++]=r&255|Du,r/=128;for(;r&Vp;)t[e++]=r&255|Du,r>>>=7;return t[e]=r|0,ku.bytes=e-n+1,t}var $p=xa,Wp=128,Ru=127;function xa(r,n){var e=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw xa.bytes=0,new RangeError("Could not decode varint");i=r[s++],e+=o<28?(i&Ru)<<o:(i&Ru)*Math.pow(2,o),o+=7}while(i>=Wp);return xa.bytes=s-n,e}var Gp=Math.pow(2,7),jp=Math.pow(2,14),Xp=Math.pow(2,21),Yp=Math.pow(2,28),Zp=Math.pow(2,35),Qp=Math.pow(2,42),Jp=Math.pow(2,49),tm=Math.pow(2,56),em=Math.pow(2,63),rm=function(r){return r<Gp?1:r<jp?2:r<Xp?3:r<Yp?4:r<Zp?5:r<Qp?6:r<Jp?7:r<tm?8:r<em?9:10},nm={encode:qp,decode:$p,encodingLength:rm},om=nm,wn=om;function xn(r,t=0){return[wn.decode(r,t),wn.decode.bytes]}function Mr(r,t,e=0){return wn.encode(r,t,e),t}function Or(r){return wn.encodingLength(r)}function Jt(r,t){let e=t.byteLength,n=Or(r),o=n+Or(e),s=new Uint8Array(o+e);return Mr(r,s,0),Mr(e,s,n),s.set(t,o),new Nr(r,e,t,s)}function te(r){let t=ye(r),[e,n]=xn(t),[o,s]=xn(t.subarray(n)),i=t.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Nr(e,o,i,t)}function Mu(r,t){if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&_u(r.bytes,e.bytes)}}var Nr=class{code;size;digest;bytes;constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};function Ou(r,t){let{bytes:e,version:n}=r;switch(n){case 0:return im(e,Ea(r),t??j.encoder);default:return am(e,Ea(r),t??Ht.encoder)}}var Nu=new WeakMap;function Ea(r){let t=Nu.get(r);if(t==null){let e=new Map;return Nu.set(r,e),e}return t}var it=class r{code;version;multihash;bytes;"/";constructor(t,e,n,o){this.code=e,this.version=t,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:t,multihash:e}=this;if(t!==En)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==cm)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=Jt(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n!=null&&t.code===n.code&&t.version===n.version&&Mu(t.multihash,n.multihash)}toString(t){return Ou(this,t)}toJSON(){return{"/":Ou(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:s,bytes:i}=e;return new r(n,o,s,i??Bu(n,o,s.bytes))}else if(e[lm]===!0){let{version:n,multihash:o,code:s}=e,i=te(o);return r.create(n,s,i)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==En)throw new Error(`Version 0 CID must use dag-pb (code: ${En}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=Bu(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,En,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length!==0)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=ye(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let s=o.subarray(e.multihashSize-e.digestSize),i=new Nr(e.multihashCode,e.digestSize,s,o);return[e.version===0?r.createV0(i):r.createV1(e.codec,i),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[f,d]=xn(t.subarray(e));return e+=d,f},o=n(),s=En;if(o===18?(o=0,e=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=e,a=n(),c=n(),u=e+c,l=u-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:l,size:u}}static parse(t,e){let[n,o]=sm(t,e),s=r.decode(o);if(s.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Ea(s).set(n,t),s}};function sm(r,t){switch(r[0]){case"Q":{let e=t??j;return[j.prefix,e.decode(`${j.prefix}${r}`)]}case j.prefix:{let e=t??j;return[j.prefix,e.decode(r)]}case Ht.prefix:{let e=t??Ht;return[Ht.prefix,e.decode(r)]}case bn.prefix:{let e=t??bn;return[bn.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}}function im(r,t,e){let{prefix:n}=e;if(n!==j.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let s=e.encode(r).slice(1);return t.set(n,s),s}else return o}function am(r,t,e){let{prefix:n}=e,o=t.get(n);if(o==null){let s=e.encode(r);return t.set(n,s),s}else return o}var En=112,cm=18;function Bu(r,t,e){let n=Or(r),o=n+Or(t),s=new Uint8Array(o+e.byteLength);return Mr(r,s,0),Mr(t,s,n),s.set(e,o),s}var lm=Symbol.for("@ipld/js-cid/CID");var va={};Kt(va,{identity:()=>ee});var Fu=0,um="identity",Uu=ye;function fm(r){return Jt(Fu,Uu(r))}var ee={code:Fu,name:um,encode:Uu,digest:fm};function tt(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}function ct(r=0){return new Uint8Array(r)}function St(r=0){return new Uint8Array(r)}function Dt(r,t){t==null&&(t=r.reduce((o,s)=>o+s.length,0));let e=St(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return e}var qu=Symbol.for("@achingbrain/uint8arraylist");function Ku(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function Bo(r){return!!r?.[qu]}var Y=class r{bufs;length;[qu]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(Bo(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(Bo(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Ku(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Ku(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(Bo(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return Dt(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:Dt(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),s=new r;return s.length=o,s.bufs=[...n],s}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],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,t>=c)continue;let u=t>=a&&t<c,l=e>a&&e<=c;if(u&&l){if(t===a&&e===c){n.push(i);break}let f=t-a;n.push(i.subarray(f,f+(e-t)));break}if(u){if(t===0){n.push(i);continue}n.push(i.subarray(t-a));continue}if(l){if(e===c){n.push(i);break}n.push(i.subarray(0,e-a));break}n.push(i)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!Bo(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let 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 f=0;f<s;f++)i[f]=-1;for(let f=0;f<o;f++)i[n[f]]=f;let a=i,c=this.byteLength-n.byteLength,u=n.byteLength-1,l;for(let f=e;f<=c;f+=l){l=0;for(let d=u;d>=0;d--){let m=this.get(f+d);if(n[d]!==m){l=Math.max(1,d-a[m]);break}}if(l===0)return f}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=St(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=ct(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=St(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=ct(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=ct(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=ct(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!tt(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,s)=>o+s.byteLength,0)),n.length=e,n}};var Aa={};Kt(Aa,{base10:()=>dm});var dm=Oe({prefix:"9",name:"base10",alphabet:"0123456789"});var Sa={};Kt(Sa,{base16:()=>hm,base16upper:()=>pm});var hm=at({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),pm=at({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var _a={};Kt(_a,{base2:()=>mm});var mm=at({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ia={};Kt(Ia,{base256emoji:()=>xm});var zu=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}"),gm=zu.reduce((r,t,e)=>(r[e]=t,r),[]),ym=zu.reduce((r,t,e)=>{let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);return r[n]=e,r},[]);function bm(r){return r.reduce((t,e)=>(t+=gm[e],t),"")}function wm(r){let t=[];for(let e of r){let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);let o=ym[n];if(o==null)throw new Error(`Non-base256emoji character: ${e}`);t.push(o)}return new Uint8Array(t)}var xm=kr({prefix:"\u{1F680}",name:"base256emoji",encode:bm,decode:wm});var Pa={};Kt(Pa,{base64:()=>Ca,base64pad:()=>Em,base64url:()=>Ta,base64urlpad:()=>vm});var Ca=at({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Em=at({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Ta=at({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),vm=at({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var La={};Kt(La,{base8:()=>Am});var Am=at({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Da={};Kt(Da,{identity:()=>Sm});var Sm=kr({prefix:"\0",name:"identity",encode:r=>Cu(r),decode:r=>Iu(r)});var cx=new TextEncoder,lx=new TextDecoder;var Ma={};Kt(Ma,{sha256:()=>Br,sha512:()=>Cm});function ka({name:r,code:t,encode:e}){return new Ra(r,t,e)}var Ra=class{name;code;encode;constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?Jt(this.code,e):e.then(n=>Jt(this.code,n))}else throw Error("Unknown type, must be binary type")}};function Hu(r){return async t=>new Uint8Array(await crypto.subtle.digest(r,t))}var Br=ka({name:"sha2-256",code:18,encode:Hu("SHA-256")}),Cm=ka({name:"sha2-512",code:19,encode:Hu("SHA-512")});var vn={...Da,..._a,...La,...Aa,...Sa,...ba,...wa,...ya,...Pa,...Ia},Ex={...Ma,...va};function Wu(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var $u=Wu("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Oa=Wu("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=St(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Tm={utf8:$u,"utf-8":$u,hex:vn.base16,latin1:Oa,ascii:Oa,binary:Oa,...vn},Fo=Tm;function L(r,t="utf8"){let e=Fo[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.decoder.decode(`${e.prefix}${r}`)}function B(r,t="utf8"){let e=Fo[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return e.encoder.encode(r).substring(1)}var Pm=parseInt("11111",2),Na=parseInt("10000000",2),Lm=parseInt("01111111",2),Gu={0:An,1:An,2:Dm,3:Mm,4:Om,5:km,6:Rm,16:An,22:An,48:An};function we(r,t={offset:0}){let e=r[t.offset]&Pm;if(t.offset++,Gu[e]!=null)return Gu[e](r,t);throw new Error("No decoder for tag "+e)}function Sn(r,t){let e=0;if((r[t.offset]&Na)===Na){let n=r[t.offset]&Lm,o="0x";t.offset++;for(let s=0;s<n;s++,t.offset++)o+=r[t.offset].toString(16).padStart(2,"0");e=parseInt(o,16)}else e=r[t.offset],t.offset++;return e}function An(r,t){Sn(r,t);let e=[];for(;!(t.offset>=r.byteLength);){let n=we(r,t);if(n===null)break;e.push(n)}return e}function Dm(r,t){let e=Sn(r,t),n=t.offset,o=t.offset+e,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return t.offset+=e,Uint8Array.from(s)}function Rm(r,t){let e=Sn(r,t),n=t.offset+e,o=r[t.offset];t.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(;t.offset<n;){let u=r[t.offset];if(t.offset++,c.push(u&127),u<128){c.reverse();let l=0;for(let f=0;f<c.length;f++)l+=c[f]<<f*7;a+=`.${l}`,c=[]}}return a}function km(r,t){return t.offset++,null}function Mm(r,t){let e=Sn(r,t),n=r[t.offset];t.offset++;let o=r.subarray(t.offset,t.offset+e-1);if(t.offset+=e,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function Om(r,t){let e=Sn(r,t),n=r.subarray(t.offset,t.offset+e);return t.offset+=e,n}function Nm(r){let t=r.toString(16);t.length%2===1&&(t="0"+t);let e=new Y;for(let n=0;n<t.length;n+=2)e.append(Uint8Array.from([parseInt(`${t[n]}${t[n+1]}`,16)]));return e}function Uo(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let t=Nm(r.byteLength);return new Y(Uint8Array.from([t.byteLength|Na]),t)}function Rt(r){let t=new Y,e=128;return(r.subarray()[0]&e)===e&&t.append(Uint8Array.from([0])),t.append(r),new Y(Uint8Array.from([2]),Uo(t),t)}function _n(r){let t=Uint8Array.from([0]),e=new Y(t,r);return new Y(Uint8Array.from([3]),Uo(e),e)}function ju(r){return new Y(Uint8Array.from([4]),Uo(r),r)}function re(r,t=48){let e=new Y;for(let n of r)e.append(n);return new Y(Uint8Array.from([t]),Uo(e),e)}async function Xu(r="P-256"){let t=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",t.publicKey),privateKey:await crypto.subtle.exportKey("jwk",t.privateKey)}}async function Yu(r,t,e){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);e?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,t.subarray());return e?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function Zu(r,t,e,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,t,e.subarray());return n?.signal?.throwIfAborted(),s}var Bm=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),Fm=Uint8Array.from([6,5,43,129,4,0,34]),Um=Uint8Array.from([6,5,43,129,4,0,35]),Km={ext:!0,kty:"EC",crv:"P-256"},qm={ext:!0,kty:"EC",crv:"P-384"},zm={ext:!0,kty:"EC",crv:"P-521"},Ba=32,Fa=48,Ua=66;function Ka(r){let t=we(r);return Qu(t)}function Qu(r){let t=r[1][1][0],e=1,n,o;if(t.byteLength===Ba*2+1)return n=B(t.subarray(e,e+Ba),"base64url"),o=B(t.subarray(e+Ba),"base64url"),new je({...Km,key_ops:["verify"],x:n,y:o});if(t.byteLength===Fa*2+1)return n=B(t.subarray(e,e+Fa),"base64url"),o=B(t.subarray(e+Fa),"base64url"),new je({...qm,key_ops:["verify"],x:n,y:o});if(t.byteLength===Ua*2+1)return n=B(t.subarray(e,e+Ua),"base64url"),o=B(t.subarray(e+Ua),"base64url"),new je({...zm,key_ops:["verify"],x:n,y:o});throw new k(`coordinates were wrong length, got ${t.byteLength}, expected 65, 97 or 133`)}function Ju(r){return re([Rt(Uint8Array.from([1])),ju(L(r.d??"","base64url")),re([ef(r.crv)],160),re([_n(new Y(Uint8Array.from([4]),L(r.x??"","base64url"),L(r.y??"","base64url")))],161)]).subarray()}function tf(r){return re([Rt(Uint8Array.from([1])),re([ef(r.crv)],160),re([_n(new Y(Uint8Array.from([4]),L(r.x??"","base64url"),L(r.y??"","base64url")))],161)]).subarray()}function ef(r){if(r==="P-256")return Bm;if(r==="P-384")return Fm;if(r==="P-521")return Um;throw new k(`Invalid curve ${r}`)}async function rf(r="P-256"){let t=await Xu(r);return new Ko(t.privateKey)}var je=class{type="ECDSA";jwk;_raw;constructor(t){this.jwk=t}get raw(){return this._raw==null&&(this._raw=tf(this.jwk)),this._raw}toMultihash(){return ee.digest(jt(this))}toCID(){return it.createV1(114,this.toMultihash())}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}async verify(t,e,n){return Zu(this.jwk,e,t,n)}},Ko=class{type="ECDSA";jwk;publicKey;_raw;constructor(t){this.jwk=t,this.publicKey=new je({crv:t.crv,ext:t.ext,key_ops:["verify"],kty:"EC",x:t.x,y:t.y})}get raw(){return this._raw==null&&(this._raw=Ju(this.jwk)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}async sign(t,e){return Yu(this.jwk,t,e)}};var Xe=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function Vm(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function qo(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function Ye(r,...t){if(!Vm(r))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(r.length))throw new Error("Uint8Array expected of length "+t+", got length="+r.length)}function nf(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");qo(r.outputLen),qo(r.blockLen)}function Ur(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function of(r,t){Ye(r);let e=t.outputLen;if(r.length<e)throw new Error("digestInto() expects output buffer of length at least "+e)}function xe(...r){for(let t=0;t<r.length;t++)r[t].fill(0)}function zo(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function ne(r,t){return r<<32-t|r>>>t}function sf(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function In(r){return typeof r=="string"&&(r=sf(r)),Ye(r),r}function qa(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];Ye(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}var Fr=class{};function za(r){let t=n=>r().update(In(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function Kr(r=32){if(Xe&&typeof Xe.getRandomValues=="function")return Xe.getRandomValues(new Uint8Array(r));if(Xe&&typeof Xe.randomBytes=="function")return Uint8Array.from(Xe.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function Hm(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(e>>o&s),a=Number(e&s),c=n?4:0,u=n?0:4;r.setUint32(t+c,i,n),r.setUint32(t+u,a,n)}function af(r,t,e){return r&t^~r&e}function cf(r,t,e){return r&t^r&e^t&e}var Cn=class extends Fr{constructor(t,e,n,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(t),this.view=zo(this.buffer)}update(t){Ur(this),t=In(t),Ye(t);let{view:e,buffer:n,blockLen:o}=this,s=t.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=zo(t);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(t.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Ur(this),of(t,this),this.finished=!0;let{buffer:e,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;e[i++]=128,xe(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let f=i;f<o;f++)e[f]=0;Hm(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=zo(t),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<u;f++)a.setUint32(4*f,l[f],s)}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return t.destroyed=i,t.finished=s,t.length=o,t.pos=a,o%e&&t.buffer.set(n),t}clone(){return this._cloneInto()}},Ee=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var xt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Vo=BigInt(4294967295),lf=BigInt(32);function $m(r,t=!1){return t?{h:Number(r&Vo),l:Number(r>>lf&Vo)}:{h:Number(r>>lf&Vo)|0,l:Number(r&Vo)|0}}function uf(r,t=!1){let e=r.length,n=new Uint32Array(e),o=new Uint32Array(e);for(let s=0;s<e;s++){let{h:i,l:a}=$m(r[s],t);[n[s],o[s]]=[i,a]}return[n,o]}var Va=(r,t,e)=>r>>>e,Ha=(r,t,e)=>r<<32-e|t>>>e,Ze=(r,t,e)=>r>>>e|t<<32-e,Qe=(r,t,e)=>r<<32-e|t>>>e,Tn=(r,t,e)=>r<<64-e|t>>>e-32,Pn=(r,t,e)=>r>>>e-32|t<<64-e;function ue(r,t,e,n){let o=(t>>>0)+(n>>>0);return{h:r+e+(o/2**32|0)|0,l:o|0}}var ff=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),df=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,hf=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),pf=(r,t,e,n,o)=>t+e+n+o+(r/2**32|0)|0,mf=(r,t,e,n,o)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(o>>>0),gf=(r,t,e,n,o,s)=>t+e+n+o+s+(r/2**32|0)|0;var Gm=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]),Ne=new Uint32Array(64),Ho=class extends Cn{constructor(t=32){super(64,t,8,!1),this.A=Ee[0]|0,this.B=Ee[1]|0,this.C=Ee[2]|0,this.D=Ee[3]|0,this.E=Ee[4]|0,this.F=Ee[5]|0,this.G=Ee[6]|0,this.H=Ee[7]|0}get(){let{A:t,B:e,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[t,e,n,o,s,i,a,c]}set(t,e,n,o,s,i,a,c){this.A=t|0,this.B=e|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(t,e){for(let f=0;f<16;f++,e+=4)Ne[f]=t.getUint32(e,!1);for(let f=16;f<64;f++){let d=Ne[f-15],m=Ne[f-2],h=ne(d,7)^ne(d,18)^d>>>3,g=ne(m,17)^ne(m,19)^m>>>10;Ne[f]=g+Ne[f-7]+h+Ne[f-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:u,H:l}=this;for(let f=0;f<64;f++){let d=ne(a,6)^ne(a,11)^ne(a,25),m=l+d+af(a,c,u)+Gm[f]+Ne[f]|0,g=(ne(n,2)^ne(n,13)^ne(n,22))+cf(n,o,s)|0;l=u,u=c,c=a,a=i+m|0,i=s,s=o,o=n,n=m+g|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,u=u+this.G|0,l=l+this.H|0,this.set(n,o,s,i,a,c,u,l)}roundClean(){xe(Ne)}destroy(){this.set(0,0,0,0,0,0,0,0),xe(this.buffer)}};var yf=uf(["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))),jm=yf[0],Xm=yf[1],Be=new Uint32Array(80),Fe=new Uint32Array(80),$a=class extends Cn{constructor(t=64){super(128,t,16,!1),this.Ah=xt[0]|0,this.Al=xt[1]|0,this.Bh=xt[2]|0,this.Bl=xt[3]|0,this.Ch=xt[4]|0,this.Cl=xt[5]|0,this.Dh=xt[6]|0,this.Dl=xt[7]|0,this.Eh=xt[8]|0,this.El=xt[9]|0,this.Fh=xt[10]|0,this.Fl=xt[11]|0,this.Gh=xt[12]|0,this.Gl=xt[13]|0,this.Hh=xt[14]|0,this.Hl=xt[15]|0}get(){let{Ah:t,Al:e,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:u,El:l,Fh:f,Fl:d,Gh:m,Gl:h,Hh:g,Hl:b}=this;return[t,e,n,o,s,i,a,c,u,l,f,d,m,h,g,b]}set(t,e,n,o,s,i,a,c,u,l,f,d,m,h,g,b){this.Ah=t|0,this.Al=e|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=u|0,this.El=l|0,this.Fh=f|0,this.Fl=d|0,this.Gh=m|0,this.Gl=h|0,this.Hh=g|0,this.Hl=b|0}process(t,e){for(let x=0;x<16;x++,e+=4)Be[x]=t.getUint32(e),Fe[x]=t.getUint32(e+=4);for(let x=16;x<80;x++){let p=Be[x-15]|0,w=Fe[x-15]|0,T=Ze(p,w,1)^Ze(p,w,8)^Va(p,w,7),P=Qe(p,w,1)^Qe(p,w,8)^Ha(p,w,7),D=Be[x-2]|0,F=Fe[x-2]|0,q=Ze(D,F,19)^Tn(D,F,61)^Va(D,F,6),M=Qe(D,F,19)^Pn(D,F,61)^Ha(D,F,6),U=hf(P,M,Fe[x-7],Fe[x-16]),N=pf(U,T,q,Be[x-7],Be[x-16]);Be[x]=N|0,Fe[x]=U|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:u,Dl:l,Eh:f,El:d,Fh:m,Fl:h,Gh:g,Gl:b,Hh:v,Hl:C}=this;for(let x=0;x<80;x++){let p=Ze(f,d,14)^Ze(f,d,18)^Tn(f,d,41),w=Qe(f,d,14)^Qe(f,d,18)^Pn(f,d,41),T=f&m^~f&g,P=d&h^~d&b,D=mf(C,w,P,Xm[x],Fe[x]),F=gf(D,v,p,T,jm[x],Be[x]),q=D|0,M=Ze(n,o,28)^Tn(n,o,34)^Tn(n,o,39),U=Qe(n,o,28)^Pn(n,o,34)^Pn(n,o,39),N=n&s^n&a^s&a,ht=o&i^o&c^i&c;v=g|0,C=b|0,g=m|0,b=h|0,m=f|0,h=d|0,{h:f,l:d}=ue(u|0,l|0,F|0,q|0),u=a|0,l=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let _=ff(q,U,ht);n=df(_,F,M,N),o=_|0}({h:n,l:o}=ue(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=ue(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=ue(this.Ch|0,this.Cl|0,a|0,c|0),{h:u,l}=ue(this.Dh|0,this.Dl|0,u|0,l|0),{h:f,l:d}=ue(this.Eh|0,this.El|0,f|0,d|0),{h:m,l:h}=ue(this.Fh|0,this.Fl|0,m|0,h|0),{h:g,l:b}=ue(this.Gh|0,this.Gl|0,g|0,b|0),{h:v,l:C}=ue(this.Hh|0,this.Hl|0,v|0,C|0),this.set(n,o,s,i,a,c,u,l,f,d,m,h,g,b,v,C)}roundClean(){xe(Be,Fe)}destroy(){xe(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var $o=za(()=>new Ho);var bf=za(()=>new $a);var Xa=BigInt(0),ja=BigInt(1);function qr(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Ya(r){if(!qr(r))throw new Error("Uint8Array expected")}function fe(r,t){if(typeof t!="boolean")throw new Error(r+" boolean expected, got "+t)}function Ln(r){let t=r.toString(16);return t.length&1?"0"+t:t}function Ef(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Xa:BigInt("0x"+r)}var vf=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Ym=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function Ue(r){if(Ya(r),vf)return r.toHex();let t="";for(let e=0;e<r.length;e++)t+=Ym[r[e]];return t}var ve={_0:48,_9:57,A:65,F:70,a:97,f:102};function wf(r){if(r>=ve._0&&r<=ve._9)return r-ve._0;if(r>=ve.A&&r<=ve.F)return r-(ve.A-10);if(r>=ve.a&&r<=ve.f)return r-(ve.a-10)}function Dn(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(vf)return Uint8Array.fromHex(r);let t=r.length,e=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(e);for(let o=0,s=0;o<e;o++,s+=2){let i=wf(r.charCodeAt(s)),a=wf(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}function Ae(r){return Ef(Ue(r))}function Je(r){return Ya(r),Ef(Ue(Uint8Array.from(r).reverse()))}function tr(r,t){return Dn(r.toString(16).padStart(t*2,"0"))}function zr(r,t){return tr(r,t).reverse()}function nt(r,t,e){let n;if(typeof t=="string")try{n=Dn(t)}catch(s){throw new Error(r+" must be hex string or Uint8Array, cause: "+s)}else if(qr(t))n=Uint8Array.from(t);else throw new Error(r+" must be hex string or Uint8Array");let o=n.length;if(typeof e=="number"&&o!==e)throw new Error(r+" of length "+e+" expected, got "+o);return n}function Ke(...r){let t=0;for(let n=0;n<r.length;n++){let o=r[n];Ya(o),t+=o.length}let e=new Uint8Array(t);for(let n=0,o=0;n<r.length;n++){let s=r[n];e.set(s,o),o+=s.length}return e}var Wa=r=>typeof r=="bigint"&&Xa<=r;function Wo(r,t,e){return Wa(r)&&Wa(t)&&Wa(e)&&t<=r&&r<e}function $t(r,t,e,n){if(!Wo(t,e,n))throw new Error("expected valid "+r+": "+e+" <= n < "+n+", got "+t)}function Af(r){let t;for(t=0;r>Xa;r>>=ja,t+=1);return t}var er=r=>(ja<<BigInt(r))-ja,Ga=r=>new Uint8Array(r),xf=r=>Uint8Array.from(r);function Sf(r,t,e){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof t!="number"||t<2)throw new Error("qByteLen must be a number");if(typeof e!="function")throw new Error("hmacFn must be a function");let n=Ga(r),o=Ga(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...f)=>e(o,n,...f),c=(f=Ga(0))=>{o=a(xf([0]),f),n=a(),f.length!==0&&(o=a(xf([1]),f),n=a())},u=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,d=[];for(;f<t;){n=a();let m=n.slice();d.push(m),f+=n.length}return Ke(...d)};return(f,d)=>{i(),c(f);let m;for(;!(m=d(u()));)c();return i(),m}}var Zm={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||qr(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,t)=>t.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function Se(r,t,e={}){let n=(o,s,i)=>{let a=Zm[s];if(typeof a!="function")throw new Error("invalid validator function");let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error("param "+String(o)+" is invalid. Expected "+s+", got "+c)};for(let[o,s]of Object.entries(t))n(o,s,!1);for(let[o,s]of Object.entries(e))n(o,s,!0);return r}function Vr(r){let t=new WeakMap;return(e,...n)=>{let o=t.get(e);if(o!==void 0)return o;let s=r(e,...n);return t.set(e,s),s}}var kt=BigInt(0),yt=BigInt(1),rr=BigInt(2),Qm=BigInt(3),If=BigInt(4),Cf=BigInt(5),Tf=BigInt(8);function rt(r,t){let e=r%t;return e>=kt?e:t+e}function ot(r,t,e){let n=r;for(;t-- >kt;)n*=n,n%=e;return n}function Go(r,t){if(r===kt)throw new Error("invert: expected non-zero number");if(t<=kt)throw new Error("invert: expected positive modulus, got "+t);let e=rt(r,t),n=t,o=kt,s=yt,i=yt,a=kt;for(;e!==kt;){let u=n/e,l=n%e,f=o-i*u,d=s-a*u;n=e,e=l,o=i,s=a,i=f,a=d}if(n!==yt)throw new Error("invert: does not exist");return rt(o,t)}function Pf(r,t){let e=(r.ORDER+yt)/If,n=r.pow(t,e);if(!r.eql(r.sqr(n),t))throw new Error("Cannot find square root");return n}function Jm(r,t){let e=(r.ORDER-Cf)/Tf,n=r.mul(t,rr),o=r.pow(n,e),s=r.mul(t,o),i=r.mul(r.mul(s,rr),o),a=r.mul(s,r.sub(i,r.ONE));if(!r.eql(r.sqr(a),t))throw new Error("Cannot find square root");return a}function tg(r){if(r<BigInt(3))throw new Error("sqrt is not defined for small field");let t=r-yt,e=0;for(;t%rr===kt;)t/=rr,e++;let n=rr,o=_e(r);for(;_f(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(e===1)return Pf;let s=o.pow(n,t),i=(t+yt)/rr;return function(c,u){if(c.is0(u))return u;if(_f(c,u)!==1)throw new Error("Cannot find square root");let l=e,f=c.mul(c.ONE,s),d=c.pow(u,t),m=c.pow(u,i);for(;!c.eql(d,c.ONE);){if(c.is0(d))return c.ZERO;let h=1,g=c.sqr(d);for(;!c.eql(g,c.ONE);)if(h++,g=c.sqr(g),h===l)throw new Error("Cannot find square root");let b=yt<<BigInt(l-h-1),v=c.pow(f,b);l=h,f=c.sqr(v),d=c.mul(d,f),m=c.mul(m,v)}return m}}function eg(r){return r%If===Qm?Pf:r%Tf===Cf?Jm:tg(r)}var Lf=(r,t)=>(rt(r,t)&yt)===yt,rg=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Za(r){let t={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},e=rg.reduce((n,o)=>(n[o]="function",n),t);return Se(r,e)}function ng(r,t,e){if(e<kt)throw new Error("invalid exponent, negatives unsupported");if(e===kt)return r.ONE;if(e===yt)return t;let n=r.ONE,o=t;for(;e>kt;)e&yt&&(n=r.mul(n,o)),o=r.sqr(o),e>>=yt;return n}function Hr(r,t,e=!1){let n=new Array(t.length).fill(e?r.ZERO:void 0),o=t.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return t.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function _f(r,t){let e=(r.ORDER-yt)/rr,n=r.pow(t,e),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function Qa(r,t){t!==void 0&&qo(t);let e=t!==void 0?t:r.toString(2).length,n=Math.ceil(e/8);return{nBitLength:e,nByteLength:n}}function _e(r,t,e=!1,n={}){if(r<=kt)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:o,nByteLength:s}=Qa(r,t);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let i,a=Object.freeze({ORDER:r,isLE:e,BITS:o,BYTES:s,MASK:er(o),ZERO:kt,ONE:yt,create:c=>rt(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return kt<=c&&c<r},is0:c=>c===kt,isOdd:c=>(c&yt)===yt,neg:c=>rt(-c,r),eql:(c,u)=>c===u,sqr:c=>rt(c*c,r),add:(c,u)=>rt(c+u,r),sub:(c,u)=>rt(c-u,r),mul:(c,u)=>rt(c*u,r),pow:(c,u)=>ng(a,c,u),div:(c,u)=>rt(c*Go(u,r),r),sqrN:c=>c*c,addN:(c,u)=>c+u,subN:(c,u)=>c-u,mulN:(c,u)=>c*u,inv:c=>Go(c,r),sqrt:n.sqrt||(c=>(i||(i=eg(r)),i(a,c))),toBytes:c=>e?zr(c,s):tr(c,s),fromBytes:c=>{if(c.length!==s)throw new Error("Field.fromBytes: expected "+s+" bytes, got "+c.length);return e?Je(c):Ae(c)},invertBatch:c=>Hr(a,c),cmov:(c,u,l)=>l?u:c});return Object.freeze(a)}function Df(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let t=r.toString(2).length;return Math.ceil(t/8)}function Ja(r){let t=Df(r);return t+Math.ceil(t/2)}function Rf(r,t,e=!1){let n=r.length,o=Df(t),s=Ja(t);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=e?Je(r):Ae(r),a=rt(i,t-yt)+yt;return e?zr(a,o):tr(a,o)}var kf=BigInt(0),oc=BigInt(1);function tc(r,t){let e=t.negate();return r?e:t}function Of(r,t){if(!Number.isSafeInteger(r)||r<=0||r>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+r)}function ec(r,t){Of(r,t);let e=Math.ceil(t/r)+1,n=2**(r-1),o=2**r,s=er(r),i=BigInt(r);return{windows:e,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function Mf(r,t,e){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=e,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=oc);let u=t*n,l=u+Math.abs(a)-1,f=a===0,d=a<0,m=t%2!==0;return{nextN:c,offset:l,isZero:f,isNeg:d,isNegF:m,offsetF:u}}function og(r,t){if(!Array.isArray(r))throw new Error("array expected");r.forEach((e,n)=>{if(!(e instanceof t))throw new Error("invalid point at index "+n)})}function sg(r,t){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((e,n)=>{if(!t.isValid(e))throw new Error("invalid scalar at index "+n)})}var rc=new WeakMap,Nf=new WeakMap;function nc(r){return Nf.get(r)||1}function jo(r,t){return{constTimeNegate:tc,hasPrecomputes(e){return nc(e)!==1},unsafeLadder(e,n,o=r.ZERO){let s=e;for(;n>kf;)n&oc&&(o=o.add(s)),s=s.double(),n>>=oc;return o},precomputeWindow(e,n){let{windows:o,windowSize:s}=ec(n,t),i=[],a=e,c=a;for(let u=0;u<o;u++){c=a,i.push(c);for(let l=1;l<s;l++)c=c.add(a),i.push(c);a=c.double()}return i},wNAF(e,n,o){let s=r.ZERO,i=r.BASE,a=ec(e,t);for(let c=0;c<a.windows;c++){let{nextN:u,offset:l,isZero:f,isNeg:d,isNegF:m,offsetF:h}=Mf(o,c,a);o=u,f?i=i.add(tc(m,n[h])):s=s.add(tc(d,n[l]))}return{p:s,f:i}},wNAFUnsafe(e,n,o,s=r.ZERO){let i=ec(e,t);for(let a=0;a<i.windows&&o!==kf;a++){let{nextN:c,offset:u,isZero:l,isNeg:f}=Mf(o,a,i);if(o=c,!l){let d=n[u];s=s.add(f?d.negate():d)}}return s},getPrecomputes(e,n,o){let s=rc.get(n);return s||(s=this.precomputeWindow(n,e),e!==1&&rc.set(n,o(s))),s},wNAFCached(e,n,o){let s=nc(e);return this.wNAF(s,this.getPrecomputes(s,e,o),n)},wNAFCachedUnsafe(e,n,o,s){let i=nc(e);return i===1?this.unsafeLadder(e,n,s):this.wNAFUnsafe(i,this.getPrecomputes(i,e,o),n,s)},setWindowSize(e,n){Of(n,t),Nf.set(e,n),rc.delete(e)}}}function Xo(r,t,e,n){og(e,r),sg(n,t);let o=e.length,s=n.length;if(o!==s)throw new Error("arrays of points and scalars must have equal length");let i=r.ZERO,a=Af(BigInt(o)),c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);let u=er(c),l=new Array(Number(u)+1).fill(i),f=Math.floor((t.BITS-1)/c)*c,d=i;for(let m=f;m>=0;m-=c){l.fill(i);for(let g=0;g<s;g++){let b=n[g],v=Number(b>>BigInt(m)&u);l[v]=l[v].add(e[g])}let h=i;for(let g=l.length-1,b=i;g>0;g--)b=b.add(l[g]),h=h.add(b);if(d=d.add(h),m!==0)for(let g=0;g<c;g++)d=d.double()}return d}function Rn(r){return Za(r.Fp),Se(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Qa(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var de=BigInt(0),Mt=BigInt(1),Bf=BigInt(2),ig=BigInt(8),ag={zip215:!0};function cg(r){let t=Rn(r);return Se(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...t})}function Ff(r){let t=cg(r),{Fp:e,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=t,u=Bf<<BigInt(a*8)-Mt,l=e.create,f=_e(t.n,t.nBitLength);function d(A,y){let E=e.sqr(A),I=e.sqr(y),O=e.add(e.mul(t.a,E),I),K=e.add(e.ONE,e.mul(t.d,e.mul(E,I)));return e.eql(O,K)}if(!d(t.Gx,t.Gy))throw new Error("bad curve params: generator point");let m=t.uvRatio||((A,y)=>{try{return{isValid:!0,value:e.sqrt(A*e.inv(y))}}catch{return{isValid:!1,value:de}}}),h=t.adjustScalarBytes||(A=>A),g=t.domain||((A,y,E)=>{if(fe("phflag",E),y.length||E)throw new Error("Contexts/pre-hash are not supported");return A});function b(A,y,E=!1){let I=E?Mt:de;$t("coordinate "+A,y,I,u)}function v(A){if(!(A instanceof p))throw new Error("ExtendedPoint expected")}let C=Vr((A,y)=>{let{ex:E,ey:I,ez:O}=A,K=A.is0();y==null&&(y=K?ig:e.inv(O));let V=l(E*y),$=l(I*y),X=l(O*y);if(K)return{x:de,y:Mt};if(X!==Mt)throw new Error("invZ was invalid");return{x:V,y:$}}),x=Vr(A=>{let{a:y,d:E}=t;if(A.is0())throw new Error("bad point: ZERO");let{ex:I,ey:O,ez:K,et:V}=A,$=l(I*I),X=l(O*O),J=l(K*K),pt=l(J*J),ut=l($*y),wt=l(J*l(ut+X)),Ut=l(pt+l(E*l($*X)));if(wt!==Ut)throw new Error("bad point: equation left != right (1)");let gt=l(I*O),At=l(K*V);if(gt!==At)throw new Error("bad point: equation left != right (2)");return!0});class p{constructor(y,E,I,O){b("x",y),b("y",E),b("z",I,!0),b("t",O),this.ex=y,this.ey=E,this.ez=I,this.et=O,Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(y){if(y instanceof p)throw new Error("extended point not allowed");let{x:E,y:I}=y||{};return b("x",E),b("y",I),new p(E,I,Mt,l(E*I))}static normalizeZ(y){let E=Hr(e,y.map(I=>I.ez));return y.map((I,O)=>I.toAffine(E[O])).map(p.fromAffine)}static msm(y,E){return Xo(p,f,y,E)}_setWindowSize(y){P.setWindowSize(this,y)}assertValidity(){x(this)}equals(y){v(y);let{ex:E,ey:I,ez:O}=this,{ex:K,ey:V,ez:$}=y,X=l(E*$),J=l(K*O),pt=l(I*$),ut=l(V*O);return X===J&&pt===ut}is0(){return this.equals(p.ZERO)}negate(){return new p(l(-this.ex),this.ey,this.ez,l(-this.et))}double(){let{a:y}=t,{ex:E,ey:I,ez:O}=this,K=l(E*E),V=l(I*I),$=l(Bf*l(O*O)),X=l(y*K),J=E+I,pt=l(l(J*J)-K-V),ut=X+V,wt=ut-$,Ut=X-V,gt=l(pt*wt),At=l(ut*Ut),zt=l(pt*Ut),Zt=l(wt*ut);return new p(gt,At,Zt,zt)}add(y){v(y);let{a:E,d:I}=t,{ex:O,ey:K,ez:V,et:$}=this,{ex:X,ey:J,ez:pt,et:ut}=y,wt=l(O*X),Ut=l(K*J),gt=l($*I*ut),At=l(V*pt),zt=l((O+K)*(X+J)-wt-Ut),Zt=At-gt,pn=At+gt,xu=l(Ut-E*wt),mp=l(zt*Zt),gp=l(pn*xu),yp=l(zt*xu),bp=l(Zt*pn);return new p(mp,gp,bp,yp)}subtract(y){return this.add(y.negate())}wNAF(y){return P.wNAFCached(this,y,p.normalizeZ)}multiply(y){let E=y;$t("scalar",E,Mt,n);let{p:I,f:O}=this.wNAF(E);return p.normalizeZ([I,O])[0]}multiplyUnsafe(y,E=p.ZERO){let I=y;return $t("scalar",I,de,n),I===de?T:this.is0()||I===Mt?this:P.wNAFCachedUnsafe(this,I,p.normalizeZ,E)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return P.unsafeLadder(this,n).is0()}toAffine(y){return C(this,y)}clearCofactor(){let{h:y}=t;return y===Mt?this:this.multiplyUnsafe(y)}static fromHex(y,E=!1){let{d:I,a:O}=t,K=e.BYTES;y=nt("pointHex",y,K),fe("zip215",E);let V=y.slice(),$=y[K-1];V[K-1]=$&-129;let X=Je(V),J=E?u:e.ORDER;$t("pointHex.y",X,de,J);let pt=l(X*X),ut=l(pt-Mt),wt=l(I*pt-O),{isValid:Ut,value:gt}=m(ut,wt);if(!Ut)throw new Error("Point.fromHex: invalid y coordinate");let At=(gt&Mt)===Mt,zt=($&128)!==0;if(!E&&gt===de&&zt)throw new Error("Point.fromHex: x=0 and x_0=1");return zt!==At&&(gt=l(-gt)),p.fromAffine({x:gt,y:X})}static fromPrivateKey(y){let{scalar:E}=q(y);return w.multiply(E)}toRawBytes(){let{x:y,y:E}=this.toAffine(),I=zr(E,e.BYTES);return I[I.length-1]|=y&Mt?128:0,I}toHex(){return Ue(this.toRawBytes())}}p.BASE=new p(t.Gx,t.Gy,Mt,l(t.Gx*t.Gy)),p.ZERO=new p(de,Mt,Mt,de);let{BASE:w,ZERO:T}=p,P=jo(p,a*8);function D(A){return rt(A,n)}function F(A){return D(Je(A))}function q(A){let y=e.BYTES;A=nt("private key",A,y);let E=nt("hashed private key",s(A),2*y),I=h(E.slice(0,y)),O=E.slice(y,2*y),K=F(I);return{head:I,prefix:O,scalar:K}}function M(A){let{head:y,prefix:E,scalar:I}=q(A),O=w.multiply(I),K=O.toRawBytes();return{head:y,prefix:E,scalar:I,point:O,pointBytes:K}}function U(A){return M(A).pointBytes}function N(A=Uint8Array.of(),...y){let E=Ke(...y);return F(s(g(E,nt("context",A),!!o)))}function ht(A,y,E={}){A=nt("message",A),o&&(A=o(A));let{prefix:I,scalar:O,pointBytes:K}=M(y),V=N(E.context,I,A),$=w.multiply(V).toRawBytes(),X=N(E.context,$,K,A),J=D(V+X*O);$t("signature.s",J,de,n);let pt=Ke($,zr(J,e.BYTES));return nt("result",pt,e.BYTES*2)}let _=ag;function S(A,y,E,I=_){let{context:O,zip215:K}=I,V=e.BYTES;A=nt("signature",A,2*V),y=nt("message",y),E=nt("publicKey",E,V),K!==void 0&&fe("zip215",K),o&&(y=o(y));let $=Je(A.slice(V,2*V)),X,J,pt;try{X=p.fromHex(E,K),J=p.fromHex(A.slice(0,V),K),pt=w.multiplyUnsafe($)}catch{return!1}if(!K&&X.isSmallOrder())return!1;let ut=N(O,J.toRawBytes(),X.toRawBytes(),y);return J.add(X.multiplyUnsafe(ut)).subtract(pt).clearCofactor().equals(p.ZERO)}return w._setWindowSize(8),{CURVE:t,getPublicKey:U,sign:ht,verify:S,ExtendedPoint:p,utils:{getExtendedPublicKey:M,randomPrivateKey:()=>i(e.BYTES),precompute(A=8,y=p.BASE){return y._setWindowSize(A),y.multiply(BigInt(3)),y}}}}var sc=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),Uf=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),E1=BigInt(0),lg=BigInt(1),Kf=BigInt(2),v1=BigInt(3),ug=BigInt(5),fg=BigInt(8);function dg(r){let t=BigInt(10),e=BigInt(20),n=BigInt(40),o=BigInt(80),s=sc,a=r*r%s*r%s,c=ot(a,Kf,s)*a%s,u=ot(c,lg,s)*r%s,l=ot(u,ug,s)*u%s,f=ot(l,t,s)*l%s,d=ot(f,e,s)*f%s,m=ot(d,n,s)*d%s,h=ot(m,o,s)*m%s,g=ot(h,o,s)*m%s,b=ot(g,t,s)*l%s;return{pow_p_5_8:ot(b,Kf,s)*r%s,b2:a}}function hg(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function pg(r,t){let e=sc,n=rt(t*t*t,e),o=rt(n*n*t,e),s=dg(r*o).pow_p_5_8,i=rt(r*n*s,e),a=rt(t*i*i,e),c=i,u=rt(i*Uf,e),l=a===r,f=a===rt(-r,e),d=a===rt(-r*Uf,e);return l&&(i=c),(f||d)&&(i=u),Lf(i,e)&&(i=rt(-i,e)),{isValid:l||f,value:i}}var qf=_e(sc,void 0,!0),mg={a:qf.create(BigInt(-1)),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:qf,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:fg,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:bf,randomBytes:Kr,adjustScalarBytes:hg,uvRatio:pg},kn=Ff(mg);var Yo=32,Zo=64,ic=32;function zf(){let r=kn.utils.randomPrivateKey(),t=kn.getPublicKey(r);return{privateKey:gg(r,t),publicKey:t}}function Vf(r,t){let e=r.subarray(0,ic);return kn.sign(t instanceof Uint8Array?t:t.subarray(),e)}function Hf(r,t,e){return kn.verify(t,e instanceof Uint8Array?e:e.subarray(),r)}function gg(r,t){let e=new Uint8Array(Zo);for(let n=0;n<ic;n++)e[n]=r[n],e[ic+n]=t[n];return e}var Mn=class{type="Ed25519";raw;constructor(t){this.raw=Jo(t,Yo)}toMultihash(){return ee.digest(jt(this))}toCID(){return it.createV1(114,this.toMultihash())}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}verify(t,e,n){return n?.signal?.throwIfAborted(),Hf(this.raw,e,t)}},Qo=class{type="Ed25519";raw;publicKey;constructor(t,e){this.raw=Jo(t,Zo),this.publicKey=new Mn(e)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}sign(t,e){return e?.signal?.throwIfAborted(),Vf(this.raw,t)}};function ac(r){return r=Jo(r,Yo),new Mn(r)}async function Wf(){let{privateKey:r,publicKey:t}=zf();return new Qo(r,t)}function Jo(r,t){if(r=Uint8Array.from(r??[]),r.length!==t)throw new k(`Key must be a Uint8Array of length ${t}, got ${r.length}`);return r}var yg=Math.pow(2,7),bg=Math.pow(2,14),wg=Math.pow(2,21),cc=Math.pow(2,28),lc=Math.pow(2,35),uc=Math.pow(2,42),fc=Math.pow(2,49),Q=128,_t=127;function mt(r){if(r<yg)return 1;if(r<bg)return 2;if(r<wg)return 3;if(r<cc)return 4;if(r<lc)return 5;if(r<uc)return 6;if(r<fc)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function dc(r,t,e=0){switch(mt(r)){case 8:t[e++]=r&255|Q,r/=128;case 7:t[e++]=r&255|Q,r/=128;case 6:t[e++]=r&255|Q,r/=128;case 5:t[e++]=r&255|Q,r/=128;case 4:t[e++]=r&255|Q,r>>>=7;case 3:t[e++]=r&255|Q,r>>>=7;case 2:t[e++]=r&255|Q,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function xg(r,t,e=0){switch(mt(r)){case 8:t.set(e++,r&255|Q),r/=128;case 7:t.set(e++,r&255|Q),r/=128;case 6:t.set(e++,r&255|Q),r/=128;case 5:t.set(e++,r&255|Q),r/=128;case 4:t.set(e++,r&255|Q),r>>>=7;case 3:t.set(e++,r&255|Q),r>>>=7;case 2:t.set(e++,r&255|Q),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function hc(r,t){let e=r[t],n=0;if(n+=e&_t,e<Q||(e=r[t+1],n+=(e&_t)<<7,e<Q)||(e=r[t+2],n+=(e&_t)<<14,e<Q)||(e=r[t+3],n+=(e&_t)<<21,e<Q)||(e=r[t+4],n+=(e&_t)*cc,e<Q)||(e=r[t+5],n+=(e&_t)*lc,e<Q)||(e=r[t+6],n+=(e&_t)*uc,e<Q)||(e=r[t+7],n+=(e&_t)*fc,e<Q))return n;throw new RangeError("Could not decode varint")}function Eg(r,t){let e=r.get(t),n=0;if(n+=e&_t,e<Q||(e=r.get(t+1),n+=(e&_t)<<7,e<Q)||(e=r.get(t+2),n+=(e&_t)<<14,e<Q)||(e=r.get(t+3),n+=(e&_t)<<21,e<Q)||(e=r.get(t+4),n+=(e&_t)*cc,e<Q)||(e=r.get(t+5),n+=(e&_t)*lc,e<Q)||(e=r.get(t+6),n+=(e&_t)*uc,e<Q)||(e=r.get(t+7),n+=(e&_t)*fc,e<Q))return n;throw new RangeError("Could not decode varint")}function It(r,t,e=0){return t==null&&(t=St(mt(r))),t instanceof Uint8Array?dc(r,t,e):xg(r,t,e)}function oe(r,t=0){return r instanceof Uint8Array?hc(r,t):Eg(r,t)}var pc=new Float32Array([-0]),qe=new Uint8Array(pc.buffer);function Gf(r,t,e){pc[0]=r,t[e]=qe[0],t[e+1]=qe[1],t[e+2]=qe[2],t[e+3]=qe[3]}function jf(r,t){return qe[0]=r[t],qe[1]=r[t+1],qe[2]=r[t+2],qe[3]=r[t+3],pc[0]}var mc=new Float64Array([-0]),Ct=new Uint8Array(mc.buffer);function Xf(r,t,e){mc[0]=r,t[e]=Ct[0],t[e+1]=Ct[1],t[e+2]=Ct[2],t[e+3]=Ct[3],t[e+4]=Ct[4],t[e+5]=Ct[5],t[e+6]=Ct[6],t[e+7]=Ct[7]}function Yf(r,t){return Ct[0]=r[t],Ct[1]=r[t+1],Ct[2]=r[t+2],Ct[3]=r[t+3],Ct[4]=r[t+4],Ct[5]=r[t+5],Ct[6]=r[t+6],Ct[7]=r[t+7],mc[0]}var vg=BigInt(Number.MAX_SAFE_INTEGER),Ag=BigInt(Number.MIN_SAFE_INTEGER),Wt=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return or;if(t<vg&&t>Ag)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,o=t-(n<<32n);return e&&(n=~n|0n,o=~o|0n,++o>Zf&&(o=0n,++n>Zf&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(t){if(t===0)return or;let e=t<0;e&&(t=-t);let n=t>>>0,o=(t-n)/4294967296>>>0;return e&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):or}},or=new Wt(0,0);or.toBigInt=function(){return 0n};or.zzEncode=or.zzDecode=function(){return this};or.length=function(){return 1};var Zf=4294967296n;function Qf(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function Jf(r,t,e){if(e-t<1)return"";let o,s=[],i=0,a;for(;t<e;)a=r[t++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[t++]&63:a>239&&a<365?(a=((a&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[t++]&63)<<6|r[t++]&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 gc(r,t,e){let n=e,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return e-n}function se(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function ts(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var yc=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,se(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw se(this,4);return ts(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw se(this,4);return ts(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw se(this,4);let t=jf(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw se(this,4);let t=Yf(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw se(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return Jf(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw se(this,t);this.pos+=t}else do if(this.pos>=this.len)throw se(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new Wt(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw se(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw se(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw se(this,8);let t=ts(this.buf,this.pos+=4),e=ts(this.buf,this.pos+=4);return new Wt(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let t=hc(this.buf,this.pos);return this.pos+=mt(t),t}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function bc(r){return new yc(r instanceof Uint8Array?r:r.subarray())}function Ot(r,t,e){let n=bc(r);return t.decode(n,void 0,e)}function wc(r){let t=r??8192,e=t>>>1,n,o=t;return function(i){if(i<1||i>e)return St(i);o+i>t&&(n=St(t),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var sr=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function xc(){}var vc=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},Sg=wc();function _g(r){return globalThis.Buffer!=null?St(r):Sg(r)}var Nn=class{len;head;tail;states;constructor(){this.len=0,this.head=new sr(xc,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new sr(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new Ac((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(es,10,Wt.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=Wt.fromBigInt(t);return this._push(es,e.length(),e)}uint64Number(t){return this._push(dc,mt(t),t)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=Wt.fromBigInt(t).zzEncode();return this._push(es,e.length(),e)}sint64Number(t){let e=Wt.fromNumber(t).zzEncode();return this._push(es,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(Ec,1,t?1:0)}fixed32(t){return this._push(On,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=Wt.fromBigInt(t);return this._push(On,4,e.lo)._push(On,4,e.hi)}fixed64Number(t){let e=Wt.fromNumber(t);return this._push(On,4,e.lo)._push(On,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(Gf,4,t)}double(t){return this._push(Xf,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(Ec,1,0):this.uint32(e)._push(Cg,e,t)}string(t){let e=Qf(t);return e!==0?this.uint32(e)._push(gc,e,t):this._push(Ec,1,0)}fork(){return this.states=new vc(this),this.head=this.tail=new sr(xc,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 sr(xc,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=_g(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function Ec(r,t,e){t[e]=r&255}function Ig(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var Ac=class extends sr{next;constructor(t,e){super(Ig,t,e),this.next=void 0}};function es(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function On(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function Cg(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(Nn.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(Tg,t,r),this},Nn.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(Pg,t,r),this});function Tg(r,t,e){t.set(r,e)}function Pg(r,t,e){r.length<40?gc(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(L(r),e)}function Sc(){return new Nn}function Nt(r,t){let e=Sc();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var $r;(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"})($r||($r={}));function rs(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function _c(r){function t(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let e=function(s,i){let a=t(s);i.int32(a)},n=function(s){let i=s.int32();return t(i)};return rs("enum",$r.VARINT,e,n)}function Bt(r,t){return rs("message",$r.LENGTH_DELIMITED,r,t)}var ir=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Bn=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var ft;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(ft||(ft={}));var Ic;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(Ic||(Ic={}));(function(r){r.codec=()=>_c(Ic)})(ft||(ft={}));var he;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=ft.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(he||(he={}));var Cc;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.Type!=null&&(n.uint32(8),ft.codec().encode(e.Type,n)),e.Data!=null&&(n.uint32(18),n.bytes(e.Data)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.Type=ft.codec().decode(e);break}case 2:{s.Data=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(Cc||(Cc={}));function Wr(r){if(isNaN(r)||r<=0)throw new k("random bytes length must be a Number bigger than 0");return Kr(r)}var Fn=class extends Error{constructor(t="An error occurred while signing a message"){super(t),this.name="SigningError"}},Un=class extends Error{constructor(t="An error occurred while verifying a message"){super(t),this.name="VerificationError"}},ns=class extends Error{constructor(t="Missing Web Crypto API"){super(t),this.name="WebCryptoMissingError"}};var rd={get(r=globalThis){let t=r.crypto;if(t?.subtle==null)throw new ns("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return t}};var ze=rd;var qn={};Kt(qn,{MAX_RSA_KEY_SIZE:()=>Tc,generateRSAKeyPair:()=>Bc,jwkToJWKKeyPair:()=>id,jwkToPkcs1:()=>kg,jwkToPkix:()=>Rc,jwkToRSAPrivateKey:()=>Nc,pkcs1MessageToJwk:()=>Lc,pkcs1MessageToRSAPrivateKey:()=>kc,pkcs1ToJwk:()=>Rg,pkcs1ToRSAPrivateKey:()=>sd,pkixMessageToJwk:()=>Dc,pkixMessageToRSAPublicKey:()=>Oc,pkixToJwk:()=>Mg,pkixToRSAPublicKey:()=>Mc});var os=$o;var Gr=class{type="RSA";jwk;_raw;_multihash;constructor(t,e){this.jwk=t,this._multihash=e}get raw(){return this._raw==null&&(this._raw=qn.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return it.createV1(114,this._multihash)}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}verify(t,e,n){return od(this.jwk,e,t,n)}},Kn=class{type="RSA";jwk;_raw;publicKey;constructor(t,e){this.jwk=t,this.publicKey=e}get raw(){return this._raw==null&&(this._raw=qn.jwkToPkcs1(this.jwk)),this._raw}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}sign(t,e){return nd(this.jwk,t,e)}};var Tc=8192,Pc=18,Lg=1062,Dg=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Rg(r){let t=we(r);return Lc(t)}function Lc(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 kg(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 k("JWK was missing components");return re([Rt(Uint8Array.from([0])),Rt(L(r.n,"base64url")),Rt(L(r.e,"base64url")),Rt(L(r.d,"base64url")),Rt(L(r.p,"base64url")),Rt(L(r.q,"base64url")),Rt(L(r.dp,"base64url")),Rt(L(r.dq,"base64url")),Rt(L(r.qi,"base64url"))]).subarray()}function Mg(r){let t=we(r,{offset:0});return Dc(t)}function Dc(r){let t=we(r[1],{offset:0});return{kty:"RSA",n:B(t[0],"base64url"),e:B(t[1],"base64url")}}function Rc(r){if(r.n==null||r.e==null)throw new k("JWK was missing components");return re([Dg,_n(re([Rt(L(r.n,"base64url")),Rt(L(r.e,"base64url"))]))]).subarray()}function sd(r){let t=we(r);return kc(t)}function kc(r){let t=Lc(r);return Nc(t)}function Mc(r,t){if(r.byteLength>=Lg)throw new Tr("Key size is too large");let e=we(r,{offset:0});return Oc(e,r,t)}function Oc(r,t,e){let n=Dc(r);if(e==null){let o=os(he.encode({Type:ft.RSA,Data:t}));e=Jt(Pc,o)}return new Gr(n,e)}function Nc(r){if(cd(r)>Tc)throw new k("Key size is too large");let t=id(r),e=os(he.encode({Type:ft.RSA,Data:Rc(t.publicKey)})),n=Jt(Pc,e);return new Kn(t.privateKey,new Gr(t.publicKey,n))}async function Bc(r){if(r>Tc)throw new k("Key size is too large");let t=await ad(r),e=os(he.encode({Type:ft.RSA,Data:Rc(t.publicKey)})),n=Jt(Pc,e);return new Kn(t.privateKey,new Gr(t.publicKey,n))}function id(r){if(r==null)throw new k("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function ad(r,t){let e=await ze.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);t?.signal?.throwIfAborted();let n=await Og(e,t);return{privateKey:n[0],publicKey:n[1]}}async function nd(r,t,e){let n=await ze.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);e?.signal?.throwIfAborted();let o=await ze.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,t instanceof Uint8Array?t:t.subarray());return e?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function od(r,t,e,n){let o=await ze.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await ze.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,t,e instanceof Uint8Array?e:e.subarray());return n?.signal?.throwIfAborted(),s}async function Og(r,t){if(r.privateKey==null||r.publicKey==null)throw new k("Private and public key are required");let e=await Promise.all([ze.get().subtle.exportKey("jwk",r.privateKey),ze.get().subtle.exportKey("jwk",r.publicKey)]);return t?.signal?.throwIfAborted(),e}function cd(r){if(r.kty!=="RSA")throw new k("invalid key type");if(r.n==null)throw new k("invalid key modulus");return L(r.n,"base64url").length*8}var ss=class extends Fr{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,nf(t);let n=In(e);if(this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?t.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=t.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),xe(s)}update(t){return Ur(this),this.iHash.update(t),this}digestInto(t){Ur(this),Ye(t,this.outputLen),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||(t=Object.create(Object.getPrototypeOf(this),{}));let{oHash:e,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return t=t,t.finished=o,t.destroyed=s,t.blockLen=i,t.outputLen=a,t.oHash=e._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Fc=(r,t,e)=>new ss(r,t).update(e).digest();Fc.create=(r,t)=>new ss(r,t);function ld(r){r.lowS!==void 0&&fe("lowS",r.lowS),r.prehash!==void 0&&fe("prehash",r.prehash)}function Ng(r){let t=Rn(r);Se(t,{a:"field",b:"field"},{allowInfinityPoint:"boolean",allowedPrivateKeyLengths:"array",clearCofactor:"function",fromBytes:"function",isTorsionFree:"function",toBytes:"function",wrapPrivateKey:"boolean"});let{endo:e,Fp:n,a:o}=t;if(e){if(!n.eql(o,n.ZERO))throw new Error("invalid endo: CURVE.a must be 0");if(typeof e!="object"||typeof e.beta!="bigint"||typeof e.splitScalar!="function")throw new Error('invalid endo: expected "beta": bigint and "splitScalar": function')}return Object.freeze({...t})}var qc=class extends Error{constructor(t=""){super(t)}},Ie={Err:qc,_tlv:{encode:(r,t)=>{let{Err:e}=Ie;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length&1)throw new e("tlv.encode: unpadded data");let n=t.length/2,o=Ln(n);if(o.length/2&128)throw new e("tlv.encode: long form length too big");let s=n>127?Ln(o.length/2|128):"";return Ln(r)+s+o+t},decode(r,t){let{Err:e}=Ie,n=0;if(r<0||r>256)throw new e("tlv.encode: wrong tag");if(t.length<2||t[n++]!==r)throw new e("tlv.decode: wrong tlv");let o=t[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new e("tlv.decode(long): indefinite length not supported");if(c>4)throw new e("tlv.decode(long): byte length is too big");let u=t.subarray(n,n+c);if(u.length!==c)throw new e("tlv.decode: length bytes not complete");if(u[0]===0)throw new e("tlv.decode(long): zero leftmost byte");for(let l of u)i=i<<8|l;if(n+=c,i<128)throw new e("tlv.decode(long): not minimal encoding")}let a=t.subarray(n,n+i);if(a.length!==i)throw new e("tlv.decode: wrong value length");return{v:a,l:t.subarray(n+i)}}},_int:{encode(r){let{Err:t}=Ie;if(r<Ce)throw new t("integer: negative integers are not allowed");let e=Ln(r);if(Number.parseInt(e[0],16)&8&&(e="00"+e),e.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return e},decode(r){let{Err:t}=Ie;if(r[0]&128)throw new t("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return Ae(r)}},toSig(r){let{Err:t,_int:e,_tlv:n}=Ie,o=nt("signature",r),{v:s,l:i}=n.decode(48,o);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:u,l}=n.decode(2,c);if(l.length)throw new t("invalid signature: left bytes after parsing");return{r:e.decode(a),s:e.decode(u)}},hexFromSig(r){let{_tlv:t,_int:e}=Ie,n=t.encode(2,e.encode(r.r)),o=t.encode(2,e.encode(r.s)),s=n+o;return t.encode(48,s)}};function Uc(r,t){return Ue(tr(r,t))}var Ce=BigInt(0),bt=BigInt(1),XE=BigInt(2),Kc=BigInt(3),Bg=BigInt(4);function Fg(r){let t=Ng(r),{Fp:e}=t,n=_e(t.n,t.nBitLength),o=t.toBytes||((x,p,w)=>{let T=p.toAffine();return Ke(Uint8Array.from([4]),e.toBytes(T.x),e.toBytes(T.y))}),s=t.fromBytes||(x=>{let p=x.subarray(1),w=e.fromBytes(p.subarray(0,e.BYTES)),T=e.fromBytes(p.subarray(e.BYTES,2*e.BYTES));return{x:w,y:T}});function i(x){let{a:p,b:w}=t,T=e.sqr(x),P=e.mul(T,x);return e.add(e.add(P,e.mul(x,p)),w)}function a(x,p){let w=e.sqr(p),T=i(x);return e.eql(w,T)}if(!a(t.Gx,t.Gy))throw new Error("bad curve params: generator point");let c=e.mul(e.pow(t.a,Kc),Bg),u=e.mul(e.sqr(t.b),BigInt(27));if(e.is0(e.add(c,u)))throw new Error("bad curve params: a or b");function l(x){return Wo(x,bt,t.n)}function f(x){let{allowedPrivateKeyLengths:p,nByteLength:w,wrapPrivateKey:T,n:P}=t;if(p&&typeof x!="bigint"){if(qr(x)&&(x=Ue(x)),typeof x!="string"||!p.includes(x.length))throw new Error("invalid private key");x=x.padStart(w*2,"0")}let D;try{D=typeof x=="bigint"?x:Ae(nt("private key",x,w))}catch{throw new Error("invalid private key, expected hex or "+w+" bytes, got "+typeof x)}return T&&(D=rt(D,P)),$t("private key",D,bt,P),D}function d(x){if(!(x instanceof g))throw new Error("ProjectivePoint expected")}let m=Vr((x,p)=>{let{px:w,py:T,pz:P}=x;if(e.eql(P,e.ONE))return{x:w,y:T};let D=x.is0();p==null&&(p=D?e.ONE:e.inv(P));let F=e.mul(w,p),q=e.mul(T,p),M=e.mul(P,p);if(D)return{x:e.ZERO,y:e.ZERO};if(!e.eql(M,e.ONE))throw new Error("invZ was invalid");return{x:F,y:q}}),h=Vr(x=>{if(x.is0()){if(t.allowInfinityPoint&&!e.is0(x.py))return;throw new Error("bad point: ZERO")}let{x:p,y:w}=x.toAffine();if(!e.isValid(p)||!e.isValid(w))throw new Error("bad point: x or y not FE");if(!a(p,w))throw new Error("bad point: equation left != right");if(!x.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class g{constructor(p,w,T){if(p==null||!e.isValid(p))throw new Error("x required");if(w==null||!e.isValid(w)||e.is0(w))throw new Error("y required");if(T==null||!e.isValid(T))throw new Error("z required");this.px=p,this.py=w,this.pz=T,Object.freeze(this)}static fromAffine(p){let{x:w,y:T}=p||{};if(!p||!e.isValid(w)||!e.isValid(T))throw new Error("invalid affine point");if(p instanceof g)throw new Error("projective point not allowed");let P=D=>e.eql(D,e.ZERO);return P(w)&&P(T)?g.ZERO:new g(w,T,e.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let w=Hr(e,p.map(T=>T.pz));return p.map((T,P)=>T.toAffine(w[P])).map(g.fromAffine)}static fromHex(p){let w=g.fromAffine(s(nt("pointHex",p)));return w.assertValidity(),w}static fromPrivateKey(p){return g.BASE.multiply(f(p))}static msm(p,w){return Xo(g,n,p,w)}_setWindowSize(p){C.setWindowSize(this,p)}assertValidity(){h(this)}hasEvenY(){let{y:p}=this.toAffine();if(e.isOdd)return!e.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){d(p);let{px:w,py:T,pz:P}=this,{px:D,py:F,pz:q}=p,M=e.eql(e.mul(w,q),e.mul(D,P)),U=e.eql(e.mul(T,q),e.mul(F,P));return M&&U}negate(){return new g(this.px,e.neg(this.py),this.pz)}double(){let{a:p,b:w}=t,T=e.mul(w,Kc),{px:P,py:D,pz:F}=this,q=e.ZERO,M=e.ZERO,U=e.ZERO,N=e.mul(P,P),ht=e.mul(D,D),_=e.mul(F,F),S=e.mul(P,D);return S=e.add(S,S),U=e.mul(P,F),U=e.add(U,U),q=e.mul(p,U),M=e.mul(T,_),M=e.add(q,M),q=e.sub(ht,M),M=e.add(ht,M),M=e.mul(q,M),q=e.mul(S,q),U=e.mul(T,U),_=e.mul(p,_),S=e.sub(N,_),S=e.mul(p,S),S=e.add(S,U),U=e.add(N,N),N=e.add(U,N),N=e.add(N,_),N=e.mul(N,S),M=e.add(M,N),_=e.mul(D,F),_=e.add(_,_),N=e.mul(_,S),q=e.sub(q,N),U=e.mul(_,ht),U=e.add(U,U),U=e.add(U,U),new g(q,M,U)}add(p){d(p);let{px:w,py:T,pz:P}=this,{px:D,py:F,pz:q}=p,M=e.ZERO,U=e.ZERO,N=e.ZERO,ht=t.a,_=e.mul(t.b,Kc),S=e.mul(w,D),R=e.mul(T,F),A=e.mul(P,q),y=e.add(w,T),E=e.add(D,F);y=e.mul(y,E),E=e.add(S,R),y=e.sub(y,E),E=e.add(w,P);let I=e.add(D,q);return E=e.mul(E,I),I=e.add(S,A),E=e.sub(E,I),I=e.add(T,P),M=e.add(F,q),I=e.mul(I,M),M=e.add(R,A),I=e.sub(I,M),N=e.mul(ht,E),M=e.mul(_,A),N=e.add(M,N),M=e.sub(R,N),N=e.add(R,N),U=e.mul(M,N),R=e.add(S,S),R=e.add(R,S),A=e.mul(ht,A),E=e.mul(_,E),R=e.add(R,A),A=e.sub(S,A),A=e.mul(ht,A),E=e.add(E,A),S=e.mul(R,E),U=e.add(U,S),S=e.mul(I,E),M=e.mul(y,M),M=e.sub(M,S),S=e.mul(y,R),N=e.mul(I,N),N=e.add(N,S),new g(M,U,N)}subtract(p){return this.add(p.negate())}is0(){return this.equals(g.ZERO)}wNAF(p){return C.wNAFCached(this,p,g.normalizeZ)}multiplyUnsafe(p){let{endo:w,n:T}=t;$t("scalar",p,Ce,T);let P=g.ZERO;if(p===Ce)return P;if(this.is0()||p===bt)return this;if(!w||C.hasPrecomputes(this))return C.wNAFCachedUnsafe(this,p,g.normalizeZ);let{k1neg:D,k1:F,k2neg:q,k2:M}=w.splitScalar(p),U=P,N=P,ht=this;for(;F>Ce||M>Ce;)F&bt&&(U=U.add(ht)),M&bt&&(N=N.add(ht)),ht=ht.double(),F>>=bt,M>>=bt;return D&&(U=U.negate()),q&&(N=N.negate()),N=new g(e.mul(N.px,w.beta),N.py,N.pz),U.add(N)}multiply(p){let{endo:w,n:T}=t;$t("scalar",p,bt,T);let P,D;if(w){let{k1neg:F,k1:q,k2neg:M,k2:U}=w.splitScalar(p),{p:N,f:ht}=this.wNAF(q),{p:_,f:S}=this.wNAF(U);N=C.constTimeNegate(F,N),_=C.constTimeNegate(M,_),_=new g(e.mul(_.px,w.beta),_.py,_.pz),P=N.add(_),D=ht.add(S)}else{let{p:F,f:q}=this.wNAF(p);P=F,D=q}return g.normalizeZ([P,D])[0]}multiplyAndAddUnsafe(p,w,T){let P=g.BASE,D=(q,M)=>M===Ce||M===bt||!q.equals(P)?q.multiplyUnsafe(M):q.multiply(M),F=D(this,w).add(D(p,T));return F.is0()?void 0:F}toAffine(p){return m(this,p)}isTorsionFree(){let{h:p,isTorsionFree:w}=t;if(p===bt)return!0;if(w)return w(g,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:w}=t;return p===bt?this:w?w(g,this):this.multiplyUnsafe(t.h)}toRawBytes(p=!0){return fe("isCompressed",p),this.assertValidity(),o(g,this,p)}toHex(p=!0){return fe("isCompressed",p),Ue(this.toRawBytes(p))}}g.BASE=new g(t.Gx,t.Gy,e.ONE),g.ZERO=new g(e.ZERO,e.ONE,e.ZERO);let{endo:b,nBitLength:v}=t,C=jo(g,b?Math.ceil(v/2):v);return{CURVE:t,ProjectivePoint:g,normPrivateKeyToScalar:f,weierstrassEquation:i,isWithinCurveOrder:l}}function Ug(r){let t=Rn(r);return Se(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}function ud(r){let t=Ug(r),{Fp:e,n,nByteLength:o,nBitLength:s}=t,i=e.BYTES+1,a=2*e.BYTES+1;function c(_){return rt(_,n)}function u(_){return Go(_,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:f,weierstrassEquation:d,isWithinCurveOrder:m}=Fg({...t,toBytes(_,S,R){let A=S.toAffine(),y=e.toBytes(A.x),E=Ke;return fe("isCompressed",R),R?E(Uint8Array.from([S.hasEvenY()?2:3]),y):E(Uint8Array.from([4]),y,e.toBytes(A.y))},fromBytes(_){let S=_.length,R=_[0],A=_.subarray(1);if(S===i&&(R===2||R===3)){let y=Ae(A);if(!Wo(y,bt,e.ORDER))throw new Error("Point is not on curve");let E=d(y),I;try{I=e.sqrt(E)}catch(V){let $=V instanceof Error?": "+V.message:"";throw new Error("Point is not on curve"+$)}let O=(I&bt)===bt;return(R&1)===1!==O&&(I=e.neg(I)),{x:y,y:I}}else if(S===a&&R===4){let y=e.fromBytes(A.subarray(0,e.BYTES)),E=e.fromBytes(A.subarray(e.BYTES,2*e.BYTES));return{x:y,y:E}}else{let y=i,E=a;throw new Error("invalid Point, expected length of "+y+", or uncompressed "+E+", got "+S)}}});function h(_){let S=n>>bt;return _>S}function g(_){return h(_)?c(-_):_}let b=(_,S,R)=>Ae(_.slice(S,R));class v{constructor(S,R,A){$t("r",S,bt,n),$t("s",R,bt,n),this.r=S,this.s=R,A!=null&&(this.recovery=A),Object.freeze(this)}static fromCompact(S){let R=o;return S=nt("compactSignature",S,R*2),new v(b(S,0,R),b(S,R,2*R))}static fromDER(S){let{r:R,s:A}=Ie.toSig(nt("DER",S));return new v(R,A)}assertValidity(){}addRecoveryBit(S){return new v(this.r,this.s,S)}recoverPublicKey(S){let{r:R,s:A,recovery:y}=this,E=P(nt("msgHash",S));if(y==null||![0,1,2,3].includes(y))throw new Error("recovery id invalid");let I=y===2||y===3?R+t.n:R;if(I>=e.ORDER)throw new Error("recovery id 2 or 3 invalid");let O=(y&1)===0?"02":"03",K=l.fromHex(O+Uc(I,e.BYTES)),V=u(I),$=c(-E*V),X=c(A*V),J=l.BASE.multiplyAndAddUnsafe(K,$,X);if(!J)throw new Error("point at infinify");return J.assertValidity(),J}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new v(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return Dn(this.toDERHex())}toDERHex(){return Ie.hexFromSig(this)}toCompactRawBytes(){return Dn(this.toCompactHex())}toCompactHex(){let S=o;return Uc(this.r,S)+Uc(this.s,S)}}let C={isValidPrivateKey(_){try{return f(_),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let _=Ja(t.n);return Rf(t.randomBytes(_),t.n)},precompute(_=8,S=l.BASE){return S._setWindowSize(_),S.multiply(BigInt(3)),S}};function x(_,S=!0){return l.fromPrivateKey(_).toRawBytes(S)}function p(_){if(typeof _=="bigint")return!1;if(_ instanceof l)return!0;let R=nt("key",_).length,A=e.BYTES,y=A+1,E=2*A+1;if(!(t.allowedPrivateKeyLengths||o===y))return R===y||R===E}function w(_,S,R=!0){if(p(_)===!0)throw new Error("first arg must be private key");if(p(S)===!1)throw new Error("second arg must be public key");return l.fromHex(S).multiply(f(_)).toRawBytes(R)}let T=t.bits2int||function(_){if(_.length>8192)throw new Error("input is too large");let S=Ae(_),R=_.length*8-s;return R>0?S>>BigInt(R):S},P=t.bits2int_modN||function(_){return c(T(_))},D=er(s);function F(_){return $t("num < 2^"+s,_,Ce,D),tr(_,o)}function q(_,S,R=M){if(["recovered","canonical"].some(ut=>ut in R))throw new Error("sign() legacy options not supported");let{hash:A,randomBytes:y}=t,{lowS:E,prehash:I,extraEntropy:O}=R;E==null&&(E=!0),_=nt("msgHash",_),ld(R),I&&(_=nt("prehashed msgHash",A(_)));let K=P(_),V=f(S),$=[F(V),F(K)];if(O!=null&&O!==!1){let ut=O===!0?y(e.BYTES):O;$.push(nt("extraEntropy",ut))}let X=Ke(...$),J=K;function pt(ut){let wt=T(ut);if(!m(wt))return;let Ut=u(wt),gt=l.BASE.multiply(wt).toAffine(),At=c(gt.x);if(At===Ce)return;let zt=c(Ut*c(J+At*V));if(zt===Ce)return;let Zt=(gt.x===At?0:2)|Number(gt.y&bt),pn=zt;return E&&h(zt)&&(pn=g(zt),Zt^=1),new v(At,pn,Zt)}return{seed:X,k2sig:pt}}let M={lowS:t.lowS,prehash:!1},U={lowS:t.lowS,prehash:!1};function N(_,S,R=M){let{seed:A,k2sig:y}=q(_,S,R),E=t;return Sf(E.hash.outputLen,E.nByteLength,E.hmac)(A,y)}l.BASE._setWindowSize(8);function ht(_,S,R,A=U){let y=_;S=nt("msgHash",S),R=nt("publicKey",R);let{lowS:E,prehash:I,format:O}=A;if(ld(A),"strict"in A)throw new Error("options.strict was renamed to lowS");if(O!==void 0&&O!=="compact"&&O!=="der")throw new Error("format must be compact or der");let K=typeof y=="string"||qr(y),V=!K&&!O&&typeof y=="object"&&y!==null&&typeof y.r=="bigint"&&typeof y.s=="bigint";if(!K&&!V)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let $,X;try{if(V&&($=new v(y.r,y.s)),K){try{O!=="compact"&&($=v.fromDER(y))}catch(Zt){if(!(Zt instanceof Ie.Err))throw Zt}!$&&O!=="der"&&($=v.fromCompact(y))}X=l.fromHex(R)}catch{return!1}if(!$||E&&$.hasHighS())return!1;I&&(S=t.hash(S));let{r:J,s:pt}=$,ut=P(S),wt=u(pt),Ut=c(ut*wt),gt=c(J*wt),At=l.BASE.multiplyAndAddUnsafe(X,Ut,gt)?.toAffine();return At?c(At.x)===J:!1}return{CURVE:t,getPublicKey:x,getSharedSecret:w,sign:N,verify:ht,ProjectivePoint:l,Signature:v,utils:C}}function Kg(r){return{hash:r,hmac:(t,...e)=>Fc(r,t,qa(...e)),randomBytes:Kr}}function fd(r,t){let e=n=>ud({...r,...Kg(n)});return{...e(t),create:e}}var pd=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),dd=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),qg=BigInt(0),zg=BigInt(1),zc=BigInt(2),hd=(r,t)=>(r+t/zc)/t;function Vg(r){let t=pd,e=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),u=r*r*r%t,l=u*u*r%t,f=ot(l,e,t)*l%t,d=ot(f,e,t)*l%t,m=ot(d,zc,t)*u%t,h=ot(m,o,t)*m%t,g=ot(h,s,t)*h%t,b=ot(g,a,t)*g%t,v=ot(b,c,t)*b%t,C=ot(v,a,t)*g%t,x=ot(C,e,t)*l%t,p=ot(x,i,t)*h%t,w=ot(p,n,t)*u%t,T=ot(w,zc,t);if(!Vc.eql(Vc.sqr(T),r))throw new Error("Cannot find square root");return T}var Vc=_e(pd,void 0,void 0,{sqrt:Vg}),ie=fd({a:qg,b:BigInt(7),Fp:Vc,n:dd,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let t=dd,e=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-zg*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=e,i=BigInt("0x100000000000000000000000000000000"),a=hd(s*r,t),c=hd(-n*r,t),u=rt(r-a*e-c*o,t),l=rt(-a*n-c*s,t),f=u>i,d=l>i;if(f&&(u=t-u),d&&(l=t-l),u>i||l>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:u,k2neg:d,k2:l}}}},$o);function Hc(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function md(r,t,e){let n=Br.digest(t instanceof Uint8Array?t:t.subarray());if(Hc(n))return n.then(({digest:o})=>(e?.signal?.throwIfAborted(),ie.sign(o,r).toDERRawBytes())).catch(o=>{throw o.name==="AbortError"?o:new Fn(String(o))});try{return ie.sign(n.digest,r).toDERRawBytes()}catch(o){throw new Fn(String(o))}}function gd(r,t,e,n){let o=Br.digest(e instanceof Uint8Array?e:e.subarray());if(Hc(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),ie.verify(t,s,r))).catch(s=>{throw s.name==="AbortError"?s:new Un(String(s))});try{return n?.signal?.throwIfAborted(),ie.verify(t,o.digest,r)}catch(s){throw new Un(String(s))}}var zn=class{type="secp256k1";raw;_key;constructor(t){this._key=wd(t),this.raw=yd(this._key)}toMultihash(){return ee.digest(jt(this))}toCID(){return it.createV1(114,this.toMultihash())}toString(){return j.encode(this.toMultihash().bytes).substring(1)}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}verify(t,e,n){return gd(this._key,e,t,n)}},is=class{type="secp256k1";raw;publicKey;constructor(t,e){this.raw=bd(t),this.publicKey=new zn(e??xd(t))}equals(t){return t==null||!(t.raw instanceof Uint8Array)?!1:tt(this.raw,t.raw)}sign(t,e){return md(this.raw,t,e)}};function $c(r){return new zn(r)}async function Ed(){let r=Hg();return new is(r)}function yd(r){return ie.ProjectivePoint.fromHex(r).toRawBytes(!0)}function bd(r){try{return ie.getPublicKey(r,!0),r}catch(t){throw new mn(String(t))}}function wd(r){try{return ie.ProjectivePoint.fromHex(r),r}catch(t){throw new Tr(String(t))}}function xd(r){try{return ie.getPublicKey(r,!0)}catch(t){throw new mn(String(t))}}function Hg(){return ie.utils.randomPrivateKey()}async function vd(r,t){if(r==="Ed25519")return Wf();if(r==="secp256k1")return Ed();if(r==="RSA")return Bc($g(t));if(r==="ECDSA")return rf(Wg(t));throw new Me}function jr(r,t){let{Type:e,Data:n}=he.decode(r),o=n??new Uint8Array;switch(e){case ft.RSA:return Mc(o,t);case ft.Ed25519:return ac(o);case ft.secp256k1:return $c(o);case ft.ECDSA:return Ka(o);default:throw new Me}}function Ad(r){let{Type:t,Data:e}=he.decode(r.digest),n=e??new Uint8Array;switch(t){case ft.Ed25519:return ac(n);case ft.secp256k1:return $c(n);case ft.ECDSA:return Ka(n);default:throw new Me}}function jt(r){return he.encode({Type:ft[r.type],Data:r.raw})}function $g(r){return r==null?2048:parseInt(r,10)}function Wg(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 k("Unsupported curve, should be P-256, P-384 or P-521")}var Sd=Symbol.for("nodejs.util.inspect.custom"),Gg=114,Vn=class{type;multihash;publicKey;string;constructor(t){this.type=t.type,this.multihash=t.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Co]=!0;toString(){return this.string==null&&(this.string=j.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return it.createV1(Gg,this.multihash)}toJSON(){return this.toString()}equals(t){if(t==null)return!1;if(t instanceof Uint8Array)return tt(this.multihash.bytes,t);if(typeof t=="string")return this.toString()===t;if(t?.toMultihash()?.bytes!=null)return tt(this.multihash.bytes,t.toMultihash().bytes);throw new Error("not valid Id")}[Sd](){return`PeerId(${this.toString()})`}},Hn=class extends Vn{type="RSA";publicKey;constructor(t){super({...t,type:"RSA"}),this.publicKey=t.publicKey}},$n=class extends Vn{type="Ed25519";publicKey;constructor(t){super({...t,type:"Ed25519"}),this.publicKey=t.publicKey}},Wn=class extends Vn{type="secp256k1";publicKey;constructor(t){super({...t,type:"secp256k1"}),this.publicKey=t.publicKey}},jg=2336,Gn=class{type="url";multihash;publicKey;url;constructor(t){this.url=t.toString(),this.multihash=ee.digest(L(this.url))}[Sd](){return`PeerId(${this.url})`}[Co]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return it.createV1(jg,this.toMultihash())}toJSON(){return this.toString()}equals(t){return t==null?!1:(t instanceof Uint8Array&&(t=B(t)),t.toString()===this.toString())}};var Xg=114,_d=2336;function pe(r,t){let e;if(r.charAt(0)==="1"||r.charAt(0)==="Q")e=te(j.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return jn(it.parse(r));if(t==null)throw new k('Please pass a multibase decoder for strings that do not start with "1" or "Q"');e=te(t.decode(r))}return Xr(e)}function Wc(r){if(r.type==="Ed25519")return new $n({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new Wn({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Hn({multihash:r.toCID().multihash,publicKey:r});throw new Me}function Id(r){return Wc(r.publicKey)}function Xr(r){if(Zg(r))return new Hn({multihash:r});if(Yg(r))try{let t=Ad(r);if(t.type==="Ed25519")return new $n({multihash:r,publicKey:t});if(t.type==="secp256k1")return new Wn({multihash:r,publicKey:t})}catch{let e=B(r.digest);return new Gn(new URL(e))}throw new Lo("Supplied PeerID Multihash is invalid")}function jn(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==Xg&&r.code!==_d)throw new Po("Supplied PeerID CID is invalid");if(r.code===_d){let t=B(r.multihash.digest);return new Gn(new URL(t))}return Xr(r.multihash)}function Yg(r){return r.code===ee.code}function Zg(r){return r.code===Br.code}function Yr(r){if(typeof r!="object"||r===null)return!1;let t=Object.getPrototypeOf(r);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in r)&&!(Symbol.iterator in r)}var{hasOwnProperty:Td}=Object.prototype,{propertyIsEnumerable:Qg}=Object,Zr=(r,t,e)=>{Object.defineProperty(r,t,{value:e,writable:!0,enumerable:!0,configurable:!0})},Jg=void 0,Cd={concatArrays:!1,ignoreUndefined:!1},as=r=>{let t=[];for(let e in r)Td.call(r,e)&&t.push(e);if(Object.getOwnPropertySymbols){let e=Object.getOwnPropertySymbols(r);for(let n of e)Qg.call(r,n)&&t.push(n)}return t};function Qr(r){return Array.isArray(r)?t0(r):Yr(r)?e0(r):r}function t0(r){let t=r.slice(0,0);return as(r).forEach(e=>{Zr(t,e,Qr(r[e]))}),t}function e0(r){let t=Object.getPrototypeOf(r)===null?Object.create(null):{};return as(r).forEach(e=>{Zr(t,e,Qr(r[e]))}),t}var Pd=(r,t,e,n)=>(e.forEach(o=>{typeof t[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?Zr(r,o,Gc(r[o],t[o],n)):Zr(r,o,Qr(t[o])))}),r),r0=(r,t,e)=>{let n=r.slice(0,0),o=0;return[r,t].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)Td.call(s,a)&&(i.push(String(a)),s===r?Zr(n,o++,s[a]):Zr(n,o++,Qr(s[a])));n=Pd(n,s,as(s).filter(a=>!i.includes(a)),e)}),n};function Gc(r,t,e){return e.concatArrays&&Array.isArray(r)&&Array.isArray(t)?r0(r,t,e):!Yr(t)||!Yr(r)?Qr(t):Pd(r,t,as(t),e)}function cs(...r){let t=Gc(Qr(Cd),this!==Jg&&this||{},Cd),e={_:{}};for(let n of r)if(n!==void 0){if(!Yr(n))throw new TypeError("`"+n+"` is not an Option Object");e=Gc(e,{_:n},t)}return e._}var dt=class extends Event{type;detail;constructor(t,e){super(t),this.type=t,this.detail=e}};var Xc=Io(Dd(),1);var Yn=class extends Error{constructor(t){super(t),this.name="TimeoutError"}},Yc=class extends Error{constructor(t){super(),this.name="AbortError",this.message=t}},Rd=r=>globalThis.DOMException===void 0?new Yc(r):new DOMException(r),kd=r=>{let t=r.reason===void 0?Rd("This operation was aborted."):r.reason;return t instanceof Error?t:Rd(t)};function Zc(r,t){let{milliseconds:e,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=t,i,a,u=new Promise((l,f)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(t.signal){let{signal:m}=t;m.aborted&&f(kd(m)),a=()=>{f(kd(m))},m.addEventListener("abort",a,{once:!0})}if(e===Number.POSITIVE_INFINITY){r.then(l,f);return}let d=new Yn;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(m){f(m)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?f(o):(d.message=o??`Promise timed out after ${e} milliseconds`,f(d))},e),(async()=>{try{l(await r)}catch(m){f(m)}})()}).finally(()=>{u.clear(),a&&t.signal&&t.signal.removeEventListener("abort",a)});return u.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},u}function Qc(r,t,e){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;e(r[i],t)<=0?(n=++i,o-=s+1):o=s}return n}var Zn=class{#t=[];enqueue(t,e){e={priority:0,...e};let n={priority:e.priority,id:e.id,run:t};if(this.size===0||this.#t[this.size-1].priority>=e.priority){this.#t.push(n);return}let o=Qc(this.#t,n,(s,i)=>i.priority-s.priority);this.#t.splice(o,0,n)}setPriority(t,e){let n=this.#t.findIndex(s=>s.id===t);if(n===-1)throw new ReferenceError(`No promise function with the id "${t}" exists in the queue.`);let[o]=this.#t.splice(n,1);this.enqueue(o.run,{priority:e,id:t})}dequeue(){return this.#t.shift()?.run}filter(t){return this.#t.filter(e=>e.priority===t.priority).map(e=>e.run)}get size(){return this.#t.length}};var Qn=class extends Xc.default{#t;#e;#r=0;#a;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#i;#g;#w=1n;timeout;constructor(t){if(super(),t={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Zn,...t},!(typeof t.intervalCap=="number"&&t.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${t.intervalCap?.toString()??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${t.interval?.toString()??""}\` (${typeof t.interval})`);this.#t=t.carryoverConcurrencyCount,this.#e=t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0,this.#a=t.intervalCap,this.#c=t.interval,this.#n=new t.queueClass,this.#m=t.queueClass,this.concurrency=t.concurrency,this.timeout=t.timeout,this.#g=t.throwOnTimeout===!0,this.#i=t.autoStart===!1}get#x(){return this.#e||this.#r<this.#a}get#E(){return this.#s<this.#u}#v(){this.#s--,this.#f(),this.emit("next")}#A(){this.#b(),this.#y(),this.#l=void 0}get#S(){let t=Date.now();if(this.#o===void 0){let e=this.#p-t;if(e<0)this.#r=this.#t?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#A()},e)),!0}return!1}#f(){if(this.#n.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#i){let t=!this.#S;if(this.#x&&this.#E){let e=this.#n.dequeue();return e?(this.emit("active"),e(),t&&this.#y(),!0):!1}}return!1}#y(){this.#e||this.#o!==void 0||(this.#o=setInterval(()=>{this.#b()},this.#c),this.#p=Date.now()+this.#c)}#b(){this.#r===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#r=this.#t?this.#s:0,this.#d()}#d(){for(;this.#f(););}get concurrency(){return this.#u}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);this.#u=t,this.#d()}async#_(t){return new Promise((e,n)=>{t.addEventListener("abort",()=>{n(t.reason)},{once:!0})})}setPriority(t,e){this.#n.setPriority(t,e)}async add(t,e={}){return e.id??=(this.#w++).toString(),e={timeout:this.timeout,throwOnTimeout:this.#g,...e},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#s++,this.#r++;try{e.signal?.throwIfAborted();let s=t({signal:e.signal});e.timeout&&(s=Zc(Promise.resolve(s),{milliseconds:e.timeout})),e.signal&&(s=Promise.race([s,this.#_(e.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof Yn&&!e.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#v()}},e),this.emit("add"),this.#f()})}async addAll(t,e){return Promise.all(t.map(async n=>this.add(n,e)))}start(){return this.#i?(this.#i=!1,this.#d(),this):this}pause(){this.#i=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(t){this.#n.size<t||await this.#h("next",()=>this.#n.size<t)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(t,e){return new Promise(n=>{let o=()=>{e&&!e()||(this.off(t,o),n())};this.on(t,o)})}get size(){return this.#n.size}sizeBy(t){return this.#n.filter(t).length}get pending(){return this.#s}get isPaused(){return this.#i}};function us(r){let t=[Gt.A];return r==null?t:Array.isArray(r)?r.length===0?t:r:[r]}var Jc=60;function fs(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(t=>({name:t.name,type:Gt[t.type]})),Answer:(r.Answer??r.answers??[]).map(t=>({name:t.name,type:Gt[t.type],TTL:t.TTL??t.ttl??Jc,data:t.data instanceof Uint8Array?B(t.data):t.data}))}}var s0=4;function tl(r,t={}){let e=new Qn({concurrency:t.queryConcurrency??s0});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),us(o.types).forEach(a=>{s.append("type",Gt[a])}),o.onProgress?.(new dt("dns:query",{detail:n}));let i=await e.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=fs(await a.json());return o.onProgress?.(new dt("dns:response",{detail:c})),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function Md(){return[tl("https://cloudflare-dns.com/dns-query"),tl("https://dns.google/resolve")]}var Bd=Io(Nd(),1);var el=class{lru;constructor(t){this.lru=(0,Bd.default)(t)}get(t,e){let n=!0,o=[];for(let s of e){let i=this.getAnswers(t,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return fs({answers:o})}getAnswers(t,e){let n=`${t.toLowerCase()}-${e}`,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:Gt[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(t,e){let n=`${t.toLowerCase()}-${e.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(e.TTL??Jc)*1e3,value:e}),this.lru.set(n,o)}remove(t,e){let n=`${t.toLowerCase()}-${e}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Fd(r){return new el(r)}var i0=1e3,ds=class{resolvers;cache;constructor(t){this.resolvers={},this.cache=Fd(t.cacheSize??i0),Object.entries(t.resolvers??{}).forEach(([e,n])=>{Array.isArray(n)||(n=[n]),e.endsWith(".")||(e=`${e}.`),this.resolvers[e]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Md())}async query(t,e={}){let n=us(e.types),o=e.cached!==!1?this.cache.get(t,n):void 0;if(o!=null)return e.onProgress?.(new dt("dns:cache",{detail:o})),o;let s=`${t.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(e.signal?.aborted===!0)break;try{let u=await c(t,{...e,types:n});for(let l of u.Answer)this.cache.add(t,l);return u}catch(u){a.push(u),e.onProgress?.(new dt("dns:error",{detail:u}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${t} ${n} failed`)}};var Gt;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(Gt||(Gt={}));function Ud(r={}){return new ds(r)}var hs=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",u=2**(8*o)-1;for(;;){let l=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,t);if(!Number.isNaN(d))return d});if(l===void 0)break;if(s*=t,s+=l,s>u||(i+=1,e!==void 0&&i>e))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return e[o]=i[0],e[o+1]=i[1],e[o+2]=i[2],e[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];e[o]=s>>8,e[o+1]=s&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=t(s.subarray(0,i));return e.set(s.subarray(0,a),16-a),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Kd=45,a0=15,Jr=new hs;function ps(r){if(!(r.length>a0))return Jr.new(r).parseWith(()=>Jr.readIPv4Addr())}function ms(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Kd))return Jr.new(r).parseWith(()=>Jr.readIPv6Addr())}function ar(r,t=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>Kd)return;let e=Jr.new(r).parseWith(()=>Jr.readIPAddr());if(e)return t&&e.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,e[0],e[1],e[2],e[3]]):e}function qd(r,t,e){let n=0;for(let o of r)if(!(n<t)){if(n>e)break;if(o!==255)return!1;n++}return!0}function zd(r,t,e,n){let o=0;for(let s of r)if(!(o<e)){if(o>n)break;if(s!==t[o])return!1;o++}return!0}function rl(r){switch(r.length){case cr:return r.join(".");case lr:{let t=[];for(let e=0;e<r.length;e++)e%2===0&&t.push(r[e].toString(16).padStart(2,"0")+r[e+1].toString(16).padStart(2,"0"));return t.join(":")}default:throw new Error("Invalid ip length")}}function Vd(r){let t=0;for(let[e,n]of r.entries()){if(n===255){t+=8;continue}for(;(n&128)!=0;)t++,n=n<<1;if((n&128)!=0)return-1;for(let o=e+1;o<r.length;o++)if(r[o]!=0)return-1;break}return t}function Hd(r){let t="0x";for(let e of r)t+=(e>>4).toString(16)+(e&15).toString(16);return t}var cr=4,lr=16,Hv=parseInt("0xFFFF",16),c0=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Jn(r,t){t.length===lr&&r.length===cr&&qd(t,0,11)&&(t=t.slice(12)),t.length===cr&&r.length===lr&&zd(r,c0,0,11)&&(r=r.slice(12));let e=r.length;if(e!=t.length)throw new Error("Failed to mask ip");let n=new Uint8Array(e);for(let o=0;o<e;o++)n[o]=r[o]&t[o];return n}function $d(r,t){if(typeof t=="string"&&(t=ar(t)),t==null)throw new Error("Invalid ip");if(t.length!==r.network.length)return!1;for(let e=0;e<t.length;e++)if((r.network[e]&r.mask[e])!==(t[e]&r.mask[e]))return!1;return!0}function nl(r){let[t,e]=r.split("/");if(!t||!e)throw new Error("Failed to parse given CIDR: "+r);let n=cr,o=ps(t);if(o==null&&(n=lr,o=ms(t),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(e,10);if(Number.isNaN(s)||String(s).length!==e.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=ol(s,8*n);return{network:Jn(o,i),mask:i}}function ol(r,t){if(t!==8*cr&&t!==8*lr)throw new Error("Invalid CIDR mask");if(r<0||r>t)throw new Error("Invalid CIDR mask");let e=t/8,n=new Uint8Array(e);for(let o=0;o<e;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var tn=class{constructor(t,e){if(e==null)({network:this.network,mask:this.mask}=nl(t));else{let n=ar(t);if(n==null)throw new Error("Failed to parse network");e=String(e);let o=parseInt(e,10);if(Number.isNaN(o)||String(o).length!==e.length||o<0||o>n.length*8){let s=ar(e);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=ol(o,8*n.length);this.network=Jn(n,this.mask)}}contains(t){return $d({network:this.network,mask:this.mask},t)}toString(){let t=Vd(this.mask),e=t!==-1?String(t):Hd(this.mask);return rl(this.network)+"/"+e}};function ae(r){return!!ps(r)}function en(r){return!!ms(r)}function gs(r){return!!ar(r)}var Wd=ae,l0=en,sl=function(r){let t=0;if(r=r.toString().trim(),Wd(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(l0(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let s=Wd(e[n]),i;s&&(i=sl(e[n]),e[n]=B(i.slice(0,2),"base16")),i!=null&&++n<8&&e.splice(n,0,B(i.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let s=[n,1];for(n=9-e.length;n>0;n--)s.push("0");e.splice.apply(e,s)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let s=parseInt(e[n],16);o[t++]=s>>8&255,o[t++]=s&255}return o}throw new Error("invalid ip address")},Gd=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let s=0;s<e;s++)o.push(r[t+s]);return o.join(".")}if(e===16){let o=[];for(let s=0;s<e;s+=2)o.push(n.getUint16(t+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var rn={},il={},f0=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];f0.forEach(r=>{let t=d0(...r);il[t.code]=t,rn[t.name]=t});function d0(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function W(r){if(typeof r=="number"){if(il[r]!=null)return il[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(rn[r]!=null)return rn[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var h0=W("ip4"),p0=W("ip6"),m0=W("ipcidr");function ul(r,t){switch(W(r).code){case 4:case 41:return y0(t);case 42:return ll(t);case 43:return B(t,"base10");case 6:case 273:case 33:case 132:return Yd(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return ll(t);case 421:return E0(t);case 444:return Xd(t);case 445:return Xd(t);case 466:return x0(t);case 481:return globalThis.encodeURIComponent(ll(t));default:return B(t,"base16")}}function fl(r,t){switch(W(r).code){case 4:return jd(t);case 41:return jd(t);case 42:return cl(t);case 43:return L(t,"base10");case 6:case 273:case 33:case 132:return hl(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return cl(t);case 421:return b0(t);case 444:return v0(t);case 445:return A0(t);case 466:return w0(t);case 481:return cl(globalThis.decodeURIComponent(t));default:return L(t,"base16")}}function dl(r){let t,e;if(r.stringTuples().forEach(([n,o])=>{(n===h0.code||n===p0.code)&&(e=o),n===m0.code&&(t=o)}),t==null||e==null)throw new Error("Invalid multiaddr");return new tn(e,t)}var al=Object.values(vn).map(r=>r.decoder),g0=function(){let r=al[0].or(al[1]);return al.slice(2).forEach(t=>r=r.or(t)),r}();function jd(r){if(!gs(r))throw new Error("invalid ip address");return sl(r)}function y0(r){let t=Gd(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!gs(t))throw new Error("invalid ip address");return t}function hl(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function Yd(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function cl(r){let t=L(r),e=Uint8Array.from(It(t.length));return Dt([e,t],e.length+t.length)}function ll(r){let t=oe(r);if(r=r.slice(mt(t)),r.length!==t)throw new Error("inconsistent lengths");return B(r)}function b0(r){let t;r[0]==="Q"||r[0]==="1"?t=te(j.decode(`z${r}`)).bytes:t=it.parse(r).multihash.bytes;let e=Uint8Array.from(It(t.length));return Dt([e,t],e.length+t.length)}function w0(r){let t=g0.decode(r),e=Uint8Array.from(It(t.length));return Dt([e,t],e.length+t.length)}function x0(r){let t=oe(r),e=r.slice(mt(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+B(e,"base64url")}function E0(r){let t=oe(r),e=r.slice(mt(t));if(e.length!==t)throw new Error("inconsistent lengths");return B(e,"base58btc")}function v0(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=Ht.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=hl(n);return Dt([e,o],e.length+o.length)}function A0(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=Ht.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=hl(n);return Dt([e,o],e.length+o.length)}function Xd(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=B(t,"base32"),o=Yd(e);return`${n}:${o}`}function Zd(r){r=pl(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=W(i);if(a.size===0){t.push([a.code]),e.push([a.code]);continue}if(s++,s>=o.length)throw new ys("invalid address: "+r);if(a.path===!0){n=pl(o.slice(s).join("/")),t.push([a.code,fl(a.code,n)]),e.push([a.code,n]);break}let c=fl(a.code,o[s]);t.push([a.code,c]),e.push([a.code,ul(a.code,c)])}return{string:Qd(e),bytes:bs(t),tuples:t,stringTuples:e,path:n}}function ml(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let s=oe(r,o),i=mt(s),a=W(s),c=S0(a,r.slice(o+i));if(c===0){t.push([s]),e.push([s]),o+=i;continue}let u=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw new ys("Invalid address Uint8Array: "+B(r,"base16"));t.push([s,u]);let l=ul(s,u);if(e.push([s,l]),a.path===!0){n=l;break}}return{bytes:Uint8Array.from(r),string:Qd(e),tuples:t,stringTuples:e,path:n}}function Qd(r){let t=[];return r.map(e=>{let n=W(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),pl(t.join("/"))}function bs(r){return Dt(r.map(t=>{let e=W(t[0]),n=Uint8Array.from(It(e.code));return t.length>1&&t[1]!=null&&(n=Dt([n,t[1]])),n}))}function S0(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=oe(t instanceof Uint8Array?t:Uint8Array.from(t));return e+mt(e)}}function pl(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}var ys=class extends Error{static name="ParseError";name="ParseError";constructor(t){super(`Error parsing address: ${t}`)}};var _0=Symbol.for("nodejs.util.inspect.custom"),yl=Symbol.for("@multiformats/js-multiaddr/multiaddr"),I0=[W("dns").code,W("dns4").code,W("dns6").code,W("dnsaddr").code],gl=class extends Error{constructor(t="No available resolver"){super(t),this.name="NoAvailableResolverError"}},ws=class r{bytes;#t;#e;#r;#a;[yl]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=ml(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=Zd(t)}else if(Ve(t))e=ml(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#t=e.string,this.#e=e.tuples,this.#r=e.stringTuples,this.#a=e.path}toString(){return this.#t}toJSON(){return this.toString()}toOptions(){let t,e,n,o,s="",i=W("tcp"),a=W("udp"),c=W("ip4"),u=W("ip6"),l=W("dns6"),f=W("ip6zone");for(let[m,h]of this.stringTuples())m===f.code&&(s=`%${h??""}`),I0.includes(m)&&(e=i.name==="tcp"?"tcp":"udp",o=443,n=`${h??""}${s}`,t=m===l.code?6:4),(m===i.code||m===a.code)&&(e=W(m).name==="tcp"?"tcp":"udp",o=parseInt(h??"")),(m===c.code||m===u.code)&&(e=W(m).name==="tcp"?"tcp":"udp",n=`${h??""}${s}`,t=m===u.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#e.map(([t])=>Object.assign({},W(t)))}protoCodes(){return this.#e.map(([t])=>t)}protoNames(){return this.#e.map(([t])=>W(t).name)}tuples(){return this.#e.map(([t,e])=>e==null?[t]:[t,e])}stringTuples(){return this.#r.map(([t,e])=>e==null?[t]:[t,e])}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(bs(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===rn.p2p.code&&t.push([n,o]),n===rn["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?B(j.decode(`z${n}`),"base58btc"):B(it.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#a}equals(t){return tt(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(s=>s.resolvable);if(e==null)return[this];let n=nn.get(e.name);if(n==null)throw new gl(`no available resolver for ${e.name}`);return(await n(this,t)).map(s=>G(s))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[_0](){return`Multiaddr(${this.#t})`}};var nn=new Map;function Ve(r){return!!r?.[yl]}function G(r){return new ws(r)}var C0=32,{code:T0}=W("dnsaddr"),bl=class extends Error{constructor(t="Max recursive depth reached"){super(t),this.name="RecursionLimitError"}},ur=async function(t,e={}){let n=e.maxRecursiveDepth??C0;if(n===0)throw new bl("Max recursive depth reached");let[,o]=t.stringTuples().find(([u])=>u===T0)??[],i=await(e?.dns??Ud()).query(`_dnsaddr.${o}`,{signal:e?.signal,types:[Gt.TXT]}),a=t.getPeerId(),c=[];for(let u of i.Answer){let l=u.data.replace(/["']/g,"").trim().split("=")[1];if(l==null||a!=null&&!l.includes(a))continue;let f=G(l);if(l.startsWith("/dnsaddr")){let d=await f.resolve({...e,maxRecursiveDepth:n-1});c.push(...d.map(m=>m.toString()))}else c.push(f.toString())}return c};var P0={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:ur}},transportManager:{faultTolerance:We.FATAL_ALL}};async function Jd(r){let t=cs(P0,r);if(t.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new k("Private network is enforced, but no protector was provided");return t}function L0(r,t){try{if(typeof r=="string"&&r.length>0)return D0(r);if(typeof r=="number"&&isFinite(r))return t?.long?k0(r):R0(r);throw new Error("Value is not a string or number.")}catch(e){let n=M0(e)?`${e.message}. value=${JSON.stringify(r)}`:"An unknown error has occured.";throw new Error(n)}}function D0(r){if(r=String(r),r.length>100)throw new Error("Value exceeds the maximum length of 100 characters.");let t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(!t)return NaN;let e=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return e*315576e5;case"weeks":case"week":case"w":return e*6048e5;case"days":case"day":case"d":return e*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return e*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return e*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return e*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:throw new Error(`The unit ${n} was matched, but no matching case exists.`)}}var Es=L0;function R0(r){let t=Math.abs(r);return t>=864e5?`${Math.round(r/864e5)}d`:t>=36e5?`${Math.round(r/36e5)}h`:t>=6e4?`${Math.round(r/6e4)}m`:t>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function k0(r){let t=Math.abs(r);return t>=864e5?xs(r,t,864e5,"day"):t>=36e5?xs(r,t,36e5,"hour"):t>=6e4?xs(r,t,6e4,"minute"):t>=1e3?xs(r,t,1e3,"second"):`${r} ms`}function xs(r,t,e,n){let o=t>=e*1.5;return`${Math.round(r/e)} ${n}${o?"s":""}`}function M0(r){return typeof r=="object"&&r!==null&&"message"in r}function wl(r){e.debug=e,e.default=e,e.coerce=c,e.disable=s,e.enable=o,e.enabled=i,e.humanize=Es,e.destroy=u,Object.keys(r).forEach(l=>{e[l]=r[l]}),e.names=[],e.skips=[],e.formatters={};function t(l){let f=0;for(let d=0;d<l.length;d++)f=(f<<5)-f+l.charCodeAt(d),f|=0;return e.colors[Math.abs(f)%e.colors.length]}e.selectColor=t;function e(l){let f,d=null,m,h;function g(...b){if(!g.enabled)return;let v=g,C=Number(new Date),x=C-(f||C);v.diff=x,v.prev=f,v.curr=C,f=C,b[0]=e.coerce(b[0]),typeof b[0]!="string"&&b.unshift("%O");let p=0;b[0]=b[0].replace(/%([a-zA-Z%])/g,(T,P)=>{if(T==="%%")return"%";p++;let D=e.formatters[P];if(typeof D=="function"){let F=b[p];T=D.call(v,F),b.splice(p,1),p--}return T}),e.formatArgs.call(v,b),(v.log||e.log).apply(v,b)}return g.namespace=l,g.useColors=e.useColors(),g.color=e.selectColor(l),g.extend=n,g.destroy=e.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(m!==e.namespaces&&(m=e.namespaces,h=e.enabled(l)),h),set:b=>{d=b}}),typeof e.init=="function"&&e.init(g),g}function n(l,f){let d=e(this.namespace+(typeof f>"u"?":":f)+l);return d.log=this.log,d}function o(l){e.save(l),e.namespaces=l,e.names=[],e.skips=[];let f,d=(typeof l=="string"?l:"").split(/[\s,]+/),m=d.length;for(f=0;f<m;f++)d[f]&&(l=d[f].replace(/\*/g,".*?"),l[0]==="-"?e.skips.push(new RegExp("^"+l.substr(1)+"$")):e.names.push(new RegExp("^"+l+"$")))}function s(){let l=[...e.names.map(a),...e.skips.map(a).map(f=>"-"+f)].join(",");return e.enable(""),l}function i(l){if(l[l.length-1]==="*")return!0;let f,d;for(f=0,d=e.skips.length;f<d;f++)if(e.skips[f].test(l))return!1;for(f=0,d=e.names.length;f<d;f++)if(e.names[f].test(l))return!0;return!1}function a(l){return l.toString().substring(2,l.toString().length-2).replace(/\.\*\?$/,"*")}function c(l){return l instanceof Error?l.stack??l.message:l}function u(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return e.setupFormatters(e.formatters),e.enable(e.load()),e}var vs=q0(),O0=["#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 N0(){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 B0(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Es(this.diff),!this.useColors)return;let t="color: "+this.color;r.splice(1,0,t,"color: inherit");let e=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(e++,o==="%c"&&(n=e))}),r.splice(n,0,t)}var F0=console.debug??console.log??(()=>{});function U0(r){try{r?vs?.setItem("debug",r):vs?.removeItem("debug")}catch{}}function K0(){let r;try{r=vs?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function q0(){try{return localStorage}catch{}}function z0(r){r.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}var th=wl({formatArgs:B0,save:U0,load:K0,useColors:N0,setupFormatters:z0,colors:O0,storage:vs,log:F0});var qt=th;qt.formatters.b=r=>r==null?"undefined":j.baseEncode(r);qt.formatters.t=r=>r==null?"undefined":Ht.baseEncode(r);qt.formatters.m=r=>r==null?"undefined":Ca.baseEncode(r);qt.formatters.p=r=>r==null?"undefined":r.toString();qt.formatters.c=r=>r==null?"undefined":r.toString();qt.formatters.k=r=>r==null?"undefined":r.toString();qt.formatters.a=r=>r==null?"undefined":r.toString();qt.formatters.e=r=>r==null?"undefined":eh(r.stack)??eh(r.message)??r.toString();function V0(r){let t=()=>{};return t.enabled=!1,t.color="",t.diff=0,t.log=()=>{},t.namespace=r,t.destroy=()=>!0,t.extend=()=>t,t}function As(){return{forComponent(r){return H0(r)}}}function H0(r){let t=V0(`${r}:trace`);return qt.enabled(`${r}:trace`)&&qt.names.map(e=>e.toString()).find(e=>e.includes(":trace"))!=null&&(t=qt(`${r}:trace`)),Object.assign(qt(r),{error:qt(`${r}:error`),trace:t})}function eh(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}function fr(r,t){let e={[Symbol.iterator]:()=>e,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:t(o)}}};return e}function Ss(r){let t=te(j.decode(`z${r}`));return Xr(t)}var Xt=class{map;constructor(t){if(this.map=new Map,t!=null)for(let[e,n]of t.entries())this.map.set(e.toString(),{key:e,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(t){return this.map.delete(t.toString())}entries(){return fr(this.map.entries(),t=>[t[1].key,t[1].value])}forEach(t){this.map.forEach((e,n)=>{t(e.value,e.key,this)})}get(t){return this.map.get(t.toString())?.value}has(t){return this.map.has(t.toString())}set(t,e){this.map.set(t.toString(),{key:t,value:e})}keys(){return fr(this.map.values(),t=>t.key)}values(){return fr(this.map.values(),t=>t.value)}get size(){return this.map.size}};var dr=class r{set;constructor(t){if(this.set=new Set,t!=null)for(let e of t)this.set.add(e.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(t){this.set.add(t.toString())}clear(){this.set.clear()}delete(t){this.set.delete(t.toString())}entries(){return fr(this.set.entries(),t=>{let e=Ss(t[0]);return[e,e]})}forEach(t){this.set.forEach(e=>{let n=Ss(e);t(n,n,this)})}has(t){return this.set.has(t.toString())}values(){return fr(this.set.values(),t=>Ss(t))}intersection(t){let e=new r;for(let n of t)this.has(n)&&e.add(n);return e}difference(t){let e=new r;for(let n of this)t.has(n)||e.add(n);return e}union(t){let e=new r;for(let n of t)e.add(n);for(let n of this)e.add(n);return e}};var xl={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},rh={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},nh=new globalThis.TextEncoder;function $0(r,t){let e=xl[t],n=rh[t];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(t,n*e);return n}function W0(r,t,e){if(e.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=xl[t],o=rh[t],s=r;for(;s.length>0;){let i=nh.encodeInto(s,e);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(e[a]),o=BigInt.asUintN(t,o*n)}return o}function El(r,{size:t=32,utf8Buffer:e}={}){if(!xl[t])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(e)return W0(r,t,e);r=nh.encode(r)}return $0(r,t)}var to={hash:r=>Number(El(r,{size:32})),hashV:(r,t)=>G0(to.hash(r,t))};function G0(r){let t=r.toString(16);return t.length%2===1&&(t=`0${t}`),L(t,"base16")}var vl=64,ce=class{fp;h;seed;constructor(t,e,n,o=2){if(o>vl)throw new TypeError("Invalid Fingerprint Size");let s=e.hashV(t,n),i=ct(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=e,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(t){return t?.fp instanceof Uint8Array?tt(this.fp,t.fp):!1}};function hr(r,t){return Math.floor(Math.random()*(t-r))+r}var pr=class{contents;constructor(t){this.contents=new Array(t).fill(null)}has(t){if(!(t instanceof ce))throw new TypeError("Invalid Fingerprint");return this.contents.some(e=>t.equals(e))}add(t){if(!(t instanceof ce))throw new TypeError("Invalid Fingerprint");for(let e=0;e<this.contents.length;e++)if(this.contents[e]==null)return this.contents[e]=t,!0;return!0}swap(t){if(!(t instanceof ce))throw new TypeError("Invalid Fingerprint");let e=hr(0,this.contents.length-1),n=this.contents[e];return this.contents[e]=t,n}remove(t){if(!(t instanceof ce))throw new TypeError("Invalid Fingerprint");let e=this.contents.findIndex(n=>t.equals(n));return e>-1?(this.contents[e]=null,!0):!1}};var j0=500,eo=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(t){this.filterSize=t.filterSize,this.bucketSize=t.bucketSize??4,this.fingerprintSize=t.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=t.hash??to,this.seed=t.seed??hr(0,Math.pow(2,10))}add(t){typeof t=="string"&&(t=L(t));let e=new ce(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=(n^e.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new pr(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new pr(this.bucketSize)),this.buckets[n].add(e)||this.buckets[o].add(e))return this.count++,!0;let s=[n,o],i=s[hr(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new pr(this.bucketSize));for(let a=0;a<j0;a++){let c=this.buckets[i].swap(e);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new pr(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(t){typeof t=="string"&&(t=L(t));let e=new ce(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=this.buckets[n]?.has(e)??!1;if(o)return o;let s=(n^e.hash())%this.filterSize;return this.buckets[s]?.has(e)??!1}remove(t){typeof t=="string"&&(t=L(t));let e=new ce(t,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(t,this.seed)%this.filterSize,o=this.buckets[n]?.remove(e)??!1;if(o)return this.count--,o;let s=(n^e.hash())%this.filterSize,i=this.buckets[s]?.remove(e)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},X0={1:.5,2:.84,4:.95,8:.98};function Y0(r=.001){return r>.002?2:r>1e-5?4:8}function oh(r,t=.001){let e=Y0(t),n=X0[e],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/t)+Math.log2(2*e)),vl);return{filterSize:o,bucketSize:e,fingerprintSize:s}}var _s=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(t){this.bucketSize=t.bucketSize??4,this.filterSize=t.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=t.fingerprintSize??2,this.scale=t.scale??2,this.hash=t.hash??to,this.seed=t.seed??hr(0,Math.pow(2,10)),this.filterSeries=[new eo({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(t){if(typeof t=="string"&&(t=L(t)),this.has(t))return!0;let e=this.filterSeries.find(n=>n.reliable);if(e==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);e=new eo({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(e)}return e.add(t)}has(t){typeof t=="string"&&(t=L(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].has(t))return!0;return!1}remove(t){typeof t=="string"&&(t=L(t));for(let e=0;e<this.filterSeries.length;e++)if(this.filterSeries[e].remove(t))return!0;return!1}get count(){return this.filterSeries.reduce((t,e)=>t+e.count,0)}};function ro(r,t=.001,e){return new _s({...oh(r,t),...e??{}})}var Al=class extends Xt{metric;constructor(t){super();let{name:e,metrics:n}=t;this.metric=n.registerMetric(e),this.updateComponentMetric()}set(t,e){return super.set(t,e),this.updateComponentMetric(),this}delete(t){let e=super.delete(t);return this.updateComponentMetric(),e}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Sl(r){let{name:t,metrics:e}=r,n;return e!=null?n=new Al({name:t,metrics:e}):n=new Xt,n}var no;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.publicKey!=null&&e.publicKey.byteLength>0&&(n.uint32(10),n.bytes(e.publicKey)),e.payloadType!=null&&e.payloadType.byteLength>0&&(n.uint32(18),n.bytes(e.payloadType)),e.payload!=null&&e.payload.byteLength>0&&(n.uint32(26),n.bytes(e.payload)),e.signature!=null&&e.signature.byteLength>0&&(n.uint32(42),n.bytes(e.signature)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={publicKey:ct(0),payloadType:ct(0),payload:ct(0),signature:ct(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.publicKey=e.bytes();break}case 2:{s.payloadType=e.bytes();break}case 3:{s.payload=e.bytes();break}case 5:{s.signature=e.bytes();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(no||(no={}));var Is=class extends Error{constructor(t="Invalid signature"){super(t),this.name="InvalidSignatureError"}};var on=class r{static createFromProtobuf=t=>{let e=no.decode(t),n=jr(e.publicKey);return new r({publicKey:n,payloadType:e.payloadType,payload:e.payload,signature:e.signature})};static seal=async(t,e,n)=>{if(e==null)throw new Error("Missing private key");let o=t.domain,s=t.codec,i=t.marshal(),a=sh(o,s,i),c=await e.sign(a.subarray(),n);return new r({publicKey:e.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(t,e,n)=>{let o=r.createFromProtobuf(t);if(!await o.validate(e,n))throw new Is("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(t){let{publicKey:e,payloadType:n,payload:o,signature:s}=t;this.publicKey=e,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=no.encode({publicKey:jt(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(t){return t==null?!1:tt(this.marshal(),t.marshal())}async validate(t,e){let n=sh(t,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,e)}},sh=(r,t,e)=>{let n=L(r),o=It(n.byteLength),s=It(t.length),i=It(e.length);return new Y(o,n,s,t,i,e)};function ih(r,t){let e=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==t.length?!1:(t.sort(e),r.sort(e).every((n,o)=>t[o].equals(n)))}var ah="libp2p-peer-record",ch=Uint8Array.from([3,1]);var oo;(function(r){let t;(function(n){let o;n.codec=()=>(o==null&&(o=Bt((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ct(0)},u=i==null?s.len:s.pos+i;for(;s.pos<u;){let l=s.uint32();switch(l>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(l&7);break}}}return c})),o),n.encode=s=>Nt(s,n.codec()),n.decode=(s,i)=>Ot(s,n.codec(),i)})(t=r.AddressInfo||(r.AddressInfo={}));let e;r.codec=()=>(e==null&&(e=Bt((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ct(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new ir('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),e),r.encode=n=>Nt(n,r.codec()),r.decode=(n,o)=>Ot(n,r.codec(),o)})(oo||(oo={}));var mr=class r{static createFromProtobuf=t=>{let e=oo.decode(t),n=Xr(te(e.peerId)),o=(e.addresses??[]).map(i=>G(i.multiaddr)),s=e.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=ah;static CODEC=ch;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(t){let{peerId:e,multiaddrs:n,seqNumber:o}=t;this.peerId=e,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=oo.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(t=>({multiaddr:t.bytes}))})),this.marshaled}equals(t){return!(!(t instanceof r)||!this.peerId.equals(t.peerId)||this.seqNumber!==t.seqNumber||!ih(this.multiaddrs,t.multiaddrs))}};function Z0(r){return r[Symbol.asyncIterator]!=null}function Q0(r){if(Z0(r))return(async()=>{let e=[];for await(let n of r)e.push(n);return e})();let t=[];for(let e of r)t.push(e);return t}var so=Q0;var le=class extends Error{static name="AbortError";name="AbortError";constructor(t="The operation was aborted",...e){super(t,...e)}};function lt(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Cs=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||(t-1&t)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},sn=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new Cs(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new Cs(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var _l=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function Ts(r={}){return J0(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function J0(r,t){t=t??{};let e=t.onEnd,n=new sn,o,s,i,a=lt(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((b,v)=>{s=C=>{s=null,n.push(C);try{b(r(n))}catch(x){v(x)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=lt()})}},u=b=>s!=null?s(b):(n.push(b),o),l=b=>(n=new sn,s!=null?s({error:b}):(n.push({error:b}),o)),f=b=>{if(i)return o;if(t?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:b})},d=b=>i?o:(i=!0,b!=null?l(b):u({done:!0})),m=()=>(n=new sn,d(),{done:!0}),h=b=>(d(b),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:m,throw:h,push:f,end:d,get readableLength(){return n.size},onEmpty:async b=>{let v=b?.signal;if(v?.throwIfAborted(),n.isEmpty())return;let C,x;v!=null&&(C=new Promise((p,w)=>{x=()=>{w(new _l)},v.addEventListener("abort",x)}));try{await Promise.race([a.promise,C])}finally{x!=null&&v!=null&&v?.removeEventListener("abort",x)}}},e==null)return o;let g=o;return o={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(b){return g.throw(b),e!=null&&(e(b),e=void 0),{done:!0}},return(){return g.return(),e!=null&&(e(),e=void 0),{done:!0}},push:f,end(b){return g.end(b),e!=null&&(e(b),e=void 0),o},get readableLength(){return g.readableLength},onEmpty:b=>g.onEmpty(b)},o}var Il=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function me(r,t,e,n){let o=new Il(n?.errorMessage,n?.errorCode);return e?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{function a(){e?.removeEventListener("abort",l),r.removeEventListener(t,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,u)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(d){a(),i(d);return}a(),s(f)},u=f=>{a(),i(f.detail)},l=()=>{a(),i(o)};e?.addEventListener("abort",l),r.addEventListener(t,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,u)})}var Ps=class extends Error{static name="QueueFullError";constructor(t="The queue was full"){super(t),this.name="QueueFullError"}};var Ls=class extends Error{type;code;constructor(t,e,n){super(t??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=e??"ABORT_ERR"}};async function Et(r,t,e){if(t==null)return r;if(t.aborted)return r.catch(()=>{}),Promise.reject(new Ls(e?.errorMessage,e?.errorCode,e?.errorName));let n,o=new Ls(e?.errorMessage,e?.errorCode,e?.errorName);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var Ds=class{deferred;signal;constructor(t){this.signal=t,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new le)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function ty(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Rs=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=ty(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new le),this.cleanup())}async join(t={}){let e=new Ds(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await Et(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};function Cl(r,t){let e,n=function(){let o=function(){e=void 0,r()};clearTimeout(e),e=setTimeout(o,t)};return n.start=()=>{},n.stop=()=>{clearTimeout(e)},n}var io=class extends Vt{concurrency;maxSize;queue;pending;sort;autoStart;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.maxSize=t.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=t.autoStart??!0,this.sort=t.sort,this.queue=[],this.emitEmpty=Cl(this.emitEmpty.bind(this),1),this.emitIdle=Cl(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 t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(t,e){if(e?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Ps;let n=new Rs(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(e).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(t=>{t.abort(new le)}),this.clear()}async onEmpty(t){this.size!==0&&await me(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await me(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await me(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=Ts({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},o=c=>{c.detail!=null&&e.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new le("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var ks="lock:worker:request-read",Ms="lock:worker:abort-read-request",Os="lock:worker:release-read",Ns="lock:master:grant-read",Bs="lock:master:error-read",Fs="lock:worker:request-write",Us="lock:worker:abort-write-request",Ks="lock:worker:release-write",qs="lock:master:grant-write",zs="lock:master:error-write",Vs="lock:worker:finalize",Hs="mortice",lh={singleProcess:!1};var Tl=(r,t,e,n,o,s,i,a,c)=>u=>{if(u.data==null)return;let l={type:u.data.type,name:u.data.name,identifier:u.data.identifier};l.type===o&&r.safeDispatchEvent(e,{detail:{name:l.name,identifier:l.identifier,handler:async()=>{t.postMessage({type:c,name:l.name,identifier:l.identifier}),await new Promise(f=>{let d=m=>{if(m?.data==null)return;let h={type:m.data.type,name:m.data.name,identifier:m.data.identifier};h.type===a&&h.identifier===l.identifier&&(t.removeEventListener("message",d),f())};t.addEventListener("message",d)})},onError:f=>{t.postMessage({type:i,name:l.name,identifier:l.identifier,error:{message:f.message,name:f.name,stack:f.stack}})}}}),l.type===s&&r.safeDispatchEvent(n,{detail:{name:l.name,identifier:l.identifier}}),l.type===Vs&&r.safeDispatchEvent("finalizeRequest",{detail:{name:l.name}})};var uh=(r=10)=>Math.random().toString().substring(2,r+2);var $s=class{name;channel;constructor(t){this.name=t,this.channel=new BroadcastChannel(Hs)}readLock(t){return this.sendRequest(ks,Ms,Ns,Bs,Os,t)}writeLock(t){return this.sendRequest(Fs,Us,qs,zs,Ks,t)}finalize(){this.channel.postMessage({type:Vs,name:this.name}),this.channel.close()}async sendRequest(t,e,n,o,s,i){i?.signal?.throwIfAborted();let a=uh();return this.channel.postMessage({type:t,identifier:a,name:this.name}),new Promise((c,u)=>{let l=()=>{this.channel.postMessage({type:e,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",l,{once:!0});let f=d=>{if(d.data?.identifier===a&&(d.data?.type===n&&(this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",l),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),d.data.type===o)){this.channel.removeEventListener("message",f),i?.signal?.removeEventListener("abort",l);let m=new Error;d.data.error!=null&&(m.message=d.data.error.message,m.name=d.data.error.name,m.stack=d.data.error.stack),u(m)}};this.channel.addEventListener("message",f)})}};var fh=r=>{if(r=Object.assign({},lh,r),!!globalThis.document||r.singleProcess){let e=new BroadcastChannel(Hs),n=new Vt;return e.addEventListener("message",Tl(n,e,"requestReadLock","abortReadLockRequest",ks,Ms,Bs,Os,Ns)),e.addEventListener("message",Tl(n,e,"requestWriteLock","abortWriteLockRequest",Fs,Us,zs,Ks,qs)),n}return new $s(r.name)};var gr=new Map,ao;function dh(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function ey(r){if(ao==null&&(ao=fh(r),!dh(ao))){let t=ao;t.addEventListener("requestReadLock",e=>{let n=e.detail.name,o=e.detail.identifier,s=gr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};t.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await e.detail.handler().finally(()=>{c()})}).catch(c=>{e.detail.onError(c)}).finally(()=>{t.removeEventListener("abortReadLockRequest",a)})}),t.addEventListener("requestWriteLock",e=>{let n=e.detail.name,o=e.detail.identifier,s=gr.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};t.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await e.detail.handler().finally(()=>{c()})}).catch(c=>{e.detail.onError(c)}).finally(()=>{t.removeEventListener("abortWriteLockRequest",a)})}),t.addEventListener("finalizeRequest",e=>{let n=e.detail.name,o=gr.get(n);o?.finalize()})}return ao}async function Pl(r,t){let e,n,o=new Promise((i,a)=>{e=i,n=a}),s=()=>{n(new le)};return t?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{e(()=>{t?.signal?.removeEventListener("abort",s),i()})})},{signal:t?.signal}).catch(i=>{n(i)}),o}var hh=(r,t)=>{let e=gr.get(r);if(e!=null)return e;let n=ey(t);if(dh(n))return e=n,gr.set(r,e),e;let o=new io({concurrency:1}),s;return e={async readLock(i){if(s!=null)return Pl(s,i);s=new io({concurrency:t.concurrency,autoStart:!1});let a=s,c=Pl(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,Pl(o,i)},finalize:()=>{gr.delete(r)},queue:o},gr.set(r,e),e};var ry={name:"lock",concurrency:1/0,singleProcess:!1};function Ll(r){let t=Object.assign({},ry,r);return hh(t.name,t)}var Te;(function(r){let t;(function(o){let s;o.codec=()=>(s==null&&(s=Bt((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:"",value:ct(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:{u.key=i.string();break}case 2:{u.value=i.bytes();break}default:{i.skipType(f&7);break}}}return u})),s),o.encode=i=>Nt(i,o.codec()),o.decode=(i,a)=>Ot(i,o.codec(),a)})(t=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let e;(function(o){let s;o.codec=()=>(s==null&&(s=Bt((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),Gs.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let u={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:{u.key=i.string();break}case 2:{u.value=Gs.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(f&7);break}}}return u})),s),o.encode=i=>Nt(i,o.codec()),o.decode=(i,a)=>Ot(i,o.codec(),a)})(e=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=Bt((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Ws.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let u=o.uint32();switch(u>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new ir('Decode error - map field "addresses" had too many elements');a.addresses.push(Ws.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new ir('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Bn('Decode error - map field "metadata" had too many elements');let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(l.key,l.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Bn('Decode error - map field "tags" had too many elements');let l=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(l.key,l.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(u&7);break}}}return a})),n),r.encode=o=>Nt(o,r.codec()),r.decode=(o,s)=>Ot(o,r.codec(),s)})(Te||(Te={}));var Ws;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.multiaddr!=null&&e.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(e.multiaddr)),e.isCertified!=null&&(n.uint32(16),n.bool(e.isCertified)),e.observed!=null&&(n.uint32(24),n.uint64Number(e.observed)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={multiaddr:ct(0)},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.multiaddr=e.bytes();break}case 2:{s.isCertified=e.bool();break}case 3:{s.observed=e.uint64Number();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(Ws||(Ws={}));var Gs;(function(r){let t;r.codec=()=>(t==null&&(t=Bt((e,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),e.value!=null&&e.value!==0&&(n.uint32(8),n.uint32(e.value)),e.expiry!=null&&(n.uint32(16),n.uint64(e.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(e,n,o={})=>{let s={value:0},i=n==null?e.len:e.pos+n;for(;e.pos<i;){let a=e.uint32();switch(a>>>3){case 1:{s.value=e.uint32();break}case 2:{s.expiry=e.uint64();break}default:{e.skipType(a&7);break}}}return s})),t),r.encode=e=>Nt(e,r.codec()),r.decode=(e,n)=>Ot(e,r.codec(),n)})(Gs||(Gs={}));function ny(r,t){if(r.publicKey!=null||t.publicKey==null)return r;let e;r.type==="RSA"&&(e=r.toMultihash());let n=jr(t.publicKey,e);return Wc(n)}function ph(r,t,e){let n=Te.decode(t);return an(r,n,e)}function an(r,t,e){let n=new Map,o=BigInt(Date.now());for(let[s,i]of t.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...t,id:ny(r,t),addresses:t.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-e).map(({multiaddr:s,isCertified:i})=>({multiaddr:G(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}function mh(r,t){return oy(r.addresses,t.addresses)&&sy(r.protocols,t.protocols)&&iy(r.publicKey,t.publicKey)&&ay(r.peerRecordEnvelope,t.peerRecordEnvelope)&&cy(r.metadata,t.metadata)&&ly(r.tags,t.tags)}function oy(r,t){return yh(r,t,(e,n)=>!(e.isCertified!==n.isCertified||!tt(e.multiaddr,n.multiaddr)))}function sy(r,t){return yh(r,t,(e,n)=>e===n)}function iy(r,t){return gh(r,t)}function ay(r,t){return gh(r,t)}function cy(r,t){return bh(r,t,(e,n)=>tt(e,n))}function ly(r,t){return bh(r,t,(e,n)=>e.value===n.value&&e.expiry===n.expiry)}function gh(r,t){return r==null&&t==null?!0:r!=null&&t!=null?tt(r,t):!1}function yh(r,t,e){if(r.length!==t.length)return!1;for(let n=0;n<r.length;n++)if(!e(r[n],t[n]))return!1;return!0}function bh(r,t,e){if(r.size!==t.size)return!1;for(let[n,o]of r.entries()){let s=t.get(n);if(s==null||!e(o,s))return!1}return!0}var Pe="/",wh=new TextEncoder().encode(Pe),js=wh[0],yr=class r{_buf;constructor(t,e){if(typeof t=="string")this._buf=L(t);else if(t instanceof Uint8Array)this._buf=t;else throw new Error("Invalid key, should be String of Uint8Array");if(e==null&&(e=!0),e&&this.clean(),this._buf.byteLength===0||this._buf[0]!==js)throw new Error("Invalid key")}toString(t="utf8"){return B(this._buf,t)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(t){return new r(t.join(Pe))}static random(){return new r(Math.random().toString().substring(2))}static asKey(t){return t instanceof Uint8Array||typeof t=="string"?new r(t):typeof t.uint8Array=="function"?new r(t.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=wh),this._buf[0]!==js){let t=new Uint8Array(this._buf.byteLength+1);t.fill(js,0,1),t.set(this._buf,1),this._buf=t}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===js;)this._buf=this._buf.subarray(0,-1)}less(t){let e=this.list(),n=t.list();for(let o=0;o<e.length;o++){if(n.length<o+1)return!1;let s=e[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return e.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let t=this.namespaces();return t[t.length-1]}list(){return this.toString().split(Pe).slice(1)}type(){return uy(this.baseNamespace())}name(){return fy(this.baseNamespace())}instance(t){return new r(this.toString()+":"+t)}path(){let t=this.parent().toString();return t.endsWith(Pe)||(t+=Pe),t+=this.type(),new r(t)}parent(){let t=this.list();return t.length===1?new r(Pe):new r(t.slice(0,-1).join(Pe))}child(t){return this.toString()===Pe?t:t.toString()===Pe?this:new r(this.toString()+t.toString(),!1)}isAncestorOf(t){return t.toString()===this.toString()?!1:t.toString().startsWith(this.toString())}isDecendantOf(t){return t.toString()===this.toString()?!1:this.toString().startsWith(t.toString())}isTopLevel(){return this.list().length===1}concat(...t){return r.withNamespaces([...this.namespaces(),...dy(t.map(e=>e.namespaces()))])}};function uy(r){let t=r.split(":");return t.length<2?"":t.slice(0,-1).join(":")}function fy(r){let t=r.split(":");return t[t.length-1]}function dy(r){return[].concat(...r)}var Dl="/peers/";function co(r){if(!Re(r)||r.type==null)throw new k("Invalid PeerId");let t=r.toCID().toString();return new yr(`${Dl}${t}`)}async function xh(r,t,e,n,o){let s=new Map;for(let i of e){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=G(i.multiaddr)),!Ve(i.multiaddr))throw new k("Multiaddr was invalid");if(!await t(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),u=s.get(c);u!=null?i.isCertified=u.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.getPeerId();return r.equals(c)&&(a=a.decapsulate(G(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function Ys(r,t,e,n){if(t==null)throw new k("Invalid PeerData");if(t.publicKey!=null&&r.publicKey!=null&&!t.publicKey.equals(r.publicKey))throw new k("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new k("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,u=o?.peerRecordEnvelope;if(e==="patch"){if((t.multiaddrs!=null||t.addresses!=null)&&(s=[],t.multiaddrs!=null&&s.push(...t.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),t.addresses!=null&&s.push(...t.addresses)),t.protocols!=null&&(i=new Set(t.protocols)),t.metadata!=null){let d=t.metadata instanceof Map?[...t.metadata.entries()]:Object.entries(t.metadata);a=Xs(d,{validate:Eh})}if(t.tags!=null){let d=t.tags instanceof Map?[...t.tags.entries()]:Object.entries(t.tags);c=Xs(d,{validate:vh,map:Ah})}t.peerRecordEnvelope!=null&&(u=t.peerRecordEnvelope)}if(e==="merge"){if(t.multiaddrs!=null&&s.push(...t.multiaddrs.map(d=>({isCertified:!1,multiaddr:d}))),t.addresses!=null&&s.push(...t.addresses),t.protocols!=null&&(i=new Set([...i,...t.protocols])),t.metadata!=null){let d=t.metadata instanceof Map?[...t.metadata.entries()]:Object.entries(t.metadata);for(let[m,h]of d)h==null?a.delete(m):a.set(m,h);a=Xs([...a.entries()],{validate:Eh})}if(t.tags!=null){let d=t.tags instanceof Map?[...t.tags.entries()]:Object.entries(t.tags),m=new Map(c);for(let[h,g]of d)g==null?m.delete(h):m.set(h,g);c=Xs([...m.entries()],{validate:vh,map:Ah})}t.peerRecordEnvelope!=null&&(u=t.peerRecordEnvelope)}let l;o?.id.publicKey!=null?l=jt(o.id.publicKey):t.publicKey!=null?l=jt(t.publicKey):r.publicKey!=null&&(l=jt(r.publicKey));let f={addresses:await xh(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((d,m)=>d.localeCompare(m)),metadata:a,tags:c,publicKey:l,peerRecordEnvelope:u};return f.addresses.forEach(d=>{d.observed=n.existingPeer?.peerPB.addresses?.find(m=>tt(m.multiaddr,m.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete f.publicKey,f}function Xs(r,t){let e=new Map;for(let[n,o]of r)o!=null&&t.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&e.set(n,t.map?.(n,o)??o);return e}function Eh(r,t){if(typeof r!="string")throw new k("Metadata key must be a string");if(!(t instanceof Uint8Array))throw new k("Metadata value must be a Uint8Array")}function vh(r,t){if(typeof r!="string")throw new k("Tag name must be a string");if(t.value!=null){if(parseInt(`${t.value}`,10)!==t.value)throw new k("Tag value must be an integer");if(t.value<0||t.value>100)throw new k("Tag value must be between 0-100")}if(t.ttl!=null){if(parseInt(`${t.ttl}`,10)!==t.ttl)throw new k("Tag ttl must be an integer");if(t.ttl<0)throw new k("Tag ttl must be between greater than 0")}}function Ah(r,t){let e;t.expiry!=null&&(e=t.expiry),t.ttl!=null&&(e=BigInt(Date.now()+Number(t.ttl)));let n={value:t.value??0};return e!=null&&(n.expiry=e),n}function Sh(r){let t=r.toString().split("/")[2],e=it.parse(t,Ht);return jn(e)}function Rl(r,t,e){let n=Sh(r);return ph(n,t,e)}function hy(r,t){return{prefix:Dl,filters:(r.filters??[]).map(e=>({key:n,value:o})=>e(Rl(n,o,t))),orders:(r.orders??[]).map(e=>(n,o)=>e(Rl(n.key,n.value,t),Rl(o.key,o.value,t)))}}var Zs=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-store"),this.peerId=t.peerId,this.datastore=t.datastore,this.addressFilter=e.addressFilter,this.locks=Sl({name:"libp2p_peer_store_locks",metrics:t.metrics}),this.maxAddressAge=e.maxAddressAge??36e5,this.maxPeerAge=e.maxPeerAge??216e5}getLock(t){let e=this.locks.get(t);return e==null&&(e={refs:0,lock:Ll({name:t.toString(),singleProcess:!0})},this.locks.set(t,e)),e.refs++,e}maybeRemoveLock(t,e){e.refs--,e.refs===0&&(e.lock.finalize(),this.locks.delete(t))}async getReadLock(t,e){let n=this.getLock(t);try{let o=await n.lock.readLock(e);return()=>{o(),this.maybeRemoveLock(t,n)}}catch(o){throw this.maybeRemoveLock(t,n),o}}async getWriteLock(t,e){let n=this.getLock(t);try{let o=await n.lock.writeLock(e);return()=>{o(),this.maybeRemoveLock(t,n)}}catch(o){throw this.maybeRemoveLock(t,n),o}}async has(t,e){try{return await this.load(t,e),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(t,e){this.peerId.equals(t)||await this.datastore.delete(co(t),e)}async load(t,e){let n=co(t),o=await this.datastore.get(n,e),s=Te.decode(o);if(this.#r(t,s))throw await this.datastore.delete(n,e),new Ge;return an(t,s,this.peerId.equals(t)?1/0:this.maxAddressAge)}async save(t,e,n){let o=await this.#t(t,n),s=await Ys(t,e,"patch",{...n,addressFilter:this.addressFilter});return this.#e(t,s,o)}async patch(t,e,n){let o=await this.#t(t,n),s=await Ys(t,e,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#e(t,s,o)}async merge(t,e,n){let o=await this.#t(t,n),s=await Ys(t,e,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#e(t,s,o)}async*all(t){for await(let{key:e,value:n}of this.datastore.query(hy(t??{},this.maxAddressAge),t)){let o=Sh(e);if(o.equals(this.peerId))continue;let s=Te.decode(n);if(this.#r(o,s)){await this.datastore.delete(e,t);continue}yield an(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#t(t,e){try{let n=co(t),o=await this.datastore.get(n,e),s=Te.decode(o);if(this.#r(t,s))throw await this.datastore.delete(n,e),new Ge;return{peerPB:s,peer:an(t,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#e(t,e,n,o){e.updated=Date.now();let s=Te.encode(e);return await this.datastore.put(co(t),s,o),{peer:an(t,e,this.maxAddressAge),previous:n?.peer,updated:n==null||!mh(e,n.peerPB)}}#r(t,e){if(e.updated==null)return!0;if(this.peerId.equals(t))return!1;let n=e.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=e.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var kl=class{store;events;peerId;log;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-store"),this.events=t.events,this.peerId=t.peerId,this.store=new Zs(t,e)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(t,e){for await(let n of this.store.all(e))t(n)}async all(t){return so(this.store.all(t))}async delete(t,e){let n=await this.store.getReadLock(t,e);try{await this.store.delete(t,e)}finally{n()}}async has(t,e){let n=await this.store.getReadLock(t,e);try{return await this.store.has(t,e)}finally{this.log.trace("has release read lock"),n?.()}}async get(t,e){let n=await this.store.getReadLock(t,e);try{return await this.store.load(t,e)}finally{n?.()}}async getInfo(t,e){let n=await this.get(t,e);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.save(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async patch(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.patch(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async merge(t,e,n){let o=await this.store.getWriteLock(t,n);try{let s=await this.store.merge(t,e,n);return this.#t(t,s),s.peer}finally{o?.()}}async consumePeerRecord(t,e,n){let o=Re(e)?e:Re(e?.expectedPeer)?e.expectedPeer:void 0,s=Re(e)||e===void 0?n:e,i=await on.openAndCertify(t,mr.DOMAIN,s),a=jn(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=mr.createFromProtobuf(i.payload),u;try{u=await this.get(a,s)}catch(l){if(l.name!=="NotFoundError")throw l}if(u?.peerRecordEnvelope!=null){let l=on.createFromProtobuf(u.peerRecordEnvelope),f=mr.createFromProtobuf(l.payload);if(f.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",f.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:t,addresses:c.multiaddrs.map(l=>({isCertified:!0,multiaddr:l}))},s),!0}#t(t,e){e.updated&&(this.peerId.equals(t)?this.events.safeDispatchEvent("self:peer:update",{detail:e}):this.events.safeDispatchEvent("peer:update",{detail:e}))}};function _h(r,t={}){return new kl(r,t)}var Qs=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(t="Not Found"){super(t)}};function py(r){return r[Symbol.asyncIterator]!=null}function my(r){if(py(r))return(async()=>{for await(let t of r);})();for(let t of r);}var Ml=my;function gy(r){let[t,e]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>t.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:t.next(),[e](){return this}}}var Ih=gy;function yy(r){return r[Symbol.asyncIterator]!=null}function by(r,t){let e=0;if(yy(r))return async function*(){for await(let c of r)await t(c,e++)&&(yield c)}();let n=Ih(r),{value:o,done:s}=n.next();if(s===!0)return function*(){}();let i=t(o,e++);if(typeof i.then=="function")return async function*(){await i&&(yield o);for(let c of n)await t(c,e++)&&(yield c)}();let a=t;return function*(){i===!0&&(yield o);for(let c of n)a(c,e++)&&(yield c)}()}var br=by;function wy(r){return r[Symbol.asyncIterator]!=null}function xy(r,t){return wy(r)?async function*(){yield*(await so(r)).sort(t)}():function*(){yield*so(r).sort(t)}()}var Ol=xy;function Ey(r){return r[Symbol.asyncIterator]!=null}function vy(r,t){return Ey(r)?async function*(){let e=0;if(!(t<1)){for await(let n of r)if(yield n,e++,e===t)return}}():function*(){let e=0;if(!(t<1)){for(let n of r)if(yield n,e++,e===t)return}}()}var Nl=vy;var Js=class{put(t,e,n){return Promise.reject(new Error(".put is not implemented"))}get(t,e){return Promise.reject(new Error(".get is not implemented"))}has(t,e){return Promise.reject(new Error(".has is not implemented"))}delete(t,e){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(t,e={}){for await(let{key:n,value:o}of t)await this.put(n,o,e),yield n}async*getMany(t,e={}){for await(let n of t)yield{key:n,value:await this.get(n,e)}}async*deleteMany(t,e={}){for await(let n of t)await this.delete(n,e),yield n}batch(){let t=[],e=[];return{put(n,o){t.push({key:n,value:o})},delete(n){e.push(n)},commit:async n=>{await Ml(this.putMany(t,n)),t=[],await Ml(this.deleteMany(e,n)),e=[]}}}async*_all(t,e){throw new Error("._all is not implemented")}async*_allKeys(t,e){throw new Error("._allKeys is not implemented")}query(t,e){let n=this._all(t,e);if(t.prefix!=null){let o=t.prefix;n=br(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>br(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>Ol(o,s),n)),t.offset!=null){let o=0,s=t.offset;n=br(n,()=>o++>=s)}return t.limit!=null&&(n=Nl(n,t.limit)),n}queryKeys(t,e){let n=this._allKeys(t,e);if(t.prefix!=null){let o=t.prefix;n=br(n,s=>s.toString().startsWith(o))}if(Array.isArray(t.filters)&&(n=t.filters.reduce((o,s)=>br(o,s),n)),Array.isArray(t.orders)&&(n=t.orders.reduce((o,s)=>Ol(o,s),n)),t.offset!=null){let o=t.offset,s=0;n=br(n,()=>s++>=o)}return t.limit!=null&&(n=Nl(n,t.limit)),n}};var ti=class extends Js{data;constructor(){super(),this.data=new Map}put(t,e,n){return n?.signal?.throwIfAborted(),this.data.set(t.toString(),e),t}get(t,e){e?.signal?.throwIfAborted();let n=this.data.get(t.toString());if(n==null)throw new Qs;return n}has(t,e){return e?.signal?.throwIfAborted(),this.data.has(t.toString())}delete(t,e){e?.signal?.throwIfAborted(),this.data.delete(t.toString())}*_all(t,e){e?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new yr(n),value:o},e?.signal?.throwIfAborted()}*_allKeys(t,e){e?.signal?.throwIfAborted();for(let n of this.data.keys())yield new yr(n),e?.signal?.throwIfAborted()}};function lo(r,t){let e,n=function(){let o=function(){e=void 0,r()};clearTimeout(e),e=setTimeout(o,t)};return n.start=()=>{},n.stop=()=>{clearTimeout(e)},n}var Th=Io(Ch(),1),Ay=["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"],Sy=Ay.map(r=>new Th.Netmask(r));function Bl(r){for(let t of Sy)if(t.contains(r))return!0;return!1}function _y(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function Iy(r){let t=r.split(":");if(t.length<2)return!1;let e=t[t.length-1].padStart(4,"0"),n=t[t.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(e.substring(0,2),16)}.${parseInt(e.substring(2),16)}`;return Bl(o)}function Cy(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function Ty(r){let t=r.split(":"),e=t[t.length-1];return Bl(e)}function Py(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 He(r){return ae(r)?Bl(r):_y(r)?Iy(r):Cy(r)?Ty(r):en(r)?Py(r):void 0}var Ly=r=>r.toString().split("/").slice(1),cn=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),z=r=>({match:t=>cn(e=>e===r).match(t),pattern:r}),wr=()=>({match:r=>cn(t=>typeof t=="string").match(r),pattern:"{string}"}),ln=()=>({match:r=>cn(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),et=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{j.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),fo=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Ta.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),Z=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),Pt=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),H=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function st(...r){function t(o){let s=Ly(o);for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function e(o){return t(o)!==!1}function n(o){let s=t(o);return s===!1?!1:s.length===0}return{matchers:r,matches:e,exactMatch:n}}var Dy=et(),Ph=st(Dy),ri=H(z("dns4"),wr()),ni=H(z("dns6"),wr()),oi=H(z("dnsaddr"),wr()),Ul=H(z("dns"),wr()),F4=st(ri,Z(et())),U4=st(ni,Z(et())),K4=st(oi,Z(et())),q4=st(Pt(Ul,oi,ri,ni),Z(et())),Lh=H(z("ip4"),cn(ae)),Dh=H(z("ip6"),cn(en)),Kl=Pt(Lh,Dh),Le=Pt(Kl,Ul,ri,ni,oi),z4=st(Pt(Kl,H(Pt(Ul,oi,ri,ni),Z(et())))),ql=st(Lh),zl=st(Dh),V4=st(Kl),Vl=H(Le,z("tcp"),ln()),ho=H(Le,z("udp"),ln()),po=st(H(Vl,Z(et()))),H4=st(ho),Hl=H(ho,z("quic"),Z(et())),si=H(ho,z("quic-v1"),Z(et())),Ry=Pt(Hl,si),$4=st(Hl),Rh=st(si),Fl=Pt(Le,Vl,ho,Hl,si),kh=Pt(H(Fl,z("ws"),Z(et()))),xr=st(kh),Mh=Pt(H(Fl,z("wss"),Z(et())),H(Fl,z("tls"),Z(H(z("sni"),wr())),z("ws"),Z(et()))),mo=st(Mh),Oh=H(ho,z("webrtc-direct"),Z(fo()),Z(fo()),Z(et())),$l=st(Oh),Nh=H(si,z("webtransport"),Z(fo()),Z(fo()),Z(et())),Wl=st(Nh),ei=Pt(kh,Mh,H(Vl,Z(et())),H(Ry,Z(et())),H(Le,Z(et())),Oh,Nh,et()),W4=st(ei),ky=H(ei,z("p2p-circuit"),et()),go=st(ky),My=Pt(H(ei,z("p2p-circuit"),z("webrtc"),Z(et())),H(ei,z("webrtc"),Z(et())),H(z("webrtc"),Z(et()))),Gl=st(My),Oy=Pt(H(Le,z("tcp"),ln(),z("http"),Z(et())),H(Le,z("http"),Z(et()))),G4=st(Oy),Ny=Pt(H(Le,z("tcp"),Pt(H(z("443"),z("http")),H(ln(),z("https")),H(ln(),z("tls"),z("http"))),Z(et())),H(Le,z("tls"),z("http"),Z(et())),H(Le,z("https"),Z(et()))),j4=st(Ny),By=Pt(H(z("memory"),wr(),Z(et()))),X4=st(By);var jl=class extends Map{metric;constructor(t){super();let{name:e,metrics:n}=t;this.metric=n.registerMetric(e),this.updateComponentMetric()}set(t,e){return super.set(t,e),this.updateComponentMetric(),this}delete(t){let e=super.delete(t);return this.updateComponentMetric(),e}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function Lt(r){let{name:t,metrics:e}=r,n;return e!=null?n=new jl({name:t,metrics:e}):n=new Map,n}var Bh=864e13;var Fy=448,Xl=449,Uy=53,Ky=54,qy=55,zy=56,ii=class{log;mappings;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=Lt({name:"libp2p_address_manager_dns_mappings",metrics:t.metrics})}has(t){let e=this.findHost(t);for(let n of this.mappings.values())if(n.domain===e)return!0;return!1}add(t,e){e.forEach(n=>{this.log("add DNS mapping %s to %s",n,t);let o=He(n)===!0;this.mappings.set(n,{domain:t,verified:o,expires:o?Bh-Date.now():0,lastVerified:o?Bh-Date.now():void 0})})}remove(t){let e=this.findHost(t),n=!1;for(let[o,s]of this.mappings.entries())s.domain===e&&(this.log("removing %s to %s DNS mapping %e",o,s.domain,new Error("where")),this.mappings.delete(o),n=n||s.verified);return n}getAll(t){let e=[];for(let n=0;n<t.length;n++){let s=t[n].multiaddr.stringTuples(),i=s[0][1];if(i!=null)for(let[a,c]of this.mappings.entries()){if(i!==a)continue;this.maybeAddSNITuple(s,c.domain)&&(t.splice(n,1),n--,e.push({multiaddr:G(`/${s.map(l=>[W(l[0]).name,l[1]].join("/")).join("/")}`),verified:c.verified,type:"dns-mapping",expires:c.expires,lastVerified:c.lastVerified}))}}return e}maybeAddSNITuple(t,e){for(let n=0;n<t.length;n++)if(t[n][0]===Fy&&t[n+1]?.[0]!==Xl)return t.splice(n+1,0,[Xl,e]),!0;return!1}confirm(t,e){let n=this.findHost(t),o=!1;for(let[s,i]of this.mappings.entries())i.domain===n&&(this.log("marking %s to %s DNS mapping as verified",s,i.domain),o=i.verified,i.verified=!0,i.expires=Date.now()+e,i.lastVerified=Date.now());return o}unconfirm(t,e){let n=this.findHost(t),o=!1;for(let[s,i]of this.mappings.entries())i.domain===n&&(this.log("removing verification of %s to %s DNS mapping",s,i.domain),o=o||i.verified,i.verified=!1,i.expires=Date.now()+e);return o}findHost(t){for(let e of t.stringTuples())if(e[0]===Xl||e[0]===Uy||e[0]===Ky||e[0]===qy||e[0]===zy)return e[1]}};var Yl=4,Zl=41,Ql=6,Vy=273,ai=class{log;mappings;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=Lt({name:"libp2p_address_manager_ip_mappings",metrics:t.metrics})}has(t){let e=t.stringTuples();for(let n of this.mappings.values())for(let o of n)if(o.externalIp===e[0][1])return!0;return!1}add(t,e,n,o=e,s="tcp"){let i=`${t}-${e}-${s}`,a=this.mappings.get(i)??[],c={internalIp:t,internalPort:e,externalIp:n,externalPort:o,externalFamily:ae(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(t){let e=t.stringTuples(),n=e[0][1]??"",o=e[1][0]===Ql?"tcp":"udp",s=parseInt(e[1][1]??"0"),i=!1;for(let[a,c]of this.mappings.entries()){for(let u=0;u<c.length;u++){let l=c[u];l.externalIp===n&&l.externalPort===s&&l.protocol===o&&(this.log("removing %s:%s to %s:%s %s IP mapping",l.externalIp,l.externalPort,n,s,o),i=i||l.verified,c.splice(u,1),u--)}c.length===0&&this.mappings.delete(a)}return i}getAll(t){let e=[];for(let{multiaddr:n}of t){let o=n.stringTuples(),s;if((o[0][0]===Yl||o[0][0]===Zl)&&o[1][0]===Ql?s=`${o[0][1]}-${o[1][1]}-tcp`:(o[0][0]===Yl||o[0][0]===Zl)&&o[1][0]===Vy&&(s=`${o[0][1]}-${o[1][1]}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)o[0][0]=a.externalFamily===4?Yl:Zl,o[0][1]=a.externalIp,o[1][1]=`${a.externalPort}`,e.push({multiaddr:G(`/${o.map(c=>[W(c[0]).name,c[1]].join("/")).join("/")}`),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return e}confirm(t,e){let o=t.stringTuples()[0][1],s=!1;for(let i of this.mappings.values())for(let a of i)a.externalIp===o&&(this.log("marking %s to %s IP mapping as verified",a.internalIp,a.externalIp),s=a.verified,a.verified=!0,a.expires=Date.now()+e,a.lastVerified=Date.now());return s}unconfirm(t,e){let n=t.stringTuples(),o=n[0][1]??"",s=n[1][0]===Ql?"tcp":"udp",i=parseInt(n[1][1]??"0"),a=!1;for(let c of this.mappings.values())for(let u=0;u<c.length;u++){let l=c[u];l.externalIp===o&&l.externalPort===i&&l.protocol===s&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",l.externalIp,l.externalPort,o,i,s),a=a||l.verified,l.verified=!1,l.expires=Date.now()+e)}return a}};function Fh(r){try{let[[t,e]]=r.stringTuples();if(e==null)return!1;if(t===4)return e.startsWith("169.254.");if(t===41)return e.toLowerCase().startsWith("fe80")}catch{}return!1}function ci(r){try{let[[t]]=r.stringTuples();return t===4||t===41}catch{}return!1}function Er(r){try{if(!ci(r))return!1;let[[,t]]=r.stringTuples();return t==null?!1:He(t)??!1}catch{}return!0}var Hy={maxObservedAddresses:10},li=class{log;addresses;maxObservedAddresses;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Lt({name:"libp2p_address_manager_observed_addresses",metrics:t.metrics}),this.maxObservedAddresses=e.maxObservedAddresses??Hy.maxObservedAddresses}has(t){return this.addresses.has(t.toString())}removePrefixed(t){for(let e of this.addresses.keys())e.toString().startsWith(t)&&this.addresses.delete(e)}add(t){this.addresses.size!==this.maxObservedAddresses&&(Er(t)||Fh(t)||(this.log("adding observed address %a",t),this.addresses.set(t.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([t,e])=>({multiaddr:G(t),verified:e.verified,type:"observed",expires:e.expires,lastVerified:e.lastVerified}))}remove(t){let e=this.addresses.get(t.toString())?.verified??!1;return this.log("removing observed address %a",t),this.addresses.delete(t.toString()),e}confirm(t,e){let n=t.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+e,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+e,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var $y=[4,41,53,54,55,56];function Jl(r){try{let[[t]]=r.stringTuples();return $y.includes(t)}catch{}return!1}var Wy={maxObservedAddresses:10},ui=class{log;addresses;maxObservedAddresses;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=Lt({name:"libp2p_address_manager_transport_addresses",metrics:t.metrics}),this.maxObservedAddresses=e.maxObservedAddresses??Wy.maxObservedAddresses}get(t,e){if(Er(t))return{multiaddr:t,verified:!0,type:"transport",expires:Date.now()+e,lastVerified:Date.now()};let n=this.toKey(t),o=this.addresses.get(n);return o==null&&(o={verified:!Jl(t),expires:0},this.addresses.set(n,o)),{multiaddr:t,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(t){let e=this.toKey(t);return this.addresses.has(e)}remove(t){let e=this.toKey(t),n=this.addresses.get(e)?.verified??!1;return this.log("removing observed address %a",t),this.addresses.delete(e),n}confirm(t,e){let n=this.toKey(t),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+e,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(t,e){let n=this.toKey(t),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+e,this.addresses.set(n,o),s}toKey(t){if(Jl(t)){let e=t.toOptions();return`${e.host}-${e.port}-${e.transport}`}return t.toString()}};var Uh=6e4,Kh={maxObservedAddresses:10,addressVerificationTTL:Uh*10,addressVerificationRetry:Uh*5},Gy=r=>r;function tu(r,t){let e=r.getPeerId();return e!=null&&pe(e).equals(t)&&(r=r.decapsulate(G(`/p2p/${t.toString()}`))),r}var fi=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(t,e={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=e;this.components=t,this.log=t.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 li(t,e),this.dnsMappings=new ii(t,e),this.ipMappings=new ai(t,e),this.transportAddresses=new ui(t,e),this.announceFilter=e.announceFilter??Gy,this.observedAddressFilter=ro(1024),this.addressVerificationTTL=e.addressVerificationTTL??Kh.addressVerificationTTL,this.addressVerificationRetry=e.addressVerificationRetry??Kh.addressVerificationRetry,this._updatePeerStoreAddresses=lo(this._updatePeerStoreAddresses.bind(this),1e3),t.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),t.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let t=this.getAddresses().map(e=>e.getPeerId()===this.components.peerId.toString()?e.decapsulate(`/p2p/${this.components.peerId.toString()}`):e);this.components.peerStore.patch(this.components.peerId,{multiaddrs:t}).catch(e=>{this.log.error("error updating addresses",e)})}getListenAddrs(){return Array.from(this.listen).map(t=>G(t))}getAnnounceAddrs(){return Array.from(this.announce).map(t=>G(t))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(t=>G(t))}getObservedAddrs(){return this.observed.getAll().map(t=>t.multiaddr)}addObservedAddr(t){let e=t.stringTuples(),n=`${e[0][1]}:${e[1][1]}`;this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),t=tu(t,this.components.peerId),!this.ipMappings.has(t)&&(this.dnsMappings.has(t)||this.observed.add(t)))}confirmObservedAddr(t,e){t=tu(t,this.components.peerId);let n=!0;(e?.type==="transport"||this.transportAddresses.has(t))&&!this.transportAddresses.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="dns-mapping"||this.dnsMappings.has(t))&&!this.dnsMappings.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="ip-mapping"||this.ipMappings.has(t))&&!this.ipMappings.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(e?.type==="observed"||this.observed.has(t))&&(this.maybeUpgradeToIPMapping(t)?(this.ipMappings.confirm(t,e?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(t,e?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(t,e){t=tu(t,this.components.peerId);let n=!1;this.observed.has(t)&&!this.observed.remove(t)&&n&&(n=!1),this.transportAddresses.has(t)&&!this.transportAddresses.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(t)&&!this.dnsMappings.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(t)&&!this.ipMappings.unconfirm(t,e?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let t=new Set,e=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return t.has(o)?!1:(t.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(e.map(n=>{let o=G(n);return o.protos().pop()?.path===!0||o.getPeerId()===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let t=this.getAnnounceAddrs();if(t.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(t)}),t.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let e=[];e=e.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)}),e=e.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),e=e.concat(this.observed.getAll()),e=e.concat(this.ipMappings.getAll(e)),e=e.concat(this.dnsMappings.getAll(e)),e}addDNSMapping(t,e){this.dnsMappings.add(t,e)}removeDNSMapping(t){this.dnsMappings.remove(G(`/dns/${t}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(t,e,n,o=e,s="tcp"){this.ipMappings.add(t,e,n,o,s),this.observed.removePrefixed(`/ip${ae(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(t,e,n,o=e,s="tcp"){this.ipMappings.remove(G(`/ip${ae(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(t){if(this.ipMappings.has(t))return!1;let e=t.toOptions();if(e.family===6||e.host==="127.0.0.1"||He(e.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>xr.exactMatch(s)||mo.exactMatch(s),s=>po.exactMatch(s),s=>Rh.exactMatch(s)];for(let s of o){if(!s(t))continue;let i=n.filter(u=>u.getAddrs().filter(l=>l.toOptions().family===4&&s(l)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(u=>u.toOptions().host!=="127.0.0.1").pop();if(a==null)continue;let c=a.toOptions();return this.observed.remove(t),this.ipMappings.add(c.host,c.port,e.host,e.port,e.transport),!0}return!1}};var qh;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(qh||(qh={}));var di=class extends Error{constructor(t="Missing service"){super(t),this.name="MissingServiceError"}},hi=class extends Error{constructor(t="Unmet service dependencies"){super(t),this.name="UnmetServiceDependenciesError"}},un=class extends Error{constructor(t="No content routers available"){super(t),this.name="NoContentRoutersError"}},yo=class extends Error{constructor(t="No peer routers available"){super(t),this.name="NoPeerRoutersError"}},pi=class extends Error{constructor(t="Should not try to find self"){super(t),this.name="QueriedForSelfError"}},mi=class extends Error{constructor(t="Unhandled protocol error"){super(t),this.name="UnhandledProtocolError"}},gi=class extends Error{constructor(t="Duplicate protocol handler error"){super(t),this.name="DuplicateProtocolHandlerError"}},bo=class extends Error{constructor(t="Dial denied error"){super(t),this.name="DialDeniedError"}},yi=class extends Error{constructor(t="No transport was configured to listen on this address"){super(t),this.name="UnsupportedListenAddressError"}},bi=class extends Error{constructor(t="Configured listen addresses could not be listened on"){super(t),this.name="UnsupportedListenAddressesError"}},wi=class extends Error{constructor(t="No valid addresses"){super(t),this.name="NoValidAddressesError"}},xi=class extends Error{constructor(t="Connection intercepted"){super(t),this.name="ConnectionInterceptedError"}},Ei=class extends Error{constructor(t="Connection denied"){super(t),this.name="ConnectionDeniedError"}},vr=class extends Error{constructor(t="Stream is not multiplexed"){super(t),this.name="MuxerUnavailableError"}},Ar=class extends Error{constructor(t="Encryption failed"){super(t),this.name="EncryptionFailedError"}},vi=class extends Error{constructor(t="Transport unavailable"){super(t),this.name="TransportUnavailableError"}};var eu=class{components={};_started=!1;constructor(t={}){this.components={};for(let[e,n]of Object.entries(t))this.components[e]=n;this.components.logger==null&&(this.components.logger=As())}isStarted(){return this._started}async _invokeStartableMethod(t){await Promise.all(Object.values(this.components).filter(e=>Oo(e)).map(async e=>{await e[t]?.()}))}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")}},Xy=["metrics","connectionProtector","dns"],Yy=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function zh(r={}){let t=new eu(r);return new Proxy(t,{get(n,o,s){if(typeof o=="string"&&!Yy.includes(o)){let i=t.components[o];if(i==null&&!Xy.includes(o))throw new di(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?t.components[o]=s:Reflect.set(n,o,s),!0}})}function Vh(r){let t={};for(let e of Object.values(r.components))for(let n of Zy(e))t[n]=!0;for(let e of Object.values(r.components))for(let n of Qy(e))if(t[n]!==!0)throw new hi(`Service "${Jy(e)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function Zy(r){return Array.isArray(r?.[yn])?r[yn]:[]}function Qy(r){return Array.isArray(r?.[da])?r[da]:[]}function Jy(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}var tb=4,eb=41;function Hh(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async t=>{if(xr.matches(t))return!1;let e=t.stringTuples();return e[0][0]===tb||e[0][0]===eb?!!He(`${e[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}var $h=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},rb=new WeakMap;function nb({clearTimeout:r,setTimeout:t}={}){return(e,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject($h());let s,i,a,c=r??clearTimeout,u=()=>{c(s),a($h())},l=()=>{o&&o.removeEventListener("abort",u)},f=new Promise((d,m)=>{i=()=>{l(),d(n)},a=m,s=(t??setTimeout)(i,e)});return o&&o.addEventListener("abort",u,{once:!0}),rb.set(f,()=>{c(s),s=null,i()}),f}}var ob=nb(),Wh=ob;var Ai=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(t="Rate limit exceeded",e){super(t),this.name="RateLimitError",this.remainingPoints=e.remainingPoints,this.msBeforeNext=e.msBeforeNext,this.consumedPoints=e.consumedPoints,this.isFirstInDuration=e.isFirstInDuration}},Si=class extends Error{static name="QueueFullError";constructor(t="The queue was full"){super(t),this.name="QueueFullError"}};var _i=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(t={}){this.points=t.points??4,this.duration=t.duration??1,this.blockDuration=t.blockDuration??0,this.execEvenly=t.execEvenly??!1,this.execEvenlyMinDelayMs=t.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=t.keyPrefix??"rlflx",this.memoryStorage=new ru}async consume(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,e,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+e&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new Ai("Rate limit exceeded",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await Wh(a)}return i}penalty(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,e,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(t,e=1,n={}){let o=this.getKey(t),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-e,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(t,e){let n=e*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(t),o,e),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(t,e,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(t),e,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:e,isFirstInDuration:!1}}get(t){let e=this.memoryStorage.get(this.getKey(t));return e!=null&&(e.remainingPoints=Math.max(this.points-e.consumedPoints,0)),e}delete(t){this.memoryStorage.delete(this.getKey(t))}_getKeySecDuration(t){return t?.customDuration!=null&&t.customDuration>=0?t.customDuration:this.duration}getKey(t){return this.keyPrefix.length>0?`${this.keyPrefix}:${t}`:t}parseKey(t){return t.substring(this.keyPrefix.length)}},ru=class{storage;constructor(){this.storage=new Map}incrby(t,e,n){let o=this.storage.get(t);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=e,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(t,e,n)}return this.set(t,e,n)}set(t,e,n){let o=n*1e3,s=this.storage.get(t);s!=null&&clearTimeout(s.timeoutId);let i={value:e,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(t,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(t)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(t){let e=this.storage.get(t);if(e!=null)return{remainingPoints:0,msBeforeNext:e.expiresAt!=null?e.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:e.value,isFirstInDuration:!1}}delete(t){let e=this.storage.get(t);return e!=null?(e.timeoutId!=null&&clearTimeout(e.timeoutId),this.storage.delete(t),!0):!1}};function Ii(r){if(Re(r))return{peerId:r,multiaddrs:[]};let t=Array.isArray(r)?r:[r],e;if(t.length>0){let n=t[0].getPeerId();e=n==null?void 0:pe(n),t.forEach(o=>{if(!Ve(o))throw new ke("Invalid multiaddr");let s=o.getPeerId();if(s==null){if(e!=null)throw new k("Multiaddrs must all have the same peer id or have no peer id")}else{let i=pe(s);if(e?.equals(i)!==!0)throw new k("Multiaddrs must all have the same peer id or have no peer id")}})}return t=t.filter(n=>!Ph.exactMatch(n)),{peerId:e,multiaddrs:t}}var sb=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function Gh(r,t){let e=r?.streams?.map(o=>o.protocol)??[],n=t?.closableProtocols??sb;if(!(e.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(t)}catch(o){r?.abort(o)}}var jh="last-dial-failure",Xh="last-dial-success";var Ci=100,Ti=50;async function Yh(r,t){let e=!1;for(let o of nn.keys())if(e=r.protoNames().includes(o),e)break;if(!e)return[r];let n=await r.resolve(t);return t.log("resolved %s to",r,n.map(o=>o.toString())),n}function wo(r){try{let t;if(typeof r=="string"?t=G(r):t=r,!t.protoNames().includes("ipcidr")){let n=t.protoNames().includes("ip6")?"/ipcidr/128":"/ipcidr/32";t=t.encapsulate(n)}return dl(t)}catch{throw new Error(`Can't convert to IpNet, Invalid multiaddr format: ${r}`)}}var ib={maxConnections:Ci,allow:[]},Pi=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(t,e={}){this.maxConnections=e.maxConnections??ib.maxConnections,this.allow=(e.allow??[]).map(n=>wo(n)),this.connectionManager=t.connectionManager,this.peerStore=t.peerStore,this.events=t.events,this.log=t.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(t=>{this.log.error("error while pruning connections %e",t)})}async _maybePruneConnections(){let t=this.connectionManager.getConnections(),e=t.length;if(this.log("checking max connections limit %d/%d",e,this.maxConnections),e<=this.maxConnections)return;let n=new Xt;for(let a of t){let c=a.remotePeer;if(!n.has(c)){n.set(c,0);try{let u=await this.peerStore.get(c);n.set(c,[...u.tags.values()].reduce((l,f)=>l+f.value,0))}catch(u){u.name!=="NotFoundError"&&this.log.error("error loading peer tags",u)}}}let o=this.sortConnections(t,n),s=Math.max(e-this.maxConnections,0),i=[];for(let a of o)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(u=>u.contains(a.remoteAddr.nodeAddress().address))||i.push(a),i.length===s)break;await Promise.all(i.map(async a=>{await Gh(a,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:i})}sortConnections(t,e){return t.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=e.get(n.remotePeer)??0,i=e.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var Li=class{deferred;signal;constructor(t){this.signal=t,this.deferred=lt(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Qt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function ab(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Di=class{id;fn;options;recipients;status;timeline;controller;constructor(t,e){this.id=ab(),this.status="queued",this.fn=t,this.options=e,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(t){this.controller.abort(t)}onAbort(){this.recipients.reduce((e,n)=>e&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Qt),this.cleanup())}async join(t={}){let e=new Li(t.signal);return this.recipients.push(e),t.signal?.addEventListener("abort",this.onAbort),e.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let t=await Et(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(e=>{e.deferred.resolve(t)}),this.status="complete"}catch(t){this.recipients.forEach(e=>{e.deferred.reject(t)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(t=>{t.cleanup(),t.signal?.removeEventListener("abort",this.onAbort)})}};var fn=class extends Vt{concurrency;maxSize;queue;pending;sort;constructor(t={}){super(),this.concurrency=t.concurrency??Number.POSITIVE_INFINITY,this.maxSize=t.maxSize??Number.POSITIVE_INFINITY,this.pending=0,t.metricName!=null&&t.metrics?.registerMetricGroup(t.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=t.sort,this.queue=[],this.emitEmpty=lo(this.emitEmpty.bind(this),1),this.emitIdle=lo(this.emitIdle.bind(this),1)}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 t;for(let e of this.queue)if(e.status==="queued"){t=e;break}return t==null?!1:(this.safeDispatchEvent("active"),this.pending++,t.run().finally(()=>{for(let e=0;e<this.queue.length;e++)if(this.queue[e]===t){this.queue.splice(e,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(t){this.queue.push(t),this.sort!=null&&this.queue.sort(this.sort)}async add(t,e){if(e?.signal?.throwIfAborted(),this.size===this.maxSize)throw new Si;let n=new Di(t,e);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(e).then(o=>(this.safeDispatchEvent("completed",{detail: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("error",{detail:o}),this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(t=>{t.abort(new Qt)}),this.clear()}async onEmpty(t){this.size!==0&&await me(this,"empty",t?.signal)}async onSizeLessThan(t,e){this.size<t||await me(this,"next",e?.signal,{filter:()=>this.size<t})}async onIdle(t){this.pending===0&&this.size===0||await me(this,"idle",t?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(t){t?.signal?.throwIfAborted();let e=Ts({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),e.end(c)},o=c=>{c.detail!=null&&e.push(c.detail)},s=c=>{n(c.detail)},i=()=>{n()},a=()=>{n(new Qt("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),t?.signal?.addEventListener("abort",a);try{yield*e}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),t?.signal?.removeEventListener("abort",a),n()}}};var Ri=class extends fn{constructor(t={}){super({...t,sort:(e,n)=>e.options.priority>n.options.priority?-1:e.options.priority<n.options.priority?1:0})}};function De(r){let t=new globalThis.AbortController;function e(){t.abort();for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}for(let s of r){if(s?.aborted===!0){e();break}s?.addEventListener!=null&&s.addEventListener("abort",e)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",e)}let o=t.signal;return o.clear=n,o}function Zh(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function nu(r){if(!ci(r))return!1;let{address:t}=r.nodeAddress();return Zh(t)}function cb(r,t){let e=po.exactMatch(r.multiaddr),n=po.exactMatch(t.multiaddr);if(e&&!n)return-1;if(!e&&n)return 1;let o=mo.exactMatch(r.multiaddr),s=mo.exactMatch(t.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=xr.exactMatch(r.multiaddr),a=xr.exactMatch(t.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=Gl.exactMatch(r.multiaddr),u=Gl.exactMatch(t.multiaddr);if(c&&!u)return-1;if(!c&&u)return 1;let l=$l.exactMatch(r.multiaddr),f=$l.exactMatch(t.multiaddr);if(l&&!f)return-1;if(!l&&f)return 1;let d=Wl.exactMatch(r.multiaddr),m=Wl.exactMatch(t.multiaddr);return d&&!m?-1:!d&&m?1:0}function lb(r,t){let e=nu(r.multiaddr),n=nu(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function ub(r,t){let e=Er(r.multiaddr),n=Er(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function fb(r,t){return r.isCertified&&!t.isCertified?-1:!r.isCertified&&t.isCertified?1:0}function db(r,t){let e=go.exactMatch(r.multiaddr),n=go.exactMatch(t.multiaddr);return e&&!n?1:!e&&n?-1:0}function Qh(r){return r.sort(cb).sort(fb).sort(db).sort(ub).sort(lb)}var ki={maxParallelDials:Ti,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:ur}},Mi=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;constructor(t,e={}){this.addressSorter=e.addressSorter,this.maxPeerAddrsToDial=e.maxPeerAddrsToDial??ki.maxPeerAddrsToDial,this.maxDialQueueLength=e.maxDialQueueLength??ki.maxDialQueueLength,this.dialTimeout=e.dialTimeout??ki.dialTimeout,this.connections=e.connections??new Xt,this.log=t.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=t,this.shutDownController=new AbortController,this.shutDownController.signal;for(let[n,o]of Object.entries(e.resolvers??{}))nn.set(n,o);this.queue=new Ri({concurrency:e.maxParallelDials??ki.maxParallelDials,metricName:"libp2p_dial_queue",metrics:t.metrics}),this.queue.addEventListener("error",n=>{n.detail?.name!==Qt.name&&this.log.error("error in dial queue - %e",n.detail)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(t,e={}){let{peerId:n,multiaddrs:o}=Ii(t),s=Array.from(this.connections.values()).flat().find(a=>e.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s?.status==="open")return this.log("already connected to %a",s.remoteAddr),e.onProgress?.(new dt("dial-queue:already-connected")),s;let i=this.queue.queue.find(a=>{if(n?.equals(a.options.peerId)===!0)return!0;let c=a.options.multiaddrs;if(c==null)return!1;for(let u of o)if(c.has(u.toString()))return!0;return!1});if(i!=null){this.log("joining existing dial target for %p",n);for(let a of o)i.options.multiaddrs.add(a.toString());return e.onProgress?.(new dt("dial-queue:already-in-dial-queue")),i.join(e)}if(this.queue.size>=this.maxDialQueueLength)throw new Dr("Dial queue is full");return this.log("creating dial target for %p",n,o.map(a=>a.toString())),e.onProgress?.(new dt("dial-queue:add-to-dial-queue")),this.queue.add(async a=>{a.onProgress?.(new dt("dial-queue:start-dial"));let c=De([this.shutDownController.signal,a.signal]);try{return await this.dialPeer(a,c)}finally{c.clear()}},{peerId:n,priority:e.priority??au,multiaddrs:new Set(o.map(a=>a.toString())),signal:e.signal??AbortSignal.timeout(this.dialTimeout),onProgress:e.onProgress})}async dialPeer(t,e){let n=t.peerId,o=t.multiaddrs,s=new Set,i=t.multiaddrs.size===0,a=0,c=0,u=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let l=[],f=new Set(t.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...f]);let d=await this.calculateMultiaddrs(n,f,{...t,signal:e});for(let m of d){if(s.has(m.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",m.multiaddr,n);continue}l.push(m)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,l.map(m=>m.multiaddr.toString())),t?.onProgress?.(new dt("dial-queue:calculated-addresses",l));for(let m of l){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,t.peerId),new Dr("Peer had more than maxPeerAddrsToDial");a++;try{let h=await this.components.transportManager.dial(m.multiaddr,{...t,signal:e});this.log("dial to %a succeeded",m.multiaddr);try{await this.components.peerStore.merge(h.remotePeer,{multiaddrs:[h.remoteAddr],metadata:{[Xh]:L(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p",n,g)}return h}catch(h){if(this.log.error("dial failed to %a",m.multiaddr,h),s.add(m.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[jh]:L(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p",n,g)}if(e.aborted)throw new Ro(h.message);u.push(h)}}}throw u.length===1?u[0]:new AggregateError(u,"All multiaddr dials failed")}async calculateMultiaddrs(t,e=new Set,n={}){let o=[...e].map(f=>({multiaddr:G(f),isCertified:!1}));if(t!=null){if(this.components.peerId.equals(t))throw new Dr("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(t)===!0)throw new bo("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",t);try{let f=await this.components.peerStore.get(t);o.push(...f.addresses),this.log("loaded multiaddrs for %p",t,o.map(({multiaddr:d})=>d.toString()))}catch(f){if(f.name!=="NotFoundError")throw f}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",t);try{let f=await this.components.peerRouting.findPeer(t,n);this.log("found multiaddrs for %p in the peer routing",t,o.map(({multiaddr:d})=>d.toString())),o.push(...f.multiaddrs.map(d=>({multiaddr:d,isCertified:!1})))}catch(f){f.name==="NoPeerRoutersError"?this.log("no peer routers configured",t):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",t,f)}}}let s=(await Promise.all(o.map(async f=>{let d=await Yh(f.multiaddr,{dns:this.components.dns,...n,log:this.log});return d.length===1&&d[0].equals(f.multiaddr)?f:d.map(m=>({multiaddr:m,isCertified:!1}))}))).flat();if(t!=null){let f=`/p2p/${t.toString()}`;s=s.map(d=>d.multiaddr.protos().pop()?.path===!0?d:d.multiaddr.getPeerId()==null?{multiaddr:d.multiaddr.encapsulate(f),isCertified:d.isCertified}:d)}let i=s.filter(f=>{if(this.components.transportManager.dialTransportForMultiaddr(f.multiaddr)==null)return!1;let d=f.multiaddr.getPeerId();return t!=null&&d!=null?t.equals(d):!0}),a=new Map;for(let f of i){let d=f.multiaddr.toString(),m=a.get(d);if(m!=null){m.isCertified=m.isCertified||f.isCertified||!1;continue}a.set(d,f)}let c=[...a.values()];if(c.length===0)throw new wi("The dial request has no valid addresses");let u=[];for(let f of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(f.multiaddr)||u.push(f);let l=this.addressSorter==null?Qh(u):u.sort(this.addressSorter);if(l.length===0)throw new bo("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",t??"unknown peer",s.map(({multiaddr:f})=>f.toString())),this.log.trace("addresses for %p after filtering",t??"unknown peer",l.map(({multiaddr:f})=>f.toString())),l}async isDialable(t,e={}){Array.isArray(t)||(t=[t]);try{let n=await this.calculateMultiaddrs(void 0,new Set(t.map(o=>o.toString())),e);return e.runOnLimitedConnection===!1?n.find(o=>!go.matches(o.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var Oi=class extends fn{has(t){return this.find(t)!=null}find(t){return this.queue.find(e=>t.equals(e.options.peerId))}};var sp=Io(np(),1);var pb=Object.prototype.toString,mb=r=>pb.call(r)==="[object Error]",gb=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed","terminated"]);function cu(r){return r&&mb(r)&&r.name==="TypeError"&&typeof r.message=="string"?r.message==="Load failed"?r.stack===void 0:gb.has(r.message):!1}var lu=class extends Error{constructor(t){super(),t instanceof Error?(this.originalError=t,{message:t}=t):(this.originalError=new Error(t),this.originalError.stack=this.stack),this.name="AbortError",this.message=t}},op=(r,t,e)=>{let n=e.retries-(t-1);return r.attemptNumber=t,r.retriesLeft=n,r};async function uu(r,t){return new Promise((e,n)=>{t={...t},t.onFailedAttempt??=()=>{},t.shouldRetry??=()=>!0,t.retries??=10;let o=sp.default.operation(t),s=()=>{o.stop(),n(t.signal?.reason)};t.signal&&!t.signal.aborted&&t.signal.addEventListener("abort",s,{once:!0});let i=()=>{t.signal?.removeEventListener("abort",s),o.stop()};o.attempt(async a=>{try{let c=await r(a);i(),e(c)}catch(c){try{if(!(c instanceof Error))throw new TypeError(`Non-error was thrown: "${c}". You should only throw errors.`);if(c instanceof lu)throw c.originalError;if(c instanceof TypeError&&!cu(c))throw c;if(op(c,a,t),await t.shouldRetry(c)||(o.stop(),n(c)),await t.onFailedAttempt(c),!o.retry(c))throw o.mainError()}catch(u){op(u,a,t),i(),n(u)}}})})}var Ni=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=t.peerStore,this.connectionManager=t.connectionManager,this.queue=new Oi({concurrency:e.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:t.metrics}),this.started=!1,this.retries=e.retries??5,this.backoffFactor=e.backoffFactor,this.retryInterval=e.retryInterval,this.events=t.events,t.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(t){if(!this.started)return;let e=await this.peerStore.get(t);ip(e)&&(this.queue.has(t)||this.queue.add(async n=>{await uu(async o=>{if(this.started)try{await this.connectionManager.openConnection(t,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",t,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:t}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",t,n);let o={};[...e.tags.keys()].forEach(s=>{s.startsWith(fa)&&(o[s]=void 0)}),await this.peerStore.merge(t,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:t})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",t,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let t=await this.peerStore.all({filters:[e=>ip(e)]});await Promise.all(t.map(async e=>{await this.connectionManager.openConnection(e.id).catch(n=>{this.log.error(n)})}))}).catch(t=>{this.log.error(t)})}stop(){this.started=!1,this.queue.abort()}};function ip(r){for(let t of r.tags.keys())if(t.startsWith(fa))return!0;return!1}var au=50,fu={maxConnections:Ci,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Bi=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(t,e={}){if(this.maxConnections=e.maxConnections??fu.maxConnections,this.maxConnections<1)throw new k("Connection Manager maxConnections must be greater than 0");this.connections=new Xt,this.started=!1,this.peerId=t.peerId,this.peerStore=t.peerStore,this.metrics=t.metrics,this.events=t.events,this.log=t.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(e.allow??[]).map(n=>wo(n)),this.deny=(e.deny??[]).map(n=>wo(n)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=e.maxIncomingPendingConnections??fu.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new _i({points:e.inboundConnectionThreshold??fu.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Pi({connectionManager:this,peerStore:t.peerStore,events:t.events,logger:t.logger},{maxConnections:this.maxConnections,allow:e.allow?.map(n=>G(n))}),this.dialQueue=new Mi(t,{addressSorter:e.addressSorter,maxParallelDials:e.maxParallelDials??Ti,maxDialQueueLength:e.maxDialQueueLength??500,maxPeerAddrsToDial:e.maxPeerAddrsToDial??25,dialTimeout:e.dialTimeout??1e4,resolvers:e.resolvers??{dnsaddr:ur},connections:this.connections}),this.reconnectQueue=new Ni({events:t.events,peerStore:t.peerStore,logger:t.logger,connectionManager:this},{retries:e.reconnectRetries,retryInterval:e.reconnectRetryInterval,backoffFactor:e.reconnectBackoffFactor,maxParallelReconnects:e.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let t={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let e of this.connections.values())for(let n of e)t[n.direction]++;return t}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let t={};for(let e of this.connections.values())for(let n of e)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;t[s]=(t[s]??0)+1}return t}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let t={};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))t[i]=t[i]??[],t[i].push(a)}let e={};for(let[n,o]of Object.entries(t)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);e[n]=o[s]}return e}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await Au(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 Su(this.reconnectQueue,this.dialQueue,this.connectionPruner);let t=[];for(let e of this.connections.values())for(let n of e)t.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",t.length),await Promise.all(t),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}onConnect(t){this._onConnect(t).catch(e=>{this.log.error(e)})}async _onConnect(t){let{detail:e}=t;if(!this.started){await e.close();return}if(e.status!=="open")return;let n=e.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(e),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:e.remotePeer})}onDisconnect(t){let{detail:e}=t,n=e.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==e.id);this.connections.set(n,s),s.length===0&&(this.log("onDisconnect remove all connections for peer %p",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:e.remotePeer}))}getConnections(t){if(t!=null)return this.connections.get(t)??[];let e=[];for(let n of this.connections.values())e=e.concat(n);return e}getConnectionsMap(){return this.connections}async openConnection(t,e={}){if(!this.started)throw new ge("Not started");this.outboundPendingConnections++;try{e.signal?.throwIfAborted();let{peerId:n}=Ii(t);if(this.peerId.equals(n))throw new Lr("Can not dial self");if(n!=null&&e.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>c.limits==null);if(a!=null)return this.log("had an existing non-limited connection to %p",n),e.onProgress?.(new dt("dial-queue:already-connected")),a}let o=await this.dialQueue.dial(t,{...e,priority:e.priority??au});if(o.status!=="open")throw new Pr("Remote closed connection during opening");let s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)if(a.id===o.id&&(i=!0),e.force!==!0&&a.id!==o.id&&a.remoteAddr.equals(o.remoteAddr))return o.abort(new ke("Duplicate multiaddr connection")),a;return i||s.push(o),o}finally{this.outboundPendingConnections--}}async closeConnections(t,e={}){let n=this.connections.get(t)??[];await Promise.all(n.map(async o=>{try{await o.close(e)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(t){if(this.deny.some(o=>o.contains(t.remoteAddr.nodeAddress().address)))return this.log("connection from %a refused - connection remote address was in deny list",t.remoteAddr),!1;if(this.allow.some(o=>o.contains(t.remoteAddr.nodeAddress().address)))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",t.remoteAddr),!1;if(t.remoteAddr.isThinWaistAddress()){let o=t.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",t.remoteAddr,o),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",t.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let t={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(e=>({id:e.id,status:t[e.status],peerId:e.options.peerId,multiaddrs:[...e.options.multiaddrs].map(n=>G(n))}))}async isDialable(t,e={}){return this.dialQueue.isDialable(t,e)}};var dn=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(t){this.timeSpan=t,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(t,e){return 1-Math.exp(-(t-e)/this.timeSpan)}push(t,e=Date.now()){if(this.previousTime!=null){let n=this.alpha(e,this.previousTime),o=t-this.movingAverage,s=n*o;this.movingAverage=n*t+(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=t;this.previousTime=e}};var wb=1.2,xb=2,Eb=5e3,vb=6e4,Ab=5e3,Fi=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(t={}){let e=t.interval??Ab;this.success=new dn(e),this.failure=new dn(e),this.next=new dn(e),this.failureMultiplier=t.failureMultiplier??xb,this.timeoutMultiplier=t.timeoutMultiplier??wb,this.minTimeout=t.minTimeout??Eb,this.maxTimeout=t.maxTimeout??vb,t.metricName!=null&&(this.metric=t.metrics?.registerMetricGroup(t.metricName))}getTimeoutSignal(t={}){let e=Math.round(this.next.movingAverage*(t.timeoutFactor??this.timeoutMultiplier));e<this.minTimeout&&(e=this.minTimeout),e>this.maxTimeout&&(e=this.maxTimeout);let n=AbortSignal.timeout(e),o=De([t.signal,n]);return o.start=Date.now(),o.timeout=e,o}cleanUp(t){let e=Date.now()-t.start;t.aborted?(this.failure.push(e),this.next.push(e*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:e})):(this.success.push(e),this.next.push(e),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:e}))}};var du=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=lt(),this.haveNext=lt()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let t=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=lt(),t}async throw(t){return this.ended=!0,this.error=t,t!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(t)),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return this.ended=!0,this.nextResult=t,this.haveNext.resolve(),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=lt(),await Et(this.readNext.promise,e?.signal,e)}};function Ui(){return new du}var Ki=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function qi(r,t){let e=Ui();r.sink(e).catch(async i=>{await e.end(i)}),r.sink=async i=>{for await(let a of i)await e.push(a);await e.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new Y;return{read:async i=>{if(i?.signal?.throwIfAborted(),i?.bytes==null){let{done:c,value:u}=await Et(n.next(),i?.signal);return c===!0?null:u}for(;o.byteLength<i.bytes;){let{value:c,done:u}=await Et(n.next(),i?.signal);if(u===!0)throw new Ki("unexpected end of input");o.append(c)}let a=o.sublist(0,i.bytes);return o.consume(i.bytes),a},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await e.push(i,a):await e.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){t?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var Sb=1e4,_b="1.0.0",Ib="ping",Cb="ipfs",ap=32,Tb=!0,zi=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(t,e={}){this.components=t,this.protocol=`/${e.protocolPrefix??Cb}/${Ib}/${_b}`,this.log=t.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=e.pingInterval??Sb,this.abortConnectionOnPingFailure=e.abortConnectionOnPingFailure??Tb,this.timeout=new Fi({...e.pingTimeout??{},metrics:t.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[yn]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(t=>{Promise.resolve().then(async()=>{let e=Date.now();try{let n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal}),o=await t.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=qi(o);e=Date.now(),await Promise.all([s.write(Wr(ap),{signal:n}),s.read({bytes:ap,signal:n})]),t.rtt=Date.now()-e,await s.unwrap().close({signal:n})}catch(n){if(n.name!=="UnsupportedProtocolError")throw n;t.rtt=(Date.now()-e)/2}}).catch(e=>{this.log.error("error during heartbeat",e),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),t.abort(e)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};function Pb(r){return r[Symbol.asyncIterator]!=null}async function Lb(r,t,e){try{await Promise.all(r.map(async n=>{for await(let o of n)await t.push(o,{signal:e}),e.throwIfAborted()})),await t.end(void 0,{signal:e})}catch(n){await t.end(n,{signal:e}).catch(()=>{})}}async function*Db(r){let t=new AbortController,e=Ui();Lb(r,e,t.signal).catch(()=>{});try{yield*e}finally{t.abort()}}function*Rb(r){for(let t of r)yield*t}function kb(...r){let t=[];for(let e of r)Pb(e)||t.push(e);return t.length===r.length?Rb(t):Db(r)}var xo=kb;var Vi=class{routers;started;components;constructor(t,e){this.routers=e.routers??[],this.started=!1,this.components=t,this.findProviders=t.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=t.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=t.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=t.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:B(n,"base36")})})??this.put,this.get=t.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(t,e={}){if(this.routers.length===0)throw new un("No content routers available");let n=this,o=new dr;for await(let s of xo(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(t,e))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(t,e={}){if(this.routers.length===0)throw new un("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(t,e)}))}async cancelReprovide(t,e={}){if(this.routers.length===0)throw new un("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(t,e)}))}async put(t,e,n){if(!this.isStarted())throw new ge;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(t,e,n)}))}async get(t,e){if(!this.isStarted())throw new ge;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(t,e)))}};var Hi=globalThis.CustomEvent??Event;async function*hu(r,t={}){let e=t.concurrency??1/0;e<1&&(e=1/0);let n=t.ordered??!1,o=new EventTarget,s=[],i=lt(),a=lt(),c=!1,u,l=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let h of r){if(s.length===e&&(i=lt(),await i.promise),l)break;let g={done:!1};s.push(g),h().then(b=>{g.done=!0,g.ok=!0,g.value=b,o.dispatchEvent(new Hi("task-complete"))},b=>{g.done=!0,g.err=b,o.dispatchEvent(new Hi("task-complete"))})}c=!0,o.dispatchEvent(new Hi("task-complete"))}catch(h){u=h,o.dispatchEvent(new Hi("task-complete"))}});function f(){return n?s[0]?.done:!!s.find(h=>h.done)}function*d(){for(;s.length>0&&s[0].done;){let h=s[0];if(s.shift(),h.ok)yield h.value;else throw l=!0,i.resolve(),h.err;i.resolve()}}function*m(){for(;f();)for(let h=0;h<s.length;h++)if(s[h].done){let g=s[h];if(s.splice(h,1),h--,g.ok)yield g.value;else throw l=!0,i.resolve(),g.err;i.resolve()}}for(;;){if(f()||(a=lt(),await a.promise),u!=null||(n?yield*d():yield*m(),u!=null))throw u;if(c&&s.length===0)break}}var $i=class{log;peerId;peerStore;routers;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:peer-routing"),this.peerId=t.peerId,this.peerStore=t.peerStore,this.routers=e.routers??[],this.findPeer=t.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=t.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(t,e){if(this.routers.length===0)throw new yo("No peer routers available");if(t.toString()===this.peerId.toString())throw new pi("Should not try to find self");let n=this,o=xo(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>async function*(){try{yield await s.findPeer(t,e)}catch(i){n.log.error(i)}}()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),s;throw new Ge}async*getClosestPeers(t,e={}){if(this.routers.length===0)throw new yo("No peer routers available");let n=this,o=ro(1024);for await(let s of hu(async function*(){let i=xo(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(t,e)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...e,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs",c);return}return a}}()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},e),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var Wi=class extends Vt{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(t){super(),this.log=t.logger.forComponent("libp2p:random-walk"),this.peerRouting=t.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(t){this.walking||this.startWalk(),this.walkers++;let e=De([this.shutdownController.signal,t?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=lt(),yield(await me(this,"walk:peer",e,{errorEvent:"walk:error"})).detail}finally{e.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 t=De([this.walkController.signal,this.shutdownController.signal]);let e=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=Wr(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:t}))t.aborted&&this.log("aborting walk"),t.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 Et(this.needNext.promise,t)),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",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-e),this.walking=!1})}};var pu=32,mu=64,Gi=class{log;topologies;handlers;components;constructor(t){this.components=t,this.log=t.logger.forComponent("libp2p:registrar"),this.topologies=new Map,t.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let e={};for(let[n,o]of this.topologies)e[n]=o.size;return e}}),this.handlers=Lt({name:"libp2p_registrar_protocol_handlers",metrics:t.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(t){let e=this.handlers.get(t);if(e==null)throw new mi(`No handler registered for protocol ${t}`);return e}getTopologies(t){let e=this.topologies.get(t);return e==null?[]:[...e.values()]}async handle(t,e,n){if(this.handlers.has(t)&&n?.force!==!0)throw new gi(`Handler already registered for protocol ${t}`);let o=cs.bind({ignoreUndefined:!0})({maxInboundStreams:pu,maxOutboundStreams:mu},n);this.handlers.set(t,{handler:e,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[t]},n)}async unhandle(t,e){(Array.isArray(t)?t:[t]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},e)}async register(t,e){if(e==null)throw new k("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(t);return o==null&&(o=new Map,this.topologies.set(t,o)),o.set(n,e),n}unregister(t){for(let[e,n]of this.topologies.entries())n.has(t)&&(n.delete(t),n.size===0&&this.topologies.delete(e))}_onDisconnect(t){let e=t.detail,n={signal:AbortSignal.timeout(5e3)};this.components.peerStore.get(e,n).then(o=>{for(let s of o.protocols){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.filter?.has(e)!==!1&&(a.filter?.remove(e),a.onDisconnect?.(e))}}).catch(o=>{o.name!=="NotFoundError"&&this.log.error("could not inform topologies of disconnecting peer %p",e,o)})}_onPeerUpdate(t){let{peer:e,previous:n}=t.detail,o=(n?.protocols??[]).filter(s=>!e.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.filter?.has(e.id)!==!1&&(a.filter?.remove(e.id),a.onDisconnect?.(e.id))}}_onPeerIdentify(t){let e=t.detail.protocols,n=t.detail.connection,o=t.detail.peerId;for(let s of e){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),a.onConnect?.(o,n))}}};var ji=class{log;components;transports;listeners;faultTolerance;started;constructor(t,e={}){this.log=t.logger.forComponent("libp2p:transports"),this.components=t,this.started=!1,this.transports=Lt({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=Lt({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=e.faultTolerance??We.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(t){let e=t[Symbol.toStringTag];if(e==null)throw new k("Transport must have a valid tag");if(this.transports.has(e))throw new k(`There is already a transport with the tag ${e}`);this.log("adding transport %s",e),this.transports.set(e,t),this.listeners.has(e)||this.listeners.set(e,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let t=this.components.addressManager.getListenAddrs();await this.listen(t)}async stop(){let t=[];for(let[e,n]of this.listeners)for(this.log("closing listeners for %s",e);n.length>0;){let o=n.pop();o!=null&&t.push(o.close())}await Promise.all(t),this.log("all listeners closed");for(let e of this.listeners.keys())this.listeners.set(e,[]);this.started=!1}async dial(t,e){let n=this.dialTransportForMultiaddr(t);if(n==null)throw new vi(`No transport available for address ${String(t)}`);return e?.onProgress?.(new dt("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(t,{...e,upgrader:this.components.upgrader})}getAddrs(){let t=[];for(let e of this.listeners.values())for(let n of e)t=[...t,...n.getAddrs()];return t}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(t){for(let e of this.transports.values())if(e.dialFilter([t]).length>0)return e}listenTransportForMultiaddr(t){for(let e of this.transports.values())if(e.listenFilter([t]).length>0)return e}async listen(t){if(!this.isStarted())throw new ge("Not started");if(t==null||t.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let e={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};t.forEach(s=>{e.errors.set(s.toString(),new yi)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(t);for(let c of a){this.log("creating listener for %s on %a",s,c);let u=i.createListener({upgrader:this.components.upgrader}),l=this.listeners.get(s)??[];l==null&&(l=[],this.listeners.set(s,l)),l.push(u),u.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:u})}),u.addEventListener("close",()=>{let f=l.findIndex(d=>d===u);l.splice(f,1),this.components.events.safeDispatchEvent("transport:close",{detail:u})}),ql.matches(c)?e.ipv4.attempts++:zl.matches(c)&&e.ipv6.attempts++,n.push(u.listen(c).then(()=>{e.errors.delete(c.toString()),ql.matches(c)&&e.ipv4.success++,zl.matches(c)&&e.ipv6.success++},f=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,f),e.errors.set(c.toString(),f),f}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(e)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===We.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new bi(`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:
3
3
  ${[...e.errors.entries()].map(([s,i])=>`
4
4
  ${s}: ${`${i.stack??i}`.split(`
5
5
  `).join(`
6
6
  `)}
7
- `).join("")}`)}}ipv6Unsupported(t){if(t.ipv4.attempts===0||t.ipv6.attempts===0)return!1;let e=t.ipv4.attempts===t.ipv4.success,n=t.ipv6.success===0;return e&&n}async remove(t){let e=this.listeners.get(t)??[];this.log.trace("removing transport %s",t);let n=[];for(this.log.trace("closing listeners for %s",t);e.length>0;){let o=e.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(t),this.listeners.delete(t)}async removeAll(){let t=[];for(let e of this.transports.keys())t.push(this.remove(e));await Promise.all(t)}};var vt="/multistream/1.0.0";var Zi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Qi=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ji=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Ao(r,t={}){let e=Vi(r,t);t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=mt(t.maxDataLength));let n=t?.lengthDecoder??ne,o=t?.lengthEncoder??It;return{read:async i=>{let a=-1,c=new Y;for(;;){c.append(await e.read({...i,bytes:1}));try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Zi("Invalid message length");if(t?.maxLengthLength!=null&&c.byteLength>t.maxLengthLength)throw new Ji("message length length too long");if(a>-1)break}if(t?.maxDataLength!=null&&a>t.maxDataLength)throw new Qi("message length too long");return e.read({...i,bytes:a})},write:async(i,a)=>{await e.write(new Y(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new Y(...i.flatMap(u=>[o(u.byteLength),u]));await e.write(c,a)},unwrap:()=>e.unwrap()}}var Bb=L(`
8
- `);async function _r(r,t,e){await r.write(t,e)}async function up(r,t,e){await r.writeV(t,e)}async function Fb(r,t){let e=await r.read(t);if(e.byteLength===0||e.get(e.byteLength-1)!==Bb[0])throw t.log.error("Invalid mss message - missing newline",e),new ko("Missing newline");return e.sublist(0,-1)}async function $e(r,t){let e=await Fb(r,t);return B(e.subarray())}async function So(r,t,e){if(t=Array.isArray(t)?[...t]:[t],t.length===1&&e.negotiateFully===!1)return Ub(r,t[0],e);let n=Ao(r,{...e,maxDataLength:1024}),o=t.shift();if(o==null)throw new Error("At least one protocol must be specified");e.log.trace('select: write ["%s", "%s"]',vt,o);let s=L(`${vt}
7
+ `).join("")}`)}}ipv6Unsupported(t){if(t.ipv4.attempts===0||t.ipv6.attempts===0)return!1;let e=t.ipv4.attempts===t.ipv4.success,n=t.ipv6.success===0;return e&&n}async remove(t){let e=this.listeners.get(t)??[];this.log.trace("removing transport %s",t);let n=[];for(this.log.trace("closing listeners for %s",t);e.length>0;){let o=e.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(t),this.listeners.delete(t)}async removeAll(){let t=[];for(let e of this.transports.keys())t.push(this.remove(e));await Promise.all(t)}};var vt="/multistream/1.0.0";var Xi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Yi=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Zi=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Eo(r,t={}){let e=qi(r,t);t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=mt(t.maxDataLength));let n=t?.lengthDecoder??oe,o=t?.lengthEncoder??It;return{read:async i=>{let a=-1,c=new Y;for(;;){c.append(await e.read({...i,bytes:1}));try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Xi("Invalid message length");if(t?.maxLengthLength!=null&&c.byteLength>t.maxLengthLength)throw new Zi("message length length too long");if(a>-1)break}if(t?.maxDataLength!=null&&a>t.maxDataLength)throw new Yi("message length too long");return e.read({...i,bytes:a})},write:async(i,a)=>{await e.write(new Y(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new Y(...i.flatMap(u=>[o(u.byteLength),u]));await e.write(c,a)},unwrap:()=>e.unwrap()}}var Ob=L(`
8
+ `);async function _r(r,t,e){await r.write(t,e)}async function cp(r,t,e){await r.writeV(t,e)}async function Nb(r,t){let e=await r.read(t);if(e.byteLength===0||e.get(e.byteLength-1)!==Ob[0])throw t.log.error("Invalid mss message - missing newline",e),new Do("Missing newline");return e.sublist(0,-1)}async function $e(r,t){let e=await Nb(r,t);return B(e.subarray())}async function vo(r,t,e){if(t=Array.isArray(t)?[...t]:[t],t.length===1&&e.negotiateFully===!1)return Bb(r,t[0],e);let n=Eo(r,{...e,maxDataLength:1024}),o=t.shift();if(o==null)throw new Error("At least one protocol must be specified");e.log.trace('select: write ["%s", "%s"]',vt,o);let s=L(`${vt}
9
9
  `),i=L(`${o}
10
- `);await up(n,[s,i],e),e.log.trace("select: reading multistream-select header");let a=await $e(n,e);if(e.log.trace('select: read "%s"',a),a===vt&&(e.log.trace("select: reading protocol response"),a=await $e(n,e),e.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of t){e.log.trace('select: write "%s"',c),await _r(n,L(`${c}
11
- `),e),e.log.trace("select: reading protocol response");let u=await $e(n,e);if(e.log.trace('select: read "%s" for "%s"',u,c),u===c)return{stream:n.unwrap(),protocol:c}}throw new bn("protocol selection failed")}function Ub(r,t,e){let n=r.sink.bind(r),o=r.source,s=!1,i=!1,a=lt(),c=!1,u=!1,l=lt(),f=!1,d=!1,m=lt(),h=Ao({sink:n,source:o},{...e,maxDataLength:1024});r.sink=async C=>{let{sink:x}=h.unwrap();await x(async function*(){let p=!1;for await(let w of C){if(u&&await l.promise,c)yield w;else{u=!0,e.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',vt,t,w.byteLength);let T=`${t}
10
+ `);await cp(n,[s,i],e),e.log.trace("select: reading multistream-select header");let a=await $e(n,e);if(e.log.trace('select: read "%s"',a),a===vt&&(e.log.trace("select: reading protocol response"),a=await $e(n,e),e.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of t){e.log.trace('select: write "%s"',c),await _r(n,L(`${c}
11
+ `),e),e.log.trace("select: reading protocol response");let u=await $e(n,e);if(e.log.trace('select: read "%s" for "%s"',u,c),u===c)return{stream:n.unwrap(),protocol:c}}throw new gn("protocol selection failed")}function Bb(r,t,e){let n=r.sink.bind(r),o=r.source,s=!1,i=!1,a=lt(),c=!1,u=!1,l=lt(),f=!1,d=!1,m=lt(),h=Eo({sink:n,source:o},{...e,maxDataLength:1024});r.sink=async C=>{let{sink:x}=h.unwrap();await x(async function*(){let p=!1;for await(let w of C){if(u&&await l.promise,c)yield w;else{u=!0,e.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',vt,t,w.byteLength);let T=`${t}
12
12
  `;yield new Y(Uint8Array.from([19]),L(`${vt}
13
13
  `),It(T.length),L(T),w).subarray(),e.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',vt,t,w.byteLength),c=!0,u=!1,l.resolve(),g().catch(P=>{e.log.error("could not finish optimistic protocol negotiation of %s",t,P)})}p=!0}p||await g()}())};async function g(){if(i){e.log.trace("optimistic: already negotiating %s stream",t),await a.promise;return}i=!0;try{c||(e.log.trace("optimistic: doing send protocol for %s stream",t),await b()),f||(e.log.trace("optimistic: doing read protocol for %s stream",t),await v())}finally{i=!1,s=!0,a.resolve()}}async function b(){if(u){await l.promise;return}u=!0;try{e.log.trace('optimistic: write ["%s", "%s", data] in source',vt,t),await h.writeV([L(`${vt}
14
14
  `),L(`${t}
15
- `)]),e.log.trace('optimistic: wrote ["%s", "%s", data] in source',vt,t)}finally{c=!0,u=!1,l.resolve()}}async function v(){if(d){await m.promise;return}d=!0;try{e.log.trace("optimistic: reading multistream select header");let C=await $e(h,e);if(e.log.trace('optimistic: read multistream select header "%s"',C),C===vt&&(C=await $e(h,e)),e.log.trace('optimistic: read protocol "%s", expecting "%s"',C,t),C!==t)throw new bn("protocol selection failed")}finally{f=!0,d=!1,m.resolve()}}if(r.source=async function*(){await g(),e.log.trace('optimistic: reading data from "%s" stream',t),yield*h.unwrap().source}(),r.closeRead!=null){let C=r.closeRead.bind(r);r.closeRead=async x=>{s||await g().catch(p=>{e.log.error("could not negotiate protocol before close read",p)}),await C(x)}}if(r.closeWrite!=null){let C=r.closeWrite.bind(r);r.closeWrite=async x=>{s||await g().catch(p=>{e.log.error("could not negotiate protocol before close write",p)}),await C(x)}}if(r.close!=null){let C=r.close.bind(r);r.close=async x=>{let p=[];u&&p.push(l.promise),d&&p.push(m.promise),p.length>0?await Et(Promise.all(p),x?.signal):(s=!0,i=!1,a.resolve()),await C(x)}}return{stream:r,protocol:t}}var ta=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},mn=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},ea=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},_o=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function ra(r){return r[Symbol.asyncIterator]!=null}function dp(r,t){if(r.byteLength>t)throw new mn("Message length too long")}var oa=r=>{let t=mt(r),e=St(t);return It(r,e),oa.bytes=t,e};oa.bytes=0;function sa(r,t){t=t??{};let e=t.lengthEncoder??oa,n=t?.maxDataLength??4194304;function*o(s){dp(s,n);let i=e(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return ra(r)?async function*(){for await(let s of r)yield*o(s)}():function*(){for(let s of r)yield*o(s)}()}sa.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??oa,n=t?.maxDataLength??4194304;return dp(r,n),new Y(e(r.byteLength),r)};var Ir;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Ir||(Ir={}));var xu=r=>{let t=ne(r);return xu.bytes=mt(t),t};xu.bytes=0;function wu(r,t){let e=new Y,n=Ir.LENGTH,o=-1,s=t?.lengthDecoder??xu,i=t?.maxLengthLength??8,a=t?.maxDataLength??4194304;function*c(){for(;e.byteLength>0;){if(n===Ir.LENGTH)try{if(o=s(e),o<0)throw new ta("Invalid message length");if(o>a)throw new mn("Message length too long");let u=s.bytes;e.consume(u),t?.onLength!=null&&t.onLength(o),n=Ir.DATA}catch(u){if(u instanceof RangeError){if(e.byteLength>i)throw new ea("Message length length too long");break}throw u}if(n===Ir.DATA){if(e.byteLength<o)break;let u=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(u),yield u,n=Ir.LENGTH}}}return ra(r)?async function*(){for await(let u of r)e.append(u),yield*c();if(e.byteLength>0)throw new _o("Unexpected end of input")}():function*(){for(let u of r)e.append(u),yield*c();if(e.byteLength>0)throw new _o("Unexpected end of input")}()}wu.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return wu(n,{...t??{},onLength:s=>{e=s}})};async function Io(r,t,e){t=Array.isArray(t)?t:[t],e.log.trace("handle: available protocols %s",t);let n=Ao(r,{...e,maxDataLength:1024,maxLengthLength:2});for(;;){e.log.trace("handle: reading incoming string");let o=await $e(n,e);if(e.log.trace('handle: read "%s"',o),o===vt){e.log.trace('handle: respond with "%s" for "%s"',vt,o),await _r(n,L(`${vt}
15
+ `)]),e.log.trace('optimistic: wrote ["%s", "%s", data] in source',vt,t)}finally{c=!0,u=!1,l.resolve()}}async function v(){if(d){await m.promise;return}d=!0;try{e.log.trace("optimistic: reading multistream select header");let C=await $e(h,e);if(e.log.trace('optimistic: read multistream select header "%s"',C),C===vt&&(C=await $e(h,e)),e.log.trace('optimistic: read protocol "%s", expecting "%s"',C,t),C!==t)throw new gn("protocol selection failed")}finally{f=!0,d=!1,m.resolve()}}if(r.source=async function*(){await g(),e.log.trace('optimistic: reading data from "%s" stream',t),yield*h.unwrap().source}(),r.closeRead!=null){let C=r.closeRead.bind(r);r.closeRead=async x=>{s||await g().catch(p=>{e.log.error("could not negotiate protocol before close read",p)}),await C(x)}}if(r.closeWrite!=null){let C=r.closeWrite.bind(r);r.closeWrite=async x=>{s||await g().catch(p=>{e.log.error("could not negotiate protocol before close write",p)}),await C(x)}}if(r.close!=null){let C=r.close.bind(r);r.close=async x=>{let p=[];u&&p.push(l.promise),d&&p.push(m.promise),p.length>0?await Et(Promise.all(p),x?.signal):(s=!0,i=!1,a.resolve()),await C(x)}}return{stream:r,protocol:t}}var Qi=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},hn=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Ji=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Ao=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function ta(r){return r[Symbol.asyncIterator]!=null}function up(r,t){if(r.byteLength>t)throw new hn("Message length too long")}var ra=r=>{let t=mt(r),e=St(t);return It(r,e),ra.bytes=t,e};ra.bytes=0;function na(r,t){t=t??{};let e=t.lengthEncoder??ra,n=t?.maxDataLength??4194304;function*o(s){up(s,n);let i=e(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return ta(r)?async function*(){for await(let s of r)yield*o(s)}():function*(){for(let s of r)yield*o(s)}()}na.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??ra,n=t?.maxDataLength??4194304;return up(r,n),new Y(e(r.byteLength),r)};var Ir;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Ir||(Ir={}));var bu=r=>{let t=oe(r);return bu.bytes=mt(t),t};bu.bytes=0;function yu(r,t){let e=new Y,n=Ir.LENGTH,o=-1,s=t?.lengthDecoder??bu,i=t?.maxLengthLength??8,a=t?.maxDataLength??4194304;function*c(){for(;e.byteLength>0;){if(n===Ir.LENGTH)try{if(o=s(e),o<0)throw new Qi("Invalid message length");if(o>a)throw new hn("Message length too long");let u=s.bytes;e.consume(u),t?.onLength!=null&&t.onLength(o),n=Ir.DATA}catch(u){if(u instanceof RangeError){if(e.byteLength>i)throw new Ji("Message length length too long");break}throw u}if(n===Ir.DATA){if(e.byteLength<o)break;let u=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(u),yield u,n=Ir.LENGTH}}}return ta(r)?async function*(){for await(let u of r)e.append(u),yield*c();if(e.byteLength>0)throw new Ao("Unexpected end of input")}():function*(){for(let u of r)e.append(u),yield*c();if(e.byteLength>0)throw new Ao("Unexpected end of input")}()}yu.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:s,value:i}=await r.next(e);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{e=1}}();return yu(n,{...t??{},onLength:s=>{e=s}})};async function So(r,t,e){t=Array.isArray(t)?t:[t],e.log.trace("handle: available protocols %s",t);let n=Eo(r,{...e,maxDataLength:1024,maxLengthLength:2});for(;;){e.log.trace("handle: reading incoming string");let o=await $e(n,e);if(e.log.trace('handle: read "%s"',o),o===vt){e.log.trace('handle: respond with "%s" for "%s"',vt,o),await _r(n,L(`${vt}
16
16
  `),e),e.log.trace('handle: responded with "%s" for "%s"',vt,o);continue}if(t.includes(o))return e.log.trace('handle: respond with "%s" for "%s"',o,o),await _r(n,L(`${o}
17
- `),e),e.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new Y(...t.map(i=>sa.single(L(`${i}
17
+ `),e),e.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new Y(...t.map(i=>na.single(L(`${i}
18
18
  `))),L(`
19
19
  `));e.log.trace('handle: respond with "%s" for %s',t,o),await _r(n,s,e),e.log.trace('handle: responded with "%s" for %s',t,o);continue}e.log.trace('handle: respond with "na" for "%s"',o),await _r(n,L(`na
20
- `),e),e.log('handle: responded with "na" for "%s"',o)}}var zb=500,Eu=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;limits;log;tags;_newStream;_close;_abort;_getStreams;constructor(t){let{remoteAddr:e,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=t;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=e,this.remotePeer=n,this.direction=t.direction,this.status="open",this.timeline=t.timeline,this.multiplexer=t.multiplexer,this.encryption=t.encryption,this.limits=t.limits,this.log=t.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[Su]=!0;get streams(){return this._getStreams()}async newStream(t,e){if(this.status==="closing")throw new Lo("the connection is being closed");if(this.status==="closed")throw new Pr("the connection is closed");if(Array.isArray(t)||(t=[t]),this.limits!=null&&e?.runOnLimitedConnection!==!0)throw new Rr("Cannot open protocol stream on limited connection");let n=await this._newStream(t,e);return n.direction="outbound",n}async close(t={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",t.signal==null){let e=AbortSignal.timeout(zb);t={...t,signal:e}}try{this.log.trace("closing underlying transport"),await this._close(t),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(e){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,e),this.abort(e)}}}abort(t){this.status!=="closed"&&(this.log.error("aborting connection to %a due to error",this.remoteAddr,t),this.status="closing",this._abort(t),this.status="closed",this.timeline.close=Date.now())}};function hp(r){return new Eu(r)}function Hb(r,t){try{let{options:e}=t.getHandler(r);return e.maxInboundStreams}catch(e){if(e.name!=="UnhandledProtocolError")throw e}return gu}function $b(r,t,e={}){try{let{options:n}=t.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return e.maxOutboundStreams??yu}function pp(r,t,e){let n=0;return e.streams.forEach(o=>{o.direction===t&&o.protocol===r&&n++}),n}var ia=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;constructor(t,e){this.components=t,this.connectionEncrypters=Lt({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),e.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=Lt({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),e.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=e.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=e.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=e.outboundStreamProtocolNegotiationTimeout??1e4,this.events=t.events,this.metrics={dials:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(t,...e){let n=this.components.connectionGater[t];if(n==null)return;if(await n.apply(this.components.connectionGater,e)===!0)throw new vi(`The multiaddr connection is blocked by gater.${t}`)}createInboundAbortSignal(t){let e=De([AbortSignal.timeout(this.inboundUpgradeTimeout),t]);return e}async upgradeInbound(t,e){let n=!1,o=this.createInboundAbortSignal(e.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=await Et(this.components.connectionManager.acceptIncomingConnection(t),o),!n)throw new Ai("Connection denied");await Et(this.shouldBlockConnection("denyInboundConnection",t),o),await this._performUpgrade(t,"inbound",{...e,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(t,e){try{this.metrics.dials?.increment({outbound:!0});let n=t.remoteAddr.getPeerId(),o;n!=null&&(o=he(n),await Et(this.shouldBlockConnection("denyOutboundConnection",o,t),e.signal));let s="outbound";return e.initiator===!1&&(s="inbound"),await this._performUpgrade(t,s,e)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(t,e,n){let o,s,i,a,c;this.components.metrics?.trackMultiaddrConnection(t),t.log.trace("starting the %s connection upgrade",e);let u=t;if(n?.skipProtection!==!0){let l=this.components.connectionProtector;l!=null&&(t.log("protecting the %s connection",e),u=await l.protect(t,n))}try{if(o=u,n?.skipEncryption!==!0){n?.onProgress?.(new dt(`upgrader:encrypt-${e}-connection`)),{conn:o,remotePeer:s,protocol:c,streamMuxer:a}=await(e==="inbound"?this._encryptInbound(u,n):this._encryptOutbound(u,n));let l={...u,...o};await this.shouldBlockConnection(e==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,l)}else{let l=t.remoteAddr.getPeerId();if(l==null)throw new ke(`${e} connection that skipped encryption must have a peer id`);let f=he(l);c="native",s=f}if(s.equals(this.components.peerId)){let l=new Lr("Can not dial self");throw t.abort(l),l}if(i=o,n?.muxerFactory!=null)a=n.muxerFactory;else if(a==null&&this.streamMuxers.size>0){n?.onProgress?.(new dt(`upgrader:multiplex-${e}-connection`));let l=await(e==="inbound"?this._multiplexInbound({...u,...o},this.streamMuxers,n):this._multiplexOutbound({...u,...o},this.streamMuxers,n));a=l.muxerFactory,i=l.stream}}catch(l){throw t.log.error("failed to upgrade inbound connection %s %a - %e",e==="inbound"?"from":"to",t.remoteAddr,l),l}return await this.shouldBlockConnection(e==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,t),t.log("successfully upgraded %s connection",e),this._createConnection({cryptoProtocol:c,direction:e,maConn:t,upgradedConn:i,muxerFactory:a,remotePeer:s,limits:n?.limits})}_createConnection(t){let{cryptoProtocol:e,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,limits:c}=t,u,l,f;a!=null&&(u=a.createStreamMuxer({direction:n,onIncomingStream:h=>{if(f==null)return;let g=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);Promise.resolve().then(async()=>{let b=this.components.registrar.getProtocols(),{stream:v,protocol:C}=await Io(h,b,{signal:g,log:h.log,yieldBytes:!1});if(f==null)return;f.log("incoming stream opened on %s",C);let x=Hb(C,this.components.registrar);if(pp(C,"inbound",f)===x){let w=new Oo(`Too many inbound protocol streams for protocol "${C}" - limit ${x}`);throw h.abort(w),w}h.source=v.source,h.sink=v.sink,h.protocol=C,v.closeWrite!=null&&(h.closeWrite=v.closeWrite),v.closeRead!=null&&(h.closeRead=v.closeRead),v.close!=null&&(h.close=v.close),await this.components.peerStore.merge(i,{protocols:[C]},{signal:g}),this.components.metrics?.trackProtocolStream(h,f),this._onStream({connection:f,stream:h,protocol:C})}).catch(async b=>{f.log.error("error handling incoming stream id %s - %e",h.id,b),h.timeline.close==null&&await h.close({signal:g}).catch(v=>h.abort(v))})}}),l=async(h,g={})=>{if(u==null)throw new vr("Connection is not multiplexed");f.log.trace("starting new stream for protocols %s",h);let b=await u.newStream();f.log.trace("started new stream %s for protocols %s",b.id,h);try{if(g.signal==null){b.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",h);let w=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);g={...g,signal:w}}b.log.trace("selecting protocol from protocols %s",h);let{stream:v,protocol:C}=await So(b,h,{...g,log:b.log,yieldBytes:!0});b.log.trace("selected protocol %s",C);let x=$b(C,this.components.registrar,g),p=pp(C,"outbound",f);if(p>=x){let w=new No(`Too many outbound protocol streams for protocol "${C}" - ${p}/${x}`);throw b.abort(w),w}return await this.components.peerStore.merge(i,{protocols:[C]}),b.source=v.source,b.sink=v.sink,b.protocol=C,v.closeWrite!=null&&(b.closeWrite=v.closeWrite),v.closeRead!=null&&(b.closeRead=v.closeRead),v.close!=null&&(b.close=v.close),this.components.metrics?.trackProtocolStream(b,f),b}catch(v){throw f.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",n==="inbound"?"from":"to",t.maConn.remoteAddr,h,v),b.timeline.close==null&&b.abort(v),v}},Promise.all([u.sink(s.source),s.sink(u.source)]).catch(h=>{f.log.error("error piping data through muxer - %e",h)}));let d=o.timeline;o.timeline=new Proxy(d,{set:(...h)=>(h[1]==="close"&&h[2]!=null&&d.close==null&&(async()=>{try{f.status==="open"&&await f.close()}catch(g){f.log.error("error closing connection after timeline close %e",g)}finally{this.events.safeDispatchEvent("connection:close",{detail:f})}})().catch(g=>{f.log.error("error thrown while dispatching connection:close event %e",g)}),Reflect.set(...h))}),o.timeline.upgraded=Date.now();let m=()=>{throw new vr("Connection is not multiplexed")};return f=hp({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:u?.protocol,encryption:e,limits:c,logger:this.components.logger,newStream:l??m,getStreams:()=>u?.streams??[],close:async h=>{await u?.close(h),await o.close(h)},abort:h=>{o.abort(h),u?.abort(h)}}),this.events.safeDispatchEvent("connection:open",{detail:f}),f.__maConnTimeline=d,f}_onStream(t){let{connection:e,stream:n,protocol:o}=t,{handler:s,options:i}=this.components.registrar.getHandler(o);if(e.limits!=null&&i.runOnLimitedConnection!==!0)throw new Rr("Cannot open protocol stream on limited connection");s({connection:e,stream:n})}async _encryptInbound(t,e){let n=Array.from(this.connectionEncrypters.keys());try{let{stream:o,protocol:s}=await Io(t,n,{...e,log:t.log}),i=this.connectionEncrypters.get(s);if(i==null)throw new Ar(`no crypto module found for ${s}`);return t.log("encrypting inbound connection to %a using %s",t.remoteAddr,s),{...await i.secureInbound(o,e),protocol:s}}catch(o){throw t.log.error("encrypting inbound connection from %a failed",t.remoteAddr,o),new Ar(o.message)}}async _encryptOutbound(t,e){let n=Array.from(this.connectionEncrypters.keys());try{t.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await So(t,n,{...e,log:t.log,yieldBytes:!0}),i=this.connectionEncrypters.get(s);if(i==null)throw new Ar(`no crypto module found for ${s}`);return t.log("encrypting outbound connection to %a using %s",t.remoteAddr,s),{...await i.secureOutbound(o,e),protocol:s}}catch(o){throw t.log.error("encrypting outbound connection to %a failed",t.remoteAddr,o),new Ar(o.message)}}async _multiplexOutbound(t,e,n){let o=Array.from(e.keys());t.log("outbound selecting muxer %s",o);try{t.log.trace("selecting stream muxer from %s",o);let{stream:s,protocol:i}=await So(t,o,{...n,log:t.log,yieldBytes:!0});t.log("selected %s as muxer protocol",i);let a=e.get(i);return{stream:s,muxerFactory:a}}catch(s){throw t.log.error("error multiplexing outbound connection",s),new vr(String(s))}}async _multiplexInbound(t,e,n){let o=Array.from(e.keys());t.log("inbound handling muxers %s",o);try{let{stream:s,protocol:i}=await Io(t,o,{...n,log:t.log}),a=e.get(i);return{stream:s,muxerFactory:a}}catch(s){throw t.log.error("error multiplexing inbound connection",s),new vr(String(s))}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};var aa="2.8.8-b8600fce8",ca="js-libp2p";function gp(r,t){return`${r??ca}/${t??aa} browser/${globalThis.navigator.userAgent}`}var la=class extends ge{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(t){super(),this.status="stopped";let e=new ge,n=e.dispatchEvent.bind(e);e.dispatchEvent=u=>{let l=n(u),f=this.dispatchEvent(new CustomEvent(u.type,{detail:u.detail}));return l||f},this.peerId=t.peerId,this.logger=t.logger??_s(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=t.nodeInfo?.name??ca,s=t.nodeInfo?.version??aa,i=this.components=Hh({peerId:t.peerId,privateKey:t.privateKey,nodeInfo:{name:o,version:s,userAgent:t.nodeInfo?.userAgent??gp(o,s)},logger:this.logger,events:e,datastore:t.datastore??new ri,connectionGater:Wh(t.connectionGater),dns:t.dns});t.metrics!=null&&(this.metrics=this.configureComponent("metrics",t.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",Ch(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...t.peerStore})),i.events.addEventListener("peer:update",u=>{if(u.detail.previous==null){let l={id:u.detail.peer.id,multiaddrs:u.detail.peer.addresses.map(f=>f.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:l})}}),t.connectionProtector!=null&&this.configureComponent("connectionProtector",t.connectionProtector(i)),this.components.upgrader=new ia(this.components,{connectionEncrypters:(t.connectionEncrypters??[]).map((u,l)=>this.configureComponent(`connection-encryption-${l}`,u(this.components))),streamMuxers:(t.streamMuxers??[]).map((u,l)=>this.configureComponent(`stream-muxers-${l}`,u(this.components))),inboundUpgradeTimeout:t.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:t.connectionManager?.inboundStreamProtocolNegotiationTimeout??t.connectionManager?.protocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:t.connectionManager?.outboundStreamProtocolNegotiationTimeout??t.connectionManager?.protocolNegotiationTimeout}),this.configureComponent("transportManager",new Yi(this.components,t.transportManager)),this.configureComponent("connectionManager",new Ui(this.components,t.connectionManager)),t.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Hi(this.components,t.connectionMonitor)),this.configureComponent("registrar",new Xi(this.components)),this.configureComponent("addressManager",new hi(this.components,t.addresses));let a=(t.peerRouters??[]).map((u,l)=>this.configureComponent(`peer-router-${l}`,u(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Gi(this.components,{routers:a}));let c=(t.contentRouters??[]).map((u,l)=>this.configureComponent(`content-router-${l}`,u(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new $i(this.components,{routers:c})),this.configureComponent("randomWalk",new ji(this.components)),(t.peerDiscovery??[]).forEach((u,l)=>{this.configureComponent(`peer-discovery-${l}`,u(this.components)).addEventListener("peer",d=>{this.#t(d)})}),t.transports?.forEach((u,l)=>{this.components.transportManager.add(this.configureComponent(`transport-${l}`,u(this.components)))}),t.services!=null)for(let u of Object.keys(t.services)){let l=t.services[u],f=l(this.components);if(f==null){this.log.error("service factory %s returned null or undefined instance",u);continue}this.services[u]=f,this.configureComponent(u,f),f[ua]!=null&&(this.log("registering service %s for content routing",u),c.push(f[ua])),f[da]!=null&&(this.log("registering service %s for peer routing",u),a.push(f[da])),f[fa]!=null&&(this.log("registering service %s for peer discovery",u),f[fa].addEventListener?.("peer",d=>{this.#t(d)}))}$h(i)}configureComponent(t,e){return e==null&&this.log.error("component %s was null or undefined",t),this.components[t]=e,e}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(t){throw this.log.error("An error occurred starting libp2p",t),this.status="started",await this.stop(),t}}}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(t){return this.components.connectionManager.getConnections(t)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let t=new dr;for(let e of this.components.connectionManager.getConnections())t.add(e.remotePeer);return Array.from(t)}async dial(t,e={}){return this.components.connectionManager.openConnection(t,{priority:75,...e})}async dialProtocol(t,e,n={}){if(e==null)throw new k("no protocols were provided to open a stream");if(e=Array.isArray(e)?e:[e],e.length===0)throw new k("no protocols were provided to open a stream");return(await this.dial(t,n)).newStream(e,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(t,e={}){Ve(t)&&(t=he(t.getPeerId()??"")),await this.components.connectionManager.closeConnections(t,e)}async getPublicKey(t,e={}){if(this.log("getPublicKey %p",t),t.publicKey!=null)return t.publicKey;try{let i=await this.peerStore.get(t,e);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Dt([L("/pk/"),t.toMultihash().bytes]),o=await this.contentRouting.get(n,e),s=jr(o);return await this.peerStore.patch(t,{publicKey:s},e),s}async handle(t,e,n){Array.isArray(t)||(t=[t]),await Promise.all(t.map(async o=>{await this.components.registrar.handle(o,e,n)}))}async unhandle(t,e){Array.isArray(t)||(t=[t]),await Promise.all(t.map(async n=>{await this.components.registrar.unhandle(n,e)}))}async register(t,e,n){return this.components.registrar.register(t,e,n)}unregister(t){this.components.registrar.unregister(t)}async isDialable(t,e={}){return this.components.connectionManager.isDialable(t,e)}#t(t){let{detail:e}=t;if(e.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(e.id,{multiaddrs:e.multiaddrs}).catch(n=>{this.log.error(n)})}};async function Wb(r={}){r.privateKey??=await Sd("Ed25519");let t=new la({...await eh(r),peerId:Td(r.privateKey)});return r.start!==!1&&await t.start(),t}return Ip(Gb);})();
20
+ `),e),e.log('handle: responded with "na" for "%s"',o)}}var Kb=500,wu=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;limits;log;tags;_newStream;_close;_abort;_getStreams;constructor(t){let{remoteAddr:e,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=t;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=e,this.remotePeer=n,this.direction=t.direction,this.status="open",this.timeline=t.timeline,this.multiplexer=t.multiplexer,this.encryption=t.encryption,this.limits=t.limits,this.log=t.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[vu]=!0;get streams(){return this._getStreams()}async newStream(t,e){if(this.status==="closing")throw new To("the connection is being closed");if(this.status==="closed")throw new Pr("the connection is closed");if(Array.isArray(t)||(t=[t]),this.limits!=null&&e?.runOnLimitedConnection!==!0)throw new Rr("Cannot open protocol stream on limited connection");let n=await this._newStream(t,e);return n.direction="outbound",n}async close(t={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",t.signal==null){let e=AbortSignal.timeout(Kb);t={...t,signal:e}}try{this.log.trace("closing underlying transport"),await this._close(t),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(e){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,e),this.abort(e)}}}abort(t){this.status!=="closed"&&(this.log.error("aborting connection to %a due to error",this.remoteAddr,t),this.status="closing",this._abort(t),this.status="closed",this.timeline.close=Date.now())}};function fp(r){return new wu(r)}function zb(r,t){try{let{options:e}=t.getHandler(r);return e.maxInboundStreams}catch(e){if(e.name!=="UnhandledProtocolError")throw e}return pu}function Vb(r,t,e={}){try{let{options:n}=t.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return e.maxOutboundStreams??mu}function dp(r,t,e){let n=0;return e.streams.forEach(o=>{o.direction===t&&o.protocol===r&&n++}),n}var oa=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;constructor(t,e){this.components=t,this.connectionEncrypters=Lt({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),e.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=Lt({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),e.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=e.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=e.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=e.outboundStreamProtocolNegotiationTimeout??1e4,this.events=t.events,this.metrics={dials:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:t.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(t,...e){let n=this.components.connectionGater[t];if(n==null)return;if(await n.apply(this.components.connectionGater,e)===!0)throw new xi(`The multiaddr connection is blocked by gater.${t}`)}createInboundAbortSignal(t){let e=De([AbortSignal.timeout(this.inboundUpgradeTimeout),t]);return e}async upgradeInbound(t,e){let n=!1,o=this.createInboundAbortSignal(e.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=await Et(this.components.connectionManager.acceptIncomingConnection(t),o),!n)throw new Ei("Connection denied");await Et(this.shouldBlockConnection("denyInboundConnection",t),o),await this._performUpgrade(t,"inbound",{...e,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(t,e){try{this.metrics.dials?.increment({outbound:!0});let n=t.remoteAddr.getPeerId(),o;n!=null&&(o=pe(n),await Et(this.shouldBlockConnection("denyOutboundConnection",o,t),e.signal));let s="outbound";return e.initiator===!1&&(s="inbound"),await this._performUpgrade(t,s,e)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(t,e,n){let o,s,i,a,c;this.components.metrics?.trackMultiaddrConnection(t),t.log.trace("starting the %s connection upgrade",e);let u=t;if(n?.skipProtection!==!0){let l=this.components.connectionProtector;l!=null&&(t.log("protecting the %s connection",e),u=await l.protect(t,n))}try{if(o=u,n?.skipEncryption!==!0){n?.onProgress?.(new dt(`upgrader:encrypt-${e}-connection`)),{conn:o,remotePeer:s,protocol:c,streamMuxer:a}=await(e==="inbound"?this._encryptInbound(u,n):this._encryptOutbound(u,n));let l={...u,...o};await this.shouldBlockConnection(e==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,l)}else{let l=t.remoteAddr.getPeerId();if(l==null)throw new ke(`${e} connection that skipped encryption must have a peer id`);let f=pe(l);c="native",s=f}if(s.equals(this.components.peerId)){let l=new Lr("Can not dial self");throw t.abort(l),l}if(i=o,n?.muxerFactory!=null)a=n.muxerFactory;else if(a==null&&this.streamMuxers.size>0){n?.onProgress?.(new dt(`upgrader:multiplex-${e}-connection`));let l=await(e==="inbound"?this._multiplexInbound({...u,...o},this.streamMuxers,n):this._multiplexOutbound({...u,...o},this.streamMuxers,n));a=l.muxerFactory,i=l.stream}}catch(l){throw t.log.error("failed to upgrade inbound connection %s %a - %e",e==="inbound"?"from":"to",t.remoteAddr,l),l}return await this.shouldBlockConnection(e==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,t),t.log("successfully upgraded %s connection",e),this._createConnection({cryptoProtocol:c,direction:e,maConn:t,upgradedConn:i,muxerFactory:a,remotePeer:s,limits:n?.limits})}_createConnection(t){let{cryptoProtocol:e,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,limits:c}=t,u,l,f;a!=null&&(u=a.createStreamMuxer({direction:n,onIncomingStream:h=>{if(f==null)return;let g=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);Promise.resolve().then(async()=>{let b=this.components.registrar.getProtocols(),{stream:v,protocol:C}=await So(h,b,{signal:g,log:h.log,yieldBytes:!1});if(f==null)return;f.log("incoming stream opened on %s",C);let x=zb(C,this.components.registrar);if(dp(C,"inbound",f)===x){let w=new ko(`Too many inbound protocol streams for protocol "${C}" - limit ${x}`);throw h.abort(w),w}h.source=v.source,h.sink=v.sink,h.protocol=C,v.closeWrite!=null&&(h.closeWrite=v.closeWrite),v.closeRead!=null&&(h.closeRead=v.closeRead),v.close!=null&&(h.close=v.close),await this.components.peerStore.merge(i,{protocols:[C]},{signal:g}),this.components.metrics?.trackProtocolStream(h,f),this._onStream({connection:f,stream:h,protocol:C})}).catch(async b=>{f.log.error("error handling incoming stream id %s - %e",h.id,b),h.timeline.close==null&&await h.close({signal:g}).catch(v=>h.abort(v))})}}),l=async(h,g={})=>{if(u==null)throw new vr("Connection is not multiplexed");f.log.trace("starting new stream for protocols %s",h);let b=await u.newStream();f.log.trace("started new stream %s for protocols %s",b.id,h);try{if(g.signal==null){b.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",h);let w=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);g={...g,signal:w}}b.log.trace("selecting protocol from protocols %s",h);let{stream:v,protocol:C}=await vo(b,h,{...g,log:b.log,yieldBytes:!0});b.log.trace("selected protocol %s",C);let x=Vb(C,this.components.registrar,g),p=dp(C,"outbound",f);if(p>=x){let w=new Mo(`Too many outbound protocol streams for protocol "${C}" - ${p}/${x}`);throw b.abort(w),w}return await this.components.peerStore.merge(i,{protocols:[C]}),b.source=v.source,b.sink=v.sink,b.protocol=C,v.closeWrite!=null&&(b.closeWrite=v.closeWrite),v.closeRead!=null&&(b.closeRead=v.closeRead),v.close!=null&&(b.close=v.close),this.components.metrics?.trackProtocolStream(b,f),b}catch(v){throw f.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",n==="inbound"?"from":"to",t.maConn.remoteAddr,h,v),b.timeline.close==null&&b.abort(v),v}},Promise.all([u.sink(s.source),s.sink(u.source)]).catch(h=>{f.log.error("error piping data through muxer - %e",h)}));let d=o.timeline;o.timeline=new Proxy(d,{set:(...h)=>(h[1]==="close"&&h[2]!=null&&d.close==null&&(async()=>{try{f.status==="open"&&await f.close()}catch(g){f.log.error("error closing connection after timeline close %e",g)}finally{this.events.safeDispatchEvent("connection:close",{detail:f})}})().catch(g=>{f.log.error("error thrown while dispatching connection:close event %e",g)}),Reflect.set(...h))}),o.timeline.upgraded=Date.now();let m=()=>{throw new vr("Connection is not multiplexed")};return f=fp({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:u?.protocol,encryption:e,limits:c,logger:this.components.logger,newStream:l??m,getStreams:()=>u?.streams??[],close:async h=>{await u?.close(h),await o.close(h)},abort:h=>{o.abort(h),u?.abort(h)}}),this.events.safeDispatchEvent("connection:open",{detail:f}),f.__maConnTimeline=d,f}_onStream(t){let{connection:e,stream:n,protocol:o}=t,{handler:s,options:i}=this.components.registrar.getHandler(o);if(e.limits!=null&&i.runOnLimitedConnection!==!0)throw new Rr("Cannot open protocol stream on limited connection");s({connection:e,stream:n})}async _encryptInbound(t,e){let n=Array.from(this.connectionEncrypters.keys());try{let{stream:o,protocol:s}=await So(t,n,{...e,log:t.log}),i=this.connectionEncrypters.get(s);if(i==null)throw new Ar(`no crypto module found for ${s}`);return t.log("encrypting inbound connection to %a using %s",t.remoteAddr,s),{...await i.secureInbound(o,e),protocol:s}}catch(o){throw t.log.error("encrypting inbound connection from %a failed",t.remoteAddr,o),new Ar(o.message)}}async _encryptOutbound(t,e){let n=Array.from(this.connectionEncrypters.keys());try{t.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await vo(t,n,{...e,log:t.log,yieldBytes:!0}),i=this.connectionEncrypters.get(s);if(i==null)throw new Ar(`no crypto module found for ${s}`);return t.log("encrypting outbound connection to %a using %s",t.remoteAddr,s),{...await i.secureOutbound(o,e),protocol:s}}catch(o){throw t.log.error("encrypting outbound connection to %a failed",t.remoteAddr,o),new Ar(o.message)}}async _multiplexOutbound(t,e,n){let o=Array.from(e.keys());t.log("outbound selecting muxer %s",o);try{t.log.trace("selecting stream muxer from %s",o);let{stream:s,protocol:i}=await vo(t,o,{...n,log:t.log,yieldBytes:!0});t.log("selected %s as muxer protocol",i);let a=e.get(i);return{stream:s,muxerFactory:a}}catch(s){throw t.log.error("error multiplexing outbound connection",s),new vr(String(s))}}async _multiplexInbound(t,e,n){let o=Array.from(e.keys());t.log("inbound handling muxers %s",o);try{let{stream:s,protocol:i}=await So(t,o,{...n,log:t.log}),a=e.get(i);return{stream:s,muxerFactory:a}}catch(s){throw t.log.error("error multiplexing inbound connection",s),new vr(String(s))}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};var sa="2.8.8-bb4ad31db",ia="js-libp2p";function pp(r,t){return`${r??ia}/${t??sa} browser/${globalThis.navigator.userAgent}`}var aa=class extends Vt{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(t){super(),this.status="stopped";let e=new Vt,n=e.dispatchEvent.bind(e);e.dispatchEvent=u=>{let l=n(u),f=this.dispatchEvent(new CustomEvent(u.type,{detail:u.detail}));return l||f},this.peerId=t.peerId,this.logger=t.logger??As(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=t.nodeInfo?.name??ia,s=t.nodeInfo?.version??sa,i=this.components=zh({peerId:t.peerId,privateKey:t.privateKey,nodeInfo:{name:o,version:s,userAgent:t.nodeInfo?.userAgent??pp(o,s)},logger:this.logger,events:e,datastore:t.datastore??new ti,connectionGater:Hh(t.connectionGater),dns:t.dns});t.metrics!=null&&(this.metrics=this.configureComponent("metrics",t.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",_h(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...t.peerStore})),i.events.addEventListener("peer:update",u=>{if(u.detail.previous==null){let l={id:u.detail.peer.id,multiaddrs:u.detail.peer.addresses.map(f=>f.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:l})}}),t.connectionProtector!=null&&this.configureComponent("connectionProtector",t.connectionProtector(i)),this.components.upgrader=new oa(this.components,{connectionEncrypters:(t.connectionEncrypters??[]).map((u,l)=>this.configureComponent(`connection-encryption-${l}`,u(this.components))),streamMuxers:(t.streamMuxers??[]).map((u,l)=>this.configureComponent(`stream-muxers-${l}`,u(this.components))),inboundUpgradeTimeout:t.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:t.connectionManager?.inboundStreamProtocolNegotiationTimeout??t.connectionManager?.protocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:t.connectionManager?.outboundStreamProtocolNegotiationTimeout??t.connectionManager?.protocolNegotiationTimeout}),this.configureComponent("transportManager",new ji(this.components,t.transportManager)),this.configureComponent("connectionManager",new Bi(this.components,t.connectionManager)),t.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new zi(this.components,t.connectionMonitor)),this.configureComponent("registrar",new Gi(this.components)),this.configureComponent("addressManager",new fi(this.components,t.addresses));let a=(t.peerRouters??[]).map((u,l)=>this.configureComponent(`peer-router-${l}`,u(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new $i(this.components,{routers:a}));let c=(t.contentRouters??[]).map((u,l)=>this.configureComponent(`content-router-${l}`,u(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new Vi(this.components,{routers:c})),this.configureComponent("randomWalk",new Wi(this.components)),(t.peerDiscovery??[]).forEach((u,l)=>{this.configureComponent(`peer-discovery-${l}`,u(this.components)).addEventListener("peer",d=>{this.#t(d)})}),t.transports?.forEach((u,l)=>{this.components.transportManager.add(this.configureComponent(`transport-${l}`,u(this.components)))}),t.services!=null)for(let u of Object.keys(t.services)){let l=t.services[u],f=l(this.components);if(f==null){this.log.error("service factory %s returned null or undefined instance",u);continue}this.services[u]=f,this.configureComponent(u,f),f[ca]!=null&&(this.log("registering service %s for content routing",u),c.push(f[ca])),f[ua]!=null&&(this.log("registering service %s for peer routing",u),a.push(f[ua])),f[la]!=null&&(this.log("registering service %s for peer discovery",u),f[la].addEventListener?.("peer",d=>{this.#t(d)}))}Vh(i)}configureComponent(t,e){return e==null&&this.log.error("component %s was null or undefined",t),this.components[t]=e,e}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started")}catch(t){throw this.log.error("An error occurred starting libp2p",t),this.status="started",await this.stop(),t}}}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(t){return this.components.connectionManager.getConnections(t)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let t=new dr;for(let e of this.components.connectionManager.getConnections())t.add(e.remotePeer);return Array.from(t)}async dial(t,e={}){return this.components.connectionManager.openConnection(t,{priority:75,...e})}async dialProtocol(t,e,n={}){if(e==null)throw new k("no protocols were provided to open a stream");if(e=Array.isArray(e)?e:[e],e.length===0)throw new k("no protocols were provided to open a stream");return(await this.dial(t,n)).newStream(e,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(t,e={}){Ve(t)&&(t=pe(t.getPeerId()??"")),await this.components.connectionManager.closeConnections(t,e)}async getPublicKey(t,e={}){if(this.log("getPublicKey %p",t),t.publicKey!=null)return t.publicKey;try{let i=await this.peerStore.get(t,e);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Dt([L("/pk/"),t.toMultihash().bytes]),o=await this.contentRouting.get(n,e),s=jr(o);return await this.peerStore.patch(t,{publicKey:s},e),s}async handle(t,e,n){Array.isArray(t)||(t=[t]),await Promise.all(t.map(async o=>{await this.components.registrar.handle(o,e,n)}))}async unhandle(t,e){Array.isArray(t)||(t=[t]),await Promise.all(t.map(async n=>{await this.components.registrar.unhandle(n,e)}))}async register(t,e,n){return this.components.registrar.register(t,e,n)}unregister(t){this.components.registrar.unregister(t)}async isDialable(t,e={}){return this.components.connectionManager.isDialable(t,e)}#t(t){let{detail:e}=t;if(e.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(e.id,{multiaddrs:e.multiaddrs}).catch(n=>{this.log.error(n)})}};async function Hb(r={}){r.privateKey??=await vd("Ed25519");let t=new aa({...await Jd(r),peerId:Id(r.privateKey)});return r.start!==!1&&await t.start(),t}return Sp($b);})();
21
21
  /*! Bundled license information:
22
22
 
23
23
  @noble/hashes/esm/utils.js: